UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

AmazingTurtle 13th May 2021 09:18 PM

Quote:

Originally Posted by userman007 (Post 3135126)
There are like 2000 items in the game and u wanna tell me everyone hardcodes them?

check https://eft.justemutarkov.eu/ for example. the item template has a "_parent" id which points to the category. E.g. https://eft.justemutarkov.eu/?versio...351e3bac12251b points to Item->Barter Item ->Tool->Old Firesteel

Ki163 14th May 2021 09:21 PM

How do I search offsets the right way
 
Can anyone tell me how I search offsets the right way this year?
I am to lost rn and not that experienced.
thx alot <3

fusionpak 15th May 2021 08:32 AM

Quote:

Originally Posted by Ki163 (Post 3137541)
Can anyone tell me how I search offsets the right way this year?
I am to lost rn and not that experienced.
thx alot <3

Unispect & ida

cxtgirl 15th May 2021 11:00 AM

Quote:

Originally Posted by Ki163 (Post 3137541)
Can anyone tell me how I search offsets the right way this year?
I am to lost rn and not that experienced.
thx alot <3

unispect or dnspy deobfuscated assembly

BraydenEGC 15th May 2021 02:31 PM

https://imgur.com/a/15tl9TA

BSG and their infinite wisdom. Currently, they do not use this method to detect assembly deobfuscation but it would be extremely simple to do so.

Copy-paste for BSG: (Obviously this is easy to patch out if you are editing the assembly, but it would surely catch a few unsuspecting people.)
Code:

        public static bool Validate()
        {
                return this.CheckDeobfuscation();
        }

        private static bool CheckDeobfuscation()
        {
                return !MethodBase.GetCurrentMethod().Name.ToLower().Contains("method");
        }


samtulach 16th May 2021 05:47 PM

Does anyone know how to make a proper shoot through wall? I am external, so I am just putting simple return to the JITed code in
Code:

IsPenetrated
and
Code:

Deflects
in BallisticCollider class.

By simple return I mean
Code:

mov rax, 1 (or 0)
ret

This results in some shots just going though 3 walls no problem, but some of them not being able to pass thin door. I can still hit the enemy, but the damage is minimal (60 round mag = 10hp?). Any ideas what can be causing this?

montroisiemecon 16th May 2021 11:16 PM

Quote:

Originally Posted by samtulach (Post 3138887)
Does anyone know how to make a proper shoot through wall? I am external, so I am just putting simple return to the JITed code in
Code:

IsPenetrated
and
Code:

Deflects
in BallisticCollider class.

By simple return I mean
Code:

mov rax, 1 (or 0)
ret

This results in some shots just going though 3 walls no problem, but some of them not being able to pass thin door. I can still hit the enemy, but the damage is minimal (60 round mag = 10hp?). Any ideas what can be causing this?

https://i.imgur.com/NoPv29R.png

each time your shot goes through an object it creates a child shot that does less damage, has less penetration chance and is slower than his parent

samtulach 17th May 2021 07:37 AM

Quote:

Originally Posted by montroisiemecon (Post 3139121)
https://i.imgur.com/NoPv29R.png

each time your shot goes through an object it creates a child shot that does less damage, has less penetration chance and is slower than his parent

Guess I'll have to switch the this.ForwardHit if case. It's weird it's so inconsistent with just the patching I did though, because sometimes it works from the exact same spot on static enemy and sometimes it does not. Thanks for the info!

Edit: Patching out the if statement made it usable. It's still not perfect but it's fine. (https://streamable.com/c0rkqu)

MasterScuzee 17th May 2021 03:10 PM

Quote:

Originally Posted by samtulach (Post 3139276)
Guess I'll have to switch the this.ForwardHit if case. It's weird it's so inconsistent with just the patching I did though, because sometimes it works from the exact same spot on static enemy and sometimes it does not. Thanks for the info!

Edit: Patching out the if statement made it usable. It's still not perfect but it's fine. (https://streamable.com/c0rkqu)

Tbh patching and BE is not that good, just set the variable inside the class to false.
Edit: At least in my own experience.

samtulach 17th May 2021 03:40 PM

Quote:

Originally Posted by MasterScuzee (Post 3139483)
Tbh patching and BE is not that good, just set the variable inside the class to false.
Edit: At least in my own experience.

That would have side effects. Patching JIT compiled code is completely fine since BE does not have anything to check it against.

Raspbian 17th May 2021 04:11 PM

Quote:

Originally Posted by MasterScuzee (Post 3139483)
Tbh patching and BE is not that good

Good luck running integrity checks on rwx regions in the middle of nowhere

MasterScuzee 17th May 2021 04:16 PM

Quote:

Originally Posted by samtulach (Post 3139504)
That would have side effects. Patching JIT compiled code is completely fine since BE does not have anything to check it against.

Just ignore my stupidness, forgot what JIT was for a second, lmao...

Ki163 18th May 2021 01:39 PM

offset help
 
Hey guys,
Thank you for the tipp with unispect, I disabled BE, and tryed it out and I think I came far enough to find offsets... But I didnt find the right ones I think, I found like always the same offsets named 0x0010 and 0x0018 etc
If someone could help me just find the offset for esp, I just need a little help finding this offset, I dont want more than the esp one, just need the way to finding it out.
Thanks friends <3

pinefin 19th May 2021 03:37 AM

does anyone know how to get the grenade list?

up to list base ive done:
local_game_world + xE0] + x10]

i understand its different and not listed as a generic list, its a "GClass463".

this is the class for "GCLASS463" in mono disect
Code:

1bd7eff53c8 : GClass463`2[T,U]
                        static fields
                        fields
                                10 : dictionary_0 (type: System.Collections.Generic.Dictionary<T,U>)
                                18 : list_0 (type: System.Collections.Generic.List<U>)

it's the same in dnspy. ive also tried
local_game_world + 0xE0] +0x18 ]+ 0x10]

fusionpak 19th May 2021 03:40 AM

Quote:

Originally Posted by pinefin (Post 3140518)
does anyone know how to get the grenade list?

up to list base ive done:
local_game_world + xE0] + x10]

i understand its different and not listed as a generic list, its a "GClass463".

this is the class for "GCLASS463" in mono disect
Code:

1bd7eff53c8 : GClass463`2[T,U]
static fields
fields
10 : dictionary_0 (type: System.Collections.Generic.Dictionary<T,U>)
18 : list_0 (type: System.Collections.Generic.List<U>)

it's the same in dnspy. ive also tried
local_game_world + 0xE0] +0x18 ]+ 0x10]


Try 0xD0 instead of 0xE0


Sent from my iPhone using Tapatalk

pinefin 19th May 2021 05:37 AM

Quote:

Originally Posted by fusionpak (Post 3140522)
Try 0xD0 instead of 0xE0


Sent from my iPhone using Tapatalk

(correct me if im wrong) but i dont think this is it.
Code:

d0 : action_0 (type: System.Action<GInterface8>)

fusionpak 19th May 2021 05:56 AM

Quote:

Originally Posted by pinefin (Post 3140560)
(correct me if im wrong) but i dont think this is it.
Code:

d0 : action_0 (type: System.Action<GInterface8>)

This is how im getting the grenade list at least

Code:

bool DiscoverGrenades()
{
    EFTGrenade grenadeInstance;

    uint64_t m_GrenadeClass = Driver::Read<uint64_t>(this->offsets.localGameWorld + 0xD0);
    uint64_t m_GrenadeList = Driver::Read<uint64_t>(m_GrenadeClass + 0x18);

    uint64_t list = Driver::Read<uint64_t>(m_GrenadeList + 0x10);
    uint32_t listSize = Driver::Read<uint32_t>(m_GrenadeList + 0x18);

    std::vector<EFTGrenade> grenade_local;

    for (int i = 0; i < listSize; i++)
    {
        uint64_t nade = Driver::Read<uint64_t>(list + 0x20 + (i * 0x8));

        uint64_t GrenadePositionPtr = Driver::ReadChain(nade, { 0x10, 0x30, 0x30, 0x8, 0x38 });

        FVector pos = Driver::Read<FVector>(GrenadePositionPtr + 0xB0);

        grenadeInstance.pos = pos;

        grenade_local.emplace_back(grenadeInstance);
    }

    grenadeMutex.lock();
    this->grenades = grenade_local;
    grenadeMutex.unlock();
    return true;
}


MasterScuzee 19th May 2021 08:08 AM

Quote:

Originally Posted by pinefin (Post 3140560)
(correct me if im wrong) but i dont think this is it.
Code:

d0 : action_0 (type: System.Action<GInterface8>)

This would be the correct variable type:
Code:

[D0] Grenades : -.GClass467<Int32, Throwable>

AhmedGH 20th May 2021 02:32 PM

Again that question, is there a way for visability check (EXT) ? I have mine (INT) but I'm not sure how to do it tbh! I tried the shaders for bones, but still no success, any help with that, will be appreciated! I searched all over the topic already.

pinefin 20th May 2021 09:09 PM

Quote:

Originally Posted by AhmedGH (Post 3141496)
Again that question, is there a way for visability check (EXT) ? I have mine (INT) but I'm not sure how to do it tbh! I tried the shaders for bones, but still no success, any help with that, will be appreciated! I searched all over the topic already.

i tried looking into this. ive only seen one external with vis check and it only worked through terrain.

Quote:

Originally Posted by fusionpak (Post 3140566)
This is how im getting the grenade list at least

Code:

bool DiscoverGrenades()
{
    EFTGrenade grenadeInstance;

    uint64_t m_GrenadeClass = Driver::Read<uint64_t>(this->offsets.localGameWorld + 0xD0);
    uint64_t m_GrenadeList = Driver::Read<uint64_t>(m_GrenadeClass + 0x18);

    uint64_t list = Driver::Read<uint64_t>(m_GrenadeList + 0x10);
    uint32_t listSize = Driver::Read<uint32_t>(m_GrenadeList + 0x18);

    std::vector<EFTGrenade> grenade_local;

    for (int i = 0; i < listSize; i++)
    {
        uint64_t nade = Driver::Read<uint64_t>(list + 0x20 + (i * 0x8));

        uint64_t GrenadePositionPtr = Driver::ReadChain(nade, { 0x10, 0x30, 0x30, 0x8, 0x38 });

        FVector pos = Driver::Read<FVector>(GrenadePositionPtr + 0xB0);

        grenadeInstance.pos = pos;

        grenade_local.emplace_back(grenadeInstance);
    }

    grenadeMutex.lock();
    this->grenades = grenade_local;
    grenadeMutex.unlock();
    return true;
}


Quote:

Originally Posted by MasterScuzee (Post 3140623)
This would be the correct variable type:
Code:

[D0] Grenades : -.GClass467<Int32, Throwable>

thank you both, this helped me out. i had a wrong dump


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

swh4641 21st May 2021 08:33 AM

what changed in last update? i crash while loading in raids

Superseb123abc 21st May 2021 09:01 AM

A couple weeks into my project and I decided to add auto-fire for my aimbot, and it took a lot longer than I thought. I am sure there is an easier way somewhere, but I will share what I found. Demo

It dumbs down to calling this function here:
https://i.imgur.com/ohy4U9O.png

But to call it, you need the correct hand operation, which is part of the abstract hands controller.

The hands controller has two dictionaries, one of active and generated operations (0x38), which are generated once they are to be performed, and another of generatable operations (0x58).

It takes a little bit of testing, but it is pretty easy to find out which operation you need (I will leave this as an exercise). From there it is just finding the generated action inside of the active operations and using it as `this` to call the previously mentioned function. It's also good to add a delay to your firing so you don't fire all rounds instantly :)

Example: https://i.imgur.com/KykN1uN.png

montroisiemecon 21st May 2021 02:57 PM

Quote:

Originally Posted by Superseb123abc (Post 3142038)
~

I am not sure what is there to understand in the video?

TrueWeedle 21st May 2021 03:37 PM

I was planning on making a public cleaner & spoofer for EFT but I need to make sure that I clear all prior traces of the game and HWIDs necessary.

* Disk Drive
* SMBIOS
* MAC ADDR
* Registry

if I get anything wrong or I am missing something please let me know

Ki163 21st May 2021 07:02 PM

I think I finished my first try on a Tarkov cheat but I am stuck findig the x64 module base, everytime I start the Programm it wont find the module base of tarkov. In csgo its working perfect

Code:

ULONG memory::get_module_base(PEPROCESS process, LPCWSTR module_name)
{
    if (!process) { return 0; }

    __try
    {
        PPEB32 peb32 = (PPEB32)PsGetProcessWow64Process(process);
        if (!peb32 || !peb32->Ldr) { return 0; }

        for (PLIST_ENTRY32 plist_entry = (PLIST_ENTRY32)((PPEB_LDR_DATA32)peb32->Ldr)->InLoadOrderModuleList.Flink;
            plist_entry != &((PPEB_LDR_DATA32)peb32->Ldr)->InLoadOrderModuleList;
            plist_entry = (PLIST_ENTRY32)plist_entry->Flink)
        {
            PLDR_DATA_TABLE_ENTRY32 pentry = CONTAINING_RECORD(plist_entry, LDR_DATA_TABLE_ENTRY32, InLoadOrderLinks);

            if (wcscmp((PWCH)pentry->BaseDllName.Buffer, module_name) == 0)
            {
                return pentry->DllBase;
            }
        }
    }
    __except (EXCEPTION_EXECUTE_HANDLER)
    {

    }

    return 0;
}

Thanks for every help <3

montroisiemecon 21st May 2021 08:39 PM

Quote:

Originally Posted by Ki163 (Post 3142378)
I think I finished my first try on a Tarkov cheat but I am stuck findig the x64 module base, everytime I start the Programm it wont find the module base of tarkov. In csgo its working perfect

Code:

ULONG memory::get_module_base(PEPROCESS process, LPCWSTR module_name)
{
    if (!process) { return 0; }

    __try
    {
        PPEB32 peb32 = (PPEB32)PsGetProcessWow64Process(process);
        if (!peb32 || !peb32->Ldr) { return 0; }

        for (PLIST_ENTRY32 plist_entry = (PLIST_ENTRY32)((PPEB_LDR_DATA32)peb32->Ldr)->InLoadOrderModuleList.Flink;
            plist_entry != &((PPEB_LDR_DATA32)peb32->Ldr)->InLoadOrderModuleList;
            plist_entry = (PLIST_ENTRY32)plist_entry->Flink)
        {
            PLDR_DATA_TABLE_ENTRY32 pentry = CONTAINING_RECORD(plist_entry, LDR_DATA_TABLE_ENTRY32, InLoadOrderLinks);

            if (wcscmp((PWCH)pentry->BaseDllName.Buffer, module_name) == 0)
            {
                return pentry->DllBase;
            }
        }
    }
    __except (EXCEPTION_EXECUTE_HANDLER)
    {

    }

    return 0;
}

Thanks for every help <3

You need to find UnityPlayer.dll base, I don't know if you are looking for this one

Ki163 21st May 2021 09:21 PM

Quote:

Originally Posted by montroisiemecon (Post 3142442)
You need to find UnityPlayer.dll base, I don't know if you are looking for this one

Yes, I did try, same result :/

beepboop5 21st May 2021 09:45 PM

Quote:

Originally Posted by Ki163 (Post 3142378)
I think I finished my first try on a Tarkov cheat but I am stuck findig the x64 module base, everytime I start the Programm it wont find the module base of tarkov. In csgo its working perfect

Code:

ULONG memory::get_module_base(PEPROCESS process, LPCWSTR module_name)
{
    if (!process) { return 0; }

    __try
    {
        PPEB32 peb32 = (PPEB32)PsGetProcessWow64Process(process);
        if (!peb32 || !peb32->Ldr) { return 0; }

        for (PLIST_ENTRY32 plist_entry = (PLIST_ENTRY32)((PPEB_LDR_DATA32)peb32->Ldr)->InLoadOrderModuleList.Flink;
            plist_entry != &((PPEB_LDR_DATA32)peb32->Ldr)->InLoadOrderModuleList;
            plist_entry = (PLIST_ENTRY32)plist_entry->Flink)
        {
            PLDR_DATA_TABLE_ENTRY32 pentry = CONTAINING_RECORD(plist_entry, LDR_DATA_TABLE_ENTRY32, InLoadOrderLinks);

            if (wcscmp((PWCH)pentry->BaseDllName.Buffer, module_name) == 0)
            {
                return pentry->DllBase;
            }
        }
    }
    __except (EXCEPTION_EXECUTE_HANDLER)
    {

    }

    return 0;
}

Thanks for every help <3

The reason it works on CSGO and not Tarkov is because CSGO is a 32bit application and you are grabbing the PEB32 (which is find since the application is 32bit) however this wont work with tarkov, try using PsGetProcessPeb and the PEB64.

Ki163 21st May 2021 10:28 PM

Quote:

Originally Posted by beepboop5 (Post 3142487)
The reason it works on CSGO and not Tarkov is because CSGO is a 32bit application and you are grabbing the PEB32 (which is find since the application is 32bit) however this wont work with tarkov, try using PsGetProcessPeb and the PEB64.

Thank you for this very good tip man! I think I fixed it but I am still getting this new error now..
Error: https://pasteboard.co/K2YrifF.png

qq825286030 22nd May 2021 12:37 AM

Who has the latest offset, I have completed DeviceIoControl readMemory, but I don't have the latest offset to test

pinefin 22nd May 2021 02:01 AM

Quote:

Originally Posted by qq825286030 (Post 3142588)
Who has the latest offset, I have completed DeviceIoControl readMemory, but I don't have the latest offset to test

cheat engine -> mono disect -> expand all -> save to file

the rest you can find in this thread.

cxtgirl 22nd May 2021 05:37 PM

Quote:

Originally Posted by Ki163 (Post 3142378)
I think I finished my first try on a Tarkov cheat but I am stuck findig the x64 module base, everytime I start the Programm it wont find the module base of tarkov. In csgo its working perfect

Code:

ULONG memory::get_module_base(PEPROCESS process, LPCWSTR module_name)
{
    if (!process) { return 0; }

    __try
    {
        PPEB32 peb32 = (PPEB32)PsGetProcessWow64Process(process);
        if (!peb32 || !peb32->Ldr) { return 0; }

        for (PLIST_ENTRY32 plist_entry = (PLIST_ENTRY32)((PPEB_LDR_DATA32)peb32->Ldr)->InLoadOrderModuleList.Flink;
            plist_entry != &((PPEB_LDR_DATA32)peb32->Ldr)->InLoadOrderModuleList;
            plist_entry = (PLIST_ENTRY32)plist_entry->Flink)
        {
            PLDR_DATA_TABLE_ENTRY32 pentry = CONTAINING_RECORD(plist_entry, LDR_DATA_TABLE_ENTRY32, InLoadOrderLinks);

            if (wcscmp((PWCH)pentry->BaseDllName.Buffer, module_name) == 0)
            {
                return pentry->DllBase;
            }
        }
    }
    __except (EXCEPTION_EXECUTE_HANDLER)
    {

    }

    return 0;
}

Thanks for every help <3

if you are trying this on battleye eft then of course it will not work not to mention eft is x64 not x86

POFPE 22nd May 2021 06:04 PM

Quote:

Originally Posted by beepboop5 (Post 3142487)
The reason it works on CSGO and not Tarkov is because CSGO is a 32bit application and you are grabbing the PEB32 (which is find since the application is 32bit) however this wont work with tarkov, try using PsGetProcessPeb and the PEB64.

Code:

static uint64_t handle_get_peb(int pid)
{
        PEPROCESS process = nullptr;
        NTSTATUS  status = PsLookupProcessByProcessId(HANDLE(pid), &process);

        if (!NT_SUCCESS(status))
                return false;

        UNICODE_STRING DLLName;
        RtlInitUnicodeString(&DLLName, L"UnityPlayer.dll");
        const auto base_address = RDrvGetModuleEntry(process, DLLName);

        ObDereferenceObject(process);

        return base_address;
}

Code:

uint64_t RDrvGetModuleEntry(PEPROCESS Process, UNICODE_STRING
        module_name)
{
        if (!Process) return STATUS_INVALID_PARAMETER_1;
        PPEB peb = PsGetProcessPeb(Process);

        if (!peb) {
                return 0;
        }
        KAPC_STATE state;
        KeStackAttachProcess(Process, &state);
        PPEB_LDR_DATA ldr = peb->Ldr;

        if (!ldr)
        {
                KeUnstackDetachProcess(&state);
                return 0; // failed
        }

        for (PLIST_ENTRY listEntry = (PLIST_ENTRY)ldr->ModuleListLoadOrder.Flink;
                listEntry != &ldr->ModuleListLoadOrder;
                listEntry = (PLIST_ENTRY)listEntry->Flink)
        {

                PLDR_DATA_TABLE_ENTRY ldrEntry = CONTAINING_RECORD(listEntry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList);
                if (RtlCompareUnicodeString(&ldrEntry->BaseDllName, &module_name, TRUE) ==
                        0) {
                        ULONG64 baseAddr = (ULONG64)ldrEntry->DllBase;
                        KeUnstackDetachProcess(&state);
                        return baseAddr;
                }

        }
        KeUnstackDetachProcess(&state);

        return 0;
}


pinefin 23rd May 2021 04:42 AM

apologies for asking so many questions,

could anyone possibly tell me the chain from EFT.Player to get active weapon/inventory slots

please and thank you!

montroisiemecon 23rd May 2021 05:56 AM

Quote:

Originally Posted by pinefin (Post 3143267)
apologies for asking so many questions,

could anyone possibly tell me the chain from EFT.Player to get active weapon/inventory slots

please and thank you!

active weapon is really easy come on...
read the code with dnspy

Ki163 23rd May 2021 09:55 AM

Hey guys, one more question.
So I finished the Driver and I am now deciding what I want to have in my Cheat.
Tbh I only need an esp, but I am thinking about making chams instead, what would you guys recommend? Is it easyer to make chams or esp?
And if chams, could you give me a hint on how I could start on them?
thx for all the help <3

qq825286030 23rd May 2021 10:07 AM

Quote:

Originally Posted by pinefin (Post 3142628)
cheat engine -> mono disect -> expand all -> save to file

the rest you can find in this thread.

thank you for your answer, this is my first contact with UnityEngine

xXBradXx 23rd May 2021 09:56 PM

Quote:

Originally Posted by qq825286030 (Post 3143356)
thank you for your answer, this is my first contact with UnityEngine

unispect, dnspy, cheeto engine with mono features enabled are the best tools for easily reversing unity games i have found.

just getting started with tark, does the RegisteredPlayer list also include scavs?
i see how to tell them apart here https://www.unknowncheats.me/forum/3122854-post3873.html just like to know if that list includes them or there is a separate list?

netsh 23rd May 2021 11:57 PM

Quote:

Originally Posted by xXBradXx (Post 3143788)
snip

Yes, it includes scavs.

xXBradXx 24th May 2021 12:54 PM

how do i get player bones? the way i am trying is
Player > PlayerBody > SkeletonRootJoint > _values
but they are all in the same position except 1


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

ecthirune 24th May 2021 01:39 PM

Quote:

Originally Posted by xXBradXx (Post 3144157)
how do i get player bones? the way i am trying is
Player > PlayerBody > SkeletonRootJoint > _values
but they are all in the same position except 1

apply gettransform to it.

xXBradXx 24th May 2021 01:58 PM

Quote:

Originally Posted by ecthirune (Post 3144177)
apply gettransform to it.

you mean this?
Code:

pub unsafe fn get_pos<U: VirtualMemory>(&self, mem: &mut U) -> Vector3 {
                const SIZE_OF_M128: usize = size_of::<__m128>();
                const SIZE_OF_INT: usize = size_of::<i32>();

                let mut result: __m128;

                let mul_vec0: __m128 = _mm_set_ps(-2.0, 2.0, -2.0, 0.0);
                let mul_vec1: __m128 = _mm_set_ps(2.0, -2.0, -2.0, 0.0);
                let mul_vec2: __m128 = _mm_set_ps(-2.0, -2.0, 2.0, 0.0);

                let transform_data = self.transform_data_ptr.deref(mem).unwrap();

                let size_matricies_buf = SIZE_OF_M128 * (self.index as usize + 1);
                let size_indices_buf = SIZE_OF_INT * (self.index as usize + 1);

                let mut matricies_buf = vec![0 as u8; size_matricies_buf];
                let mut indicies_buf = vec![0 as u8; size_indices_buf];

                mem.virt_read_raw_into(transform_data.transform_array.into(), &mut matricies_buf).unwrap();
                mem.virt_read_raw_into(transform_data.transform_indices.into(), &mut indicies_buf).unwrap();

                let matricies_buf = matricies_buf.align_to::<__m128>().1.to_vec();
                let indicies_buf = indicies_buf.align_to::<i32>().1.to_vec();

                result = matricies_buf[self.index as usize];
                let mut transform_index = indicies_buf[self.index as usize];

                while transform_index >= 0 {
                        let usize_index = transform_index as usize;

                        let matrix = *(&matricies_buf[usize_index] as *const __m128 as *const [[f32; 4]; 3]);
                        let matrix0_m128 = *(&matrix as *const [f32; 4] as *const __m128);
                        let matrix1_m128i = *(&matrix[1] as *const [f32; 4] as *const __m128i);
                        let matrix2_m128 = *(&matrix[2] as *const [f32; 4] as *const __m128);

                        let xxxx = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x00));
                        let yyyy = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x55));
                        let zwxy = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x8E));
                        let wzyw = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0xDB));
                        let zzzz = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0xAA));
                        let yxwy = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x71));
                        let tmp7 = _mm_mul_ps(matrix2_m128, result);

                        result = _mm_add_ps(
                                _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps(_mm_mul_ps(xxxx, mul_vec1), zwxy),
                                                                _mm_mul_ps(_mm_mul_ps(yyyy, mul_vec2), wzyw)),
                                                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0xAA))),
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps(_mm_mul_ps(zzzz, mul_vec2), wzyw),
                                                                _mm_mul_ps(_mm_mul_ps(xxxx, mul_vec0), yxwy)),
                                                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x55)))),
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps(_mm_mul_ps(yyyy, mul_vec0), yxwy),
                                                                _mm_mul_ps(_mm_mul_ps(zzzz, mul_vec1), zwxy)),
                                                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x00))),
                                                tmp7)), matrix0_m128);

                        transform_index = indicies_buf[usize_index];
                }

                return *(&result as *const __m128 as *const Vector3);
        }

im writing my cheat in rust so this is a rust port of the function, not sure if i messed something up

fusionpak 24th May 2021 01:59 PM

Quote:

Originally Posted by xXBradXx (Post 3144192)
you mean this?
Code:

pub unsafe fn get_pos<U: VirtualMemory>(&self, mem: &mut U) -> Vector3 {
const SIZE_OF_M128: usize = size_of::<__m128>();
const SIZE_OF_INT: usize = size_of::<i32>();

let mut result: __m128;

let mul_vec0: __m128 = _mm_set_ps(-2.0, 2.0, -2.0, 0.0);
let mul_vec1: __m128 = _mm_set_ps(2.0, -2.0, -2.0, 0.0);
let mul_vec2: __m128 = _mm_set_ps(-2.0, -2.0, 2.0, 0.0);

let transform_data = self.transform_data_ptr.deref(mem).unwrap();

let size_matricies_buf = SIZE_OF_M128 * (self.index as usize + 1);
let size_indices_buf = SIZE_OF_INT * (self.index as usize + 1);

let mut matricies_buf = vec![0 as u8; size_matricies_buf];
let mut indicies_buf = vec![0 as u8; size_indices_buf];

mem.virt_read_raw_into(transform_data.transform_array.into(), &mut matricies_buf).unwrap();
mem.virt_read_raw_into(transform_data.transform_indices.into(), &mut indicies_buf).unwrap();

let matricies_buf = matricies_buf.align_to::<__m128>().1.to_vec();
let indicies_buf = indicies_buf.align_to::<i32>().1.to_vec();

result = matricies_buf[self.index as usize];
let mut transform_index = indicies_buf[self.index as usize];

while transform_index >= 0 {
let usize_index = transform_index as usize;

let matrix = *(&matricies_buf[usize_index] as *const __m128 as *const [[f32; 4]; 3]);
let matrix0_m128 = *(&matrix as *const [f32; 4] as *const __m128);
let matrix1_m128i = *(&matrix[1] as *const [f32; 4] as *const __m128i);
let matrix2_m128 = *(&matrix[2] as *const [f32; 4] as *const __m128);

let xxxx = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x00));
let yyyy = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x55));
let zwxy = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x8E));
let wzyw = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0xDB));
let zzzz = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0xAA));
let yxwy = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x71));
let tmp7 = _mm_mul_ps(matrix2_m128, result);

result = _mm_add_ps(
_mm_add_ps(
_mm_add_ps(
_mm_mul_ps(
_mm_sub_ps(
_mm_mul_ps(_mm_mul_ps(xxxx, mul_vec1), zwxy),
_mm_mul_ps(_mm_mul_ps(yyyy, mul_vec2), wzyw)),
_mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0xAA))),
_mm_mul_ps(
_mm_sub_ps(
_mm_mul_ps(_mm_mul_ps(zzzz, mul_vec2), wzyw),
_mm_mul_ps(_mm_mul_ps(xxxx, mul_vec0), yxwy)),
_mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x55)))),
_mm_add_ps(
_mm_mul_ps(
_mm_sub_ps(
_mm_mul_ps(_mm_mul_ps(yyyy, mul_vec0), yxwy),
_mm_mul_ps(_mm_mul_ps(zzzz, mul_vec1), zwxy)),
_mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x00))),
tmp7)), matrix0_m128);

transform_index = indicies_buf[usize_index];
}

return *(&result as *const __m128 as *const Vector3);
}

im writing my cheat in rust so this is a rust port of the function, not sure if i messed something up


Yup


Sent from my iPhone using Tapatalk

xXBradXx 24th May 2021 02:02 PM

Quote:

Originally Posted by fusionpak (Post 3144194)
Yup


Sent from my iPhone using Tapatalk

right, that's what im using to get the position from the transform but it returns the same position for all of them

ecthirune 24th May 2021 02:37 PM

Quote:

Originally Posted by xXBradXx (Post 3144195)
right, that's what im using to get the position from the transform but it returns the same position for all of them

Without code snippet no1 can help. You probably missing something, or have wrong offsets, or smth else.

check way how you get bones.
Code:

ULONG64 boneAddr = read_chain(pid, vector[i].bone_array,
{(ULONG64(vector[i].allBones[z].number * 0x8 + 0x20)), 0x10 });  // um, gave dumb stuff here on first post, fixed

std::vector<playerBones> allBones = {
        {"HumanRForearm2", 113},                //0
        {"HumanRForearm1", 112},                //1
        {"HumanRUpperarm", 111},                //2
        {"HumanNeck", 132},                                //3
        {"HumanLUpperarm", 90},                        //4
        {"HumanLForearm1", 91},                        //5
        {"HumanLForearm2", 92},                        //6
        {"HumanHead", 133},                                //7
        {"HumanSpine3", 37},                        //8
        {"HumanSpine2", 36},                        //9
        {"HumanSpine1", 29},                        //10
        {"HumanPelvis", 14},                        //11
        {"HumanRCalf", 22},                                //12
        {"HumanRFoot", 23},                                //13
        {"HumanLCalf", 17},                                //14
        {"HumanLFoot", 18}, };                        //15


xXBradXx 24th May 2021 02:56 PM

Quote:

Originally Posted by ecthirune (Post 3144217)
~

im pretty certain my problem is with my transform.get_pos method.
here is what result is each iteration of the while loop in there
Code:

__m128(0.0, 0.0, 0.0, 0.0)
__m128(1.0, 1.0, 1.0, 0.0)
__m128(0.0, 0.0, 0.0, 1.0)
__m128(0.0, 0.0, 0.0, 0.0)
__m128(0.0, -0.9989071, 0.0, -0.046740197)
__m128(-4.165821, 0.59403634, 32.438774, 0.0)
Vector3 { x: -4.165821, y: 0.59403634, z: 32.438774 }

the last one it reads is always the same and the previous ones it reads dont change anything, they're just read into the result variable and then overwritten with the next one.

can u show me an example output from yours? i think the previous results should impact the future ones but in my port that's not what is happening

ecthirune 24th May 2021 03:01 PM

Quote:

Originally Posted by xXBradXx (Post 3144234)
can u show me an example output from yours? i think the previous results should impact the future ones but in my port that's not what is happening

faster will be just take already posted gettransform on forum than compare mine and your results, in case im too lazy to modify code for printing results on each value, run eft, start software.. etc etc.

xXBradXx 24th May 2021 03:04 PM

Quote:

Originally Posted by ecthirune (Post 3144236)
faster will be just take already posted gettransform on forum than compare mine and your results, in case im too lazy to modify code for printing results on each value, run eft, start software.. etc etc.

i posted the function im using, im writing my cheat in rust i cant just copy and paste C++ code into my project

Ki163 24th May 2021 03:52 PM

How do I use dnSpy to find Tarkov offsets?

ecthirune 24th May 2021 04:01 PM

Quote:

Originally Posted by xXBradXx (Post 3144242)
i posted the function im using, im writing my cheat in rust i cant just copy and paste C++ code into my project

ok take it, printing only result of calculation, each loop till returns vector3(the last print)
Code:

-0.251116,0.0701775 , -0.006373
-0.142068,0.129472 , -0.179814
0.0211636,0.329542 , 0.0836608
-0.0760136,0.281599 , -0.137898
-0.165964,0.285441 , -0.149025
-0.275223,0.319939 , -0.127046
-0.327871,0.338851 , -0.0276613
-0.00575232,1.21373 , 0.264197
-0.00575254,1.21373 , 0.264197
-0.00575254,1.21373 , 0.264197
124.246,-38.6934 , -78.273
finished

and another one
Code:

-176.335,2.46065 , -81.1476
-0.0610502,0.860639 , -0.0333417
-0.0610502,0.860639 , -0.0333417
-266.817,0.0745065 , -144.139
finished


pinefin 26th May 2021 02:25 AM

is setting doorstate detected?

fusionpak 26th May 2021 05:20 AM

Quote:

Originally Posted by pinefin (Post 3145312)
is setting doorstate detected?


From what I�ve read it�s very detected, if not an instaban


Sent from my iPhone using Tapatalk

POFPE 26th May 2021 01:00 PM

Code:

void instantADS(ProceduralWeaponAnimation* proceduralWeaponAnimation)
{
    if (is_bad_ptr(proceduralWeaponAnimation))
        return;
    driver::writeMemory<float>((uint64_t)proceduralWeaponAnimation + offsetof(ProceduralWeaponAnimation, aimingSpeed), 10.f);
}

Code:

void easyWalls(HandsController* handsController)
{
    driver::writeMemory<float>((uint64_t)handsController + offsetof(HandsController, weaponLength), 0.f);
}

*NOTICE : its not my code

Yeah, So i Found this one on This thread, and im not really sure How can I get these offsets.
I tried unispect, but these weaponLength and aimingspeed is single type. So any one can give me some advice to get these offsets?

Quote:

Originally Posted by fusionpak (Post 3145382)
From what I�ve read it�s very detected, if not an instaban


Sent from my iPhone using Tapatalk

Its not true. There are many ways to make it possible without ban XD

xXBradXx 26th May 2021 01:30 PM

Quote:

Originally Posted by POFPE (Post 3145570)
I tried unispect, but these weaponLength and aimingspeed is single type

single is single precision floating point, a float. that's what you're looking for

so i found at least one mistake in my port of the transform to position function
i had
Code:

let matricies_buf = matricies_buf.align_to::<__m128>().1;
when it should've been
Code:

let matricies_buf = matricies_buf.align_to::<[__m128; 3]>().1;
this is my updated function & relevant structs
Code:

#[repr(C)]
#[derive(Pod, Debug)]
pub struct UnityTransform {
        p1: [u8; 0x10],
        pub transform_ptr: Pointer64<Transform>
}

#[repr(C)]
#[derive(Pod, Debug)]
pub struct Transform {
        p1: [u8; 0x38],
        transform_data_ptr: Pointer64<TransformData>,
        index: i32,
        p2: [u8; 0x4]
}

#[repr(C)]
#[derive(Pod, Debug)]
pub struct TransformData {
        p1: [u8; 0x18],
        transform_array: u64,
        transform_indices: u64
}

impl Transform {
        pub unsafe fn get_pos<U: VirtualMemory>(self, mem: &mut U) -> Vector3 {
                const SIZE_OF_M128: usize = size_of::<__m128>();
                const SIZE_OF_INT: usize = size_of::<i32>();

                let mut result: __m128;

                let mul_vec0: __m128 = _mm_set_ps(-2.0, 2.0, -2.0, 0.0);
                let mul_vec1: __m128 = _mm_set_ps(2.0, -2.0, -2.0, 0.0);
                let mul_vec2: __m128 = _mm_set_ps(-2.0, -2.0, 2.0, 0.0);

                let transform_data = self.transform_data_ptr.deref(mem).unwrap();

                let size_matricies_buf = (SIZE_OF_M128 * 3) * (self.index as usize + 1);
                let size_indices_buf = SIZE_OF_INT * (self.index as usize + 1);

                let mut matricies_buf = vec![0 as u8; size_matricies_buf];
                let mut indicies_buf = vec![0 as u8; size_indices_buf];

                if transform_data.transform_array == 0 || transform_data.transform_indices == 0 {
                        return Vector3::new(0.0, 0.0, 0.0);
                }

                mem.virt_read_raw_into(transform_data.transform_array.into(), &mut matricies_buf).unwrap();
                mem.virt_read_raw_into(transform_data.transform_indices.into(), &mut indicies_buf).unwrap();

                let matricies_buf = matricies_buf.align_to::<[__m128; 3]>().1;
                let indicies_buf = indicies_buf.align_to::<i32>().1;

                result = matricies_buf[self.index as usize][0];
                let mut transform_index = indicies_buf[self.index as usize];

                while transform_index >= 0 {
                        let usize_index = transform_index as usize;

                        let matrix = matricies_buf[usize_index];
                        let matrix0_m128 = matrix[0];
                        let matrix1_m128i = *(&matrix[1] as *const __m128 as *const __m128i);
                        let matrix2_m128 = matrix[2];

                        let xxxx = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x00));
                        let yyyy = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x55));
                        let zwxy = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x8E));
                        let wzyw = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0xDB));
                        let zzzz = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0xAA));
                        let yxwy = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x71));
                        let tmp7 = _mm_mul_ps(matrix2_m128, result);

                        result = _mm_add_ps(
                                _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps(_mm_mul_ps(xxxx, mul_vec1), zwxy),
                                                                _mm_mul_ps(_mm_mul_ps(yyyy, mul_vec2), wzyw)),
                                                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0xAA))),
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps(_mm_mul_ps(zzzz, mul_vec2), wzyw),
                                                                _mm_mul_ps(_mm_mul_ps(xxxx, mul_vec0), yxwy)),
                                                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x55)))),
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps(_mm_mul_ps(yyyy, mul_vec0), yxwy),
                                                                _mm_mul_ps(_mm_mul_ps(zzzz, mul_vec1), zwxy)),
                                                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x00))),
                                                tmp7)), matrix0_m128);

                        transform_index = indicies_buf[usize_index];
                }

                return *(&result as *const __m128 as *const Vector3);
        }
}

but this is still giving me problems. every bone pos is no longer in the same position but it's like they're way scaled up from where they should be: https://i.imgur.com/puwSbCB.png

can anyone help me with what im doing wrong?

POFPE 26th May 2021 02:01 PM

Quote:

Originally Posted by xXBradXx (Post 3145594)
single is single precision floating point, a float. that's what you're looking for

so i found at least one mistake in my port of the transform to position function
i had
Code:

let matricies_buf = matricies_buf.align_to::<__m128>().1;
when it should've been
Code:

let matricies_buf = matricies_buf.align_to::<[__m128; 3]>().1;
this is my updated function & relevant structs
Code:

#[repr(C)]
#[derive(Pod, Debug)]
pub struct UnityTransform {
        p1: [u8; 0x10],
        pub transform_ptr: Pointer64<Transform>
}

#[repr(C)]
#[derive(Pod, Debug)]
pub struct Transform {
        p1: [u8; 0x38],
        transform_data_ptr: Pointer64<TransformData>,
        index: i32,
        p2: [u8; 0x4]
}

#[repr(C)]
#[derive(Pod, Debug)]
pub struct TransformData {
        p1: [u8; 0x18],
        transform_array: u64,
        transform_indices: u64
}

impl Transform {
        pub unsafe fn get_pos<U: VirtualMemory>(self, mem: &mut U) -> Vector3 {
                const SIZE_OF_M128: usize = size_of::<__m128>();
                const SIZE_OF_INT: usize = size_of::<i32>();

                let mut result: __m128;

                let mul_vec0: __m128 = _mm_set_ps(-2.0, 2.0, -2.0, 0.0);
                let mul_vec1: __m128 = _mm_set_ps(2.0, -2.0, -2.0, 0.0);
                let mul_vec2: __m128 = _mm_set_ps(-2.0, -2.0, 2.0, 0.0);

                let transform_data = self.transform_data_ptr.deref(mem).unwrap();

                let size_matricies_buf = (SIZE_OF_M128 * 3) * (self.index as usize + 1);
                let size_indices_buf = SIZE_OF_INT * (self.index as usize + 1);

                let mut matricies_buf = vec![0 as u8; size_matricies_buf];
                let mut indicies_buf = vec![0 as u8; size_indices_buf];

                if transform_data.transform_array == 0 || transform_data.transform_indices == 0 {
                        return Vector3::new(0.0, 0.0, 0.0);
                }

                mem.virt_read_raw_into(transform_data.transform_array.into(), &mut matricies_buf).unwrap();
                mem.virt_read_raw_into(transform_data.transform_indices.into(), &mut indicies_buf).unwrap();

                let matricies_buf = matricies_buf.align_to::<[__m128; 3]>().1;
                let indicies_buf = indicies_buf.align_to::<i32>().1;

                result = matricies_buf[self.index as usize][0];
                let mut transform_index = indicies_buf[self.index as usize];

                while transform_index >= 0 {
                        let usize_index = transform_index as usize;

                        let matrix = matricies_buf[usize_index];
                        let matrix0_m128 = matrix[0];
                        let matrix1_m128i = *(&matrix[1] as *const __m128 as *const __m128i);
                        let matrix2_m128 = matrix[2];

                        let xxxx = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x00));
                        let yyyy = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x55));
                        let zwxy = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x8E));
                        let wzyw = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0xDB));
                        let zzzz = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0xAA));
                        let yxwy = _mm_castsi128_ps(_mm_shuffle_epi32(matrix1_m128i, 0x71));
                        let tmp7 = _mm_mul_ps(matrix2_m128, result);

                        result = _mm_add_ps(
                                _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps(_mm_mul_ps(xxxx, mul_vec1), zwxy),
                                                                _mm_mul_ps(_mm_mul_ps(yyyy, mul_vec2), wzyw)),
                                                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0xAA))),
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps(_mm_mul_ps(zzzz, mul_vec2), wzyw),
                                                                _mm_mul_ps(_mm_mul_ps(xxxx, mul_vec0), yxwy)),
                                                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x55)))),
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps(_mm_mul_ps(yyyy, mul_vec0), yxwy),
                                                                _mm_mul_ps(_mm_mul_ps(zzzz, mul_vec1), zwxy)),
                                                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x00))),
                                                tmp7)), matrix0_m128);

                        transform_index = indicies_buf[usize_index];
                }

                return *(&result as *const __m128 as *const Vector3);
        }
}

but this is still giving me problems. every bone pos is no longer in the same position but it's like they're way scaled up from where they should be: https://i.imgur.com/puwSbCB.png

can anyone help me with what im doing wrong?

U can see Frankie's external src code. it's calculation work charmly with some offsets change. And, I mean, I can't dump name of that. So many single shit on 1 class.

xXBradXx 26th May 2021 05:02 PM

Quote:

Originally Posted by POFPE (Post 3145616)
And, I mean, I can't dump name of that. So many single shit on 1 class.

ADS speed is +17C

POFPE 26th May 2021 05:10 PM

Quote:

Originally Posted by xXBradXx (Post 3145759)
ADS speed is +17C

weaponprocedural + 0x17c?

xXBradXx 26th May 2021 05:31 PM

Quote:

Originally Posted by POFPE (Post 3145763)
weaponprocedural + 0x17c?

yep 👍

i finally figured out my transform issue, the _mm_set_ps function takes the numbers in reverse order. works perfectly now with them in reverse.

pinefin 26th May 2021 06:08 PM

Quote:

Originally Posted by POFPE (Post 3145570)
Code:

void instantADS(ProceduralWeaponAnimation* proceduralWeaponAnimation)
{
    if (is_bad_ptr(proceduralWeaponAnimation))
        return;
    driver::writeMemory<float>((uint64_t)proceduralWeaponAnimation + offsetof(ProceduralWeaponAnimation, aimingSpeed), 10.f);
}

Code:

void easyWalls(HandsController* handsController)
{
    driver::writeMemory<float>((uint64_t)handsController + offsetof(HandsController, weaponLength), 0.f);
}

*NOTICE : its not my code

Yeah, So i Found this one on This thread, and im not really sure How can I get these offsets.
I tried unispect, but these weaponLength and aimingspeed is single type. So any one can give me some advice to get these offsets?



Its not true. There are many ways to make it possible without ban XD

thank you but that brings up another question, how and which way should i go about door unlocker? i only set it on key and if the interaction menu is up for the door, and obviously a distance check.

DragonTTK 27th May 2021 12:34 AM

Kinda random question but how can i go about getting the class name of grenadeItem as for me it just appears as a square and i cant use it for anything if someone could explain how or why that happens would appreciate it thanks, i've notice for instance in tarkov sp the square class there could be something like GClass2258 but im not sure why its like that exactly but with tarkov sp i'd be able to use the class to call functions where with the square i cant.

Tarkov
https://i.gyazo.com/76f4105d7d3825cc...d51966940d.png

Tarkov SP
https://i.gyazo.com/e9d7329e237977d4...325a56be81.png


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

POFPE 27th May 2021 04:31 AM

Can Anyone share some shoot through wall without damage absord?
i was tried some wall's intensity through rate to 0.f, but many bullet is getting weak.
Im on external, So anyone has know about how can i process it properly without damage absorb?
I found this one: https://www.unknowncheats.me/forum/3...-post4007.html
but im not really sure what is jit code patching

Sheld0r 27th May 2021 04:47 AM

what do you guys use for exit transform
Code:

0x10, 0x30, 0x30, 0x8, 0x38
seems to skip some?

POFPE 27th May 2021 06:52 AM

1 Attachment(s)
Quote:

Originally Posted by POFPE (Post 3146155)
Can Anyone share some shoot through wall without damage absord?
i was tried some wall's intensity through rate to 0.f, but many bullet is getting weak.
Im on external, So anyone has know about how can i process it properly without damage absorb?
I found this one: https://www.unknowncheats.me/forum/3...-post4007.html
but im not really sure what is jit code patching

Ok, I find this part,and i must change if (this.IsForwardHit) to if (false). How can i process it?

Minuo 27th May 2021 11:01 AM

Quote:

Originally Posted by Sheld0r (Post 3146159)
what do you guys use for exit transform
Code:

0x10, 0x30, 0x30, 0x8, 0x38
seems to skip some?

Code:

Vector3 UnityGetPosition(DWORD_PTR pTransform)
{
        __m128 result;

        const __m128 mulVec0 = { -2.000, 2.000, -2.000, 0.000 };
        const __m128 mulVec1 = { 2.000, -2.000, -2.000, 0.000 };
        const __m128 mulVec2 = { -2.000, -2.000, 2.000, 0.000 };

        if (IsBadReadPtr((PVOID)pTransform, sizeof(DWORD_PTR)))
                return { 0,0,0 };
        DWORD_PTR pTransformAccessReadOnly = Read_Int(pTransform + 0x38);
        unsigned int index = Read_Int32(pTransform + 0x40);
        TransformData transformData = { Read_Int(pTransformAccessReadOnly + 0x18),Read_Int(pTransformAccessReadOnly + 0x20) };

        if (transformData.pTransformArray && transformData.pTransformIndices)
        {
                result = Read__m128((DWORD_PTR)transformData.pTransformArray + 0x30 * index);
                int transformIndex = Read_Int32((DWORD_PTR)transformData.pTransformIndices + 0x4 * index);
                int pSafe = 0;
                while (transformIndex >= 0 && pSafe++ < 200)
                {
                        Matrix34 matrix34 = Read_Matrix34((DWORD_PTR)transformData.pTransformArray + 0x30 * transformIndex);

                        __m128 xxxx = _mm_castsi128_ps(_mm_shuffle_epi32(Read__m128i((DWORD_PTR)&matrix34.vec1), 0x00));        // xxxx
                        __m128 yyyy = _mm_castsi128_ps(_mm_shuffle_epi32(Read__m128i((DWORD_PTR)&matrix34.vec1), 0x55));        // yyyy
                        __m128 zwxy = _mm_castsi128_ps(_mm_shuffle_epi32(Read__m128i((DWORD_PTR)&matrix34.vec1), 0x8E));        // zwxy
                        __m128 wzyw = _mm_castsi128_ps(_mm_shuffle_epi32(Read__m128i((DWORD_PTR)&matrix34.vec1), 0xDB));        // wzyw
                        __m128 zzzz = _mm_castsi128_ps(_mm_shuffle_epi32(Read__m128i((DWORD_PTR)&matrix34.vec1), 0xAA));        // zzzz
                        __m128 yxwy = _mm_castsi128_ps(_mm_shuffle_epi32(Read__m128i((DWORD_PTR)&matrix34.vec1), 0x71));        // yxwy
                        __m128 tmp7 = _mm_mul_ps(Read__m128((DWORD_PTR)&matrix34.vec2), result);

                        result = _mm_add_ps(
                                _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps(_mm_mul_ps(xxxx, mulVec1), zwxy),
                                                                _mm_mul_ps(_mm_mul_ps(yyyy, mulVec2), wzyw)),
                                                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0xAA))),
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps(_mm_mul_ps(zzzz, mulVec2), wzyw),
                                                                _mm_mul_ps(_mm_mul_ps(xxxx, mulVec0), yxwy)),
                                                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x55)))),
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps(_mm_mul_ps(yyyy, mulVec0), yxwy),
                                                                _mm_mul_ps(_mm_mul_ps(zzzz, mulVec1), zwxy)),
                                                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x00))),
                                                tmp7)), Read__m128((DWORD_PTR)&matrix34.vec0));

                        transformIndex = Read_Int32((DWORD_PTR)transformData.pTransformIndices + 0x4 * transformIndex);
                }
        }

        return { result.m128_f32[0], result.m128_f32[1], result.m128_f32[2] };
}

Code:

Vector3 GetItemPosition(DWORD_PTR ItemstPtr)
{
        DWORD_PTR ItemProfilePtr = Read_Int(ItemstPtr + 0x10);
        if (Rtl_IsValid(ItemProfilePtr))
        {
                DWORD_PTR GameObjectPtr = Read_Int(ItemProfilePtr + 0x30);
                if (Rtl_IsValid(GameObjectPtr))
                {
                        DWORD_PTR TransformOnePtr = Read_Int(GameObjectPtr + 0x30);
                        if (Rtl_IsValid(TransformOnePtr))
                        {
                                DWORD_PTR TransformTwoPtr = Read_Int(TransformOnePtr + 0x8);
                                if (Rtl_IsValid(TransformTwoPtr))
                                {
                                        return UnityGetPosition(TransformTwoPtr);
                                }
                        }
                }
        }
        return { 0,0,0 };
}

Please use it

DragonTTK 27th May 2021 02:15 PM

Kinda random question but how can i go about getting the class name of grenadeItem as for me it just appears as a square and i cant use it for anything if someone could explain how or why that happens would appreciate it thanks, i've notice for instance in tarkov sp the square class there could be something like GClass2258 but im not sure why its like that exactly but with tarkov sp i'd be able to use the class to call functions where with the square i cant.

Tarkov
https://i.gyazo.com/76f4105d7d3825cc...d51966940d.png

Tarkov SP
https://i.gyazo.com/e9d7329e237977d4...325a56be81.png

montroisiemecon 27th May 2021 04:16 PM

Quote:

Originally Posted by DragonTTK (Post 3146429)
Kinda random question but how can i go about getting the class name of grenadeItem as for me it just appears as a square and i cant use it for anything if someone could explain how or why that happens would appreciate it thanks, i've notice for instance in tarkov sp the square class there could be something like GClass2258 but im not sure why its like that exactly but with tarkov sp i'd be able to use the class to call functions where with the square i cant.

Tarkov
https://i.gyazo.com/76f4105d7d3825cc...d51966940d.png

Tarkov SP
https://i.gyazo.com/e9d7329e237977d4...325a56be81.png

If no one answered you the first time no one will answer you the 2nd time

Quote:

Originally Posted by Sheld0r (Post 3146159)
what do you guys use for exit transform
Code:

0x10, 0x30, 0x30, 0x8, 0x38
seems to skip some?

Code:

    CachedExfil(uint64_t ptrExfil)
    {
        exfil = ptrExfil;
        uint64_t transform = ReadPtrChain(ptrExfil, { 0x10, 0x30, 0x30, 0x8, 0x28 });
        const auto& exfilSettings = _deref(_deref((Exfil*)ptrExfil).exfilSettings);
        UnityEngineString* extractName = exfilSettings.name;
        name = getString(extractName);
        setPosition(getTransformPosition(transform));
    }


Sheld0r 27th May 2021 05:37 PM

Quote:

Originally Posted by montroisiemecon (Post 3146525)
If no one answered you the first time no one will answer you the 2nd time



Code:

    CachedExfil(uint64_t ptrExfil)
    {
        exfil = ptrExfil;
        uint64_t transform = ReadPtrChain(ptrExfil, { 0x10, 0x30, 0x30, 0x8, 0x28 });
        const auto& exfilSettings = _deref(_deref((Exfil*)ptrExfil).exfilSettings);
        UnityEngineString* extractName = exfilSettings.name;
        name = getString(extractName);
        setPosition(getTransformPosition(transform));
    }



Is it required to check for scav/pmc like that?

20 : exfiltrationPoint_0 (type: EFT.Interactive.ExfiltrationPoint[])
28 : scavExfiltrationPoint_0 (type: EFT.Interactive.ScavExfiltrationPoint[])

Code:

if (Game::LocalPlayer.SideId == EFTPlayersSide::Savage)
                offset = 0x28;
        else
                offset = 0x20;

I have no idea why but on factory its still fucked, your chain works on all other maps.

thanks for share

You must spread some Reputation around before giving it to montroisiemecon again. :(

montroisiemecon 27th May 2021 07:29 PM

Quote:

Originally Posted by Sheld0r (Post 3146589)
Is it required to check for scav/pmc like that?

20 : exfiltrationPoint_0 (type: EFT.Interactive.ExfiltrationPoint[])
28 : scavExfiltrationPoint_0 (type: EFT.Interactive.ScavExfiltrationPoint[])

Code:

if (Game::LocalPlayer.SideId == EFTPlayersSide::Savage)
                offset = 0x28;
        else
                offset = 0x20;

I have no idea why but on factory its still fucked, your chain works on all other maps.

thanks for share

You must spread some Reputation around before giving it to montroisiemecon again. :(

that's correct

Code:

    std::vector<Exfil*> getAllExfils(bool pmcRaid)
    {
        const auto& exfilController = _deref(LocalGameWorld.exfilController);
        return getArrayContent(pmcRaid ? exfilController.exfiltrationPoints : exfilController.scavExfiltrationPoints);
    }

Code:

struct ExfilController
{
    char pad_0[0x20];
    Array<Exfil>* exfiltrationPoints;
    Array<Exfil>* scavExfiltrationPoints;
};


XzThabestzX 27th May 2021 09:09 PM

Quote:

Originally Posted by DragonTTK (Post 3146429)
Kinda random question but how can i go about getting the class name of grenadeItem as for me it just appears as a square and i cant use it for anything if someone could explain how or why that happens would appreciate it thanks, i've notice for instance in tarkov sp the square class there could be something like GClass2258 but im not sure why its like that exactly but with tarkov sp i'd be able to use the class to call functions where with the square i cant.

Tarkov
https://i.gyazo.com/76f4105d7d3825cc...d51966940d.png

Tarkov SP
https://i.gyazo.com/e9d7329e237977d4...325a56be81.png

The boxes in place of type names are because of obfuscation in the live build of Tarkov. Deobfuscating the assembly with de4dot produces more readable type names like in the second picture if they're obfuscated.

Minuo 28th May 2021 09:57 AM

Quote:

Originally Posted by Sheld0r (Post 3146589)
Is it required to check for scav/pmc like that?

20 : exfiltrationPoint_0 (type: EFT.Interactive.ExfiltrationPoint[])
28 : scavExfiltrationPoint_0 (type: EFT.Interactive.ScavExfiltrationPoint[])

Code:

if (Game::LocalPlayer.SideId == EFTPlayersSide::Savage)
                offset = 0x28;
        else
                offset = 0x20;

I have no idea why but on factory its still fucked, your chain works on all other maps.

thanks for share

You must spread some Reputation around before giving it to montroisiemecon again. :(

I have posted the correct code, why are you still asking?

DragonTTK 28th May 2021 05:58 PM

Quote:

Originally Posted by XzThabestzX (Post 3146687)
The boxes in place of type names are because of obfuscation in the live build of Tarkov. Deobfuscating the assembly with de4dot produces more readable type names like in the second picture if they're obfuscated.

Alright thank you.

pinefin 29th May 2021 12:10 AM

does anyone possibly know what the offset for

Diz.Skinning.AbstractSkin.SkinnedMeshRenderer?

POFPE 29th May 2021 03:42 AM

anyone know how can i remove aiming shake? like this:
https://streamable.com/9anu7m

netsh 29th May 2021 05:09 AM

Does anyone know how I can get an instance of an obfuscated class?

pinefin 29th May 2021 07:20 AM

Quote:

Originally Posted by POFPE (Post 3147673)
anyone know how can i remove aiming sway? like this:
https://streamable.com/9anu7m

what exactly are you setting?

POFPE 29th May 2021 07:34 AM

void EFTData::norecoil(uintptr_t local) {
uint64_t animation = memio->read<UINT64>(local + 0x190);
if (animation)
{

uint64_t breath = animation + 0x28;
breath = memio->read<uint64_t>(breath);
memio->writefloat(breath + 0xA4, 0.f); //breath intensity
uint64_t Walk = animation + 0x30;
Walk = memio->read<uint64_t>(Walk);
memio->writefloat(Walk + 0x44, 0.f); //walk intensity

uint64_t MotionReact = animation + 0x38;
MotionReact = memio->read<uint64_t>(MotionReact);
memio->writefloat(MotionReact + 0xD0, 0.f);// motion

uint64_t ForceReact = animation + 0x40;
ForceReact = memio->read<uint64_t>(ForceReact);
memio->writefloat(ForceReact + 0x30, 0.f);//force

uint64_t shot = animation + 0x48;
shot = memio->read<uint64_t>(shot);
memio->writefloat(shot + 0x68, 0.f); // shot*/

}
}

montroisiemecon 29th May 2021 10:33 AM

Quote:

Originally Posted by POFPE (Post 3147768)
void EFTData::norecoil(uintptr_t local) {
uint64_t animation = memio->read<UINT64>(local + 0x190);
if (animation)
{

uint64_t breath = animation + 0x28;
breath = memio->read<uint64_t>(breath);
memio->writefloat(breath + 0xA4, 0.f); //breath intensity
uint64_t Walk = animation + 0x30;
Walk = memio->read<uint64_t>(Walk);
memio->writefloat(Walk + 0x44, 0.f); //walk intensity

uint64_t MotionReact = animation + 0x38;
MotionReact = memio->read<uint64_t>(MotionReact);
memio->writefloat(MotionReact + 0xD0, 0.f);// motion

uint64_t ForceReact = animation + 0x40;
ForceReact = memio->read<uint64_t>(ForceReact);
memio->writefloat(ForceReact + 0x30, 0.f);//force

uint64_t shot = animation + 0x48;
shot = memio->read<uint64_t>(shot);
memio->writefloat(shot + 0x68, 0.f); // shot*/

}
}

This is the worst possible way of doing no recoil. Correct method has been posted a few times

POFPE 29th May 2021 10:46 AM

Quote:

Originally Posted by montroisiemecon (Post 3147851)
This is the worst possible way of doing no recoil. Correct method has been posted a few times

yeah i saw set mask to 1 and breaheffect to 0, but it make firepos messy and aimbot inaccurate. thats why im using like this way.

montroisiemecon 29th May 2021 11:44 AM

Quote:

Originally Posted by POFPE (Post 3147860)
yeah i saw set mask to 1 and breaheffect to 0, but it make firepos messy and aimbot inaccurate. thats why im using like this way.

its because there's one more float to set, then its perfectly accurate and nothing is "messy"

POFPE 29th May 2021 12:01 PM

Quote:

Originally Posted by montroisiemecon (Post 3147901)
its because there's one more float to set, then its perfectly accurate and nothing is "messy"

What float u mean?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

montroisiemecon 29th May 2021 12:16 PM

Quote:

Originally Posted by POFPE (Post 3147910)
What float u mean?

float alignToZeroFloat22; // 0x21c

of ProceduralWeaponAnimation

driver::writeMemory<float>((uint64_t)proceduralWeaponAnimation + offsetof(ProceduralWeaponAnimation, alignToZeroFloat22), 0.f); // float_22

POFPE 29th May 2021 12:44 PM

Quote:

Originally Posted by montroisiemecon (Post 3147901)
its because there's one more float to set, then its perfectly accurate and nothing is "messy"

No... Even now, It make fireportpos Messy...
this is my code
Code:

void EFTData::norecoil(uintptr_t local) {
        uint64_t animation = memio->read<UINT64>(local + 0x190);
        if (animation)
        {
                uint64_t breath = animation + 0x28;
                breath = memio->read<uint64_t>(breath);
                memio->writefloat(breath + 0xA4, 0.f);//breath intensity

                uint64_t alignToZeroFloat22 = animation + 0x21c;
                memio->writefloat(alignToZeroFloat22, 0.f);

                uint64_t mask = animation + 0xF8;
                memio->writefloat(mask, 1.f);

        }
}

Code:

EFTData::norecoil(localPlayer.instance);
EDIT: working CHARMLY after edit AimingDisplacementStr to 0. thx for all forum users, especially montroisiemecon

beepboop5 30th May 2021 11:04 AM

Quote:

Originally Posted by netsh (Post 3147712)
Does anyone know how I can get an instance of an obfuscated class?

By checking its xrefs and seeing if they land in other classes that you can easily obtain :thinking: (ctrl + shift + r on dnspy by default while selecting the class)

montroisiemecon 30th May 2021 02:28 PM

Quote:

Originally Posted by POFPE (Post 3147942)
No... Even now, It make fireportpos Messy...
this is my code
Code:

void EFTData::norecoil(uintptr_t local) {
        uint64_t animation = memio->read<UINT64>(local + 0x190);
        if (animation)
        {
                uint64_t breath = animation + 0x28;
                breath = memio->read<uint64_t>(breath);
                memio->writefloat(breath + 0xA4, 0.f);//breath intensity

                uint64_t alignToZeroFloat22 = animation + 0x21c;
                memio->writefloat(alignToZeroFloat22, 0.f);

                uint64_t mask = animation + 0xF8;
                memio->writefloat(mask, 1.f);

        }
}

Code:

EFTData::norecoil(localPlayer.instance);
EDIT: working CHARMLY after edit AimingDisplacementStr to 0. thx for all forum users, especially montroisiemecon

Glad to know you made it workd

BrokeGamer 31st May 2021 11:43 PM

So I've toyed around a bit looking into the memory of EscapeFromTarkov.exe with Cheat Engine / ReClass, and have been struggling to find the health value of the player. I'd even do scans with "All" values, and even when I freeze the process... the only thing I have found was the health value stored in the inventory UI when you hit tab (upon hitting tab the value then updates). If I am scanning the whole processes' memory, I believe I should be able to find it - or am I doing it wrong?

nicxio 31st May 2021 11:51 PM

Quote:

Originally Posted by BrokeGamer (Post 3149637)
So I've toyed around a bit looking into the memory of EscapeFromTarkov.exe with Cheat Engine / ReClass, and have been struggling to find the health value of the player. I'd even do scans with "All" values, and even when I freeze the process... the only thing I have found was the health value stored in the inventory UI when you hit tab (upon hitting tab the value then updates). If I am scanning the whole processes' memory, I believe I should be able to find it - or am I doing it wrong?

health is stored for every bodypart

BrokeGamer 1st June 2021 12:32 AM

Quote:

Originally Posted by nicxio (Post 3149644)
health is stored for every bodypart

That makes sense then. I knew that but I assumed they might have had a total value stored as well. I have 2,000 hours in the game and did not even think of that - yikes LOL. Thanks.

On another note - what would be a good way to dissect the game through memory for an external cheat (as in the process)? I was thinking that besides probing with Cheat Engine / ReClass / etc., I'd need to understand the data structures of classes so I can read the memory structures better - like using dnSpy? I assume that's what I'd need to do since it looks like people in this thread are doing the same. Just double checking though.

montroisiemecon 1st June 2021 12:44 AM

Quote:

Originally Posted by BrokeGamer (Post 3149637)
So I've toyed around a bit looking into the memory of EscapeFromTarkov.exe with Cheat Engine / ReClass, and have been struggling to find the health value of the player. I'd even do scans with "All" values, and even when I freeze the process... the only thing I have found was the health value stored in the inventory UI when you hit tab (upon hitting tab the value then updates). If I am scanning the whole processes' memory, I believe I should be able to find it - or am I doing it wrong?

Code:

void getHealth()
    {
        if (!shouldUpdate(_lastHealthTime, 50ms))
            return;
        const auto& healthController = _deref(_deref(_player).healthController);
        const auto& healthDict = _deref(healthController.dictBodyPartState);
        uint32_t countDict = healthDict.count;
        if (countDict > 100)
            return;
        maxHealth = 0.f;
        _currentHealth = 0.f;
        _mapHealth.clear();
        for (int j = 0; j < countDict; ++j)
        {
            uint64_t bodyPart = driver::readMemory<uint64_t>((uint64_t)healthDict.entries + 0x28 + 0x18 * j);
            std::string bodyPartName;
            switch (bodyPart) {
            case 0:
                bodyPartName = "HEAD";
                break;
            case 1:
                bodyPartName = "T";
                break;
            case 2:
                bodyPartName = "S";
                break;
            case 3:
                bodyPartName = "LA";
                break;
            case 4:
                bodyPartName = "RA";
                break;
            case 5:
                bodyPartName = "LL";
                break;
            case 6:
                bodyPartName = "RL";
                break;
            }

            BodyPartState* bodyPartState = driver::readMemory<BodyPartState*>((uint64_t)healthDict.entries + 0x30 + 0x18 * j);
            if (is_bad_ptr(bodyPartState))
                continue;
            const auto& health = _deref(_deref(bodyPartState).health);
            maxHealth += health.maximum;
            _currentHealth += health.current;
            _mapHealth[bodyPartName] = health.current / health.maximum;
        }
        _currentHealth = _currentHealth / maxHealth;
    }

Code:

    HealthController* healthController;  // 0x470
Code:

struct HealthController
{
    char pad0[0x20];
    UnityDict<uint32_t, BodyPartState>* dictBodyPartState;
};

Code:

template <typename K, typename V>
struct UnityDict
{
    char pad0[0x18];
    Entries<K, V>* entries;  // 0x18
    char pad1[0x20];
    int32_t count;  // 0x0040
};

Code:

struct Health
{
    char pad0[0x10];
    float current;
    float maximum;
};

struct BodyPartState
{
    char pad0[0x10];
    Health* health;
};


ecthirune 1st June 2021 07:47 AM

Quote:

Originally Posted by BrokeGamer (Post 3149669)

On another note - what would be a good way to dissect the game through memory for an external cheat (as in the process)?

start game without be from game directory - attach cheat engine mono features -> export.
ez.

nenesf 2nd June 2021 02:25 AM

Quote:

Originally Posted by BrokeGamer (Post 3149669)
~

you can use unispect as well as cheat engine mono dissect

ZeusLord 2nd June 2021 07:55 AM

Does anyone know a good way of doing no flash externally? I tried setting values in GrenadeFlashScreenEffect but none of them seemed to really do anything. I did get rid of the eye burn effect in a similar way but was just wondering if anyone else had figured it out.

jangut 2nd June 2021 01:45 PM

Quote:

Originally Posted by samtulach (Post 3139276)
Guess I'll have to switch the this.ForwardHit if case. It's weird it's so inconsistent with just the patching I did though, because sometimes it works from the exact same spot on static enemy and sometimes it does not. Thanks for the info!

Edit: Patching out the if statement made it usable. It's still not perfect but it's fine. (https://streamable.com/c0rkqu)

did anyone figure out how to make it perfect?

edit:
patching IsPenetrated to return 1
patching Deflects to return 0
patching "method_17" so the if is never true

BrokeGamer 3rd June 2021 07:03 AM

Quote:

Originally Posted by montroisiemecon (Post 3149676)
...

Excuse me, but how did you manage to find the HealthController? I looked everywhere under EFT.Player with Mono Dissect on Cheat Engine, and could not for the life of me find the HealthController. I found the BodyPart classes, but nowhere do I see a HealthController. I assume it's obfuscated, or am I looking in the wrong place?

EliteProducer 3rd June 2021 01:29 PM

Quote:

Originally Posted by Superseb123abc (Post 3142038)
A couple weeks into my project and I decided to add auto-fire for my aimbot, and it took a lot longer than I thought. I am sure there is an easier way somewhere, but I will share what I found. Demo

~

How're you getting the guns barrel position like that?

montroisiemecon 3rd June 2021 01:51 PM

Quote:

Originally Posted by BrokeGamer (Post 3151340)
Excuse me, but how did you manage to find the HealthController? I looked everywhere under EFT.Player with Mono Dissect on Cheat Engine, and could not for the life of me find the HealthController. I found the BodyPart classes, but nowhere do I see a HealthController. I assume it's obfuscated, or am I looking in the wrong place?

health controller is just a name I gave it, otherwise its probably obfuscated

BrokeGamer 3rd June 2021 02:46 PM

Quote:

Originally Posted by montroisiemecon (Post 3151529)
health controller is just a name I gave it, otherwise its probably obfuscated

Ah, that makes sense. I managed to find a "healthController" instance in another class but I am not 100% sure where it leads to yet. I'll keep looking.

I assume it is EFT.Player -> HealthController -> List<BodyPartState> or something.

One more question. When Mono Dissect shows me, for example, a bunch of consecutive "EFT.GameWorld+Class<number>" results but no lone "EFT.GameWorld", are these classes within EFT.GameWorld, or is it EFT.GameWorld as a whole but shown as fragments?

Apologies for all the questions, I am only starting to learn the structure of UnityEngine games (only really know a bit about GameObject, MonoBehavior, etc.)

tolessthan350gt 3rd June 2021 06:23 PM

is fireport localplayer ] 0x488 ] 0xe8 then transform is at 0x10?

ZeusLord 3rd June 2021 11:41 PM

Quote:

Originally Posted by tolessthan350gt (Post 3151682)
is fireport localplayer ] 0x488 ] 0xe8 then transform is at 0x10?

Yup.

Code:

vec3_t get_fireport_pos()
    {
        uint64_t fp_ptr = p.read_chain(addy, { 0x488, 0xe8 });

        return u_transform(p, p.read(fp_ptr + 0x10)).get_positon();
    }


ColgateChef 4th June 2021 03:56 PM

scav
 
I've been searched the thread for a while, no info on how you guys can tell which player is a scav and which is a player. Please share if you can find.

I've been searched the thread for a while, no info on how you guys can tell which player is a scav and which is a player. Please share if you can find.

tolessthan350gt 4th June 2021 04:06 PM

Quote:

Originally Posted by ColgateChef (Post 3152324)
I've been searched the thread for a while, no info on how you guys can tell which player is a scav and which is a player. Please share if you can find.

I've been searched the thread for a while, no info on how you guys can tell which player is a scav and which is a player. Please share if you can find.

entity ] 0x440 ] 0x28 and at 0x50 check if value is 4


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

ColgateChef 4th June 2021 04:17 PM

Quote:

Originally Posted by tolessthan350gt (Post 3152328)
entity ] 0x440 ] 0x28 and at 0x50 check if value is 4

Please elaborate more on what you mean, this is what I have right now.

Code:

                                int player_count = mem->Read<int>(onlineusers + offsetof(List, itemCount));

                        constexpr auto BUFFER_SIZE = 128;

                        uint64_t player_buffer[BUFFER_SIZE];
                        mem->Read(list_base + offsetof(ListInternal, firstEntry), player_buffer, sizeof(uint64_t) * player_count);
                        Player plr;
                        PlayerList.clear();
                        for (int i = 0; i < player_count; i++)
                        {
                                uint64_t PlayerInstance = player_buffer[i];
                                plr.instance = PlayerInstance;

                                if (mem->Read<int>(plr.instance + 0x18))
                                {
                                        //std::cout << "LocalPlayer Found";
                                        localPlayer = plr;
                                }

                                PlayerList.emplace_back(plr);
                        }
                        }


tolessthan350gt 4th June 2021 04:26 PM

Quote:

Originally Posted by ColgateChef (Post 3152330)
Please elaborate more on what you mean, this is what I have right now.

Code:

                                int player_count = mem->Read<int>(onlineusers + offsetof(List, itemCount));

                        constexpr auto BUFFER_SIZE = 128;

                        uint64_t player_buffer[BUFFER_SIZE];
                        mem->Read(list_base + offsetof(ListInternal, firstEntry), player_buffer, sizeof(uint64_t) * player_count);
                        Player plr;
                        PlayerList.clear();
                        for (int i = 0; i < player_count; i++)
                        {
                                uint64_t PlayerInstance = player_buffer[i];
                                plr.instance = PlayerInstance;

                                if (mem->Read<int>(plr.instance + 0x18))
                                {
                                        //std::cout << "LocalPlayer Found";
                                        localPlayer = plr;
                                }

                                PlayerList.emplace_back(plr);
                        }
                        }


stop pasting

fusionpak 4th June 2021 05:48 PM

I agree with him, but this should work although its not the best way to check

Code:

std::vector<uint64_t> tempchain{ this->offsets.Player.profile, this->offsets.profile.information };

        uint64_t information = Driver::ReadChain(player.instance, tempchain);

        if (Driver::Read<int32_t>(information + 0x54) > 0) // if registration date is over 0
        {
                if (Driver::Read<int32_t>(information + 0x50) == 4) // if player is a playerscav
                {
                        return 665;
                }
                else
                        return 664;
        }
        else
        {
        uint64_t role = Driver::Read<uint64_t>(information + 0x38);
                return Driver::Read<int32_t>(role + 0x10); // return role (see below for list of possible return values
        /*
        0 = Sniper Scav
        1 = Scav
        3 = Reshala
        5 = Reshala Guard
        6 - Killa
        7 = Shturman
        8 = Shturman Guard
        9 = Raider
        11 = Glukhar
        12 = Glukhar Guard
        13 = Glukhar Guard
        14 = Glukhar Scout
        16 = Glukhar Guard
        17 = Sanitar
        20 = Cultist
        21 = Cultist Leader
        */
        }


ColgateChef 5th June 2021 02:31 PM

Quote:

Originally Posted by fusionpak (Post 3152381)
I agree with him, but this should work although its not the best way to check

Code:

std::vector<uint64_t> tempchain{ this->offsets.Player.profile, this->offsets.profile.information };

        uint64_t information = Driver::ReadChain(player.instance, tempchain);

        if (Driver::Read<int32_t>(information + 0x54) > 0) // if registration date is over 0
        {
                if (Driver::Read<int32_t>(information + 0x50) == 4) // if player is a playerscav
                {
                        return 665;
                }
                else
                        return 664;
        }
        else
        {
        uint64_t role = Driver::Read<uint64_t>(information + 0x38);
                return Driver::Read<int32_t>(role + 0x10); // return role (see below for list of possible return values
        /*
        0 = Sniper Scav
        1 = Scav
        3 = Reshala
        5 = Reshala Guard
        6 - Killa
        7 = Shturman
        8 = Shturman Guard
        9 = Raider
        11 = Glukhar
        12 = Glukhar Guard
        13 = Glukhar Guard
        14 = Glukhar Scout
        16 = Glukhar Guard
        17 = Sanitar
        20 = Cultist
        21 = Cultist Leader
        */
        }


hello if you dont mind explaining , what is tempchain. I don't see the offsets for it listed on the forum.

ecthirune 5th June 2021 03:25 PM

Quote:

Originally Posted by ColgateChef (Post 3152967)
hello if you dont mind explaining , what is tempchain. I don't see the offsets for it listed on the forum.
just learning, if you don't wish to help then don't reply. very easy and requires a normal brain to do so.

Very easy and requires a normal brain, to read snippet, that dropped for you already. It contains tempchain:
answer for your question shown above in the post. That's why other calls you paster, bcs you can't read simple snippet, which are 100% spoonfeed for you:

Code:

std::vector<uint64_t> tempchain{ this->offsets.Player.profile, this->offsets.profile.information };
 
uint64_t information = Driver::ReadChain(player.instance, tempchain);

lemme help interptretate it:
Code:

information = read_chain(playerAddres, {Player.profile, profile.information});
So that's how it looks in numbers:
Code:

tempchain = read_chain(playerAddress, {0x440, 0x28});
And that's how it looks in CE mono:
Code:

EFT.player]+eft.profile]+GClass1132(info)] // (mine names obfuscated in last dump)

BraydenEGC 5th June 2021 04:20 PM

Quote:

Originally Posted by ecthirune (Post 3153005)
~snip~

Not trying to back seat code, but in my opinion, using 'chains' is bad practice. (I know about half of UC will disagree but let me explain my reasoning.)

Let's say the game just updated and you haven't worked on your code in a month or so. Are you really going to be able to remember what player->0x450->0x38->0x10->0x10->0x0 is? (Random chain.) You might have some context from the function, but the issue is going to be trying to figure out what exactly that 'chain' points to. You could look at old mono dumps, but you are just wasting time at that point. Whereas code such as this is much more readable and updatable:
Code:

Item* GetHeldItem()
{
        uint64_t pHandsController = *reinterpret_cast<uint64_t*>(this + 0x488);
        if (Memory::ValidatePointer(pHandsController))
        {
                uint64_t pHeldItem = *reinterpret_cast<uint64_t*>(pHandsController + 0x50);
                if (Memory::ValidatePointer(pHeldItem))
                        return reinterpret_cast<Item*>(pHeldItem);
    }
        return nullptr;
}

The only benefit that I see (there are probably more) of 'chains' is they are easy to implement and concise. However, I believe this is outweighed by the teaching of bad coding practices, lack of readability, and overall ugliness of the code.

Just my 2 cents.

ecthirune 5th June 2021 04:30 PM

Quote:

Originally Posted by BraydenEGC (Post 3153038)
but the issue is going to be trying to figure out what exactly that 'chain' points to.

How about chain with names, not numbers, from offset.h page? :)
It explains all logics and where it goes (again as in example):

Code:

std::vector<uint64_t> tempchain{ this->offsets.Player.profile, this->offsets.profile.information };
 
uint64_t information = Driver::ReadChain(player.instance, tempchain);

It will hurt reading ability for the eyes, if there's more than 3 pointers, but whatever i think.

BraydenEGC 5th June 2021 04:36 PM

Quote:

Originally Posted by ecthirune (Post 3153046)
~snip~

That is not dog awful, but it certainly isn't my cup of tea. :p Either way, if it works it works.

xzackcc 5th June 2021 05:26 PM

does anyone have the latest GOM offset/pattern for the latest update (may 27th i believe)?
was't active for quite some time in EFT.

much appreciated.

xXBradXx 5th June 2021 05:35 PM

Quote:

Originally Posted by xzackcc (Post 3153085)
does anyone have the latest GOM offset/pattern for the latest update (may 27th i believe)?
was't active for quite some time in EFT.

much appreciated.

gom is UnityPlayer.dll + 0x156C698

xzackcc 5th June 2021 05:41 PM

Quote:

Originally Posted by xXBradXx (Post 3153087)
gom is UnityPlayer.dll + 0x156C698

nice, tyvm. +rep

BrokeGamer 5th June 2021 06:45 PM

Is EFT.Player an instance of the client player, and then if I were in multiplayer the other players would be under the entity list for GameWorld? i.e. List_Player

beepboop5 5th June 2021 07:14 PM

Quote:

Originally Posted by BrokeGamer (Post 3153144)
Is EFT.Player an instance of the client player, and then if I were in multiplayer the other players would be under the entity list for GameWorld? i.e. List_Player

No, EFT.Player is the player class (or EFT.ClientPlayer for yourself iirc). These are stored in the RegisteredPlayers list under the LocalGameWorld.

BrokeGamer 5th June 2021 07:16 PM

Quote:

Originally Posted by beepboop5 (Post 3153170)
No, EFT.Player is the player class (or EFT.ClientPlayer for yourself iirc). These are stored in the RegisteredPlayers list under the LocalGameWorld.

I guess my question was phrased badly. I know EFT.Player is the player class, but is it the "local player" only, or does EFT.Player represent all other players as well in multiplayer? So in this case RegisteredPlayers would hold EFT.Player instances from what you are telling me? Just want to make sure I understand properly.

buddgaf 5th June 2021 07:50 PM

can you get the player level or do you have to get the experience points and do the math yourself? also, can someone tell me where to read either of those? i have name, team, groupid, all the other stuff i want i just can't figure out the player lvl or xp. thanks

ecthirune 5th June 2021 08:02 PM

Quote:

Originally Posted by buddgaf (Post 3153199)
can you get the player level or do you have to get the experience points and do the math yourself? also, can someone tell me where to read either of those? i have name, team, groupid, all the other stuff i want i just can't figure out the player lvl or xp. thanks


search >_<

Quote:

Originally Posted by BrokeGamer (Post 3153172)
I guess my question was phrased badly. I know EFT.Player is the player class, but is it the "local player" only, or does EFT.Player represent all other players as well in multiplayer? So in this case RegisteredPlayers would hold EFT.Player instances from what you are telling me? Just want to make sure I understand properly.

everything that moves and can shoot, whenever is it player or ai = eft.player

BrokeGamer 5th June 2021 08:57 PM

Quote:

Originally Posted by ecthirune (Post 3153211)
everything that moves and can shoot, whenever is it player or ai = eft.player

Thank you!

I've found GameWorld quite easily in Assembly-CSharp.dll. Just going to find LocalGameWorld and I should be good to go. dnSpy is helping out a lot.

xXBradXx 5th June 2021 09:45 PM

Quote:

Originally Posted by BrokeGamer (Post 3153248)
Thank you!

I've found GameWorld quite easily in Assembly-CSharp.dll. Just going to find LocalGameWorld and I should be good to go. dnSpy is helping out a lot.

localgameworld is gameworld + 0x30] + 0x18] + 0x28]

BrokeGamer 5th June 2021 10:28 PM

Quote:

Originally Posted by BrokeGamer (Post 3151340)
Excuse me, but how did you manage to find the HealthController? I looked everywhere under EFT.Player with Mono Dissect on Cheat Engine, and could not for the life of me find the HealthController. I found the BodyPart classes, but nowhere do I see a HealthController. I assume it's obfuscated, or am I looking in the wrong place?

Update:

Poked around and finally found the HealthController (which is what it is probably called, but it was obfuscated intentionally) and its hierarchy is like so (starting from its parent interface and parent class):

- GInterface169
-- GClass1437<T> (Base HealthController class)
---= GClass1438 <--- HealthController
----/ bool_0: bool
----/ dictionary_0: Dictionary<EBodyPart, GClass1437<T>.BodyPartState>

The player's health is represented in dictionary_0, where EBodyPart is an Enum for all BodyParts (Head, Left Arm, Right Arm, etc.). BodyPartState is found in the parent class GClass1437<T>. I don't know what bool_0 is, but I assume it to be an "isAlive" boolean; however don't take my word for that. I just put it there for reference.

I used dnSpy for this but this reflects what you'd see in CE as well.

Quote:

Originally Posted by xXBradXx (Post 3153276)
localgameworld is gameworld + 0x30] + 0x18] + 0x28]

Thanks, I appreciate it.

cxtgirl 6th June 2021 04:26 PM

Quote:

Originally Posted by BraydenEGC (Post 3153038)
Not trying to back seat code, but in my opinion, using 'chains' is bad practice. (I know about half of UC will disagree but let me explain my reasoning.)

Let's say the game just updated and you haven't worked on your code in a month or so. Are you really going to be able to remember what player->0x450->0x38->0x10->0x10->0x0 is? (Random chain.) You might have some context from the function, but the issue is going to be trying to figure out what exactly that 'chain' points to. You could look at old mono dumps, but you are just wasting time at that point. Whereas code such as this is much more readable and updatable:
Code:

Item* GetHeldItem()
{
        uint64_t pHandsController = *reinterpret_cast<uint64_t*>(this + 0x488);
        if (Memory::ValidatePointer(pHandsController))
        {
                uint64_t pHeldItem = *reinterpret_cast<uint64_t*>(pHandsController + 0x50);
                if (Memory::ValidatePointer(pHeldItem))
                        return reinterpret_cast<Item*>(pHeldItem);
    }
        return nullptr;
}

The only benefit that I see (there are probably more) of 'chains' is they are easy to implement and concise. However, I believe this is outweighed by the teaching of bad coding practices, lack of readability, and overall ugliness of the code.

Just my 2 cents.

just name your chains something useful, and most games dont update offsets that you would actually use in a chain often anyway

Quote:

Originally Posted by buddgaf (Post 3153199)
can you get the player level or do you have to get the experience points and do the math yourself? also, can someone tell me where to read either of those? i have name, team, groupid, all the other stuff i want i just can't figure out the player lvl or xp. thanks

i think you can just set your level to anything you want but it may get you flagged, ive never tested it


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

BrokeGamer 6th June 2021 07:17 PM

This is a dumb question, but as I said I am fairly new to understanding how Unity games are loaded in memory.

If I am making an external, what module(s) should I be focused on accessing specifically in the EFT process, such as "Assembly-CSharp.dll"? I notice a lot of references to "UnityPlayer.dll" in this thread, but that's only to find the GameObjectManager instance (according to the posts I've read about it) and I don't even see that in Mono Dissector when the game is loaded up.

I searched the entire thread for references to "UnityPlayer.dll" and looked through most replies but none really give a good idea on it.

ecthirune 6th June 2021 07:53 PM

Quote:

Originally Posted by BrokeGamer (Post 3153887)
"UnityPlayer.dll" in this thread, but that's only to find the GameObjectManager instance

that's enough.
UnityPlayer.dll base address -> GameObjectManager->GameWorld->LocalGameWorld-> the other stuff, players, items, extracts, etc.

BrokeGamer 6th June 2021 09:38 PM

Quote:

Originally Posted by ecthirune (Post 3153897)
that's enough.
UnityPlayer.dll base address -> GameObjectManager->GameWorld->LocalGameWorld-> the other stuff, players, items, extracts, etc.

Dope, makes sense now. I used ProcessExplorer to get a better look at all modules found under the EFT process because I was confusing myself earlier. I see that UnityPlayer.dll is there now.

So UnityPlayer.dll houses the native Unity Engine code, as well as access to the other DLLs (or I guess plugins) from EscapeFromTarkov_Data/Managed in memory? Hope I am understanding that correctly.

ecthirune 6th June 2021 09:59 PM

Quote:

Originally Posted by BrokeGamer (Post 3153951)
Dope, makes sense now. I used ProcessExplorer to get a better look at all modules found under the EFT process because I was confusing myself earlier. I see that UnityPlayer.dll is there now.

So UnityPlayer.dll houses the native Unity Engine code, as well as access to the other DLLs (or I guess plugins) from EscapeFromTarkov_Data/Managed in memory? Hope I am understanding that correctly.

yep, it "houses" everything. Just get module address and you can go forward (as in chain i shown above), and do everything you wanna.

BrokeGamer 6th June 2021 10:24 PM

Quote:

Originally Posted by ecthirune (Post 3153959)
yep, it "houses" everything. Just get module address and you can go forward (as in chain i shown above), and do everything you wanna.

Thank you very much for the help. I really appreciate it.

Feels better to understand stuff like this before attempting to dive in completely.

I've been spending a good amount of time using CE and dnSpy to understand the game's architecture, as well as watching and reading resources on reversing game memory. Wish me luck.

ColgateChef 7th June 2021 12:53 AM

How can I get the player health? I'd just like to round it all up in total of every body part.

tolessthan350gt 7th June 2021 01:07 AM

Quote:

Originally Posted by ColgateChef (Post 3154018)
How can I get the player health? I'd just like to round it all up in total of every body part.

use the search bar it has been posted on page 205 (like 3 pages under current one)

BrokeGamer 7th June 2021 01:15 AM

Quote:

Originally Posted by ColgateChef (Post 3154018)
How can I get the player health? I'd just like to round it all up in total of every body part.

Literally one or two pages back, I posted my findings for the HealthController and its hierarchy - it should make it easy for you. Should be something like EFT.Player -> healthController* (pointer) -> Dictionary<EBodyPart, BodyPartState>. Shouldn't be too hard.

Another user before me even posted some example code a page before that as well.

ColgateChef 7th June 2021 01:16 AM

Quote:

Originally Posted by tolessthan350gt (Post 3154020)
use the search bar it has been posted on page 205 (like 3 pages under current one)

I see but I was just having confusion implementing it and wanted just a more straightforward guide that I'd be able to use to write one myself.

Quote:

Originally Posted by BrokeGamer (Post 3154022)
Literally one or two pages back, I posted my findings for the HealthController and its hierarchy - it should make it easy for you. Should be something like EFT.Player -> healthController* (pointer) -> Dictionary<EBodyPart, BodyPartState>. Shouldn't be too hard.

Another user before me even posted some example code a page before that as well.

Thank you +rep this should give me a basic understanding.

BrokeGamer 7th June 2021 01:34 AM

Quote:

Originally Posted by ColgateChef (Post 3154023)
Thank you +rep this should give me a basic understanding.

No problem. Good luck!

swh4641 8th June 2021 01:29 PM

last update something happened, just alone my present hook crashes the game when loading in bigger maps, anyone noticed?

BrokeGamer 8th June 2021 02:55 PM

I am unable to properly read in the ActiveObjects in the GOM. I am using the proper offsets starting from UnityPlayer.dll base address, and what I am returned is a bunch of scrambled characters. I am reading the text as UTF-8 after reading it in through a byte buffer.

Am I using the wrong base address? Currently, while the game is open, the module base address is "0x7FFFB2370000" (UnityPlayer.dll). So from there I tested to see if I can find the first ActiveObject's name: (0x156C698 + 0x18 + 0x10 + 0x60) from 0x7FFFB2370000. After looking in Memory Viewer in CE, this was clearly not the correct address. The reason being is because I looked for the "GameWorld" String in memory to get a better idea, and the addresses displayed are wayyy off like so: "1242B0ECB48". So either I am offsetting wrong, or completely screwing something else up.

Does someone have an idea of what I am doing wrong?

POFPE 8th June 2021 03:27 PM

Quote:

Originally Posted by BrokeGamer (Post 3155091)
I am unable to properly read in the ActiveObjects in the GOM. I am using the proper offsets starting from UnityPlayer.dll base address, and what I am returned is a bunch of scrambled characters. I am reading the text as UTF-8 after reading it in through a byte buffer.

Am I using the wrong base address? Currently, while the game is open, the base address is " 0x7FFFB2370000" (UnityPlayer.dll). So from there I tested to see if I can find the first ActiveObject's name: (0x156C698 + 0x18 + 0x10 + 0x60) from the module base address. After looking in Memory Viewer in CE, this was clearly not the correct address. The reason being is because I looked for the "GameWorld" String in memory to get a better idea, and the addresses displayed are wayyy off like so: "1242B0ECB48". So either I am offsetting wrong, or completely screwing something else up.

Does someone have an idea of what I am doing wrong?

https://github.com/frankie-11/eft-external
U can find some tarkov's structure and base on here. base idea(POC) working charmly only change some chain and offsets. Good Luck

BraydenEGC 8th June 2021 03:31 PM

Quote:

Originally Posted by swh4641 (Post 3155034)
~snip~

There shouldn't be anything relating to map size that is handled within present outside of rendering. The only real difference is the fps on those maps. Either way, that should not make the game crash. I would either attach a debugger or write a crash handler to dump useful information like the call stack.

BrokeGamer 8th June 2021 03:34 PM

Quote:

Originally Posted by POFPE (Post 3155105)
https://github.com/frankie-11/eft-external
U can find some tarkov's structure and base on here. base idea(POC) working charmly only change some chain and offsets. Good Luck

I am trying to find out what I am doing wrong with finding the base address of the UnityPlayer.dll module in-memory (based on my post above). I have no issue with the actual EFT offsets. And I prefer to not copy and paste code - that isn't how you learn.

BraydenEGC 8th June 2021 03:41 PM

Quote:

Originally Posted by BrokeGamer (Post 3155108)
~snip~

Send your code here or in a pastebin or something. It is super hard to help without seeing the code. My best guess is you are not dereferencing or are dereferencing somewhere you shouldn't be.

ecthirune 8th June 2021 03:45 PM

Quote:

Originally Posted by BrokeGamer (Post 3155091)
I am unable to properly read in the ActiveObjects in the GOM. I am using the proper offsets starting from UnityPlayer.dll base address, and what I am returned is a bunch of scrambled characters. I am reading the text as UTF-8 after reading it in through a byte buffer.

Am I using the wrong base address? Currently, while the game is open, the module base address is "0x7FFFB2370000" (UnityPlayer.dll). So from there I tested to see if I can find the first ActiveObject's name: (0x156C698 + 0x18 + 0x10 + 0x60) from 0x7FFFB2370000. After looking in Memory Viewer in CE, this was clearly not the correct address. The reason being is because I looked for the "GameWorld" String in memory to get a better idea, and the addresses displayed are wayyy off like so: "1242B0ECB48". So either I am offsetting wrong, or completely screwing something else up.

Does someone have an idea of what I am doing wrong?

ActiveObjects related with GoM, not UnityPlayer itself.

at gom+0x18+0x10+0x60 you need to read string, with amount of bytes(length) of word you searching. (GameWorld = 9 bytes).
You don't wanna to get snippets, so i won't paste my solution then.

BraydenEGC 8th June 2021 03:52 PM

Quote:

Originally Posted by ecthirune (Post 3155117)
~snip~

That is an extremely bad solution.

GOM + 0x18] = FirstActiveObject (BaseObject)
BaseObject + 0x10] = ChildObject (GameObject)
GameObject + 0x60] = Name (Pointer to char*)

Follow this: GOM + 0x18] + 0x10] + 0x60] <- Read this as a string.

Reading as a string should not be static like 9 bytes. You should iterate over the string until you find the null terminator, or just copy a buffer of memory into a char array and search for the null terminator in your own memory if you are concerned about performance as an external.

ecthirune 8th June 2021 04:03 PM

Quote:

Originally Posted by BraydenEGC (Post 3155123)
That is an extremely bad solution.

Reading as a string should not be static like 9 bytes. You should iterate over the string until you find the null terminator, or just copy a buffer of memory into a char array and search for the null terminator in your own memory if you are concerned about performance as an external.

totally agreed, but
1) i have not much exp in coding (actually 2,5month from zero knowledge takes me to what i have now)
2) i did try to read this stuff as string till null terminator appears, but it doesnt works for me, don't remember why. Since im newbie - i decided to read it byte-to-byte, and then push_back them in buffer, and return that buffer. Ugly, but it works :wtf:
3) i just gave you idea, looks like you very strong at coding, so you can understand wtf i said and do as it should be xD
Oh shit, im confused. I thought you are BrokeGamer.
Nevermind then on my 3rd point, keklmao xD

BraydenEGC 8th June 2021 04:11 PM

Quote:

Originally Posted by ecthirune (Post 3155130)
~snip~

Code:

uint64_t Name = Memory::ReadMemory<uint64_t>(GameObject + 0x60);

static char Buffer[256]
ZeroMemory(&Buffer, sizeof(Buffer));

Memory::ReadMemoryRaw(Name, &Buffer, sizeof(Buffer));
return std::string(Buffer);

Here is some fat pseudocode for you. Obviously, adjust it to your memory interface and any other changes you need to make.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

BrokeGamer 8th June 2021 04:50 PM

Quote:

Originally Posted by ecthirune (Post 3155117)
ActiveObjects related with GoM, not UnityPlayer itself.

at gom+0x18+0x10+0x60 you need to read string, with amount of bytes(length) of word you searching. (GameWorld = 9 bytes).
You don't wanna to get snippets, so i won't paste my solution then.

I know ActiveObjects is in the GameObjectManager. That isn't my issue. My issue is the base address for the module UnityPlayer.dll in memory that I am currently using is not resolving to the proper address of the actual GOM (by confirming through Cheat Engine) with offsets - meaning my base address for the UnityPlayer.dll is probably wrong, or something else.

Quote:

Originally Posted by BraydenEGC (Post 3155112)
Send your code here or in a pastebin or something. It is super hard to help without seeing the code. My best guess is you are not dereferencing or are dereferencing somewhere you shouldn't be.

I'll go ahead and PM you what I have if that's okay.

BraydenEGC 8th June 2021 05:06 PM

Quote:

Originally Posted by BrokeGamer (Post 3155155)
~snip~

That's fine.

okoko98ttt 9th June 2021 09:26 AM

how to get K/D,it is important!!!

ecthirune 9th June 2021 10:25 AM

Quote:

Originally Posted by okoko98ttt (Post 3155662)
how to get K/D,it is important!!!

banned in google?

Sheld0r 9th June 2021 10:47 AM

Quote:

Originally Posted by okoko98ttt (Post 3155662)
how to get K/D,it is important!!!

There's literally a full working pasta in this thread lol

POFPE 9th June 2021 03:26 PM

Quote:

Originally Posted by BrokeGamer (Post 3155155)
I know ActiveObjects is in the GameObjectManager. That isn't my issue. My issue is the base address for the module UnityPlayer.dll in memory that I am currently using is not resolving to the proper address of the actual GOM (by confirming through Cheat Engine) with offsets - meaning my base address for the UnityPlayer.dll is probably wrong, or something else.



I'll go ahead and PM you what I have if that's okay.

That's why I asked you to look at Frankie's driver code. I didn't force you to do P&C. It tell you how to get the address of "unityengine.dll" correctly through it. Also, using Process Exp, etc., make sure your function returns the correct address of the unitplayer.dll. If so, check the offset of the GOM.

seopung 11th June 2021 04:20 PM

Has anyone got the Assembly-CSharp.dll from 2 patches ago?

vectless 13th June 2021 12:39 PM

Quote:

Originally Posted by okoko98ttt (Post 3155662)
how to get K/D,it is important!!!

Code:

// Tested as a PMC only, solving Player Scavs will be a similar process. Have fun.
var profile = Mem.Read<UInt64>(entity.Address + 0x3D8);
var stats = Mem.Read<UInt64>(profile + 0xD8);
var overallCounters = Mem.Read<UInt64>(stats + 0x18); // SessionCounters is at 0x10
var counters = Mem.Read<UInt64>(overallCounters + 0x10); // Dictionary<IntPtr, ulong>
 
if(KillHash == 0)
{
    if (!entity.IsMe) continue;
 
    var arrayBase = Mem.Read<UInt64>(counters + 0x18) + 0x28;
   
    var killCounterKey = Mem.Read<UInt64>(arrayBase + 6 * 0x18);
    KillHash = Mem.Read<UInt32>(killCounterKey + 0x18);
   
    var deathCounterKey = Mem.Read<UInt64>(arrayBase + 2 * 0x18);
    DeathHash = Mem.Read<UInt32>(deathCounterKey + 0x18);
}
 
var countersDict = new MemDictionary<ulong, ulong>(counters); // Key param is GClass141C in this post
foreach (var entry in countersDict.Data)
{
    var keyClass = entry.Key;
    var value = entry.Value;
 
    var hash = Mem.Read<UInt32>(keyClass + 0x18);
 
    if (hash == KillHash) // This hash should work with PMCs and Player Scavs
        kills = value;
 
    if (hash == DeathHash) // This hash is PMC's only
        deaths = value;
}
 
var kd = deaths != 0 ? (float)kills / deaths : kills;

Creds: Razchek

shersa 14th June 2021 02:06 AM

anyone knows how to check if an exitpoint is usable? checking for status == 4 doesnt work well on maps like customs

pinefin 14th June 2021 03:50 PM

Quote:

Originally Posted by shersa (Post 3158710)
anyone knows how to check if an exitpoint is usable? checking for status == 4 doesnt work well on maps like customs

depends.

(status == 4 || status == 2 && cfg::exfil_uncompleted)

if you're a scav try looking at the array of exfils for scavs.

this works perfectly fine, except that it wont hide exfils that arent yours, this just narrows it down so that you can look around and find the one that you need

xPasters 14th June 2021 03:51 PM

Quote:

Originally Posted by shersa (Post 3158710)
anyone knows how to check if an exitpoint is usable? checking for status == 4 doesnt work well on maps like customs

just call the function: ExfillComplete

TJ888 14th June 2021 04:21 PM

Quote:

Originally Posted by pinefin (Post 3159058)
depends.

(status == 4 || status == 2 && cfg::exfil_uncompleted)

if you're a scav try looking at the array of exfils for scavs.

this works perfectly fine, except that it wont hide exfils that arent yours, this just narrows it down so that you can look around and find the one that you need

Loop the eligible entry points in the ExfiltrationPoint and compare them against your own LocalPlayers entry point to determine if they are for you, this way you don't show points that aren't yours.

When I last played a while ago you had to tolower your LocalPlayers entry point because the ones in ExfiltrationPoint are lowercase but your LocalPlayers is not. (I don't know if this has changed, haven't played to check)

This is one way to tolower the entire string without looping over every char yourself-
std::ranges::transform(entryPoint, entryPoint.begin(), tolower);

FirezRVG 14th June 2021 04:31 PM

Quote:

Originally Posted by TJ888 (Post 3159095)
Loop the eligible entry points in the ExfiltrationPoint and compare them against your own LocalPlayers entry point to determine if they are for you, this way you don't show points that aren't yours.

When I last played a while ago you had to tolower your LocalPlayers entry point because the ones in ExfiltrationPoint are lowercase but your LocalPlayers is not. (I don't know if this has changed, haven't played to check)

This is one way to tolower the entire string without looping over every char yourself-
std::ranges::transform(entryPoint, entryPoint.begin(), tolower);

i believe op never said they needed it

pinefin 14th June 2021 04:32 PM

Quote:

Originally Posted by TJ888 (Post 3159095)
snip

apologies and i dont mean to be rude,

i think u replied to the wrong person, personally i dont need it.

TJ888 14th June 2021 10:15 PM

Quote:

Originally Posted by pinefin (Post 3159104)
apologies and i dont mean to be rude,

i think u replied to the wrong person, personally i dont need it.

No I didn't reply to the wrong person, you answered the other guy about extraction statuses. You said it will still show extractions that aren't yours and you will just have to look around yourself for ones that are yours (Which I assume is how you have it in your own hack too). So I told you how you can avoid that by just only showing extracts you actually have.

okoko98ttt 15th June 2021 05:56 AM

Quote:

Originally Posted by vectless (Post 3158246)
Code:

// Tested as a PMC only, solving Player Scavs will be a similar process. Have fun.
var profile = Mem.Read<UInt64>(entity.Address + 0x3D8);
var stats = Mem.Read<UInt64>(profile + 0xD8);
var overallCounters = Mem.Read<UInt64>(stats + 0x18); // SessionCounters is at 0x10
var counters = Mem.Read<UInt64>(overallCounters + 0x10); // Dictionary<IntPtr, ulong>
 
if(KillHash == 0)
{
    if (!entity.IsMe) continue;
 
    var arrayBase = Mem.Read<UInt64>(counters + 0x18) + 0x28;
   
    var killCounterKey = Mem.Read<UInt64>(arrayBase + 6 * 0x18);
    KillHash = Mem.Read<UInt32>(killCounterKey + 0x18);
   
    var deathCounterKey = Mem.Read<UInt64>(arrayBase + 2 * 0x18);
    DeathHash = Mem.Read<UInt32>(deathCounterKey + 0x18);
}
 
var countersDict = new MemDictionary<ulong, ulong>(counters); // Key param is GClass141C in this post
foreach (var entry in countersDict.Data)
{
    var keyClass = entry.Key;
    var value = entry.Value;
 
    var hash = Mem.Read<UInt32>(keyClass + 0x18);
 
    if (hash == KillHash) // This hash should work with PMCs and Player Scavs
        kills = value;
 
    if (hash == DeathHash) // This hash is PMC's only
        deaths = value;
}
 
var kd = deaths != 0 ? (float)kills / deaths : kills;

Creds: Razchek

thank u!

Null Terminator 15th June 2021 07:56 AM

Anything I shouldn't be writing here?
Code:

if (options[no_recoil])
{
        // breathing intensity
        Write<float>(ReadChain(proc_weap_anim, { 0x28 }) + 0xA4, 0.f);
        // walk intensity
        Write<float>(ReadChain(proc_weap_anim, { 0x30 }) + 0x40, 0.f);
        // motion react intensity
        Write<float>(ReadChain(proc_weap_anim, { 0x38 }) + 0xD0, 0.f);
        // force react intensity
        Write<float>(ReadChain(proc_weap_anim, { 0x40 }) + 0x30, 0.f);
        // shot effector intensity
        Write<float>(ReadChain(proc_weap_anim, { 0x48 }) + 0x68, 0.f);
}


montroisiemecon 15th June 2021 02:03 PM

Quote:

Originally Posted by Null Terminator (Post 3159550)
Anything I shouldn't be writing here?
Code:

if (options[no_recoil])
{
        // breathing intensity
        Write<float>(ReadChain(proc_weap_anim, { 0x28 }) + 0xA4, 0.f);
        // walk intensity
        Write<float>(ReadChain(proc_weap_anim, { 0x30 }) + 0x40, 0.f);
        // motion react intensity
        Write<float>(ReadChain(proc_weap_anim, { 0x38 }) + 0xD0, 0.f);
        // force react intensity
        Write<float>(ReadChain(proc_weap_anim, { 0x40 }) + 0x30, 0.f);
        // shot effector intensity
        Write<float>(ReadChain(proc_weap_anim, { 0x48 }) + 0x68, 0.f);
}


Yes this code is horrible you should not write it like this

thed24 15th June 2021 02:33 PM

Quote:

Originally Posted by montroisiemecon (Post 3159726)
Yes this code is horrible you should not write it like this

Any particular reason why? I assume it creates a suboptimal amount of write calls?

ilahigod31 15th June 2021 03:11 PM

latest optic offsets?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

Null Terminator 15th June 2021 06:24 PM

Quote:

Originally Posted by montroisiemecon (Post 3159726)
Yes this code is horrible you should not write it like this

Legend thanks for the help man

montroisiemecon 15th June 2021 07:39 PM

You are hardcoding offsets in functions. If you need to reuse one of those offsets, you end up duplicating code and making it harder to maintain. Next update, this offset could change and you end up modifying multiple places in your code.
You do a "ReadChain" on one offset.
You don't even check the return value and you write at a memory that could be something completly different than what you think it is.

That was just the technical aspect
Now from the functional aspect, it's been posted on this thread I think 32 times how to do no recoil. There are several methods, but one imply around 3 writes and is a perfect no recoil / no sway / no spread

ecthirune 15th June 2021 09:46 PM

Quote:

Originally Posted by BraydenEGC (Post 3155134)
Code:

uint64_t Name = Memory::ReadMemory<uint64_t>(GameObject + 0x60);

static char Buffer[256]
ZeroMemory(&Buffer, sizeof(Buffer));

Memory::ReadMemoryRaw(Name, &Buffer, sizeof(Buffer));
return std::string(Buffer);

Here is some fat pseudocode for you. Obviously, adjust it to your memory interface and any other changes you need to make.

much appreciate, implemented this stuff.

Frankie11 16th June 2021 02:23 AM

Passing thru these pages and I get mentioned a lot here lol can't believe my source is still relevant....

Anyways im back into tarkov, looks like the old method of item tp (shared here) does not work anymore. Is this still possible?

ZeusLord 16th June 2021 06:20 AM

Quote:

Originally Posted by Frankie11 (Post 3160160)
Passing thru these pages and I get mentioned a lot here lol can't believe my source is still relevant....

Anyways im back into tarkov, looks like the old method of item tp (shared here) does not work anymore. Is this still possible?

As far as I am aware of no. I haven't heard of it being possible for a good bit know I am sure you could probably pick it up through maybe a small object but afaik It's checked server side and it won't let you when it's over a certain range. I mean if anyone here has seen otherwise then feel free to correct me.

swh4641 16th June 2021 10:27 AM

Quote:

Originally Posted by Frankie11 (Post 3160160)
Passing thru these pages and I get mentioned a lot here lol can't believe my source is still relevant....

Anyways im back into tarkov, looks like the old method of item tp (shared here) does not work anymore. Is this still possible?

not possible anymore

montroisiemecon 16th June 2021 04:20 PM

you can loot any item at a distance < 4m from you.
Above that, the transaction will be rejected by server.
You can loot through walls

nikobelic29 17th June 2021 03:06 PM

Anyone know how to calculate KD?

xFirstPromise 17th June 2021 03:45 PM

Code:

GOM(0x156C698) -> active_objects(0x10) -> gameworld("GameWorld) -> tagged_object(0x0) -> localGameWorld(0x30, 0x18, 0x28) -> fscamera("Fps Camera") -> onlineusers(0x80) -> list_base(0x10) -> playercount(0x18)
these stuff is change already or not? because i cant read gameworld i always got 0 somebody would tell? thanks <3

xXBradXx 17th June 2021 04:00 PM

Quote:

Originally Posted by xFirstPromise (Post 3161305)
Code:

GOM(0x156C698) -> active_objects(0x10) -> gameworld("GameWorld) -> tagged_object(0x0) -> localGameWorld(0x30, 0x18, 0x28) -> fscamera("Fps Camera") -> onlineusers(0x80) -> list_base(0x10) -> playercount(0x18)
these stuff is change already or not? because i cant read gameworld i always got 0 somebody would tell? thanks <3

how are you finding GameWorld from active_objects? 0x10 is the last active object in the linked list, 0x18 is the first one. also there is no tagged object in game world, you should go straight from the GameWorld address and follow that 0x30 0x18 0x28 chain to get to the LocalGameWorld

xFirstPromise 17th June 2021 04:07 PM

Quote:

Originally Posted by xXBradXx (Post 3161311)
how are you finding GameWorld from active_objects? 0x10 is the last active object in the linked list, 0x18 is the first one. also there is no tagged object in game world, you should go straight from the GameWorld address and follow that 0x30 0x18 0x28 chain to get to the LocalGameWorld

Code:

struct BaseObject
{
        uint64_t previousObjectLink; //0x0000
        uint64_t nextObjectLink; //0x0008
        uint64_t object; //0x0010
};
uint64_t GetObjectFromList(uint64_t listPtr, uint64_t lastObjectPtr, const char* objectName)
{
        char name[256];
        uint64_t classNamePtr = 0x0;

        BaseObject activeObject = driver->read<BaseObject>(listPtr);
        BaseObject lastObject = driver->read<BaseObject>(lastObjectPtr);

        if (activeObject.object != 0x0)
        {
                while (activeObject.object != 0 && activeObject.object != lastObject.object)
                {
                        classNamePtr = driver->read<uint64_t>(activeObject.object + 0x60);
                        driver->readwtf(classNamePtr + 0x0, &name, sizeof(name));

                        //printf("name1 :%s\n", name);

                        if (strcmp(name, objectName) == 0)
                        {
                                return activeObject.object;
                        }

                        activeObject = driver->read<BaseObject>(activeObject.nextObjectLink);
                }
        }
        if (lastObject.object != 0x0)
        {
                classNamePtr = driver->read<uint64_t>(lastObject.object + 0x60);
                driver->readwtf(classNamePtr + 0x0, &name, 256);

                //printf("name2: %s\n", name);

                if (strcmp(name, objectName) == 0)
                {
                        return lastObject.object;
                }
        }

        return uint64_t();
}

when i print its shows names tho, but idk why i got 0 in gameworld

xXBradXx 17th June 2021 04:23 PM

Quote:

Originally Posted by xFirstPromise (Post 3161324)
Code:

struct BaseObject
{
        uint64_t previousObjectLink; //0x0000
        uint64_t nextObjectLink; //0x0008
        uint64_t object; //0x0010
};
uint64_t GetObjectFromList(uint64_t listPtr, uint64_t lastObjectPtr, const char* objectName)
{
        char name[256];
        uint64_t classNamePtr = 0x0;

        BaseObject activeObject = driver->read<BaseObject>(listPtr);
        BaseObject lastObject = driver->read<BaseObject>(lastObjectPtr);

        if (activeObject.object != 0x0)
        {
                while (activeObject.object != 0 && activeObject.object != lastObject.object)
                {
                        classNamePtr = driver->read<uint64_t>(activeObject.object + 0x60);
                        driver->readwtf(classNamePtr + 0x0, &name, sizeof(name));

                        //printf("name1 :%s\n", name);

                        if (strcmp(name, objectName) == 0)
                        {
                                return activeObject.object;
                        }

                        activeObject = driver->read<BaseObject>(activeObject.nextObjectLink);
                }
        }
        if (lastObject.object != 0x0)
        {
                classNamePtr = driver->read<uint64_t>(lastObject.object + 0x60);
                driver->readwtf(classNamePtr + 0x0, &name, 256);

                //printf("name2: %s\n", name);

                if (strcmp(name, objectName) == 0)
                {
                        return lastObject.object;
                }
        }

        return uint64_t();
}

when i print its shows names tho, but idk why i got 0 in gameworld

listPtr you're passing GOM + 0x18 and lastObject GOM + 0x10?
GameObjectManager struct should look like this
Code:

pub struct GameObjectManager {
        pub last_tagged_obj: usize,
        pub first_tagged_obj: usize,
        pub last_active_obj: usize,
        pub first_active_obj: usize
}

and GameWorld is an active object so make sure you're passing the first/last active object pointers and not the tagged objects

xFirstPromise 17th June 2021 04:26 PM

Quote:

Originally Posted by xXBradXx (Post 3161338)
listPtr you're passing GOM + 0x18 and lastObject GOM + 0x10?
GameObjectManager struct should look like this
Code:

pub struct GameObjectManager {
        pub last_tagged_obj: usize,
        pub first_tagged_obj: usize,
        pub last_active_obj: usize,
        pub first_active_obj: usize
}

and GameWorld is an active object so make sure you're passing the first/last active object pointers and not the tagged objects

probably its work last month i try ive already make simple esp and aimbot, now i didnt know why something was wrong or some changes?

confirmed2 17th June 2021 04:27 PM

hey guys can anyone share the component/game object struct offsets?

looking for


offset::component::attached_game_object

Thanks, or if u would be kind to tell me where exactly i can find these offsets.

pinefin 17th June 2021 10:34 PM

Quote:

Originally Posted by xFirstPromise (Post 3161342)
probably its work last month i try ive already make simple esp and aimbot, now i didnt know why something was wrong or some changes?

:thinking: nothing major like that has changed since last wipe. especially the gameobjectmanager class.

Frankie11 17th June 2021 11:27 PM

Quote:

Originally Posted by confirmed2 (Post 3161344)
hey guys can anyone share the component/game object struct offsets?

looking for


offset::component::attached_game_object

Thanks, or if u would be kind to tell me where exactly i can find these offsets.

Code:

#pragma once


#define object_manager 0x156C698

/*Dictionary Offsets*/

#define off_dic_entries 0x18
#define off_disc_count 0x40

/*Generic List*/

#define off_generic_count 0x18
#define off_generic_base 0x10

/*  offset::array::base */

#define off_base 0x20

/*Player Offsets*/

#define off_player_profile 0x440
#define off_player_body 0xA8
#define off_movement_context 0x40
#define off_health_controller 0x470
#define off_procedural_weapon_anim 0x190
#define off_player_physical 0x450
#define off_handscontroller 0x488

#define sekeleton_root_joint 0x28


/*EFT.Profile*/

#define off_profileID 0x10
#define off_accountID 0x18
#define off_profileinfo 0x28

/*EFT.Profie.Info*/

#define off_nickname 0x10
#define off_groupid 0x18
#define off_side 0x50

/*Physical Offsets*/

#define off_stamina 0x28
#define off_hands_stamina 0x30
#define off_oxygen 0x38

/* [Class] .ProceduralWeaponAnimation */

#define off_breatheffector 0x28
#define off_walkeffector 0x30
#define off_shoteffector 0x48
#define off_mask 0xF8
#define off_shotdirection 0x1CC
#define off_cameratarget 0x160

/* -.ShotEffector*/

#define off_recoil_strength_xy 0x38
#define off_recoil_strength_z 0x40


/* ThermalVision*/

#define off_ison 0xD0
#define off_IsNoisy 0xD1
#define off_isfpsstuck 0xD2
#define off_ismotionblurred 0xD3
#define off_IsGlitch 0xD4
#define off_IsPixelated 0xD5

/* VisorEffect */

#define off_Intensity 0xB8
#define off_Velocity 0x108

/* EFT.Interactive.ExfiltrationPoint */

#define off_exitsettings 0x58


/*AIFirearmController*/

#define off_fireport 0xE8
#define off_isAiming 0x145
#define off_weaponlength 0x14C

/* Diz.Skinning.Skeleton*/

#define off_skeleton_keys 0x20
#define off_skeleton_values 0x28

/*Camera Offsets*/

#define off_viewmatrix 0x00D8


/*Game Object Manager Offsets*/

#define lastTaggedObject 0x0000
#define taggedObjects 0x0008
#define lastActiveObject 0x0010
#define activeObjects 0x0018

#define nextObjectLink 0x0008

/*Movement Context*/
#define off_angles_0 0x1F8
#define off_angle_1 0x200
#define off_position 0x208

/*Health*/

#define off_health_max 0x14
#define off_health_current 0x10

/*Health Controller */
#define off_healthbody 0x20

/*Health Bodypartstate health struct*/
#define off_bodyparthealth 0x10

/*Local GameWorld Offsets*/

#define off_registeredplayers 0x80


/*GameObject Offsets*/

#define off_gameobject_name 0x60
#define off_gameobject_array 0x30
#define off_tag 0x54
#define off_layer 0x50
#define off_isactive 0x57
#define off_isactiveself 0x56
#define off_gameobject_size 0x40


/*Component Offsets*/

#define off_component_monoclass 0x00
#define off_monoclass_name 0x48
#define off_monoclass_namespace 0x50
#define off_component_scripting 0x28


xFirstPromise 18th June 2021 12:21 AM

Quote:

Originally Posted by pinefin (Post 3161563)
:thinking: nothing major like that has changed since last wipe. especially the gameobjectmanager class.

thanks for info +rep

montroisiemecon 18th June 2021 02:57 PM

Quote:

Originally Posted by nikobelic29 (Post 3161279)
Anyone know how to calculate KD?

Come on not you...

oq1337 18th June 2021 07:09 PM

I am having an issue grabbing bone pos... using the shit from this page
Escape from Tarkov Reversal, Structs and Offsets

pinefin 18th June 2021 08:58 PM

Quote:

Originally Posted by oq1337 (Post 3162188)
I am having an issue grabbing bone pos... using the shit from this page
Escape from Tarkov Reversal, Structs and Offsets

try this.

Code:

vector3 Memory::GetPosition(uint64_t transform)
{
    if (!this->in_game || !transform)
        return vector3();
    auto transform_internal = driver->read<uint64_t>(transform + 0x10);

    if (!transform_internal)
        return vector3();

    auto matrices = driver->read<uint64_t>(transform_internal + 0x38);
    auto index = driver->read<int>(transform_internal + 0x40);

    uint64_t matrix_list_base = 0x0;
    uint64_t dependency_index_table_base = 0x0;

    driver->ReadProcessMemory((uintptr_t)(matrices + 0x18), &matrix_list_base, sizeof(matrix_list_base));

    driver->ReadProcessMemory((uintptr_t)(matrices + 0x20), &dependency_index_table_base, sizeof(dependency_index_table_base));

    static auto get_dependency_index = [this](uint64_t base, int32_t index)
    {
        driver->ReadProcessMemory((uintptr_t)(base + index * 4), &index, sizeof(index));
        return index;
    };

    static auto get_matrix_blob = [this](uint64_t base, uint64_t offs, float* blob, uint32_t size) {
        driver->ReadProcessMemory((uintptr_t)(base + offs), blob, size);
    };

    int32_t index_relation = get_dependency_index(dependency_index_table_base, index);

    vector3 ret_value;
    {
        float* base_matrix3x4 = (float*)malloc(64),
            * matrix3x4_buffer0 = (float*)((uint64_t)base_matrix3x4 + 16),
            * matrix3x4_buffer1 = (float*)((uint64_t)base_matrix3x4 + 32),
            * matrix3x4_buffer2 = (float*)((uint64_t)base_matrix3x4 + 48);

        get_matrix_blob(matrix_list_base, index * 48, base_matrix3x4, 16);

        __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
        __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
        __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };

        while (index_relation >= 0)
        {
            uint32_t matrix_relation_index = 6 * index_relation;

            // paziuret kur tik 3 nureadina, ten translationas, kur 4 = quatas ir yra rotationas.
            get_matrix_blob(matrix_list_base, 8 * matrix_relation_index, matrix3x4_buffer2, 16);
            __m128 v_0 = *(__m128*)matrix3x4_buffer2;

            get_matrix_blob(matrix_list_base, 8 * matrix_relation_index + 32, matrix3x4_buffer0, 16);
            __m128 v_1 = *(__m128*)matrix3x4_buffer0;

            get_matrix_blob(matrix_list_base, 8 * matrix_relation_index + 16, matrix3x4_buffer1, 16);
            __m128i v9 = *(__m128i*)matrix3x4_buffer1;

            __m128* v3 = (__m128*)base_matrix3x4; // [email protected]
            __m128 v10; // [email protected]
            __m128 v11; // [email protected]
            __m128 v12; // [email protected]
            __m128 v13; // [email protected]
            __m128 v14; // [email protected]
            __m128 v15; // [email protected]
            __m128 v16; // [email protected]
            __m128 v17; // [email protected]

            v10 = _mm_mul_ps(v_1, *v3);
            v11 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, 0));
            v12 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, 85));
            v13 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, -114));
            v14 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, -37));
            v15 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, -86));
            v16 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, 113));

            v17 = _mm_add_ps(
                _mm_add_ps(
                    _mm_add_ps(
                        _mm_mul_ps(
                            _mm_sub_ps(
                                _mm_mul_ps(_mm_mul_ps(v11, (__m128)xmmword_1410D1350), v13),
                                _mm_mul_ps(_mm_mul_ps(v12, (__m128)xmmword_1410D1360), v14)),
                            _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), -86))),
                        _mm_mul_ps(
                            _mm_sub_ps(
                                _mm_mul_ps(_mm_mul_ps(v15, (__m128)xmmword_1410D1360), v14),
                                _mm_mul_ps(_mm_mul_ps(v11, (__m128)xmmword_1410D1340), v16)),
                            _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 85)))),
                    _mm_add_ps(
                        _mm_mul_ps(
                            _mm_sub_ps(
                                _mm_mul_ps(_mm_mul_ps(v12, (__m128)xmmword_1410D1340), v16),
                                _mm_mul_ps(_mm_mul_ps(v15, (__m128)xmmword_1410D1350), v13)),
                            _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 0))),
                        v10)),
                v_0);

            *v3 = v17;

            index_relation = get_dependency_index(dependency_index_table_base, index_relation);
        }

        ret_value = *(vector3*)base_matrix3x4;
        delete[] base_matrix3x4;
    }

    return ret_value;
}

otherwise if this doesnt work, it's your getting bone transforms.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

thed24 19th June 2021 08:25 AM

Anyone had any luck using thermals with scopes? I assume the lens has a material or shader that the thermal effect specifically looks for and choose not to render the scope, but playing around with it hasn't gotten me far.

Superlogan624 19th June 2021 08:38 AM

Quote:

Originally Posted by pinefin (Post 3162255)
try this.

Code:

vector3 Memory::GetPosition(uint64_t transform)
{
    if (!this->in_game || !transform)
        return vector3();
    auto transform_internal = driver->read<uint64_t>(transform + 0x10);

    if (!transform_internal)
        return vector3();

    auto matrices = driver->read<uint64_t>(transform_internal + 0x38);
    auto index = driver->read<int>(transform_internal + 0x40);

    uint64_t matrix_list_base = 0x0;
    uint64_t dependency_index_table_base = 0x0;

    driver->ReadProcessMemory((uintptr_t)(matrices + 0x18), &matrix_list_base, sizeof(matrix_list_base));

    driver->ReadProcessMemory((uintptr_t)(matrices + 0x20), &dependency_index_table_base, sizeof(dependency_index_table_base));

    static auto get_dependency_index = [this](uint64_t base, int32_t index)
    {
        driver->ReadProcessMemory((uintptr_t)(base + index * 4), &index, sizeof(index));
        return index;
    };

    static auto get_matrix_blob = [this](uint64_t base, uint64_t offs, float* blob, uint32_t size) {
        driver->ReadProcessMemory((uintptr_t)(base + offs), blob, size);
    };

    int32_t index_relation = get_dependency_index(dependency_index_table_base, index);

    vector3 ret_value;
    {
        float* base_matrix3x4 = (float*)malloc(64),
            * matrix3x4_buffer0 = (float*)((uint64_t)base_matrix3x4 + 16),
            * matrix3x4_buffer1 = (float*)((uint64_t)base_matrix3x4 + 32),
            * matrix3x4_buffer2 = (float*)((uint64_t)base_matrix3x4 + 48);

        get_matrix_blob(matrix_list_base, index * 48, base_matrix3x4, 16);

        __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
        __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
        __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };

        while (index_relation >= 0)
        {
            uint32_t matrix_relation_index = 6 * index_relation;

            // paziuret kur tik 3 nureadina, ten translationas, kur 4 = quatas ir yra rotationas.
            get_matrix_blob(matrix_list_base, 8 * matrix_relation_index, matrix3x4_buffer2, 16);
            __m128 v_0 = *(__m128*)matrix3x4_buffer2;

            get_matrix_blob(matrix_list_base, 8 * matrix_relation_index + 32, matrix3x4_buffer0, 16);
            __m128 v_1 = *(__m128*)matrix3x4_buffer0;

            get_matrix_blob(matrix_list_base, 8 * matrix_relation_index + 16, matrix3x4_buffer1, 16);
            __m128i v9 = *(__m128i*)matrix3x4_buffer1;

            __m128* v3 = (__m128*)base_matrix3x4; // [email protected]
            __m128 v10; // [email protected]
            __m128 v11; // [email protected]
            __m128 v12; // [email protected]
            __m128 v13; // [email protected]
            __m128 v14; // [email protected]
            __m128 v15; // [email protected]
            __m128 v16; // [email protected]
            __m128 v17; // [email protected]

            v10 = _mm_mul_ps(v_1, *v3);
            v11 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, 0));
            v12 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, 85));
            v13 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, -114));
            v14 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, -37));
            v15 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, -86));
            v16 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, 113));

            v17 = _mm_add_ps(
                _mm_add_ps(
                    _mm_add_ps(
                        _mm_mul_ps(
                            _mm_sub_ps(
                                _mm_mul_ps(_mm_mul_ps(v11, (__m128)xmmword_1410D1350), v13),
                                _mm_mul_ps(_mm_mul_ps(v12, (__m128)xmmword_1410D1360), v14)),
                            _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), -86))),
                        _mm_mul_ps(
                            _mm_sub_ps(
                                _mm_mul_ps(_mm_mul_ps(v15, (__m128)xmmword_1410D1360), v14),
                                _mm_mul_ps(_mm_mul_ps(v11, (__m128)xmmword_1410D1340), v16)),
                            _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 85)))),
                    _mm_add_ps(
                        _mm_mul_ps(
                            _mm_sub_ps(
                                _mm_mul_ps(_mm_mul_ps(v12, (__m128)xmmword_1410D1340), v16),
                                _mm_mul_ps(_mm_mul_ps(v15, (__m128)xmmword_1410D1350), v13)),
                            _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 0))),
                        v10)),
                v_0);

            *v3 = v17;

            index_relation = get_dependency_index(dependency_index_table_base, index_relation);
        }

        ret_value = *(vector3*)base_matrix3x4;
        delete[] base_matrix3x4;
    }

    return ret_value;
}

otherwise if this doesnt work, it's your getting bone transforms.

Hello, I'm having issues with your GetPosition, I'd appreciate it if you could verify that my get_bone_transform function looks right.

Code:

uintptr_t get_bone_transform(int bone) {
                uintptr_t bone_info = Driver::read<uintptr_t>(Driver::read<uintptr_t>(Driver::read<uintptr_t>(Driver::read<uintptr_t>(entity + 0xa0) + 0x28) + 0x28) + 0x10);

                uintptr_t transform = Driver::read<uintptr_t>(Driver::read<uintptr_t>(bone_info + 0x20 + (bone * 0x8)) + 0x10);
                return transform;
        }


pinefin 19th June 2021 09:28 AM

Quote:

Originally Posted by thed24 (Post 3162550)
Anyone had any luck using thermals with scopes? I assume the lens has a material or shader that the thermal effect specifically looks for and choose not to render the scope, but playing around with it hasn't gotten me far.


its not a shader, its a component inside of cameras; just like VisorEffect. there are plenty of examples of how to do that in this thread.

i believe the component name has Thermal in the name (i cant verify im on my phone), and the name should be the same as the class name so if you use ctrl+f in the dump u can find the name and the class together.

ecthirune 19th June 2021 10:51 AM

Quote:

Originally Posted by Superlogan624 (Post 3162555)
Hello, I'm having issues with your GetPosition, I'd appreciate it if you could verify that my get_bone_transform function looks right.

Code:

uintptr_t get_bone_transform(int bone) {
                uintptr_t bone_info = Driver::read<uintptr_t>(Driver::read<uintptr_t>(Driver::read<uintptr_t>(Driver::read<uintptr_t>(entity + 0xa0) + 0x28) + 0x28) + 0x10);

                uintptr_t transform = Driver::read<uintptr_t>(Driver::read<uintptr_t>(bone_info + 0x20 + (bone * 0x8)) + 0x10);
                return transform;
        }


Code:

(entity + 0xa8) + 0x28) + 0x28) + 0x10);

thed24 19th June 2021 01:02 PM

Quote:

Originally Posted by pinefin (Post 3162576)
its not a shader, its a component inside of cameras; just like VisorEffect. there are plenty of examples of how to do that in this thread.

i believe the component name has Thermal in the name (i cant verify im on my phone), and the name should be the same as the class name so if you use ctrl+f in the dump u can find the name and the class together.

I'm aware, but the thermal effect, similar to in-game, isn't usable with scopes. So if you toggle the boolean in that component, you won't be able to scope in. Similarly, you can't see through glass in general. Someone noted that changing some material values on the component allowed seeing through glass, which makes me assume theres a material or shader on the lens that is creating this effect.

pinefin 19th June 2021 11:43 PM

Quote:

Originally Posted by thed24 (Post 3162681)
I'm aware, but the thermal effect, similar to in-game, isn't usable with scopes. So if you toggle the boolean in that component, you won't be able to scope in. Similarly, you can't see through glass in general. Someone noted that changing some material values on the component allowed seeing through glass, which makes me assume theres a material or shader on the lens that is creating this effect.


you were right, im not sure about this but i know its true that theres a variable in the component that allows seeing through glass


Sent from my iPhone using Tapatalk

FirezRVG 20th June 2021 04:11 AM

Does anyone have the latest Aimbot or esp offset?

ZeusLord 20th June 2021 04:14 AM

Quote:

Originally Posted by FirezRVG (Post 3163180)
Does anyone have the latest Aimbot or esp offset?

What?? Might wanna be a bit more specific so we can actually give you a helpful response lol. :chinese:

FirezRVG 20th June 2021 04:33 AM

Quote:

Originally Posted by ZeusLord (Post 3163187)
What?? Might wanna be a bit more specific so we can actually give you a helpful response lol. :chinese:

You has the undetecttion EsP ofeset? :asskiss:

Sent from my iPhone using Tapatalk

ecthirune 20th June 2021 08:31 AM

Quote:

Originally Posted by FirezRVG (Post 3163195)
undetecttion EsP ofeset?

omg, does BE starts detect offsets? :lmao:

Heashey 20th June 2021 10:16 AM

Quote:

Originally Posted by FirezRVG (Post 3163195)
You has the undetecttion EsP ofeset? :asskiss:

Sent from my iPhone using Tapatalk

LOOOL WHAT?

pinefin 20th June 2021 11:16 AM

Quote:

Originally Posted by ecthirune (Post 3163282)
omg, does BE starts detect offsets? :lmao:


i hope youre joking


Sent from my iPhone using Tapatalk

ecthirune 20th June 2021 12:30 PM

Quote:

Originally Posted by pinefin (Post 3163344)
i hope youre joking

i quoted hillarious post and dropped hillarious answer.

Superlogan624 20th June 2021 07:16 PM

Anyone know why my function is getting stuck inside the while loop on line 52.

Code:

uintptr_t get_bone_transform(int bone) { // used in another file
                uintptr_t bone_info = Driver::read<uintptr_t>(Driver::read<uintptr_t>(Driver::read<uintptr_t>(Driver::read<uintptr_t>(entity + 0xa8) + 0x28) + 0x28) + 0x10);

                uintptr_t transform = Driver::read<uintptr_t>(Driver::read<uintptr_t>(bone_info + 0x20 + (bone * 0x8)) + 0x10);
                return transform;
        }

Vector3 GetBonePosition()
        {
                if (!transform) // Transform was assigned in another function before this was called
                        return Vector3();
                auto transform_internal = Driver::read<uint64_t>(transform + 0x10);
               
                if (!transform_internal)
                        return Vector3();
               
                auto matrices = Driver::read<uint64_t>(transform_internal + 0x38);
                auto index = Driver::read<int>(transform_internal + 0x40);
               
                uint64_t matrix_list_base = 0x0;
                uint64_t dependency_index_table_base = 0x0;
               
                matrix_list_base = Driver::read<uintptr_t>(matrices + 0x18);
               
                dependency_index_table_base = Driver::read<uintptr_t>(matrices + 0x20);
               
                static auto get_dependency_index = [this](uint64_t base, int32_t index)
                {
                        index = Driver::read<uintptr_t>(base + index * 4);
                        return index;
                };
               
                static auto get_matrix_blob = [this](uint64_t base, uint64_t offs, float* blob, uint32_t size) {
                        blob = (float*)Driver::read<uintptr_t>(base + offs);
                };
               
                int32_t index_relation = get_dependency_index(dependency_index_table_base, index);
               
                Vector3 ret_value;
                {
                        float* base_matrix3x4 = (float*)malloc(64),
                                * matrix3x4_buffer0 = (float*)((uint64_t)base_matrix3x4 + 16),
                                * matrix3x4_buffer1 = (float*)((uint64_t)base_matrix3x4 + 32),
                                * matrix3x4_buffer2 = (float*)((uint64_t)base_matrix3x4 + 48);
                       
                        get_matrix_blob(matrix_list_base, index * 48, base_matrix3x4, 16);
                       
                        __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
                        __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
                        __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };
                       
                        while (index_relation >= 0)
                        {
                                uint32_t matrix_relation_index = 6 * index_relation;
                               
                                // paziuret kur tik 3 nureadina, ten translationas, kur 4 = quatas ir yra rotationas.
                                get_matrix_blob(matrix_list_base, 8 * matrix_relation_index, matrix3x4_buffer2, 16);
                                __m128 v_0 = *(__m128*)matrix3x4_buffer2;
                               
                                get_matrix_blob(matrix_list_base, 8 * matrix_relation_index + 32, matrix3x4_buffer0, 16);
                                __m128 v_1 = *(__m128*)matrix3x4_buffer0;
                               
                                get_matrix_blob(matrix_list_base, 8 * matrix_relation_index + 16, matrix3x4_buffer1, 16);
                                __m128i v9 = *(__m128i*)matrix3x4_buffer1;
                               
                                __m128* v3 = (__m128*)base_matrix3x4; // [email protected]
                                __m128 v10; // [email protected]
                                __m128 v11; // [email protected]
                                __m128 v12; // [email protected]
                                __m128 v13; // [email protected]
                                __m128 v14; // [email protected]
                                __m128 v15; // [email protected]
                                __m128 v16; // [email protected]
                                __m128 v17; // [email protected]
                               
                                v10 = _mm_mul_ps(v_1, *v3);
                                v11 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, 0));
                                v12 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, 85));
                                v13 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, -114));
                                v14 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, -37));
                                v15 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, -86));
                                v16 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, 113));
                               
                                v17 = _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_add_ps(
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(v11, (__m128)xmmword_1410D1350), v13),
                                                                        _mm_mul_ps(_mm_mul_ps(v12, (__m128)xmmword_1410D1360), v14)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), -86))),
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(v15, (__m128)xmmword_1410D1360), v14),
                                                                        _mm_mul_ps(_mm_mul_ps(v11, (__m128)xmmword_1410D1340), v16)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 85)))),
                                                _mm_add_ps(
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(v12, (__m128)xmmword_1410D1340), v16),
                                                                        _mm_mul_ps(_mm_mul_ps(v15, (__m128)xmmword_1410D1350), v13)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 0))),
                                                        v10)),
                                        v_0);
                               
                                *v3 = v17;
                               
                                index_relation = get_dependency_index(dependency_index_table_base, index_relation);
                        }
                       
                        ret_value = *(Vector3*)base_matrix3x4;
                        delete[] base_matrix3x4;
                }

               
                return ret_value;
        }


xzackcc 21st June 2021 01:10 AM

Quote:

Originally Posted by Superlogan624 (Post 3163679)
Anyone know why my function is getting stuck inside the while loop on line 52.
...


quick and hacky way of fixing it.
Code:

                                // ...
                                int i = 0;
                                int index_container[201] = { };
                                while (index_relation >= 0) {
                                        i++;
                                        index_container[i] = index_relation;
                                        if (i > 200) {
                                                if (index_container[0] == 0 &&
                                                        index_container[1] == 0 &&
                                                        index_container[2] == 0 &&
                                                        index_container[3] == 0 &&
                                                        index_container[4] == 0) { // btw .. you should make a better way of checking if a certain range of this array is zero'ed
                                                        free(base_matrix3x4);
                                                        return vector3_t{ 0.f, 0.f, 0.f };
                                                }
                                        }
                                        // ...

Quote:

Originally Posted by FirezRVG (Post 3163180)
Does anyone have the latest Aimbot or esp offset?

one of these:
Code:

0xDECAFBAD
0xCAFEBABE
0xC001CAFE
0xBAADF00D
0xBAADFEED
0xC0EDBABE
0x1FEDBEEF
0xBADCAB1E
0xBADC0DED
0xC001D00D
0xDEADC0DE
0xDEADDA7A
0x1BADBABE
0xC0CAC01A
0xC0DEBA5E
0xABAD1DEA
0xB16B00B5
0xBADEAFFE
0xAFFED00F
0xBADB007


FirezRVG 21st June 2021 03:42 AM

Quote:

Originally Posted by xzackcc (Post 3163843)
one of these:
Code:

0xDECAFBAD
0xCAFEBABE
0xC001CAFE
0xBAADF00D
0xBAADFEED
0xC0EDBABE
0x1FEDBEEF
0xBADCAB1E
0xBADC0DED
0xC001D00D
0xDEADC0DE
0xDEADDA7A
0x1BADBABE
0xC0CAC01A
0xC0DEBA5E
0xABAD1DEA
0xB16B00B5
0xBADEAFFE
0xAFFED00F
0xBADB007


+rep :asskiss:

xzackcc 23rd June 2021 07:06 PM

Quote:

Originally Posted by FirezRVG (Post 3163882)
+rep :asskiss:

You must be trolling at this point btw.

May I ask you if you actually asked for "the esp offset" or do you want to know the way of how to make the esp work (such as the chain to entity list, w2s, health etc)?

'Cuz asking for a single offset to "esp" won't get you anywhere as you should know since you released a driver class and r6s cheat.


If you didn't notice, the offsets I gave you are a part of the so-called Hexspeak code list (magic numbers) (https://en.wikipedia.org/wiki/Hexspeak)
Code:

0xC0CAC01A // -> Coca Cola
0xABAD1DEA // -> A Bad Idea
0xC0DEBA5E // -> Code Base
0xB16B00B5 // -> Big Boobs
0xBADCAB1E // -> Bad Cable


Also, you didn't rep me (just a sidenote)
https://i.imgur.com/X4zh2po.png

samtulach 23rd June 2021 08:28 PM

I am currently getting few static fields by disassembling the JITed code (over-engineering is my passion), but I am sure there is a way to get them more easily...

If I have a pointer to instance of a class (let's say GameWorld or Player), can I somehow easily read/write those values?

https://i.imgur.com/nHgMWK9.png

Obviously they are static so they will not be relative to the class instance pointer. Does anyone have the header of the class? There are few pointers at the top, but I can't get to those values.

https://i.imgur.com/dplF7jy.png

Superseb123abc 23rd June 2021 09:09 PM

Quote:

Originally Posted by samtulach (Post 3165819)
I am currently getting few static fields by disassembling the JITed code (over-engineering is my passion), but I am sure there is a way to get them more easily...

If I have a pointer to instance of a class (let's say GameWorld or Player), can I somehow easily read/write those values?

https://i.imgur.com/nHgMWK9.png

Obviously they are static so they will not be relative to the class instance pointer. Does anyone have the header of the class? There are few pointers at the top, but I can't get to those values.

Look into the class' mono vtable.

samtulach 23rd June 2021 09:32 PM

Quote:

Originally Posted by Superseb123abc (Post 3165837)
Look into the class' mono vtable.

I am aware of that. I am just not sure how to get to the MonoClass base structure from what I've got (instanced data of the class).

https://i.imgur.com/v9lordU.png

To clarify, let's say that I've got some other class and inside of it, there is a non-static field of another class. I read that as a pointer and now I have what is supposedly some sort of object pointer. Where in the mono source is the header for the object itself? It's too small for MonoClass struct.

EDIT: Well... Got it. There was a blank define so I could not find the struct def. Thanks!


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

cherrydeveloper 23rd June 2021 11:36 PM

anyone got these offsets ?

firearmController_0 (type: EFT.Player.FirearmController) /*EFT.Player+FirearmController*/
HipInaccuracy (type: System.Single)
_handsController (type: EFT.Player.AbstractHandsController)
_status (type: EFT.Interactive.EExfiltrationStatus)

pinefin 24th June 2021 01:59 AM

Quote:

Originally Posted by cherrydeveloper (Post 3165918)
anyone got these offsets ?

firearmController_0 (type: EFT.Player.FirearmController) /*EFT.Player+FirearmController*/
HipInaccuracy (type: System.Single)
_handsController (type: EFT.Player.AbstractHandsController)
_status (type: EFT.Interactive.EExfiltrationStatus)

1. go in the tarkov dump
2. ctrl+f
:lmao:

beepboop5 24th June 2021 09:55 AM

Quote:

Originally Posted by samtulach (Post 3165851)
I am aware of that. I am just not sure how to get to the MonoClass base structure from what I've got (instanced data of the class).

https://i.imgur.com/v9lordU.png

To clarify, let's say that I've got some other class and inside of it, there is a non-static field of another class. I read that as a pointer and now I have what is supposedly some sort of object pointer. Where in the mono source is the header for the object itself? It's too small for MonoClass struct.

EDIT: Well... Got it. There was a blank define so I could not find the struct def. Thanks!

ScriptingClass (Basically just the class instance) + 0x0] + 0x0] = Pointer to the MonoClass instance (just add the offset and dereference like normal to get its fields or dereference into the MonoClass struct)

samtulach 24th June 2021 03:57 PM

Layer names (if you need to rewrite linecast mask for example):

Code:

Layer ID: 8 name: Player bits: 256
Layer ID: 9 name: DoorLowPolyCollider bits: 512
Layer ID: 10 name: PlayerCollisionTest bits: 1024
Layer ID: 11 name: Terrain bits: 2048
Layer ID: 12 name: HighPolyCollider bits: 4096
Layer ID: 13 name: Triggers bits: 8192
Layer ID: 14 name: DisablerCullingObject bits: 16384
Layer ID: 15 name: Loot bits: 32768
Layer ID: 16 name: HitCollider bits: 65536
Layer ID: 17 name: PlayerRenderers bits: 131072
Layer ID: 18 name: LowPolyCollider bits: 262144
Layer ID: 19 name: Weapon Preview bits: 524288
Layer ID: 20 name: Shells bits: 1048576
Layer ID: 21 name: CullingMask bits: 2097152
Layer ID: 22 name: Interactive bits: 4194304
Layer ID: 23 name: Deadbody bits: 8388608
Layer ID: 24 name: RainDrops bits: 16777216
Layer ID: 25 name: Menu Environment bits: 33554432
Layer ID: 26 name: Foliage bits: 67108864
Layer ID: 27 name: PlayerSpiritAura bits: 134217728
Layer ID: 28 name: Sky bits: 268435456
Layer ID: 29 name: LevelBorder bits: 536870912
Layer ID: 30 name: TransparentCollider bits: 1073741824
Layer ID: 31 name: Grass bits: -2147483648


pinefin 24th June 2021 06:42 PM

Quote:

Originally Posted by samtulach (Post 3166382)
Layer names (if you need to rewrite linecast mask for example):

Code:

Layer ID: 8 name: Player bits: 256
Layer ID: 9 name: DoorLowPolyCollider bits: 512
Layer ID: 10 name: PlayerCollisionTest bits: 1024
Layer ID: 11 name: Terrain bits: 2048
Layer ID: 12 name: HighPolyCollider bits: 4096
Layer ID: 13 name: Triggers bits: 8192
Layer ID: 14 name: DisablerCullingObject bits: 16384
Layer ID: 15 name: Loot bits: 32768
Layer ID: 16 name: HitCollider bits: 65536
Layer ID: 17 name: PlayerRenderers bits: 131072
Layer ID: 18 name: LowPolyCollider bits: 262144
Layer ID: 19 name: Weapon Preview bits: 524288
Layer ID: 20 name: Shells bits: 1048576
Layer ID: 21 name: CullingMask bits: 2097152
Layer ID: 22 name: Interactive bits: 4194304
Layer ID: 23 name: Deadbody bits: 8388608
Layer ID: 24 name: RainDrops bits: 16777216
Layer ID: 25 name: Menu Environment bits: 33554432
Layer ID: 26 name: Foliage bits: 67108864
Layer ID: 27 name: PlayerSpiritAura bits: 134217728
Layer ID: 28 name: Sky bits: 268435456
Layer ID: 29 name: LevelBorder bits: 536870912
Layer ID: 30 name: TransparentCollider bits: 1073741824
Layer ID: 31 name: Grass bits: -2147483648


+rep big cock nice release :asskiss:

xFirstPromise 25th June 2021 04:39 AM

those item esp offest are changes?

beepboop5 25th June 2021 12:01 PM

Quote:

Originally Posted by xFirstPromise (Post 3166769)
those item esp offest are changes?

Opening Unispect/CE takes way less time than pestering on the forum for updated offsets, save yourself some time and learn how to find out for yourself.

xFirstPromise 25th June 2021 01:05 PM

Quote:

Originally Posted by beepboop5 (Post 3166922)
Opening Unispect/CE takes way less time than pestering on the forum for updated offsets, save yourself some time and learn how to find out for yourself.

i know how to find it tho, im just lazy :)

xzackcc 25th June 2021 01:24 PM

Quote:

Originally Posted by xFirstPromise (Post 3166972)
i know how to find it tho, im just lazy :)

load your cheat, enable item esp and see if it works, lol.

other than that, no, they are still the same.

montroisiemecon 25th June 2021 02:49 PM

Quote:

Originally Posted by xFirstPromise (Post 3166972)
i know how to find it tho, im just lazy :)

Too lazy to maintain your public shitass pasted p2c? Surprising

EliteProducer 25th June 2021 06:37 PM

Quote:

Originally Posted by montroisiemecon (Post 3167034)
Too lazy to maintain your public shitass pasted p2c? Surprising

Funnily enough, he doesn't own a P2C.
He takes opensource cheats, edits/fixed them, and sells them for a profit.
All of his drivers + sources are on GitHub LOL :lmao:

yarrakosman 25th June 2021 06:49 PM

anyone got w2s with aiming with correct offsets ?

pinefin 25th June 2021 07:36 PM

Quote:

Originally Posted by yarrakosman (Post 3167167)
anyone got w2s with aiming with correct offsets ?

https://i.imgur.com/oZvVlKn.png

ecthirune 25th June 2021 08:28 PM

Okay, since i decided to polish my usermode frankenstein i stuck with 3 stupid problems, which i can't solve by my own.
Maybe sm1 will give any advice here, just to show me where i should dig to.
i will hide stuff under spoilers, to not do "fatposting" here and sorting my text.

Problem 1: gettransform crashing


Problem 2: w2s drawing stuff, that are behind me.


and problem #3 (not a problem, mostly just a question), about continious using software between raids.


ty all for answers if they will be. kek.

EliteProducer 25th June 2021 11:05 PM

Quote:

Originally Posted by ecthirune (Post 3167226)
~

Code:

bool world_to_screen(glm::vec3 world, glm::vec2* screen)
{


        const auto matrix = glm::transpose(get_view_matrix());


        const auto pos_vec = glm::vec3{ matrix[3][0], matrix[3][1], matrix[3][2] };

        const auto z = glm::dot(pos_vec, world) + matrix[3][3];

        if (z < 0.098f)
                return false;

        const auto x = glm::dot(glm::vec3{ matrix[0][0], matrix[0][1], matrix[0][2] }, world) + matrix[0][3];
        const auto y = glm::dot(glm::vec3{ matrix[1][0], matrix[1][1], matrix[1][2] }, world) + matrix[1][3];

        static const auto screen_center_x = Width * 0.5f;
        static const auto screen_center_y = Height * 0.5f;

        if (screen)
        {
                *screen =
                {
                        screen_center_x * (1.f + x / z),
                        screen_center_y * (1.f - y / z)
                };
        }

        return true;
}

Enjoy.

ecthirune 26th June 2021 08:29 AM

Quote:

Originally Posted by EliteProducer (Post 3167318)
~snip

Ty for trying, but nope, this still cause issues:

https://i.imgur.com/JaX8p8o.jpeg
https://i.imgur.com/3MkmMmF.jpeg
RK-5 are in front of me (~30 meters in another building, first screenshot) also as SNB pack of bullets, but they still drawing behind me(second screenshot).
And your code snippet are same, as mine except
Code:

if (z < 0.098f)
                return false;

this part.

beepboop5 26th June 2021 11:00 AM

Quote:

Originally Posted by ecthirune (Post 3167226)
Okay, since i decided to polish my usermode frankenstein i stuck with 3 stupid problems, which i can't solve by my own.
Maybe sm1 will give any advice here, just to show me where i should dig to.
i will hide stuff under spoilers, to not do "fatposting" here and sorting my text.

Problem 1: gettransform crashing


Problem 2: w2s drawing stuff, that are behind me.


and problem #3 (not a problem, mostly just a question), about continious using software between raids.


ty all for answers if they will be. kek.

Regarding the 3rd question, you can tell if you are fully in a raid (spawned in, not just loading into one) by checking if the FPSCamera exists and only if it exists, I wouldnt rely on checking the GameWorld and LocalGameWorld (<- component of GameWorld) because BSG does some fucky shit and sometimes keeps it inside the ActiveObjects but marks the bool inside the GameObject telling unity if its active as false. So to put it simply, call some sort of function once per loop to check for the FPSCamera and if its null, keep attempting to read pointers every 1-2s until its valid again (or create some sort of "refresh" thread where you constantly attempt to update pointers and have a mutex for swapping out values for a shared list).

^^ Also reversing the Unity SDK and its various functions for finding GameObjects in the GOM can be very useful to reliably check for these (hint: look for GameObject::Find)

ecthirune 26th June 2021 11:33 AM

Quote:

Originally Posted by beepboop5 (Post 3167606)
Regarding the 3rd question, you can tell if you are fully in a raid (spawned in, not just loading into one) by checking if the FPSCamera exists and only if it exists ~snip

yeah, i have almost same advice from another person, and i decided to think that it's a best way, thanks much. The other logic, how to prevent my UM reading stuff when raid is ends/not started i already written some times ago(also as deleted, bcs i tested it with looking for gameworld/localgameworld and it was wrong, you right).. it's just logical stuff, should not be hard.

Quote:

Originally Posted by beepboop5 (Post 3167606)
^^ Also reversing the Unity SDK and its various functions for finding GameObjects in the GOM can be very useful to reliably check for these (hint: look for GameObject::Find)

im still noobish for this, but will do for sure.

https://i.imgur.com/Fm6BhAT.png

Not sure if somebody will be interested in it, but just incase solving my w2s issue:

So, till debugging i found good workaround solution (with @fusionpak help, he dropped me old post from dayz about almost same issue):

in w2s:
Code:

if (w < 0.098f)
                w = 1;

This removed items behind me on my y level (same floor), but still drawing stuff if it's behind me on another y level.
after that in overlay:
Code:

if (vector3.z > 1.0f ) // do draw
and bam. it works as intended.

buddgaf 26th June 2021 04:09 PM

what are people using at to get a killfeed? i searched but don't see anything

ecthirune 26th June 2021 05:05 PM

Quote:

Originally Posted by buddgaf (Post 3167782)
what are people using at to get a killfeed? i searched but don't see anything

huh?
didn't saw any1. example?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

ZeusLord 26th June 2021 05:26 PM

Quote:

Originally Posted by ecthirune (Post 3167624)
yeah, i have almost same advice from another person, and i decided to think that it's a best way, thanks much. The other logic, how to prevent my UM reading stuff when raid is ends/not started i already written some times ago(also as deleted, bcs i tested it with looking for gameworld/localgameworld and it was wrong, you right).. it's just logical stuff, should not be hard.

You can make like a global bool called like in_game or something and set that to true if the gameworld is valid (not null and has more than 0 players) and make sure FPS Camera is valid (not null) and false other wise and just only render and things when in_game is true.

ecthirune 26th June 2021 05:33 PM

Quote:

Originally Posted by ZeusLord (Post 3167816)
You can make like a global bool called like in_game or something and set that to true if the gameworld is valid (not null and has more than 0 players) and make sure FPS Camera is valid (not null) and false other wise and just only render and things when in_game is true.

ye, thanks for advice.
I did exact same method far ago, with bool "online", but in checking was only "if localgameworld address exists/still same", as i remember.
And this brings me troubles, when game still on loading into memory, localgameworld already found, and my threads goin to dig players/items. Sometimes it cause bsod, sometimes it cause weird stuff - items didn't updating when it's being pickup/dropped. As beepboop said
Quote:

because BSG does some fucky shit and sometimes keeps it inside the ActiveObjects but marks the bool inside the GameObject telling unity if its active as false
is not a good idea :)
So i revert all changes when noticed troubles and put that idea in shelf "to-do don't know when".

But ye, checking camera/viewmatrix seems much better. Thanks you too.

EliteProducer 26th June 2021 07:36 PM

Quote:

Originally Posted by ecthirune (Post 3167524)
Ty for trying, but nope, this still cause issues:

https://i.imgur.com/JaX8p8o.jpeg
https://i.imgur.com/3MkmMmF.jpeg
RK-5 are in front of me (~30 meters in another building, first screenshot) also as SNB pack of bullets, but they still drawing behind me(second screenshot).
And your code snippet are same, as mine except
Code:

if (z < 0.098f)
                return false;

this part.


Did you actually try my code? As a whole? Just try copying it into your project and replacing my OpenGL maths with your math library, and it should work.

buddgaf 26th June 2021 07:36 PM

Quote:

Originally Posted by ecthirune (Post 3167811)
huh?
didn't saw any1. example?

don't have one on hand but there was a radar a while back that had one. just a simple killfeed.


Player1 killed Player2 etc...

I just can't figure what they're reading to get that info.

EliteProducer 26th June 2021 07:38 PM

Quote:

Originally Posted by buddgaf (Post 3167904)
don't have one on hand but there was a radar a while back that had one. just a simple killfeed.


Player1 killed Player2 etc...

I just can't figure what they're reading to get that info.

I mean a kill feed would be incredibly easy, would it not?
Make an array of your starting players, and compare their health, or compare to see if they're even in the list anymore. If not, display "Player X killed"? You could also completely ignore scavs by implementing your isPlayer function?

montroisiemecon 26th June 2021 07:42 PM

Quote:

Originally Posted by EliteProducer (Post 3167906)
I mean a kill feed would be incredibly easy, would it not?
Make an array of your starting players, and compare their health, or compare to see if they're even in the list anymore. If not, display "Player X killed"? You could also completely ignore scavs by implementing your isPlayer function?

Think twice before posting

Obviously knowing who dies is pretty much instant. Knowing who killed who looks more complicated

EliteProducer 26th June 2021 07:46 PM

Quote:

Originally Posted by montroisiemecon (Post 3167909)
Think twice before posting

Obviously knowing who dies is pretty much instant. Knowing who killed who looks more complicated


Sorry Mr. Arrogant, but i don't see you helping him? Maybe just don't post at all if you can't contribute?

ecthirune 26th June 2021 07:56 PM

Quote:

Originally Posted by buddgaf (Post 3167904)
don't have one on hand but there was a radar a while back that had one. just a simple killfeed.
Player1 killed Player2 etc...

I just can't figure what they're reading to get that info.

it's only suggestion:
eft.player+0x2C0] : LastAggressor (type: EFT.Player)

buddgaf 26th June 2021 08:07 PM

Quote:

Originally Posted by EliteProducer (Post 3167906)
I mean a kill feed would be incredibly easy, would it not?
Make an array of your starting players, and compare their health, or compare to see if they're even in the list anymore. If not, display "Player X killed"? You could also completely ignore scavs by implementing your isPlayer function?

right, that's the issue. i have all that info. i know who's alive and how many hp they have, etc. what i can't figure out is WHO killed WHO. i thought about blaming the person currently aiming at that player but it will wind up being wrong a lot

Quote:

Originally Posted by ecthirune (Post 3167915)
it's only suggestion:
eft.player+0x2C0] : LastAggressor (type: EFT.Player)

how did i miss that thanks dude

EliteProducer 26th June 2021 10:35 PM

Has anyone got any ideas on how to get the players barrel position?

I'm attempting to draw a line from it.

montroisiemecon 26th June 2021 10:39 PM

Quote:

Originally Posted by EliteProducer (Post 3167910)
Sorry Mr. Arrogant, but i don't see you helping him? Maybe just don't post at all if you can't contribute?

it took me about 5 seconds and 2 brain cells to find it.
go to EFT.Player
Oh, there's a method called "ApplyShot" let's see what it does
Oh inside this method ApplyShot there's a method called ApplyDamageInfo
And guess what, this method is fairly well named. It applies the damage info to you.

this.LastAggressor = damageInfo.Player;

and there you have a kill feed.

Also, you could try to mess with your shot attribute to prevent reports.

Quote:

Originally Posted by EliteProducer (Post 3168005)
Has anyone got any ideas on how to get the players barrel position?

I'm attempting to draw a line from it.

how about using the attribute "WeaponLn" of FirearmController?
take a close look at how this attribute is set

beepboop5 27th June 2021 10:56 AM

Quote:

Originally Posted by EliteProducer (Post 3168005)
Has anyone got any ideas on how to get the players barrel position?

I'm attempting to draw a line from it.

FirePortPosition, im sure you are already using for your aimbot, if you are not, you can get it like so: EFT.Player.HandsController + 0xE8 (Type: BifacialTransform) ] + 0x10 (Type: Transform) ]

Then use this transform pointer with your GetPos function.

bhehe6813 27th June 2021 02:37 PM

Quote:

Originally Posted by samtulach (Post 3165851)
I am aware of that. I am just not sure how to get to the MonoClass base structure from what I've got (instanced data of the class).

https://i.imgur.com/v9lordU.png

To clarify, let's say that I've got some other class and inside of it, there is a non-static field of another class. I read that as a pointer and now I have what is supposedly some sort of object pointer. Where in the mono source is the header for the object itself? It's too small for MonoClass struct.

EDIT: Well... Got it. There was a blank define so I could not find the struct def. Thanks!

Look at cheat engines source code for that, their mono implementation is pretty well fleshed out, as well as https://github.com/Razchek/Unispect ( a member on this forum ).

EliteProducer 28th June 2021 02:19 AM

What other methods of speedhack are there, aside from timescale? I took a look at walk effector but those values don't seem to do anything.

hst 28th June 2021 02:25 AM

Quote:

Originally Posted by EliteProducer (Post 3168798)
What other methods of speedhack are there, aside from timescale? I took a look at walk effector but those values don't seem to do anything.

You can set BodyAnimatorCommon.speed or set your transform pos. Both are heavily nerfed online though.

express2 28th June 2021 02:33 AM

Quote:

Originally Posted by HELOHELO121 (Post 3039025)
Anyone know how to get a corpse's player name? I know how to determine whether it's a scav, pscav, or player but I can't find and field storing the player name.

digging this up from the grave, because it's been bothering me recently.

Has anyone been able to get corpse names?

Superseb123abc 28th June 2021 03:32 AM

Quote:

Originally Posted by express2 (Post 3168807)
digging this up from the grave, because it's been bothering me recently.

Has anyone been able to get corpse names?

If it's a fresh corpse you can get the dogtag and check the name on it (PMC only).

ZeusLord 28th June 2021 03:33 AM

Quote:

Originally Posted by express2 (Post 3168807)
digging this up from the grave, because it's been bothering me recently.

Has anyone been able to get corpse names?


Iirc you have to read it through player bones and go that way to get the name for the corpse. Been a while since i've looked into it though will update if I find more info on it.

EDIT:
Heres the chain to get the player of a corpse which is all you need then just read the name from the player like you normally do.
Code:

// 0x128 (PlayerBody) + 0x20 (PlayerBones) + 0x18(Player)
corpse_item + 0x128] + 0x20] + 0x18] = player


xXBradXx 28th June 2021 05:21 AM

Quote:

Originally Posted by ZeusLord (Post 3168827)
Iirc you have to read it through player bones and go that way to get the name for the corpse. Been a while since i've looked into it though will update if I find more info on it.

EDIT:
Heres the chain to get the player of a corpse which is all you need then just read the name from the player like you normally do.
Code:

// 0x128 (PlayerBody) + 0x20 (PlayerBones) + 0x18(Player)
corpse_item + 0x128] + 0x20] + 0x18] = player


very cool +rep

montroisiemecon 28th June 2021 08:02 AM

Quote:

Originally Posted by Superseb123abc (Post 3168825)
If it's a fresh corpse you can get the dogtag and check the name on it (PMC only).

Lul //2short


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

EliteProducer 28th June 2021 12:12 PM

Quote:

Originally Posted by hst (Post 3168804)
You can set BodyAnimatorCommon.speed or set your transform pos. Both are heavily nerfed online though.

Any chance you could point me in the right direction? A chain, etc?

I've taken a look and i'm unsure exactly what i'm looking for.

hollow 28th June 2021 02:17 PM

Quote:

Originally Posted by EliteProducer (Post 3169035)
Any chance you could point me in the right direction? A chain, etc?

I've taken a look and i'm unsure exactly what i'm looking for.

GetBodyAnimatorCommon() in EFT.Player

express2 28th June 2021 05:16 PM

Quote:

Originally Posted by ZeusLord (Post 3168827)
Iirc you have to read it through player bones and go that way to get the name for the corpse. Been a while since i've looked into it though will update if I find more info on it.

EDIT:
Heres the chain to get the player of a corpse which is all you need then just read the name from the player like you normally do.
Code:

// 0x128 (PlayerBody) + 0x20 (PlayerBones) + 0x18(Player)
corpse_item + 0x128] + 0x20] + 0x18] = player


Thanks for this, I was actually attempting to do it this way but I probably messed up somewhere along the line so it didn't seem like it was working and I was doubting it was the correct chain. but, yeah, thanks for the help

hollow 28th June 2021 07:33 PM

got the funny hitscan weapons working now thanks to earlier post by @nikobelic29, here are all pointer chain offsets labeled
initialspeed is used in bullet speed calculations so just set it to some big value

Code:

auto ammo_template = memory::read_chain(local_player.instance, {
                                                            0x488, // 488 : _handsController (type: EFT.Player.AbstractHandsController)
                                                            0x50, // 50 : \uE029 (type: EFT.InventoryLogic.Item) (item in hands)
                                                            0x90, // 90 : Chambers (type: EFT.InventoryLogic.Slot[])
                                                            0x20, // first item
                                                            0x38, // 38 : <ContainedItem>k__BackingField (type: EFT.InventoryLogic.Item)
                                                            0x38, // 38 : _template(type : EFT.InventoryLogic.ItemTemplate)
});

memory::write(ammo_template + 0x17C, 100000.f); // 17c : InitialSpeed (type: System.Single)


xzackcc 28th June 2021 08:46 PM

sidenote: wipe is confirmed to be on the 30th.

astarothlo 29th June 2021 06:36 AM

Anyone knows how to get EFTHardSettings.Instance.LOOT_RAYCAST_DISTANCE externally? it is a static field of a static object, and I am kinda stuck on where to look for it.

ZeusLord 29th June 2021 08:26 AM

Quote:

Originally Posted by jangut (Post 3150759)
did anyone figure out how to make it perfect?

edit:
patching IsPenetrated to return 1
patching Deflects to return 0
patching "method_17" so the if is never true

Really hate bumping old ass post but I'd really like to know what method you are referring to in this post. All of the method 17's that I saw had nothing to do with bullet pen or I am just outright blind.


EDIT:
NVM.

montroisiemecon 29th June 2021 09:02 AM

Quote:

Originally Posted by hollow (Post 3169298)
got the funny hitscan weapons working now thanks to earlier post by @nikobelic29, here are all pointer chain offsets labeled
initialspeed is used in bullet speed calculations so just set it to some big value

Code:

auto ammo_template = memory::read_chain(local_player.instance, {
                                                            0x488, // 488 : _handsController (type: EFT.Player.AbstractHandsController)
                                                            0x50, // 50 : \uE029 (type: EFT.InventoryLogic.Item) (item in hands)
                                                            0x90, // 90 : Chambers (type: EFT.InventoryLogic.Slot[])
                                                            0x20, // first item
                                                            0x38, // 38 : <ContainedItem>k__BackingField (type: EFT.InventoryLogic.Item)
                                                            0x38, // 38 : _template(type : EFT.InventoryLogic.ItemTemplate)
});

memory::write(ammo_template + 0x17C, 100000.f); // 17c : InitialSpeed (type: System.Single)


wat?
How about speed factor instead of going through this complicated chain?

Quote:

Originally Posted by ZeusLord (Post 3169696)
Really hate bumping old ass post but I'd really like to know what method you are referring to in this post. All of the method 17's that I saw had nothing to do with bullet pen or I am just outright blind.

In order to shoot through walls externally there's currently 3 methods I am aware of:

- Use the hit collider attribute of shot
- Bytepatch a few functions
- find the ballistic collider list and modify attributes of all the colliders at once

ecthirune 29th June 2021 09:11 AM

Quote:

Originally Posted by bazharpaster (Post 3169636)
share me all offsets needed for this game, ty appreciated

they will be probably outdated tomorow, you will ask for it again? :lmao:

hollow 29th June 2021 11:11 AM

Quote:

Originally Posted by montroisiemecon (Post 3169711)
wat?
How about speed factor instead of going through this complicated chain?

Player.FirearmController._speedFactor is what you mean i'm assuming - certainly looks easier, though

Superseb123abc 29th June 2021 11:39 AM

Quote:

Originally Posted by hollow (Post 3169785)
Player.FirearmController._speedFactor is what you mean i'm assuming - certainly looks easier, though

I would suggest looking into how bullets interact on the client as well as how they are created.
There are much easier and stronger ways to do instant hit, such as teleporting the bullet (which won't get you banned if you're smart about it).

hollow 29th June 2021 11:54 AM

Quote:

Originally Posted by Superseb123abc (Post 3169799)
I would suggest looking into how bullets interact on the client as well as how they are created.
There are much easier and stronger ways to do instant hit, such as teleporting the bullet (which won't get you banned if you're smart about it).

i've looked into it and somehow completely missed the _speedFactor field.
teleporting the bullet is an interesting way to do it, but it's probably too much effort considering how little fucks bsg gives.

EliteProducer 29th June 2021 12:04 PM

Wipe is today btw

29th June 9PM Est. 30th for RU users i assume.

Superseb123abc 29th June 2021 12:12 PM

Quote:

Originally Posted by hollow (Post 3169804)
i've looked into it and somehow completely missed the _speedFactor field.
teleporting the bullet is an interesting way to do it, but it's probably too much effort considering how little fucks bsg gives.

Yeah you're not wrong. I was very surprised at how much you can actually do without getting banned at all.
Ex. speed loading/unloading mags can be done by modifying the const values of the appropriate function.

MasterScuzee 29th June 2021 01:43 PM

Quote:

Originally Posted by EliteProducer (Post 3169808)
Wipe is today btw

29th June 9PM Est. 30th for RU users i assume.

It should be at 10am MSK

EliteProducer 29th June 2021 01:59 PM

Quote:

Originally Posted by montroisiemecon (Post 3169711)
wat?
How about speed factor instead of going through this complicated chain?



In order to shoot through walls externally there's currently 3 methods I am aware of:

- Use the hit collider attribute of shot
- Bytepatch a few functions
- find the ballistic collider list and modify attributes of all the colliders at once


By ballistics collider, you mean the one at localGameWorld + 0x108?
If so, should i just be setting Pen Level/Chance to a super high float, as that doesn't actually seem to do anything.

montroisiemecon 29th June 2021 05:56 PM

Quote:

Originally Posted by EliteProducer (Post 3169879)
By ballistics collider, you mean the one at localGameWorld + 0x108?
If so, should i just be setting Pen Level/Chance to a super high float, as that doesn't actually seem to do anything.


Ok guys have fun

Cast EFT.Player.Firearmcontroller to ClientFirearmController. Use the shot list from this class, there are 2 lists. One list is for the ongoing shots that did not collide yet. The other one is for finished shots that will be sent to servers.

Take the first list. Parse it like you would parse an unity array. You end up with a list of shots. Now you parse each shot, look if they have hittedBallisticCollider set, if they do it means they are about to hit this collider.

Now you take this collider, set penetration chance to 1, fragmentation chance to 0, deviation chance to 0, etc... I'm currently on holidays so I can't paste my code but by the time I used this.method I was just writing one one and something like 4 or 5 zeros. Also pen lvl to 0 I think

If you spam this shot list, each time you will shoot you will go through one more wall

This is not the most efficient way of doing shoot through walls but it works pretty fine. And you don't have desync/kick issue unless you go full auto on some dude across the map


Note: this shot list is also used for silent aim, bullet teleportation and shit. Also it only works online obviously

Quote:

Originally Posted by Superseb123abc (Post 3169799)
I would suggest looking into how bullets interact on the client as well as how they are created.
There are much easier and stronger ways to do instant hit, such as teleporting the bullet (which won't get you banned if you're smart about it).

Are you talking about messing with initialPosition of the shots? Externally last time I did that my shots just did not register

Azhora 29th June 2021 08:44 PM

Anyone else having problems with reading 0 at some positions? For example, everything is fine, and then suddenly the pointers in the Transform list in skeletonRootJoint for getting bone positions are all zero after some time in-game. (this can be simulated by enabling auto-ram cleaner in my case).

I don't see how I can fix this, any advice?

ecthirune 29th June 2021 09:34 PM

Quote:

Originally Posted by Azhora (Post 3170165)
Anyone else having problems with reading 0 at some positions? For example, everything is fine, and then suddenly the pointers in the Transform list in skeletonRootJoint for getting bone positions are all zero after some time in-game. (this can be simulated by enabling auto-ram cleaner in my case).

I don't see how I can fix this, any advice?

this happens to me, when i messed with eft.player+0x40] (movement context), but never with bones.
Ram-cleaner are allways on.

EliteProducer 29th June 2021 10:34 PM

Quote:

Originally Posted by montroisiemecon (Post 3170029)
Ok guys have fun

Cast EFT.Player.Firearmcontroller to ClientFirearmController.
~

You can change your gun length, and obviously write to hands i think it was for "Noclip Gun", to where you can put your gun through walls.

Couldn't you just set the length of the gun to the distance between your aimbot target?

I.e resulting in a backseat shoot through walls?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

madmax77 30th June 2021 01:00 AM

Code:

struct BaseObject
        {
                uint64_t previousObjectLink; //0x0000
                uint64_t nextObjectLink; //0x0008
                uint64_t object; //0x0010
        };
        uint64_t GetObjectFromList(uint64_t listPtr, uint64_t lastObjectPtr, const char* objectName)
        {
                char name[256];
                uint64_t ObjectNamePointer = 0x0;

                BaseObject activeObject = driver::RPM<BaseObject>(listPtr, globals::pid);
                BaseObject lastObject = driver::RPM<BaseObject>(lastObjectPtr, globals::pid);

                if (activeObject.object)
                {
                        while (activeObject.object && activeObject.object != lastObject.object)
                        {
                                ObjectNamePointer = driver::RPM<uint64_t>(activeObject.object + 0x60, globals::pid);
                                driver::readbuffer(ObjectNamePointer + 0x0, &name, sizeof(name), globals::pid);
                                printf("%s | %p\n", name, activeObject.object);
                                if (name == objectName)
                                {
                                        return activeObject.object;
                                }

                                activeObject = driver::RPM<BaseObject>(activeObject.nextObjectLink, globals::pid);
                        }
                }
                if (lastObject.object != 0x0)
                {
                        ObjectNamePointer = driver::RPM<uint64_t>(lastObject.object + 0x60, globals::pid);
                        driver::readbuffer(ObjectNamePointer + 0x0, &name, 256, globals::pid);
                        if (name == objectName)
                        {
                                return lastObject.object;
                        }
                }
                return uint64_t();
        }

im not getting the GameWorld object for some reason, everything prints fine

how im calling it
Code:

auto active_objects = driver::RPM<uint64_t>(chetoshit::GOM + 0x18, globals::pid);
                auto last_objects = driver::RPM<uint64_t>(chetoshit::GOM + 0x10, globals::pid);
                if (!active_objects || !last_objects)
                        return;
               
                chetoshit::GameWorld = chetoshit::GetObjectFromList(active_objects, last_objects, "Game World");

and heres what im getting https://pastebin.com/0Xv67LY4

24jared24 30th June 2021 03:26 AM

Was messing around with thermal trying to recreate the see through glass from before they changed it. Didn't find much for the glass but I did find a better thermal setting that has almost full color/textures. It's not perfect but it is way better and makes glass somewhat see through.

Write an int to
Code:

ThermalComponent + 0x90] + 0x10] + 0x38
I think this is like the shader color or something idrk

Some write values I found:
236 = default thermal
224 = Colors and textures with slightly see through glass
240 = Colors with more smoothed colors, kinda dark

If anyone found how to see through glass/scopes lmk

montroisiemecon 30th June 2021 03:52 AM

Quote:

Originally Posted by EliteProducer (Post 3170242)
You can change your gun length, and obviously write to hands i think it was for "Noclip Gun", to where you can put your gun through walls.

Couldn't you just set the length of the gun to the distance between your aimbot target?

I.e resulting in a backseat shoot through walls?

This used to work for 1 wall at most and got almost fixed. If you set weaponLn to a negative value you can actually shoot from one floor to another on labs. I think it has something to do with visibility check. I also tried the following

If you look at the method LinecastInBothSides or something like that in the shot class, you will see that there's a unity engine Layer mask called HitMask that is used for raycast. If you modify this HitMask so that it is equal to the layer mask Hit collider ( I can't remember the name exactly ) then all your bullet have no collision except on players. Which makes it a perfect shoot through walls, no bullshit with modifying the hit colliders. Unfortunately online the hits don't register, which again tells us that there's some sort of visibility check or something on server side

hollow 30th June 2021 08:58 AM

Quote:

Originally Posted by madmax77 (Post 3170331)
Code:

...
im not getting the GameWorld object for some reason, everything prints fine

how im calling it
Code:

...
and heres what im getting https://pastebin.com/0Xv67LY4

you're comparing pointers

Code:

if (name == objectName)

ecthirune 30th June 2021 09:25 AM

About player xp and level from this post
Code:


m_pPlayerProfile = driver.ReadVirtualMemory<ULONG64>(pid, vector[i].player_address + 0x440, sizeof(ULONG64));
m_pInfo = driver.ReadVirtualMemory<ULONG64>(pid, m_pPlayerProfile + 0x28, sizeof(ULONG64));
int32_t  _level;
_level = driver.ReadVirtualMemory<int32_t>(pid, m_pInfo+0x64, sizeof(int32_t));
for (int currentlevel = 0; currentlevel < 70; currentlevel++)
{
                                       
if (_level < tablePlayerExperience[currentlevel])
{
vector[i].level = currentlevel +1;
break;
}
}

What im missing here?
I getting small numbers on _level(i know it's XP value, but whatever for now, called it _level) (like 0-4 max) variable for every pmc in game.
Can't debug this with reclass on spt-aki, somehow it doesn't show me playerlist at all ;/


Upd fixed, thanks to @fusionpak again

Code:

m_pInfo+0x68
not 0x64 dunno how i missed that.

EliteProducer 30th June 2021 12:16 PM

Quote:

Originally Posted by montroisiemecon (Post 3169711)
wat?
How about speed factor instead of going through this complicated chain?



In order to shoot through walls externally there's currently 3 methods I am aware of:

- Use the hit collider attribute of shot
- Bytepatch a few functions
- find the ballistic collider list and modify attributes of all the colliders at once

Does EFT BE not check for byte patching from Kernel or somthing?

MasterScuzee 30th June 2021 12:19 PM

Quote:

Originally Posted by EliteProducer (Post 3170591)
Does EFT BE not check for byte patching from Kernel or somthing?

Ah yes, because byte patching from kernel would be something completely different than from UM!

Read about JIT compiled code.

madmax77 30th June 2021 02:52 PM

so im having an issue with no recoil, im setting the mask to 1 and breath intesity to 0 and when i lean to the left or right this happends https://imgur.com/jsdr8F7

xXBradXx 30th June 2021 03:10 PM

update is out, latest unispect dump: https://www.unknowncheats.me/forum/d...=file&id=33766

EliteProducer 30th June 2021 03:22 PM

Profile shifted from 440 to 458
Health controller shifted from 470 to 488
Pretty most things in EFT.Player have been shifted by 0x18
AimSwayMax shifted from 1F8 to 208

xXBradXx 30th June 2021 03:23 PM

is_local shifted from 5ED to 5F1 i believe

Quote:

Originally Posted by EliteProducer (Post 3170696)
Profile shifted from 440 to 458
Health controller shifted from 470 to 488
Pretty sure everything in EFT.Player has been shifted by 0x18

everything including and after profile it looks like, with the exception of is_local which is +0x4 from where it was

looks like ProceduralWeaponAnimation no longer has the opticSightArray field

XP in PlayerInfo shifted from 0x68 to 0x6C

EliteProducer 30th June 2021 03:49 PM

Code:

        public enum WildSpawnType
        {
                // Token: 0x04005A8E RID: 23182
                marksman = 1,
                // Token: 0x04005A8F RID: 23183
                assault = 2,
                // Token: 0x04005A90 RID: 23184
                bossTest = 4,
                // Token: 0x04005A91 RID: 23185
                bossBully = 8,
                // Token: 0x04005A92 RID: 23186
                followerTest = 16,
                // Token: 0x04005A93 RID: 23187
                followerBully = 32,
                // Token: 0x04005A94 RID: 23188
                bossKilla = 64,
                // Token: 0x04005A95 RID: 23189
                bossKojaniy = 128,
                // Token: 0x04005A96 RID: 23190
                followerKojaniy = 256,
                // Token: 0x04005A97 RID: 23191
                pmcBot = 512,
                // Token: 0x04005A98 RID: 23192
                cursedAssault = 1024,
                // Token: 0x04005A99 RID: 23193
                bossGluhar = 2048,
                // Token: 0x04005A9A RID: 23194
                followerGluharAssault = 4096,
                // Token: 0x04005A9B RID: 23195
                followerGluharSecurity = 8192,
                // Token: 0x04005A9C RID: 23196
                followerGluharScout = 16384,
                // Token: 0x04005A9D RID: 23197
                followerGluharSnipe = 32768,
                // Token: 0x04005A9E RID: 23198
                followerSanitar = 65536,
                // Token: 0x04005A9F RID: 23199
                bossSanitar = 131072,
                // Token: 0x04005AA0 RID: 23200
                test = 262144,
                // Token: 0x04005AA1 RID: 23201
                assaultGroup = 524288,
                // Token: 0x04005AA2 RID: 23202
                sectantWarrior = 1048576,
                // Token: 0x04005AA3 RID: 23203
                sectantPriest = 2097152,
                // Token: 0x04005AA4 RID: 23204
                bossTagilla = 4194304,
                // Token: 0x04005AA5 RID: 23205
                followerTagilla = 8388608
        }

New boss, new identifiers.

ZeusLord 30th June 2021 03:51 PM

It appears that the game now also validates the game files even though it would be trivial to patch out but there is now a log file in the game called "FileChecker".
EDIT:
There is also now a new game assembly called FilesChecker.dll as well.

InUrFace 30th June 2021 04:23 PM

View angles (and other stuff) in movementContext shifted by 4 (angles moved from 0x200 -> 0x204)
Mask in ProceduralWeaponAnimation is now at 0x100

ZeusLord 30th June 2021 04:24 PM

Code:

Grenades = World + 0xD8

pinefin 30th June 2021 04:41 PM

did GOM change this wipe

TheHidden0ne 30th June 2021 04:55 PM

Quote:

Originally Posted by pinefin (Post 3170764)
did GOM change this wipe

No, it is the same.

EliteProducer 30th June 2021 05:03 PM

Anyone got new health stuff? Been looking for the past hr+, it's all sealed classes.

xXBradXx 30th June 2021 05:04 PM

had some weird shit going on with the role value (WildSpawnType) enum.
turns out they changed it to a bit flag so now it's 2^n instead of just n for example tagilla ID is 2^22 which is 4194304.
to get which bit is the one that's set you can get the base 2 log of the number log2(n)

MasterScuzee 30th June 2021 05:05 PM

Quote:

Originally Posted by EliteProducer (Post 3170777)
Anyone got new health stuff? Been looking for the past hr+, it's all sealed classes.

Change _healthController + 0x20 -> _healthController + 0x50


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

nikobelic29 30th June 2021 05:05 PM

https://i.imgur.com/6f2Nbtp.png

remove check for file integrity

JudischerHund 30th June 2021 05:38 PM

Code:

        const bool g_HasGun( ) {
               
                auto item_ = this->g_InventoryLogicItem( );

                if ( !IsValidPtr( ( void* )item_ ) )
                        return false;

                auto unk1 = *reinterpret_cast< std::uintptr_t* >( reinterpret_cast< std::uintptr_t >( item_ ) + 0x90 );

                if ( !IsValidPtr( ( void* )unk1 ) )
                        return false;

                auto unk2 = *reinterpret_cast< std::uintptr_t* >( unk1 + 0x20 );

                if ( !IsValidPtr( ( void* )unk2 ) )
                        return false;

                auto unk3 = *reinterpret_cast< std::uintptr_t* >( unk2 + 0x38 );

                if ( !IsValidPtr( ( void* )unk3 ) )
                        return false;

                auto unk4 = *reinterpret_cast< std::uintptr_t* >( unk3 + 0x40 );

                if ( !IsValidPtr( ( void* )unk4 ) )
                        return false;

                return true;
        }

Seems like the chain broke, anybody have the latest offsets?

bhehe6813 30th June 2021 05:54 PM

Quote:

Originally Posted by MasterScuzee (Post 3170780)
Change _healthController + 0x20 -> _healthController + 0x50

How about isAlive?

montroisiemecon 30th June 2021 05:56 PM

I feel like they fixed opening doors. I could be wrong tho, it's what people are reporting to me unfortunately I cannot play at the moment

ly937149473 30th June 2021 06:07 PM

Quote:

Originally Posted by montroisiemecon (Post 3170824)
I feel like they fixed opening doors. I could be wrong tho, it's what people are reporting to me unfortunately I cannot play at the moment

seems they patched something about door,maybe serverside or clientside verify the door state

EliteProducer 30th June 2021 06:08 PM

Quote:

Originally Posted by montroisiemecon (Post 3170824)
I feel like they fixed opening doors. I could be wrong tho, it's what people are reporting to me unfortunately I cannot play at the moment

Which form of opening doors?
Door unlocker, or breach doors?

ecthirune 30th June 2021 06:12 PM

Seems they changed something in loot (on ground and containers), can't get id for containers.
Unfortunately my brain is not big enough to get this trough simple dump.

dretax 30th June 2021 06:17 PM

Quote:

Originally Posted by nikobelic29 (Post 3170781)
https://i.imgur.com/6f2Nbtp.png

remove check for file integrity

I am puking from dnspy, but they aren't checking the existance of the dependency after it failed to load. Simply renaming the DLL works. No need to patch IL...

krembo 30th June 2021 06:26 PM

Door unlocker fixed
Stamina might also be server sided now, seems like it stops you from sprinting

nikobelic29 30th June 2021 06:28 PM

Quote:

Originally Posted by dretax (Post 3170841)
I am puking from dnspy, but they aren't checking the existance of the dependency after it failed to load. Simply renaming the DLL works. No need to patch IL...

welp, I guess I overdid it for bsg :lmao:

ecthirune 30th June 2021 06:47 PM

Quote:

Originally Posted by krembo (Post 3170845)
Stamina might also be server sided now, seems like it stops you from sprinting

wrong, still running trough all map.

ZeusLord 30th June 2021 06:49 PM

Quote:

Originally Posted by ecthirune (Post 3170857)
wrong, still running trough all map.


Not really sure tho it’s confusing as it stops me from running too :/

EDIT: Could be that we are doing it differently? I am just writing to the current value of it.

ecthirune 30th June 2021 06:51 PM

Quote:

Originally Posted by ZeusLord (Post 3170860)
Not really sure tho it�s confusing as it stops me from running too :/

runned till red stamina reached, updated stamina by hotkey - still unstoppable running.

Btw still looking for help with items id :asskiss:

krembo 30th June 2021 06:54 PM

Quote:

Originally Posted by ecthirune (Post 3170863)
runned till red stamina reached, updated stamina by hotkey - still unstoppable running.

Btw still looking for help with items id :asskiss:

Ty for the stamina, ill check my method.
About items, the sub item under inventory logic item owner changed.
its now at inventory_logic_item_owner+0x68

ecthirune 30th June 2021 06:58 PM

Quote:

Originally Posted by krembo (Post 3170865)
Ty for the stamina, ill check my method.
About items, the sub item under inventory logic item owner changed.
its now at inventory_logic_item_owner+0x68

im external
Code:

if (GetKeyState(VK_SPACE) < 0)
{               
auto physical = driver.ReadVirtualMemory<ULONG64>(pid, vector[localPlayer].player_address + 0x468, sizeof(ULONG64));
auto stamina = driver.ReadVirtualMemory<ULONG64>(pid, physical + 0x28, sizeof(ULONG64));
driver.WriteVirtualMemory<float>(pid, stamina + 0x48, 1000.f, sizeof(1000.f));

auto stamina2 = driver.ReadVirtualMemory<ULONG64>(pid, physical + 0x38, sizeof(ULONG64));
driver.WriteVirtualMemory<float>(pid, stamina2 + 0x48, 1000.f, sizeof(1000.f));
                       
auto stamina3 = driver.ReadVirtualMemory<ULONG64>(pid, physical + 0x30, sizeof(ULONG64));
driver.WriteVirtualMemory<float>(pid, stamina3 + 0x48, 1000.f, sizeof(1000.f));
               
        }


krembo 30th June 2021 07:03 PM

Quote:

Originally Posted by ecthirune (Post 3170872)
im external
Code:

if (GetKeyState(VK_SPACE) < 0)
{               
auto physical = driver.ReadVirtualMemory<ULONG64>(pid, vector[localPlayer].player_address + 0x468, sizeof(ULONG64));
auto stamina = driver.ReadVirtualMemory<ULONG64>(pid, physical + 0x28, sizeof(ULONG64));
driver.WriteVirtualMemory<float>(pid, stamina + 0x48, 1000.f, sizeof(1000.f));

auto stamina2 = driver.ReadVirtualMemory<ULONG64>(pid, physical + 0x38, sizeof(ULONG64));
driver.WriteVirtualMemory<float>(pid, stamina2 + 0x48, 1000.f, sizeof(1000.f));
                       
auto stamina3 = driver.ReadVirtualMemory<ULONG64>(pid, physical + 0x30, sizeof(ULONG64));
driver.WriteVirtualMemory<float>(pid, stamina3 + 0x48, 1000.f, sizeof(1000.f));
               
        }


ty but i'm just an idiot, it's the fucking bushes stopping me from running, i think they all do it now, not only reserve.

ZeusLord 30th June 2021 07:14 PM

Quote:

Originally Posted by krembo (Post 3170876)
ty but i'm just an idiot, it's the fucking bushes stopping me from running, i think they all do it now, not only reserve.

Yeah same here LMAO. I didn't realize but yea it does it on customs and shoreline ik for sure.

dretax 30th June 2021 07:26 PM

Quote:

Originally Posted by montroisiemecon (Post 3170824)
I feel like they fixed opening doors. I could be wrong tho, it's what people are reporting to me unfortunately I cannot play at the moment

No reputation for you, you are on VACaction. Act like it.
And yes as montroisiemecon the doors are now "server side". Pretty funny it sends an RPC call back to the clients to update the state of it in case of smh wrong.

Stupid.

ilahigod31 30th June 2021 07:30 PM

[Class] EFT.Profile : Object
[10] Id : String
[18] AccountId : String
[20] PetId : String
[28] Info : -.GClass0F33
[30] Customization : -.GClass0F20
[38] Encyclopedia : System.Collections.Generic.Dictionary<String, Boolean>
[40] Health : -.Profile.GClass0F2A
[48] Inventory : -.GClass1858
[50] QuestItems : -.GClass0B2A[]
[58] InsuredItems : -.GClass0B2E[]
[60] Skills : -.GClass0F4C
[68] Notes : -.GClass16A2
[70] Quests : -.GClass14FB
[78] ConditionCounters : EFT.Quests.ConditionCounterManager
[80] BackendCounters : System.Collections.Generic.Dictionary<String, GClass14A6>
[88] Bonuses : -.GClass0C64[]
[90] Hideout : EFT.HideoutInfo
[98] RagfairInfo : -.Profile.GClass0F29
[A0] <BonusController>k__BackingField : EFT.BonusController
[A8] <TraderStandings>k__BackingField : System.Collections.Generic.Dictionary<String, Loyalty>
[B0] WishList : System.String[]
[B8] _emptyResourceCollection : EFT.ResourceKey[]
[C0] OnItemZoneDropped : System.Action<String, String>
[C8] OnTraderStandingChanged : System.Action<String>
[D0] OnTraderLoyaltyChanged : System.Action<String>
[D8] Stats : -.GClass051E
[E0] CheckedMagazines : System.Collections.Generic.Dictionary<String, Int32>
[E8] CheckedChambers : System.Collections.Generic.List<String>

// updated player profile

Quote:

Originally Posted by EliteProducer (Post 3170724)
[CODE] ....

Wasn't it consecutive before?

Azhora 30th June 2021 08:22 PM

How to check if iron sight? I used to check if CameraControl.OpticSight[] in ProceduralWeaponAnimation was not null, but this field is gone with new patch.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

mapleint 30th June 2021 08:34 PM

new gameobjmanager offset: 0x156C698

xzackcc 30th June 2021 08:46 PM

has anyone discovered on how to read the local player's exfil and which one of em are open? been looking through the code for a while without luck.

I'd really appreciate some hint/path/chain to that.

Quote:

Originally Posted by Azhora (Post 3170909)
How to check if iron sight? I used to check if CameraControl.OpticSight[] in ProceduralWeaponAnimation was not null, but this field is gone with new patch.

I'm just using isAiming (check dnspy, BreathEffector) and this magic to scale my w2s:
Code:

uint64_t chain = kernel->read_chain<uint64_t>(worlddata.pointers.FPSCamera, { 0x30, 0x18 });
worlddata.AspectRatio = kernel->read_memory<float>(chain + 0x4C8);
worlddata.FOV = kernel->read_memory<float>(chain + 0x158);
worlddata.ZoomFactor = kernel->read_memory<vector2_t>(chain + 0x12C);


Quote:

Originally Posted by mapleint (Post 3170918)
new gameobjmanager offset: 0x156C698

that's not new, lol?

EliteProducer 30th June 2021 08:52 PM

I'll do you one better, here's a sig for gom:

Code:

\x48\x89\x05\x00\x00\x00\x00\x48\x83\xc4\x38\xc3\x48\xc7\x05\x00\x00\x00\x00\x00\x00\x00\x00\x48\x83\xc4\x38\xc3\xcc\xcc\xcc\xcc\xcc\x48

Azhora 30th June 2021 08:58 PM

Quote:

Originally Posted by xzackcc (Post 3170924)
has anyone discovered on how to read the local player's exfil and which one of em are open? been looking through the code for a while without luck.

I'd really appreciate some hint/path/chain to that.



I'm just using isAiming (check dnspy, BreathEffector) and this magic to scale my w2s:
Code:

uint64_t chain = kernel->read_chain<uint64_t>(worlddata.pointers.FPSCamera, { 0x30, 0x18 });
worlddata.AspectRatio = kernel->read_memory<float>(chain + 0x4C8);
worlddata.FOV = kernel->read_memory<float>(chain + 0x158);
worlddata.ZoomFactor = kernel->read_memory<vector2_t>(chain + 0x12C);



that's not new, lol?

You just use only FPSCamera with this, no OpticSightCamera?

EliteProducer 30th June 2021 09:24 PM

Quote:

Originally Posted by xzackcc (Post 3170924)
has anyone discovered on how to read the local player's exfil and which one of em are open? been looking through the code for a while without luck.

I'd really appreciate some hint/path/chain to that.



I'm just using isAiming (check dnspy, BreathEffector) and this magic to scale my w2s:
Code:

uint64_t chain = kernel->read_chain<uint64_t>(worlddata.pointers.FPSCamera, { 0x30, 0x18 });
worlddata.AspectRatio = kernel->read_memory<float>(chain + 0x4C8);
worlddata.FOV = kernel->read_memory<float>(chain + 0x158);
worlddata.ZoomFactor = kernel->read_memory<vector2_t>(chain + 0x12C);



that's not new, lol?

What's the math for that?

Could you show us exactly how you're using that to scale your esp?

bloddyangel 30th June 2021 09:26 PM

Hmm the player inventory changed only by +4 ?

EliteProducer 30th June 2021 09:53 PM

Has anyone managed to get new offsets for FOV Changer?

Code:

uint64_t fov = ReadChain(fpsCamera, { 0x30, 0x18 });
        write<float>(fov + 0x158, misc::fovVal);


qtbits 30th June 2021 10:06 PM

Sup, anyone else having issues identifying local player, after looting anything?

madmax77 30th June 2021 10:09 PM

hi, so my esp is being weird as you see in the picture https://imgur.com/LqXpb4O showing that theres a player even though theres not
what could this be? the viewmatrix or w2s ? because if theres a player in front of me its going to like show the PLAYER text somewhere on the screen and if i move my cursor to the right, left, up or down it moves with it

ecthirune 30th June 2021 10:16 PM

Quote:

Originally Posted by madmax77 (Post 3170984)
hi, so my esp is being weird as you see in the picture https://imgur.com/LqXpb4O showing that theres a player even though theres not
what could this be? the viewmatrix or w2s ? because if theres a player in front of me its going to like show the PLAYER text somewhere on the screen and if i move my cursor to the right, left, up or down it moves with it

depens how you reading his position and what you do with it after.
if you goin trough bones - then you missed gettransform
if not trough bones - then w2s or viewmatrix
without code no1 will help.

madmax77 30th June 2021 10:18 PM

Quote:

Originally Posted by ecthirune (Post 3170987)
depens how you reading his position and what you do with it after.
if you goin trough bones - then you missed gettransform
if not trough bones - then w2s or viewmatrix
without code no1 will help.

w2s
Code:

bool world_to_screen(FVector& point3D, vec2& point2D, D3DXMATRIX matrix)
        {
                D3DXVECTOR3 _point3D = D3DXVECTOR3(point3D.x, point3D.z, point3D.y);

                D3DXVECTOR3 translationVector = D3DXVECTOR3(matrix._41, matrix._42, matrix._43);
                D3DXVECTOR3 up = D3DXVECTOR3(matrix._21, matrix._22, matrix._23);
                D3DXVECTOR3 right = D3DXVECTOR3(matrix._11, matrix._12, matrix._13);

                float w = D3DXVec3Dot(&translationVector, &_point3D) + matrix._44;

                if (w < 0.098f)
                        return false;

                float y = D3DXVec3Dot(&up, &_point3D) + matrix._24;
                float x = D3DXVec3Dot(&right, &_point3D) + matrix._14;


                point2D.x = (2560 / 2) * (1.f + x / w);
                point2D.y = (1440 / 2) * (1.f - y / w);

                return true;
        }


viewmatrix
Code:

uint64_t temp = driver::RPM<uint64_t>(chetoshit::FPSCamera + 0x30, globals::pid);
                                                        if (!temp) return;

                                                        temp = driver::RPM<uint64_t>(temp + 0x18, globals::pid);
                                                        if (!temp) return;

D3DXMATRIX matrix;
                                                        D3DXMATRIX temp_matrix;
                                                        driver::readbuffer(temp + 0x00D8, &temp_matrix, sizeof(temp_matrix), globals::pid);
                                                        D3DXMatrixTranspose(&matrix, &temp_matrix);

the way im getting pos
Code:

uint64_t bone = driver::ReadChain(bone_matrix, { 0x20, 0x10, 0x38 }, globals::pid);
                                                        printf("bone: %x\n", bone);
                                                        FVector pos = driver::RPM<FVector>((bone + 0xB0), globals::pid);


ecthirune 30th June 2021 10:30 PM

Quote:

Originally Posted by madmax77 (Post 3170990)
Code:

uint64_t bone = driver::ReadChain(bone_matrix, { 0x20, 0x10, 0x38 }, globals::pid);
                                                        printf("bone: %x\n", bone);
                                                        FVector pos = driver::RPM<FVector>((bone + 0xB0), globals::pid);


w2s and vm looks legit, but bones...
not sure how and where you got these offsets.
heres spoonfeed.
Code:

        std::vector<playerBones> allBones = {
        {"HumanRForearm2", 113},                //0
        {"HumanRForearm1", 112},                //1
        {"HumanRUpperarm", 111},                //2
        {"HumanNeck", 132},                        //3
        {"HumanLUpperarm", 90},                        //4
        {"HumanLForearm1", 91},                        //5
        {"HumanLForearm2", 92},                        //6
        {"HumanHead", 133},                        //7
        {"HumanSpine3", 37},                        //8
        {"HumanSpine2", 36},                        //9
        {"HumanSpine1", 29},                        //10
        {"HumanPelvis", 14},                                //11
        {"HumanRCalf", 22},                                //12
        {"HumanRFoot", 23},                                //13
        {"HumanLCalf", 17},                                //14
        {"HumanLFoot", 18}, };                        //15       

bone_array = player+  0xA8] 0x28] 0x28] 0x10]
for (auto z = 0; z < allBones.size(); z++)
{
bone_address=read_chain(pid, bone_array, { (ULONG64(allBones[z].number * 0x8 + 0x20)), 0x10 });
bone_pos = getTransform(bone_address)
}

adapt it by your own.

upd:
actually you need to do gettransform each draw cycle (or whatever so fast how you wanna), it will update bonePosition. But you don't need to read again bone_address. It keeps unchanged till player alive.

Azhora 30th June 2021 10:34 PM

Quote:

Originally Posted by xzackcc (Post 3170924)
has anyone discovered on how to read the local player's exfil and which one of em are open? been looking through the code for a while without luck.

I'd really appreciate some hint/path/chain to that.



I'm just using isAiming (check dnspy, BreathEffector) and this magic to scale my w2s:
Code:

uint64_t chain = kernel->read_chain<uint64_t>(worlddata.pointers.FPSCamera, { 0x30, 0x18 });
worlddata.AspectRatio = kernel->read_memory<float>(chain + 0x4C8);
worlddata.FOV = kernel->read_memory<float>(chain + 0x158);
worlddata.ZoomFactor = kernel->read_memory<vector2_t>(chain + 0x12C);



that's not new, lol?

In particular, what is `ZoomFactor`?

24jared24 30th June 2021 11:02 PM

Has anyone looked into auto inspecting everything/making it faster somehow? I hate doing this every wipe

madmax77 30th June 2021 11:04 PM

Quote:

Originally Posted by ecthirune (Post 3170995)
w2s and vm looks legit, but bones...
not sure how and where you got these offsets.
heres spoonfeed.
Code:

        std::vector<playerBones> allBones = {
        {"HumanRForearm2", 113},                //0
        {"HumanRForearm1", 112},                //1
        {"HumanRUpperarm", 111},                //2
        {"HumanNeck", 132},                        //3
        {"HumanLUpperarm", 90},                        //4
        {"HumanLForearm1", 91},                        //5
        {"HumanLForearm2", 92},                        //6
        {"HumanHead", 133},                        //7
        {"HumanSpine3", 37},                        //8
        {"HumanSpine2", 36},                        //9
        {"HumanSpine1", 29},                        //10
        {"HumanPelvis", 14},                                //11
        {"HumanRCalf", 22},                                //12
        {"HumanRFoot", 23},                                //13
        {"HumanLCalf", 17},                                //14
        {"HumanLFoot", 18}, };                        //15       

bone_array = player+  0xA8] 0x28] 0x28] 0x10]
for (auto z = 0; z < allBones.size(); z++)
{
bone_address=read_chain(pid, bone_array, { (ULONG64(allBones[z].number * 0x8 + 0x20)), 0x10 });
bone_pos = getTransform(bone_address)
}

adapt it by your own.

upd:
actually you need to do gettransform each draw cycle (or whatever so fast how you wanna), it will update bonePosition. But you don't need to read again bone_address. It keeps unchanged till player alive.

my GetPosition function is getting stuck for some reason, anything wrong you see?

Code:

FVector GetPosition(uint64_t transform)
        {
                auto transform_internal = driver::RPM<uint64_t>(transform + 0x10, globals::pid);
                if (!transform_internal) return FVector();

                auto matrices = driver::RPM<uint64_t>(transform_internal + 0x38, globals::pid);
                auto index = driver::RPM<int>(transform_internal + 0x40, globals::pid);

                uint64_t matrix_list_base = 0x0;
                uint64_t dependency_index_table_base = 0x0;

                driver::readbuffer((uintptr_t)(matrices + 0x18), &matrix_list_base, sizeof(matrix_list_base), globals::pid);

                driver::readbuffer((uintptr_t)(matrices + 0x20), &dependency_index_table_base, sizeof(dependency_index_table_base), globals::pid);


                int32_t index_relation = driver::readbuffer((uintptr_t)(dependency_index_table_base + index * 4), &index, sizeof(index), globals::pid);

                FVector ret_value;
                {
                        float* base_matrix3x4 = (float*)malloc(64),
                                * matrix3x4_buffer0 = (float*)((uint64_t)base_matrix3x4 + 16),
                                * matrix3x4_buffer1 = (float*)((uint64_t)base_matrix3x4 + 32),
                                * matrix3x4_buffer2 = (float*)((uint64_t)base_matrix3x4 + 48);

                        driver::readbuffer((uintptr_t)(matrix_list_base + index * 48), base_matrix3x4, 16, globals::pid);

                        __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
                        __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
                        __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };

                        while (index_relation >= 0)
                        {
                                uint32_t matrix_relation_index = 6 * index_relation;

                                // paziuret kur tik 3 nureadina, ten translationas, kur 4 = quatas ir yra rotationas.
                                driver::readbuffer((uintptr_t)(matrix_list_base + 8 * matrix_relation_index), matrix3x4_buffer2, 16, globals::pid);
                                __m128 v_0 = *(__m128*)matrix3x4_buffer2;

                                driver::readbuffer((uintptr_t)(matrix_list_base + 8 * matrix_relation_index + 32), matrix3x4_buffer0, 16, globals::pid);
                                __m128 v_1 = *(__m128*)matrix3x4_buffer0;

                                driver::readbuffer((uintptr_t)(matrix_list_base + 8 * matrix_relation_index + 16), matrix3x4_buffer1, 16, globals::pid);
                                __m128i v9 = *(__m128i*)matrix3x4_buffer1;

                                __m128* v3 = (__m128*)base_matrix3x4; // [email protected]
                                __m128 v10; // [email protected]
                                __m128 v11; // [email protected]
                                __m128 v12; // [email protected]
                                __m128 v13; // [email protected]
                                __m128 v14; // [email protected]
                                __m128 v15; // [email protected]
                                __m128 v16; // [email protected]
                                __m128 v17; // [email protected]

                                v10 = _mm_mul_ps(v_1, *v3);
                                v11 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, 0));
                                v12 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, 85));
                                v13 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, -114));
                                v14 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, -37));
                                v15 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, -86));
                                v16 = _mm_castsi128_ps(_mm_shuffle_epi32(v9, 113));

                                v17 = _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_add_ps(
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(v11, (__m128)xmmword_1410D1350), v13),
                                                                        _mm_mul_ps(_mm_mul_ps(v12, (__m128)xmmword_1410D1360), v14)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), -86))),
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(v15, (__m128)xmmword_1410D1360), v14),
                                                                        _mm_mul_ps(_mm_mul_ps(v11, (__m128)xmmword_1410D1340), v16)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 85)))),
                                                _mm_add_ps(
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(v12, (__m128)xmmword_1410D1340), v16),
                                                                        _mm_mul_ps(_mm_mul_ps(v15, (__m128)xmmword_1410D1350), v13)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 0))),
                                                        v10)),
                                        v_0);

                                *v3 = v17;

                                index_relation = driver::readbuffer((uintptr_t)(dependency_index_table_base + index_relation * 4), &index_relation, sizeof(index_relation), globals::pid);
                        }

                        ret_value = *(FVector*)base_matrix3x4;
                        delete[] base_matrix3x4;
                }

                return ret_value;
        }


ecthirune 30th June 2021 11:19 PM

Quote:

Originally Posted by madmax77 (Post 3171014)
my GetPosition function is getting stuck for some reason, anything wrong you see?

remove this first line
Code:

auto transform_internal = driver::RPM<uint64_t>(transform + 0x10, globals::pid);
because im already added +0x10 here
Code:

bone_address=read_chain(pid, bone_array, { (ULONG64(allBones[z].number * 0x8 + 0x20)), 0x10 });

Azhora 30th June 2021 11:37 PM

Quote:

Originally Posted by 24jared24 (Post 3171013)
Has anyone looked into auto inspecting everything/making it faster somehow? I hate doing this every wipe

Edit: [Deleted]

Nvm, I misunderstood your question :)

madmax77 30th June 2021 11:39 PM

Quote:

Originally Posted by ecthirune (Post 3171028)
remove this first line
Code:

auto transform_internal = driver::RPM<uint64_t>(transform + 0x10, globals::pid);
because im already added +0x10 here
Code:

bone_address=read_chain(pid, bone_array, { (ULONG64(allBones[z].number * 0x8 + 0x20)), 0x10 });

i tried that and didnt work but i debug the values and found out index_relation is 0 all the time which the while (index_relation >= 0) is causing to stay in a infinite loop

xzackcc 30th June 2021 11:43 PM

Quote:

Originally Posted by Azhora (Post 3170935)
You just use only FPSCamera with this, no OpticSightCamera?

that's partly right. depending on what value this is, you either go with FPSCamera or the OpticSight matrix

Quote:

Originally Posted by EliteProducer (Post 3170953)
What's the math for that?

Could you show us exactly how you're using that to scale your esp?

the basic logic of how to scale your w2s should be obvious, division.

Quote:

Originally Posted by Azhora (Post 3170997)
In particular, what is `ZoomFactor`?

go ingame, draw text or printf %.2f when reading at 0x12C (another hint: it's a 2d vector, vertical scaling 'n stuff), then ..
> check what value it has without ADS/scope
> check what value it has when zooming (actual scope, like m1a thermal or casual 2x/4x)
> check what value it has when using the "sidescope" (alt+rightclick/ctrl+rightclick)

you'll notice values sit at 0.73, 1.78 and 3.17.

up to you to determine whether to use fpscamera or opticsight based on that value. (yet another hint: 0.73 looks static when in ironsight? yes, use isAiming - when ure in an actual scope, its greater than 0.73 and isAiming is still true)

Code:

// logic

if( 0x12C < 1.f && isAiming)
    // ironsight
elseif (0x12C < 2.f && isAiming)
    // sidescope
elseif ( 0x12C > 2.f && isAiming)
    // full scope
else // == !isAiming
    // unscoped/no ironsight

hf

ecthirune 30th June 2021 11:50 PM

Quote:

Originally Posted by madmax77 (Post 3171040)
i tried that and didnt work but i debug the values and found out index_relation is 0 all the time which the while (index_relation >= 0) is causing to stay in a infinite loop

this gettransform looks like some magic for me, so it's hard to debug someone else's code. Either mine too xD
i can drop you mine shit, it looks not so complicated, mb you will find out.



This is default function (except driver adapting) and almost nobody has problem with it.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

xzackcc 30th June 2021 11:54 PM

Quote:

Originally Posted by madmax77 (Post 3171040)
i tried that and didnt work but i debug the values and found out index_relation is 0 all the time which the while (index_relation >= 0) is causing to stay in a infinite loop

Code:

// pseudo

uint32_t increment = -1;
int32_t container[] = {};
while(index >= 0){
    container[increment++] = index;

    if(container[0] == 0 &&
    container[1] == 0 &&
    container[2] == 0 &&
    container[3] == 0 &&
    container[4] == 0)
        break;
}


Azhora 30th June 2021 11:56 PM

I still have the problem that during gameplay suddenly bones start becoming null as well as LocalGameWorld objects disappearing from GOM. Really strange. I can simulate it by enabling the "auto ram cleaner" in EFT settings, which instantly gives me the same behavior.

Really frustrating stuff :/

I don't see how nobody can have this problem.

Quote:

Originally Posted by xzackcc (Post 3171042)
~SNIP

up to you to determine whether to use fpscamera or opticsight based on that value. (yet another hint: 0.73 looks static when in ironsight? yes, use isAiming - when ure in an actual scope, its greater than 0.73 and isAiming is still true)

Thanks, I seem to have fixed most of the issues related to scopes now :)

madmax77 1st July 2021 12:17 AM

Quote:

Originally Posted by ecthirune (Post 3171046)
this gettransform looks like some magic for me, so it's hard to debug someone else's code. Either mine too xD
i can drop you mine shit, it looks not so complicated, mb you will find out.



This is default function (except driver adapting) and almost nobody has problem with it.

hi, so your get transform worked for me but the esp still looks like this https://streamable.com/jj2u6y im almost certain that its something to do with the viewmatrix

ecthirune 1st July 2021 12:28 AM

Quote:

Originally Posted by madmax77 (Post 3171061)
hi, so your get transform worked for me but the esp still looks like this https://streamable.com/jj2u6y im almost certain that its something to do with the viewmatrix

your vm and w2s looks good, so i... have no idea ;/ soz
Code:

m_pViewMatrix = read_chain(pid, fps_camera, { 0x30, 0x30, 0x18 });

playerViewMatrix = driver.ReadVirtualMemory<D3DXMATRIX>(pid, m_pViewMatrix + 0xD8, sizeof(D3DXMATRIX));


gabbo200 1st July 2021 12:29 AM

Did inventoryController offset change?

madmax77 1st July 2021 12:48 AM

Quote:

Originally Posted by ecthirune (Post 3171066)
your vm and w2s looks good, so i... have no idea ;/ soz
Code:

m_pViewMatrix = read_chain(pid, fps_camera, { 0x30, 0x30, 0x18 });

playerViewMatrix = driver.ReadVirtualMemory<D3DXMATRIX>(pid, m_pViewMatrix + 0xD8, sizeof(D3DXMATRIX));


i realized i was calling w2s with the temp matrix and not the transposed one but that fixes it but the positions are all fucked up now looks like this https://imgur.com/a/xYr6qAC

did i break anything here
Code:

struct  Matrix3X4
        {
                Vector3 vec0;
                Vector3 vec1;
                Vector3 vec2;
                Vector3 vec3;
               
        };

        bool GetPosition2(ULONG64& bone, D3DXVECTOR3& vector3)
        {
                __m128 result;

                /* _m128 -> Vec4 */
                const __m128 mulVec0 = { -2.000, 2.000, -2.000, 0.000 };
                const __m128 mulVec1 = { 2.000, -2.000, -2.000, 0.000 };
                const __m128 mulVec2 = { -2.000, -2.000, 2.000, 0.000 };

                /* Read the transform index for this transform */
                auto index = driver::RPM<int>(bone + 0x40, globals::pid);

                /* Getting the transform data ptr */
                TransformAccessReadOnly pTransformAccessReadOnly = driver::RPM<TransformAccessReadOnly>(bone + 0x38, globals::pid);
                TransformData transformData = driver::RPM<TransformData>(pTransformAccessReadOnly.pTransformData + 0x18, globals::pid);


                /* Set the size of the matricies & indicies buffers */
                std::size_t size_matricies_buffer = sizeof(Matrix3X4) * index + sizeof(Matrix3X4);
                std::size_t size_indices_buffer = sizeof(int) * index + sizeof(int);

                /* Allocate memory for the matricies & indicies buffers */
                void* pMatriciesBuf = malloc(size_matricies_buffer);
                void* pIndicesBuf = malloc(size_indices_buffer);

                /* count position with some magic mathematic*/
                if (pMatriciesBuf && pIndicesBuf) {

                        /* read matricies data to buffer, copy to allocated memory */
                        driver::readbuffer(transformData.pTransformArray, pMatriciesBuf, size_matricies_buffer, globals::pid);

                        /* read indicies data to buffer, copy to allocated memory */
                        driver::readbuffer(transformData.pTransformIndices, pIndicesBuf, size_indices_buffer, globals::pid);

                        /* some magic mathematic here and downside */
                        result = *(__m128*)((uint64_t)pMatriciesBuf + 0x30 * index);
                        int transform_index = *(int*)((uint64_t)pIndicesBuf + 0x4 * index);


                        for (int i = 0; transform_index >= 0 && i < 30 && transform_index < size_indices_buffer; i++)
                        {
                                Matrix3X4 matrix34;

                                matrix34 = *(Matrix3X4*)((uint64_t)pMatriciesBuf + 0x30 * transform_index);



                                __m128 xxxx = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x00));        // xxxx
                                __m128 yyyy = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x55));        // yyyy
                                __m128 zwxy = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x8E));        // zwxy
                                __m128 wzyw = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0xDB));        // wzyw
                                __m128 zzzz = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0xAA));        // zzzz
                                __m128 yxwy = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x71));        // yxwy
                                __m128 tmp7 = _mm_mul_ps(*(__m128*)(&matrix34.vec2), result);

                                result = _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_add_ps(
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(xxxx, mulVec1), zwxy),
                                                                        _mm_mul_ps(_mm_mul_ps(yyyy, mulVec2), wzyw)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0xAA))),
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(zzzz, mulVec2), wzyw),
                                                                        _mm_mul_ps(_mm_mul_ps(xxxx, mulVec0), yxwy)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x55)))),
                                                _mm_add_ps(
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(yyyy, mulVec0), yxwy),
                                                                        _mm_mul_ps(_mm_mul_ps(zzzz, mulVec1), zwxy)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x00))),
                                                        tmp7)), _mm_load_ps(&matrix34.vec0.x));



                                transform_index = *(int*)((uint64_t)pIndicesBuf + 0x4 * transform_index);
                        }


                }

                free(pMatriciesBuf);
                free(pIndicesBuf);
                vector3 = { result.m128_f32[0], result.m128_f32[1], result.m128_f32[2] };
                return true;
        }

EDIT: Fixed by re writing w2s

shersa 1st July 2021 03:30 AM

anyone knows how to make silent aim on tarkov externally?

express2 1st July 2021 04:09 AM

Quote:

Originally Posted by Azhora (Post 3171053)
I still have the problem that during gameplay suddenly bones start becoming null as well as LocalGameWorld objects disappearing from GOM. Really strange. I can simulate it by enabling the "auto ram cleaner" in EFT settings, which instantly gives me the same behavior.

Really frustrating stuff :/

I don't see how nobody can have this problem.



Thanks, I seem to have fixed most of the issues related to scopes now :)

I have this happen with player positions, same as the other reply to your other post. I never really figured out what a way to properly work around this is, but I cache a large portion of my pointers in position reads, so it's sort of mitigated in a way

eclipsehex 1st July 2021 04:42 AM

Yo, Anyone know how to stop Discord Overlay from being disabled by Tarkov whilst playing?
Hit me up with a Private Message, would be greatly appreciated.

krembo 1st July 2021 07:10 AM

Quote:

Originally Posted by eclipsehex (Post 3171154)
Yo, Anyone know how to stop Discord Overlay from being disabled by Tarkov whilst playing?
Hit me up with a Private Message, would be greatly appreciated.

Run as admin should work

FurukawaBakery 1st July 2021 07:48 AM

Quote:

Originally Posted by krembo (Post 3170865)
Ty for the stamina, ill check my method.
About items, the sub item under inventory logic item owner changed.
its now at inventory_logic_item_owner+0x68

what's the old offset of this?

sry for my poor english

anyone can tell me how to loop items that in container?
can't loop after game update

krembo 1st July 2021 08:26 AM

Quote:

Originally Posted by FurukawaBakery (Post 3171206)
what's the old offset of this?

sry for my poor english

anyone can tell me how to loop items that in container?
can't loop after game update

If i remember correctly it was 0x60

eclipsehex 1st July 2021 08:27 AM

Quote:

Originally Posted by krembo (Post 3171193)
Run as admin should work

Narh that's not the issue, it works for like the first 2-3 minutes of my first raid then its disabled by the game and never comes back up and can't be restarted unless I restart the game.
Its like the game is disabling it on purpose.

xzackcc 1st July 2021 09:04 AM

Quote:

Originally Posted by Azhora (Post 3171053)
I still have the problem that during gameplay suddenly bones start becoming null as well as LocalGameWorld objects disappearing from GOM. Really strange. I can simulate it by enabling the "auto ram cleaner" in EFT settings, which instantly gives me the same behavior.

Really frustrating stuff :/

I don't see how nobody can have this problem.



Thanks, I seem to have fixed most of the issues related to scopes now :)

if your localgameworld doesn't work, this is how i do it:

Code:

// thread: entity_operator()
// grabs all world entities, push them back to vector list

                                        worlddata.pointers.LocalGameWorld = kernel->read_chain<uint64_t>(worlddata.pointers.GameWorld, { 0x30, 0x18, 0x28 });
                                        if (!worlddata.pointers.LocalGameWorld) {
                                                module::logging->queue_view("LocalGameWorld"); // this just prints to console with the current stack of objects to be updated
                                                worlddata.queue_add(PTR::LocalGameWorld);
                                                continue;
                                        }

this sets a "please scan!" (rescan)-flag to the ptr-item in the queue list (std::vector), then there is the function which grabs all the ptr's that are in the queue and have that flag (unsets them when ptr is grabbed)

then there is another thread, called "queue_operator" which basically runs the above function every tick if there is either a ptr with "rescan"-flag or 5 to 10 seconds have exceeded.

Code:

sdk::timer_t timer(7000); // ms
if(timer.exceeded() || worlddata.queue_has(QUEUE_FLAG::rescan))
    // .. update ptr
    // in my case, for(auto ptr : queue list) -> if ptr.flag == rescan -> ptr = kernel read ptr+offset .. u get what i mean


lulyou 1st July 2021 09:52 AM

Anyone have an updated chain for weapon names? Old chain was:

0x488,0x50,0x28 // _handsController,???,???

_handsController updated to 0x4A0, but the rest of the chain I can't really follow in the old dump. The last read (0x28) is always 0.

buddgaf 1st July 2021 11:24 AM

Quote:

Originally Posted by Azhora (Post 3170165)
Anyone else having problems with reading 0 at some positions? For example, everything is fine, and then suddenly the pointers in the Transform list in skeletonRootJoint for getting bone positions are all zero after some time in-game. (this can be simulated by enabling auto-ram cleaner in my case).

I don't see how I can fix this, any advice?

msg me i can probably help with this

xXBradXx 1st July 2021 12:36 PM

Quote:

Originally Posted by qtbits (Post 3170981)
Sup, anyone else having issues identifying local player, after looting anything?

no, i'm checking player+0x5F1 and this works perfectly

Quote:

Originally Posted by Azhora (Post 3171053)
I still have the problem that during gameplay suddenly bones start becoming null as well as LocalGameWorld objects disappearing from GOM. Really strange. I can simulate it by enabling the "auto ram cleaner" in EFT settings, which instantly gives me the same behavior.

Really frustrating stuff :/

I don't see how nobody can have this problem.



Thanks, I seem to have fixed most of the issues related to scopes now :)

i have the same issue. were you the one who posted about this ages ago? i read someone with the same issue while looking for a solution. i got nothing so far. sometimes it happens like 3 raids in a row back to back and then sometimes it wont happen at all in 10 raids. i thought it might've been a bug with the DMA library i'm using, you don't happen to be using DMA as well?

btw if anyone is interested you can find how much fence standing you'll get for killing someone at PlayerSettings+0x1C (the struct that has a player's role and XP). useful if you want to avoid losing scav karma.
edit: after adding this to my ESP it seems that the value is not accurate. it's always 0 for PMCs and always -0.02 for scavs, i killed a rogue player scav and gained 0.1 karma despite the value still being -0.02.

hollow 1st July 2021 12:46 PM

Quote:

Originally Posted by lulyou (Post 3171242)
Anyone have an updated chain for weapon names? Old chain was:

0x488,0x50,0x28 // _handsController,???,???

_handsController updated to 0x4A0, but the rest of the chain I can't really follow in the old dump. The last read (0x28) is always 0.

Code:

0x4A0, // 4A0 : _handsController (type: EFT.Player.AbstractHandsController)
0x50, // 50 : \uE029 (type: EFT.InventoryLogic.Item)
0x38, // 38 : _template (type: EFT.InventoryLogic.ItemTemplate)
0x10, // 10 : Name (type: System.String)

this is what i've found, untested

Hydrex 1st July 2021 12:53 PM

Tarkov Offsets Unispect
 
Hey guys
I downloaded unispect today to find tarkov offsets but which values should I look for for e.g. no recoil or player distance

express2 1st July 2021 02:11 PM

Quote:

Originally Posted by FurukawaBakery (Post 3171206)
what's the old offset of this?

sry for my poor english

anyone can tell me how to loop items that in container?
can't loop after game update

the item read from the container's itemOwner as shifted by +0x8, to 0x98


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

lulyou 1st July 2021 03:23 PM

Quote:

Originally Posted by hollow (Post 3171316)
Code:

0x4A0, // 4A0 : _handsController (type: EFT.Player.AbstractHandsController)
0x50, // 50 : \uE029 (type: EFT.InventoryLogic.Item)
0x38, // 38 : _template (type: EFT.InventoryLogic.ItemTemplate)
0x10, // 10 : Name (type: System.String)

this is what i've found, untested

Thank you, that helped a bit further. It works for some players, but not for others. Very strange, still investigating.

EDIT: Ended up just using EFT.InventoryLogic.ItemTemplate->_id (0x50) for now. That way requires some sort of item id to short name map though. Used an API to get all items.

Azhora 1st July 2021 03:53 PM

Quote:

Originally Posted by xXBradXx (Post 3171314)
~snip

i have the same issue. were you the one who posted about this ages ago? i read someone with the same issue while looking for a solution. i got nothing so far. sometimes it happens like 3 raids in a row back to back and then sometimes it wont happen at all in 10 raids. i thought it might've been a bug with the DMA library i'm using, you don't happen to be using DMA as well?

~snip

Are you using memflow?

montroisiemecon 1st July 2021 04:55 PM

Quote:

Originally Posted by eclipsehex (Post 3171217)
Narh that's not the issue, it works for like the first 2-3 minutes of my first raid then its disabled by the game and never comes back up and can't be restarted unless I restart the game.
Its like the game is disabling it on purpose.

It is called BattlEye

Quote:

Originally Posted by shersa (Post 3171125)
anyone knows how to make silent aim on tarkov externally?

Yes there are at least 2 methods

Quote:

Originally Posted by lulyou (Post 3171445)
Thank you, that helped a bit further. It works for some players, but not for others. Very strange, still investigating.

EDIT: Ended up just using EFT.InventoryLogic.ItemTemplate->_id (0x50) for now. That way requires some sort of item id to short name map though. Used an API to get all items.

Tarkov market, download json and read it in your code

Not only the names will be perfect, you will also have latest prices on the flea

Minimalist2k 1st July 2021 06:18 PM

How to find launcher token?

xzackcc 1st July 2021 06:47 PM

Quote:

Originally Posted by Minimalist2k (Post 3171591)
How to find launcher token?

open the launcher in dnspy?

fusionpak 1st July 2021 06:53 PM

Quote:

Originally Posted by Hydrex (Post 3171320)
Hey guys
I downloaded unispect today to find tarkov offsets but which values should I look for for e.g. no recoil or player distance

For no recoil its EFT.Player -> ProceduralWeaponAnimation -> shootingg and write a vec3 to RecoilStrengthXy

For player distance there are 10000s of examples how to do it. its just basic maths, not something you need to read from the game

xzackcc 1st July 2021 07:05 PM

Deobfuscated Assembly-CSharp:
https://www.unknowncheats.me/forum/d...=file&id=33771

Minimalist2k 1st July 2021 07:06 PM

Quote:

Originally Posted by xzackcc (Post 3171621)
open the launcher in dnspy?

Ahaha
Genius)

Is it possible to launch tarkov without BSG launcher?

xXBradXx 1st July 2021 07:08 PM

Quote:

Originally Posted by Azhora (Post 3171459)
Are you using memflow?

yeah.

xzackcc 1st July 2021 07:10 PM

Quote:

Originally Posted by Minimalist2k (Post 3171646)
Ahaha
Genius)

Is it possible to launch tarkov without BSG launcher?

execute this instead:
https://i.imgur.com/ZpTzHZG.png

Minimalist2k 1st July 2021 07:56 PM

Quote:

Originally Posted by xzackcc (Post 3171650)
execute this instead:
https://i.imgur.com/ZpTzHZG.png

I want somehow bypass integrity file check. That's why I need to run BE Tarkov.

JudischerHund 1st July 2021 08:05 PM

Anybody have the new item list with ids?

xzackcc 1st July 2021 08:34 PM

Quote:

Originally Posted by Minimalist2k (Post 3171687)
I want somehow bypass integrity file check. That's why I need to run BE Tarkov.

you see the source of the loader as well as the cheat's csharp (I also uploaded a cleaner version btw) - that should get you there.

Quote:

Originally Posted by JudischerHund (Post 3171694)
Anybody have the new item list with ids?

https://raw.githubusercontent.com/Ta.../items.en.json

madmax77 1st July 2021 10:38 PM

im having some problems with reading UnicodeStrings

when i print the return of this its always nothing
Code:

std::wstring GetUnicodeString(uint64_t addr, int stringLength)
{
        const auto buffer = std::make_unique<wchar_t[]>(stringLength);
        driver::readbuffer(addr, buffer.get(), stringLength * 2, globals::pid);
        return std::wstring(buffer.get());
}

how im calling it
Code:

std::uintptr_t nickname = driver::RPM<std::uintptr_t>(info + 0x10, globals::pid);
                                                                        size_t sizenick = driver::RPM<size_t>(nickname + 0x10, globals::pid);
                                                                        uintptr_t stringbasenick = driver::RPM<uintptr_t>(nickname + 0x14, globals::pid);
                                                                        std::wstring name = chetoshit::GetUnicodeString(stringbasenick, sizenick);
                                                                        std::string strname(name.begin(), name.end());
                                                                        printf("Name: %s\n", strname);


beepboop5 1st July 2021 10:40 PM

Quote:

Originally Posted by madmax77 (Post 3171782)
im having some problems with reading UnicodeStrings

when i print the return of this its always nothing
Code:

std::wstring GetUnicodeString(uint64_t addr, int stringLength)
{
        const auto buffer = std::make_unique<wchar_t[]>(stringLength);
        driver::readbuffer(addr, buffer.get(), stringLength * 2, globals::pid);
        return std::wstring(buffer.get());
}

how im calling it
Code:

std::uintptr_t nickname = driver::RPM<std::uintptr_t>(info + 0x10, globals::pid);
                                                                        size_t sizenick = driver::RPM<size_t>(nickname + 0x10, globals::pid);
                                                                        uintptr_t stringbasenick = driver::RPM<uintptr_t>(nickname + 0x14, globals::pid);
                                                                        std::wstring name = chetoshit::GetUnicodeString(stringbasenick, sizenick);
                                                                        std::string strname(name.begin(), name.end());
                                                                        printf("Name: %s\n", strname);


Have you even stepped through it with a debugger and checked every value is correct? (i.e size of string you are reading)

madmax77 1st July 2021 10:47 PM

Quote:

Originally Posted by beepboop5 (Post 3171783)
Have you even stepped through it with a debugger and checked every value is correct? (i.e size of string you are reading)

yea i have
https://imgur.com/a/Zsr4881

24jared24 1st July 2021 10:53 PM

Quote:

Originally Posted by madmax77 (Post 3171782)
im having some problems with reading UnicodeStrings

when i print the return of this its always nothing
Code:

std::wstring GetUnicodeString(uint64_t addr, int stringLength)
{
        const auto buffer = std::make_unique<wchar_t[]>(stringLength);
        driver::readbuffer(addr, buffer.get(), stringLength * 2, globals::pid);
        return std::wstring(buffer.get());
}

how im calling it
Code:

std::uintptr_t nickname = driver::RPM<std::uintptr_t>(info + 0x10, globals::pid);
                                                                        size_t sizenick = driver::RPM<size_t>(nickname + 0x10, globals::pid);
                                                                        uintptr_t stringbasenick = driver::RPM<uintptr_t>(nickname + 0x14, globals::pid);
                                                                        std::wstring name = chetoshit::GetUnicodeString(stringbasenick, sizenick);
                                                                        std::string strname(name.begin(), name.end());
                                                                        printf("Name: %s\n", strname);


printf doesn't take std::string as a param (but it will compile bc it's not type safe). Should be
Code:

printf("Name: %s\n", strname.c_str());
Other than that offsets looks correct so if it's still not working it's either your read call or how you're converting from wstring to string

xzackcc 1st July 2021 11:52 PM

Quote:

Originally Posted by madmax77 (Post 3171785)

Quote:

Originally Posted by 24jared24 (Post 3171790)
printf doesn't take std::string as a param (but it will compile bc it's not type safe). Should be
Code:

printf("Name: %s\n", strname.c_str());
Other than that offsets looks correct so if it's still not working it's either your read call or how you're converting from wstring to string

^ this or the way you're reading unicode is wrong;

mine:


Code:

                std::wstring read_unicode(const std::uintptr_t address, std::size_t size) {
                        const auto buffer = std::make_unique<wchar_t[]>(size);
                        this->read_buffer(address, buffer.get(), size * 2);
                        return std::wstring(buffer.get());
                }

Code:

               
        std::string ws2s(const std::wstring& wstr) {
                std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> conv;
                return conv.to_bytes(wstr);
        }


madmax77 2nd July 2021 01:45 AM

Quote:

Originally Posted by xzackcc (Post 3171815)
^ this or the way you're reading unicode is wrong;

mine:


Code:

                std::wstring read_unicode(const std::uintptr_t address, std::size_t size) {
                        const auto buffer = std::make_unique<wchar_t[]>(size);
                        this->read_buffer(address, buffer.get(), size * 2);
                        return std::wstring(buffer.get());
                }

Code:

               
        std::string ws2s(const std::wstring& wstr) {
                std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> conv;
                return conv.to_bytes(wstr);
        }


im getting this kind of name now https://imgur.com/a/9CLwqZs :lmao:


Code:

        std::wstring GetUnicodeString(uint64_t addr, size_t stringLength)
        {
                const auto buffer = std::make_unique<wchar_t[]>(stringLength);
                driver::readbuffer(addr, buffer.get(), stringLength * 2, globals::pid);
                return std::wstring(buffer.get());
        }

Code:

std::uintptr_t nickname = driver::RPM<std::uintptr_t>(info + 0x10, globals::pid);
                                                                        int32_t  sizenick = driver::RPM<int32_t >(nickname + 0x10, globals::pid);;
                                                                        std::wstring name = chetoshit::GetUnicodeString(nickname + 0x14, sizenick);
                                                                        std::string strname = ws2s(name);
                                                                        printf("Name: %s\n", strname.c_str());
                                                                        float FontSize = 16 * strname.size() / 2;
                                                                        MSPaint::DrawTextA(ImVec2((HeadPos.x) + (width / 2 - FontSize + (FontSize / 2)), HeadPos.y), ImColor(0, 255, 255, 255), strname.c_str());


nikobelic29 2nd July 2021 04:45 AM

Quote:

Originally Posted by madmax77 (Post 3171866)
im getting this kind of name now https://imgur.com/a/9CLwqZs :lmao:


Code:

        std::wstring GetUnicodeString(uint64_t addr, size_t stringLength)
        {
                const auto buffer = std::make_unique<wchar_t[]>(stringLength);
                driver::readbuffer(addr, buffer.get(), stringLength * 2, globals::pid);
                return std::wstring(buffer.get());
        }

Code:

std::uintptr_t nickname = driver::RPM<std::uintptr_t>(info + 0x10, globals::pid);
                                                                        int32_t  sizenick = driver::RPM<int32_t >(nickname + 0x10, globals::pid);;
                                                                        std::wstring name = chetoshit::GetUnicodeString(nickname + 0x14, sizenick);
                                                                        std::string strname = ws2s(name);
                                                                        printf("Name: %s\n", strname.c_str());
                                                                        float FontSize = 16 * strname.size() / 2;
                                                                        MSPaint::DrawTextA(ImVec2((HeadPos.x) + (width / 2 - FontSize + (FontSize / 2)), HeadPos.y), ImColor(0, 255, 255, 255), strname.c_str());


I am assuming those are scavs? Russian characters can't fit inside char (even if you leave them as wchar your font most likely doesn't support russian anyway). So you would have to identify scavs and use a collective name or implement support for Russian characters.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

express2 2nd July 2021 06:12 AM

am I going crazy or do player levels (experience) only work like half the time?

fusionpak 2nd July 2021 06:41 AM

Quote:

Originally Posted by express2 (Post 3171970)
am I going crazy or do player levels (experience) only work like half the time?


works fine for me 100% of the time


Sent from my iPhone using Tapatalk

bloddyangel 2nd July 2021 06:58 AM

Quote:

Originally Posted by express2 (Post 3171970)
am I going crazy or do player levels (experience) only work like half the time?

Nope, works just fine, check your chain of pointers.. it may be an issue there ..

Marcx 2nd July 2021 07:42 AM

Quote:

Originally Posted by xXBradXx (Post 3170689)
...

 Moderator note  File not analyzed. Source only, use at your own risk.


File Approved
  • SHA256: 7E4283C9DA6624C11BEC7FAA3058613F7CB2F06B599FA2B5F556C118D88C8735 - tark_raw_[unknowncheats.me]_.txt
Interested in how we analyze files? Click here to find out.

Thanks for sharing.

https://www.unknowncheats.me/forum/d...=file&id=33766

ecthirune 2nd July 2021 09:06 AM

Quote:

Originally Posted by madmax77 (Post 3171866)
im getting this kind of name now https://imgur.com/a/9CLwqZs

as i can see in your output - names contain "space", only scavs have it.
Don't read scav's or bosses name, sort them by their id:

Code:

auto pInfo = driver.ReadVirtualMemory<ULONG64>(pid, m_pPlayerProfile + 0x28, sizeof(ULONG64));
auto regDate = driver.ReadVirtualMemory<int>(pid, pInfo + 0x54, sizeof(int));
if (regDate < 0)
//scav boss raider
auto roleBuffer = driver.ReadVirtualMemory<ULONG64>(pid, pInfo + 0x38, sizeof(ULONG64));
auto Role = driver.ReadVirtualMemory<int>(pid, roleBuffer + 0x10, sizeof(int));
else
//pmc-player/scav-player
auto _side = driver.ReadVirtualMemory<int>(pid, pInfo + 0x50, sizeof(int));


lulyou 2nd July 2021 11:15 AM

Quote:

Originally Posted by montroisiemecon (Post 3171510)
It is called BattlEye



Yes there are at least 2 methods



Tarkov market, download json and read it in your code

Not only the names will be perfect, you will also have latest prices on the flea

Yep, that's basically what I'm doing. Weapon names work even better because of the formatting :)

ecthirune 2nd July 2021 11:21 AM

new exp table, updated until 33lvl (from wiki)
Code:

uint64_t tablePlayerExperience[] =
{
  1000, 4017, 8432, 14256, 21477, 30023, 39936, 51204, 63723, 77563, 92713, 111881, 134674, 161139, 191417, 225194,
  262366, 302484, 301534, 345751, 391649, 426190, 440444, 524580, 492366, 547896, 609066, 675913, 748474, 826786, 910885,
  1000809, 1096593, 1198275, 1309251, 1541750, 1669434, 1804462, 1946834, 2096550, 2253610, 2420768, 2598024, 2785378, 2982830,
  3190380, 3408028, 3635774, 3873618, 4121560, 4379600, 4651410, 4936990, 5236340, 5549460, 5872910, 6235021, 6604557, 6991535,
  7398709, 7828833, 8286497, 8780881, 9330345, 9953249, 10713853, 11749857, 13198961, 23198961
};


madmax77 2nd July 2021 12:44 PM

Quote:

Originally Posted by nikobelic29 (Post 3171929)
I am assuming those are scavs? Russian characters can't fit inside char (even if you leave them as wchar your font most likely doesn't support russian anyway). So you would have to identify scavs and use a collective name or implement support for Russian characters.

i just made it so if the person has a space in their name i change it to "[SCAV]"

Code:

for (int c = 0; c < strname.size(); c++) {
                                                                                if (strname[c] == ' ') {
                                                                                        strname = "[SCAV]";
                                                                                        break;
                                                                                }
                                                                        }


ecthirune 2nd July 2021 01:17 PM

Quote:

Originally Posted by madmax77 (Post 3172152)
i just made it so if the person has a space in their name i change it to "[SCAV]"

Code:

for (int c = 0; c < strname.size(); c++) {
                                                                                if (strname[c] == ' ') {
                                                                                        strname = "[SCAV]";
                                                                                        break;
                                                                                }
                                                                        }


and you will not know, who is a scav-bot, and who is a scav-player.

hollow 2nd July 2021 01:19 PM

Quote:

Originally Posted by ecthirune (Post 3172184)
and you will not know, who is a scav-bot, and who is a scav-player.

i don't think that requires you to know the name though?

Code:

auto reg_date = memory::read<unsigned int>(profile_info + offsets::reg_date);
player.is_ai = reg_date == 0;

Quote:

Originally Posted by madmax77 (Post 3172152)
i just made it so if the person has a space in their name i change it to "[SCAV]"

Code:

for (int c = 0; c < strname.size(); c++) {
                                                                                if (strname[c] == ' ') {
                                                                                        strname = "[SCAV]";
                                                                                        break;
                                                                                }
                                                                        }


for the love of god, use std::string::find

Code:

player.is_scav = player.name.find(' ') != std::wstring::npos;

astarothlo 2nd July 2021 01:28 PM

hello,Anyone knows how to get EFTHardSettings.Instance.LOOT_RAYCAST_DISTANCE externally? it is a static field of a static object, and I am kinda stuck on where to look for it.

ecthirune 2nd July 2021 01:52 PM

Quote:

Originally Posted by hollow (Post 3172188)
i don't think that requires you to know the name though?

no, i just wanna to see who are who exactly.
And i don't see any reason to read scav's name.

xzackcc 2nd July 2021 02:20 PM

Quote:

Originally Posted by hollow (Post 3172188)
i don't think that requires you to know the name though?

Code:

auto reg_date = memory::read<unsigned int>(profile_info + offsets::reg_date);
player.is_ai = reg_date == 0;



for the love of god, use std::string::find

Code:

player.is_scav = player.name.find(' ') != std::wstring::npos;

that is correct.

Quote:

Originally Posted by ecthirune (Post 3172219)
no, i just wanna to see who are who exactly.
And i don't see any reason to read scav's name.

simple,
Code:

// playerinfo -> side (int32_t) and
// playerinfo -> NicknameChangeDate (int64_t)

pseudo,
Code:

if(NicknameChangeDate() <= 0 && side == SCAV)
    // bot scav

if(NicknameChangeDate() > 0 && side == SCAV)
    // player scav

if(NicknameChangeDate() > 0 && side == PMC)
    // player pmc


Code:

switch (this->Side())
{
case 0x1:
        return "PMC (USEC)";
case 0x2:
        return "PMC (BEAR)";
case 0x4:
        return "SCAV";
default:
        return "UNDEFINED";
}


bonus,
Code:

// playerinfo -> settings -> Role
Code:

// code
enum EFTWildSpawnType_
{
        marksman,
        assault,
        bossTest,
        bossBully,
        followerTest,
        followerBully,
        bossKilla,
        bossKojaniy,
        followerKojaniy,
        pmcBot,
        cursedAssault,
        bossGluhar,
        followerGluharAssault,
        followerGluharSecurity,
        followerGluharScout,
        followerGluharSnipe,
        followerSanitar,
        bossSanitar,
        test,
        assaultGroup,
        sectantWarrior,
        sectantPriest,
        bossTagilla,
        followerTagilla
};

EFTWildSpawnType_ Role()
{
        return kernel->read_memory<EFTWildSpawnType_>((uint64_t)this + 0x0010);
}


ecthirune 2nd July 2021 02:30 PM

Quote:

Originally Posted by xzackcc (Post 3172241)
simple, ~snip

WoW wow wow, chill bro. I have sorting :) That's was not an question, i just arguing to that man, who reading names of scav's and searching spacebar in it, to detect "scav/not scav" XD

hollow 2nd July 2021 02:33 PM

Quote:

Originally Posted by ecthirune (Post 3172248)
WoW wow wow, chill bro. I have sorting :) That's was not an question, i just arguing to that man, who reading names of scav's and searching spacebar in it, to detect "scav/not scav" XD

there is nothing wrong with just checking if it has a space though, you already read player names

xzackcc 2nd July 2021 02:45 PM

Quote:

Originally Posted by ecthirune (Post 3172248)
WoW wow wow, chill bro. I have sorting :) That's was not an question, i just arguing to that man, who reading names of scav's and searching spacebar in it, to detect "scav/not scav" XD

guess I quoted the wrong person then, lol.

anyway, if someone finds it useful, you're welcome.

ecthirune 2nd July 2021 02:47 PM

Quote:

Originally Posted by hollow (Post 3172249)
there is nothing wrong with just checking if it has a space though, you already read player names

depends on how you build your logic.
Im not doin it, if it's not an usec/bear.

24jared24 2nd July 2021 03:26 PM

Quote:

Originally Posted by hollow (Post 3172249)
there is nothing wrong with just checking if it has a space though, you already read player names

Pretty poor way to think about code. You should be aiming to do as few calls as possible on every entity. So check if it's a scav before reading the name and only get a name if you need to :)

Using this general rule for everything will give you much cleaner code AND a more optimized cheat with more complete features that aren't hacked together like searching for a space in a name.

madmax77 2nd July 2021 04:23 PM

im trying to do grenade esp but this just draws "[GRENADE]" in some random spot and when i throw a nade it doest draw it to the nade
Code:

uint64_t Grenades = driver::RPM<uint64_t>(chetoshit::LocalGameWorld + 0xD0, globals::pid);
                uint64_t grenadelist = driver::RPM<uint64_t>(Grenades + 0x18, globals::pid);

                uint64_t list = driver::RPM<uint64_t>(grenadelist + 0x10, globals::pid);
                uint32_t listSize = driver::RPM<uint32_t>(grenadelist + 0x18, globals::pid);

                for (int i = 0; i < listSize; i++) {
                        uint64_t nade = driver::RPM<uint64_t>(list + 0x20 + (i * 0x8), globals::pid);
                        if (!nade) continue;
                        uint64_t pos = driver::ReadChain(nade, { 0x10, 0x30, 0x30, 0x8, 0x38 }, globals::pid);
                        if (!pos) continue;
                        D3DXVECTOR3 nadepos = driver::RPM<D3DXVECTOR3>(pos + 0xB0, globals::pid);

                        if (settings::grenadeesp) {
                                vec2 screenpos;
                                world_to_screen(nadepos, &screenpos);
                                MSPaint::DrawTextA(ImVec2(screenpos.x,screenpos.y), ImColor(255, 0, 0, 255), "[GRENADE]");
                        }
                }


ZeusLord 2nd July 2021 04:25 PM

Quote:

Originally Posted by madmax77 (Post 3172329)
im trying to do grenade esp but this just draws "[GRENADE]" in some random spot and when i throw a nade it doest draw it to the nade
Code:

uint64_t Grenades = driver::RPM<uint64_t>(chetoshit::LocalGameWorld + 0xD0, globals::pid);
                uint64_t grenadelist = driver::RPM<uint64_t>(Grenades + 0x18, globals::pid);

                uint64_t list = driver::RPM<uint64_t>(grenadelist + 0x10, globals::pid);
                uint32_t listSize = driver::RPM<uint32_t>(grenadelist + 0x18, globals::pid);

                for (int i = 0; i < listSize; i++) {
                        uint64_t nade = driver::RPM<uint64_t>(list + 0x20 + (i * 0x8), globals::pid);
                        if (!nade) continue;
                        uint64_t pos = driver::ReadChain(nade, { 0x10, 0x30, 0x30, 0x8, 0x38 }, globals::pid);
                        if (!pos) continue;
                        D3DXVECTOR3 nadepos = driver::RPM<D3DXVECTOR3>(pos + 0xB0, globals::pid);

                        if (settings::grenadeesp) {
                                vec2 screenpos;
                                world_to_screen(nadepos, &screenpos);
                                MSPaint::DrawTextA(ImVec2(screenpos.x,screenpos.y), ImColor(255, 0, 0, 255), "[GRENADE]");
                        }
                }




Wrong grenades offset it's now @ 0xD8 (0xD0 -> 0xD8).


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

madmax77 2nd July 2021 04:37 PM

Quote:

Originally Posted by ZeusLord (Post 3172334)
Wrong grenades offset it's now @ 0xD8 (0xD0 -> 0xD8).

thanks man

lulyou 2nd July 2021 05:57 PM

Anyone else had the issue of localplayer not being found when in menu/inventory? I've narrowed it down to the is_local check - no entity is found with a non null player_address + 0x18. This only started happening a couple updates ago.

Am I going crazy or is there another way to check if an entity is the local player?

EDIT: Checking 0x5F1 seems to work fine, didn't see the posts before. Sorry!

madmax77 2nd July 2021 06:03 PM

if having issues getting the fireport when i print transform its null
https://imgur.com/a/nNZxlqb


Code:

uintptr_t thingy = driver::ReadChain(chetoshit::LocalPlayer, {0x4A0, 0xE8}, globals::pid);
                                        if (!thingy) return;
                                        uintptr_t transform = driver::RPM<uintptr_t>(thingy + 0x10, globals::pid);
                                        printf("Transform: 0x%x", transform);
                                        chetoshit::GetPosition2(transform, fireport3);
                                        vec2 vec2port;
                                        chetoshit::world_to_screen(fireport3, &vec2port);
                                        fireport.x = vec2port.x;
                                        fireport.y = vec2port.y;


ZeusLord 2nd July 2021 06:23 PM

Quote:

Originally Posted by madmax77 (Post 3172411)
if having issues getting the fireport when i print transform its null
https://imgur.com/a/nNZxlqb


Code:

uintptr_t thingy = driver::ReadChain(chetoshit::LocalPlayer, {0x488, 0xE8}, globals::pid);
                                        if (!thingy) return;
                                        uintptr_t transform = driver::RPM<uintptr_t>(thingy + 0x20, globals::pid);
                                        printf("Transform: 0x%x", transform);
                                        chetoshit::GetPosition2(transform, fireport3);
                                        vec2 vec2port;
                                        chetoshit::world_to_screen(fireport3, &vec2port);
                                        fireport.x = vec2port.x;
                                        fireport.y = vec2port.y;


One of the offsets in your "thingy" chain are outdated change 0x488 -> 0x4a0 and also the transform is thingy + 0x10 and not thingy + 0x20 as you have it now. :)

madmax77 2nd July 2021 06:24 PM

Quote:

Originally Posted by ZeusLord (Post 3172428)
One of the offsets in your "thingy" chain are outdated change 0x488 -> 0x4a0 and also the transform is thingy + 0x10 and not thingy + 0x20 as you have it now. :)

yeah i tested with those because i was searching around the thread and its still invalid

ZeusLord 2nd July 2021 06:29 PM

Quote:

Originally Posted by madmax77 (Post 3172430)
yeah i tested with those because i was searching around the thread and its still invalid

Weird, thats exactly how I am getting it and it works just fine for me.

Code:

vec3_t get_fireport_pos()
    {
        uint64_t fp_ptr = mem::read_chain(addy, { 0x4a0, 0xe8 });

        return u_transform(mem::read(fp_ptr + 0x10)).get_positon();
    }


madmax77 2nd July 2021 06:45 PM

Quote:

Originally Posted by ZeusLord (Post 3172434)
Weird, thats exactly how I am getting it and it works just fine for me.

Code:

vec3_t get_fireport_pos()
    {
        uint64_t fp_ptr = mem::read_chain(addy, { 0x4a0, 0xe8 });

        return u_transform(mem::read(fp_ptr + 0x10)).get_positon();
    }


the transfrom address is good now but i think my gettransform function is fucked cause i printed the position and its 0, 0, 0

Code:

D3DXVECTOR3 GetTransform(ULONG64& transform)
        {
                __m128 result;

                /* _m128 -> Vec4 */
                const __m128 mulVec0 = { -2.000, 2.000, -2.000, 0.000 };
                const __m128 mulVec1 = { 2.000, -2.000, -2.000, 0.000 };
                const __m128 mulVec2 = { -2.000, -2.000, 2.000, 0.000 };

                /* Read the transform index for this transform */
                auto index = driver::RPM<int>(transform + 0x40, globals::pid);

                /* Getting the transform data ptr */
                TransformAccessReadOnly pTransformAccessReadOnly = driver::RPM<TransformAccessReadOnly>(transform + 0x38, globals::pid);
                TransformData transformData = driver::RPM<TransformData>(pTransformAccessReadOnly.pTransformData + 0x18, globals::pid);


                /* Set the size of the matricies & indicies buffers */
                std::size_t size_matricies_buffer = sizeof(Matrix3X4) * index + sizeof(Matrix3X4);
                std::size_t size_indices_buffer = sizeof(int) * index + sizeof(int);

                /* Allocate memory for the matricies & indicies buffers */
                void* pMatriciesBuf = malloc(size_matricies_buffer);
                void* pIndicesBuf = malloc(size_indices_buffer);

                /* count position with some magic mathematic*/
                if (pMatriciesBuf && pIndicesBuf) {

                        /* read matricies data to buffer, copy to allocated memory */
                        driver::readbuffer(transformData.pTransformArray, pMatriciesBuf, size_matricies_buffer, globals::pid);

                        /* read indicies data to buffer, copy to allocated memory */
                        driver::readbuffer(transformData.pTransformIndices, pIndicesBuf, size_indices_buffer, globals::pid);

                        /* some magic mathematic here and downside */
                        result = *(__m128*)((uint64_t)pMatriciesBuf + 0x30 * index);
                        int transform_index = *(int*)((uint64_t)pIndicesBuf + 0x4 * index);


                        for (int i = 0; transform_index >= 0 && i < 30 && transform_index < size_indices_buffer; i++)
                        {
                                Matrix3X4 matrix34;

                                matrix34 = *(Matrix3X4*)((uint64_t)pMatriciesBuf + 0x30 * transform_index);



                                __m128 xxxx = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x00));        // xxxx
                                __m128 yyyy = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x55));        // yyyy
                                __m128 zwxy = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x8E));        // zwxy
                                __m128 wzyw = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0xDB));        // wzyw
                                __m128 zzzz = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0xAA));        // zzzz
                                __m128 yxwy = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x71));        // yxwy
                                __m128 tmp7 = _mm_mul_ps(*(__m128*)(&matrix34.vec2), result);

                                result = _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_add_ps(
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(xxxx, mulVec1), zwxy),
                                                                        _mm_mul_ps(_mm_mul_ps(yyyy, mulVec2), wzyw)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0xAA))),
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(zzzz, mulVec2), wzyw),
                                                                        _mm_mul_ps(_mm_mul_ps(xxxx, mulVec0), yxwy)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x55)))),
                                                _mm_add_ps(
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(yyyy, mulVec0), yxwy),
                                                                        _mm_mul_ps(_mm_mul_ps(zzzz, mulVec1), zwxy)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x00))),
                                                        tmp7)), _mm_load_ps(&matrix34.vec0.x));



                                transform_index = *(int*)((uint64_t)pIndicesBuf + 0x4 * transform_index);
                        }


                }

                free(pMatriciesBuf);
                free(pIndicesBuf);
                return { result.m128_f32[0], result.m128_f32[1], result.m128_f32[2] };
        }


ZeusLord 2nd July 2021 07:13 PM

Quote:

Originally Posted by madmax77 (Post 3172447)
the transfrom address is good now but i think my gettransform function is fucked cause i printed the position and its 0, 0, 0

Code:

D3DXVECTOR3 GetTransform(ULONG64& transform)
        {
                __m128 result;

                /* _m128 -> Vec4 */
                const __m128 mulVec0 = { -2.000, 2.000, -2.000, 0.000 };
                const __m128 mulVec1 = { 2.000, -2.000, -2.000, 0.000 };
                const __m128 mulVec2 = { -2.000, -2.000, 2.000, 0.000 };

                /* Read the transform index for this transform */
                auto index = driver::RPM<int>(transform + 0x40, globals::pid);

                /* Getting the transform data ptr */
                TransformAccessReadOnly pTransformAccessReadOnly = driver::RPM<TransformAccessReadOnly>(transform + 0x38, globals::pid);
                TransformData transformData = driver::RPM<TransformData>(pTransformAccessReadOnly.pTransformData + 0x18, globals::pid);


                /* Set the size of the matricies & indicies buffers */
                std::size_t size_matricies_buffer = sizeof(Matrix3X4) * index + sizeof(Matrix3X4);
                std::size_t size_indices_buffer = sizeof(int) * index + sizeof(int);

                /* Allocate memory for the matricies & indicies buffers */
                void* pMatriciesBuf = malloc(size_matricies_buffer);
                void* pIndicesBuf = malloc(size_indices_buffer);

                /* count position with some magic mathematic*/
                if (pMatriciesBuf && pIndicesBuf) {

                        /* read matricies data to buffer, copy to allocated memory */
                        driver::readbuffer(transformData.pTransformArray, pMatriciesBuf, size_matricies_buffer, globals::pid);

                        /* read indicies data to buffer, copy to allocated memory */
                        driver::readbuffer(transformData.pTransformIndices, pIndicesBuf, size_indices_buffer, globals::pid);

                        /* some magic mathematic here and downside */
                        result = *(__m128*)((uint64_t)pMatriciesBuf + 0x30 * index);
                        int transform_index = *(int*)((uint64_t)pIndicesBuf + 0x4 * index);


                        for (int i = 0; transform_index >= 0 && i < 30 && transform_index < size_indices_buffer; i++)
                        {
                                Matrix3X4 matrix34;

                                matrix34 = *(Matrix3X4*)((uint64_t)pMatriciesBuf + 0x30 * transform_index);



                                __m128 xxxx = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x00));        // xxxx
                                __m128 yyyy = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x55));        // yyyy
                                __m128 zwxy = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x8E));        // zwxy
                                __m128 wzyw = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0xDB));        // wzyw
                                __m128 zzzz = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0xAA));        // zzzz
                                __m128 yxwy = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x71));        // yxwy
                                __m128 tmp7 = _mm_mul_ps(*(__m128*)(&matrix34.vec2), result);

                                result = _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_add_ps(
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(xxxx, mulVec1), zwxy),
                                                                        _mm_mul_ps(_mm_mul_ps(yyyy, mulVec2), wzyw)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0xAA))),
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(zzzz, mulVec2), wzyw),
                                                                        _mm_mul_ps(_mm_mul_ps(xxxx, mulVec0), yxwy)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x55)))),
                                                _mm_add_ps(
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(yyyy, mulVec0), yxwy),
                                                                        _mm_mul_ps(_mm_mul_ps(zzzz, mulVec1), zwxy)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x00))),
                                                        tmp7)), _mm_load_ps(&matrix34.vec0.x));



                                transform_index = *(int*)((uint64_t)pIndicesBuf + 0x4 * transform_index);
                        }


                }

                free(pMatriciesBuf);
                free(pIndicesBuf);
                return { result.m128_f32[0], result.m128_f32[1], result.m128_f32[2] };
        }


In the transform function I use it reads another + 0x10 from the transform it is passed so maybe try reading another +0x10 before you pass the transform to it.

montroisiemecon 2nd July 2021 07:20 PM

Quote:

Originally Posted by madmax77 (Post 3172152)
i just made it so if the person has a space in their name i change it to "[SCAV]"

Code:

for (int c = 0; c < strname.size(); c++) {
                                                                                if (strname[c] == ' ') {
                                                                                        strname = "[SCAV]";
                                                                                        break;
                                                                                }
                                                                        }


What the fuck did I just read

Not only this find method is pure garbage, it will just not work on bosses

Quote:

Originally Posted by astarothlo (Post 3172195)
hello,Anyone knows how to get EFTHardSettings.Instance.LOOT_RAYCAST_DISTANCE externally? it is a static field of a static object, and I am kinda stuck on where to look for it.

You would need to sigscan it to find the instance
What is very funny with this structure is the grenade throw force. You can throw nades at 500m on live with this (hello Nikita)

Just note that anything you try to interact with or loot above 4m will be rejected by server

krembo 2nd July 2021 08:05 PM

After latest update correct way to get view angels is trough:
movmentcontext + 0x20C

madmax77 2nd July 2021 08:19 PM

Quote:

Originally Posted by ZeusLord (Post 3172460)
In the transform function I use it reads another + 0x10 from the transform it is passed so maybe try reading another +0x10 before you pass the transform to it.

that seemed to fix it, thanks

im having some problems calculating the viewangles

Code:

D3DXVECTOR2 NormalizeAngle(D3DXVECTOR2 angle)
        {
                if (angle.x < -360.f)
                        angle.x += 360.f;

                if (angle.x > 360.f)
                        angle.x -= 360.f;

                if (angle.y < -360.f)
                        angle.y += 360.f;

                if (angle.y > 360.f)
                        angle.y -= 360.f;

                return angle;
        }

D3DXVECTOR2 CalcAngle(D3DXVECTOR3* camPosition, D3DXVECTOR3* enemyPosition)
        {
                D3DXVECTOR2 temp;
                D3DXVECTOR3 relative;
                D3DXVec3Subtract(&relative, camPosition, enemyPosition);
                float magnitude = D3DXVec3Length(&relative);
                double pitch = asin(relative[1] / magnitude);
                double yaw = -atan2(relative[0], -relative[2]);

                yaw = D3DXToDegree(yaw);
                pitch = D3DXToDegree(pitch);
                temp.x = pitch;
                temp.y = yaw;

                temp = NormalizeAngle(temp);

                return temp;
        }


xzackcc 2nd July 2021 09:19 PM

Deobfuscated Assembly-CSharp.dll for version 0.12.11.1.13124
https://www.unknowncheats.me/forum/d...=file&id=33780

bhehe6813 2nd July 2021 09:20 PM

Quote:

Originally Posted by xzackcc (Post 3171042)
that's partly right. depending on what value this is, you either go with FPSCamera or the OpticSight matrix



the basic logic of how to scale your w2s should be obvious, division.



go ingame, draw text or printf %.2f when reading at 0x12C (another hint: it's a 2d vector, vertical scaling 'n stuff), then ..
> check what value it has without ADS/scope
> check what value it has when zooming (actual scope, like m1a thermal or casual 2x/4x)
> check what value it has when using the "sidescope" (alt+rightclick/ctrl+rightclick)

you'll notice values sit at 0.73, 1.78 and 3.17.

up to you to determine whether to use fpscamera or opticsight based on that value. (yet another hint: 0.73 looks static when in ironsight? yes, use isAiming - when ure in an actual scope, its greater than 0.73 and isAiming is still true)

Code:

// logic

if( 0x12C < 1.f && isAiming)
    // ironsight
elseif (0x12C < 2.f && isAiming)
    // sidescope
elseif ( 0x12C > 2.f && isAiming)
    // full scope
else // == !isAiming
    // unscoped/no ironsight

hf

Lol why are you guys all doing this so dumb. Check the FOV of the optic camera. If it matches your fpscamera fov, it's iron sights. Same with a 1x.

Here's a spoonfeed for perfect w2s:

Code:

public static Vector2 WorldToScreen(Vector3 origin) {
            try
            {
                if (Actor.LocalPlayer.proceduralWeaponAnimation == IntPtr.Zero || World.Camera.pCameraManager == IntPtr.Zero)
                    return new Vector2(0, 0);

                Matrix transposed;

                if (World.CameraActive && World.IsAimingCamera)
                    transposed = Matrix.Transpose(World.ScopeViewMatrix);
                else
                    transposed = Matrix.Transpose(World.GameViewMatrix);

                var w = Vector3.Dot(transposed.TranslationVector, origin) + transposed.M44;

                if (w < 1f) w = 1;

                var y = Vector3.Dot(transposed.Up, origin) + transposed.M24;
                var x = Vector3.Dot(transposed.Right, origin) + transposed.M14;

                if (World.CameraActive && World.IsAimingCamera) // this is camera -> active and isAiming
                {
                    var fov = World.CameraFov;
                    // vudu fix
                    if (World.CameraFov == 35 && World.OpticCameraFov == 19.4f)
                        fov = 50;

                    var angleRadHalf = (float)(Math.PI / 180) * fov * 0.5f;
                    var angleCtg = (float)(Math.Cos(angleRadHalf) / Math.Sin(angleRadHalf));

                    x /= angleCtg * World.Camera.CamaeraObject.CameraEntity.AspectRatio * 0.5f;
                    y /= angleCtg * 0.5f;
                }

                var screenX = H.ViewPortX / 2f * (1f + x / w);
                var screenY = H.ViewPortY / 2f * (1f - y / w);
                return new Vector2(screenX, screenY);
            }
            catch (Exception e)
            {
                if (Util.Debug) Console.WriteLine([email protected]"[W2S] Exception Thrown: {e}");
                return new Vector2(0, 0);
            }
        }


Code:

                    World.IsAimingCamera = Actor.LocalPlayer.ProceduralWeaponAnimation.BreathEffector.isAiming == 1;
                    isActive for camera is camera + 0x39 (read byte)

Quote:

Originally Posted by Azhora (Post 3170997)
In particular, what is `ZoomFactor`?

See my post

Quote:

Originally Posted by EliteProducer (Post 3170953)
What's the math for that?

Could you show us exactly how you're using that to scale your esp?

See my post

xzackcc 2nd July 2021 09:30 PM

Quote:

Originally Posted by bhehe6813 (Post 3172585)
Lol why are you guys all doing this so dumb.

????

my w2s doesn't really differ from yours, so I don't get your point.
the "ZoomFactorX" is just a FOV scale, it does change when your change your fov and works for most scopes ..

Code:

              if (this->isAiming && this->isOpticSight) {
                        float aspectratio = kernel->read_memory<float>(Camera + 0x4C8);
                        float fov = kernel->read_memory<float>(Camera + 0x158);

                        float angle_rad = (M_PI / 180) * fov * 0.5f;
                        float angle = cos(angle_rad) / sin(angle_rad);

                        x /= angle * aspectratio * 0.5f;
                        y /= angle * 0.5f;
                }


madmax77 3rd July 2021 01:00 AM

something wrong with my aimbot https://streamable.com/prv91r

Code:

D3DXVECTOR2 CalcAngle(D3DXVECTOR3* camPosition, D3DXVECTOR3* enemyPosition)
        {
                D3DXVECTOR2 temp;
                D3DXVECTOR3 relative;
                D3DXVec3Subtract(&relative, camPosition, enemyPosition);
                float magnitude = D3DXVec3Length(&relative);
                double pitch = asin(relative[1] / magnitude);
                double yaw = -atan2(relative[0], -relative[2]);

                yaw = D3DXToDegree(yaw);
                pitch = D3DXToDegree(pitch);
                temp.x = pitch;
                temp.y = yaw;

                temp = NormalizeAngle(temp);

                return temp;
        }

Code:

D3DXVECTOR2 newangles = chetoshit::CalcAngle(&fireport3, &HeadPos);

                                uintptr_t MovementShit = driver::RPM<uintptr_t>(chetoshit::LocalPlayer + 0x40, globals::pid);
                                if (MovementShit) {
                                        if (GetAsyncKeyState(VK_RBUTTON) & 0x8000) {
                                                driver::write<D3DXVECTOR2>(MovementShit + 0x20C, newangles, globals::pid);
                                        }
                                }


nikobelic29 3rd July 2021 03:17 AM

Quote:

Originally Posted by madmax77 (Post 3172733)
something wrong with my aimbot https://streamable.com/prv91r

Code:

D3DXVECTOR2 CalcAngle(D3DXVECTOR3* camPosition, D3DXVECTOR3* enemyPosition)
        {
                D3DXVECTOR2 temp;
                D3DXVECTOR3 relative;
                D3DXVec3Subtract(&relative, camPosition, enemyPosition);
                float magnitude = D3DXVec3Length(&relative);
                double pitch = asin(relative[1] / magnitude);
                double yaw = -atan2(relative[0], -relative[2]);

                yaw = D3DXToDegree(yaw);
                pitch = D3DXToDegree(pitch);
                temp.x = pitch;
                temp.y = yaw;

                temp = NormalizeAngle(temp);

                return temp;
        }

Code:

D3DXVECTOR2 newangles = chetoshit::CalcAngle(&fireport3, &HeadPos);

                                uintptr_t MovementShit = driver::RPM<uintptr_t>(chetoshit::LocalPlayer + 0x40, globals::pid);
                                if (MovementShit) {
                                        if (GetAsyncKeyState(VK_RBUTTON) & 0x8000) {
                                                driver::write<D3DXVECTOR2>(MovementShit + 0x20C, newangles, globals::pid);
                                        }
                                }


x = yaw
y = pitch

JitNevaFold 3rd July 2021 03:34 AM

Anyone know how to fix the aim being a little off when I use no recoil/sway

Im writing
AimDisplacementStr to 0
breath to 0
alignToZeroFloat22 to 0
and mask to 0

and it seems to freeze the sway in the point that it was at, making it very innacurate
dont know if im forgetting something or not but any help would be cool

madmax77 3rd July 2021 11:32 AM

Quote:

Originally Posted by nikobelic29 (Post 3172783)
x = yaw
y = pitch

oh shit, i feel really dumb now lol

hollow 3rd July 2021 12:33 PM

Quote:

Originally Posted by nikobelic29 (Post 3172783)
x = yaw
y = pitch

?????
simply not true

the issue is in the rotator class, y is first and x is second

Quote:

Originally Posted by madmax77 (Post 3173000)
oh shit, i feel really dumb now lol

do not feel dumb, but please, please, please try to doublecheck what you�re doing. most of the issues you have can easily be fixed with just that.

24jared24 3rd July 2021 01:10 PM

Quote:

Originally Posted by JitNevaFold (Post 3172796)
Anyone know how to fix the aim being a little off when I use no recoil/sway

Im writing
AimDisplacementStr to 0
breath to 0
alignToZeroFloat22 to 0
and mask to 0

and it seems to freeze the sway in the point that it was at, making it very innacurate
dont know if im forgetting something or not but any help would be cool

Write the intensity of all "Effector" classes (BreathEffector through ShotEffector) to 0 before setting mask. I think people have mentioned better ways of doing no recoil but this has always worked perfectly for me.

Unrelated: Can anyone explain to me how to get offsets of Unity classes? I'm looking at the UnityEngine.Renderer class and I want to get the list of Materials in it but I'm not getting anywhere with finding the offset


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

krembo 3rd July 2021 01:24 PM

Quote:

Originally Posted by 24jared24 (Post 3173068)
Can anyone explain to me how to get offsets of Unity classes?

Open unityplayer.dll in IDA and start reversing :)
Class informer helps.

madmax77 3rd July 2021 03:28 PM

is this chain correct for the weapon name
Code:

{ 0x4A0, 0x50, 0x38, 0x10 }
EDIT: this is the correct one
Code:

{ 0x190, 0x48, 0x28, 0x38, 0x10 }

cheatlove 3rd July 2021 06:32 PM

Quote:

Originally Posted by 24jared24 (Post 3170390)
Was messing around with thermal trying to recreate the see through glass from before they changed it. Didn't find much for the glass but I did find a better thermal setting that has almost full color/textures. It's not perfect but it is way better and makes glass somewhat see through.

Write an int to
Code:

ThermalComponent + 0x90] + 0x10] + 0x38
I think this is like the shader color or something idrk

Some write values I found:
236 = default thermal
224 = Colors and textures with slightly see through glass
240 = Colors with more smoothed colors, kinda dark

If anyone found how to see through glass/scopes lmk

hi, trying to reproduce this by dma, did anything about it change or is it still the same ?

24jared24 3rd July 2021 07:00 PM

Quote:

Originally Posted by cheatlove (Post 3173328)
hi, trying to reproduce this by dma, did anything about it change or is it still the same ?

Method I posted still works. The colors got a little worse after the wipe patch and passing bad values (like 224) to that offset does spam console errors so clearly there's a better way to do it but it's still better than normal thermal as is.

madmax77 3rd July 2021 07:11 PM

anyone know how to do no weight

Code:

driver::write<int>(Physical + 0x7C, 0, globals::pid); //Overweight
                                                driver::write<int>(Physical + 0x80, 0, globals::pid); //WalkOverweight


ecthirune 3rd July 2021 07:54 PM

Quote:

Originally Posted by madmax77 (Post 3173350)
anyone know how to do no weight

Code:

driver::write<int>(Physical + 0x7C, 0, globals::pid); //Overweight
                                                driver::write<int>(Physical + 0x80, 0, globals::pid); //WalkOverweight


serversided.

madmax77 3rd July 2021 08:03 PM

Quote:

Originally Posted by ecthirune (Post 3173374)
serversided.

damn :(

24jared24 3rd July 2021 08:09 PM

Quote:

Originally Posted by krembo (Post 3173076)
Open unityplayer.dll in IDA and start reversing :)
Class informer helps.

Class informer doesn't seem like it finds anything useful in unityplayer.dll am I doing something wrong

madmax77 3rd July 2021 08:15 PM

position prints invalid shit
Code:

uintptr_t all_loot = driver::RPM<uintptr_t>(LocalGameWorld + 0x78, globals::pid);
                if (!all_loot) return;

                uintptr_t lootbase = driver::RPM<uintptr_t>(all_loot + 0x10, globals::pid);
                if (!lootbase) return;

                int lootsize = driver::RPM<int>(all_loot + 0x18, globals::pid);
                if (lootsize <= 0) return;

                for (int i = 0; i < lootsize; i++) {
                        uintptr_t loot_item = driver::RPM<uint64_t>(all_loot + 0x20 + (i * 0x8), globals::pid);

                        if (!loot_item) continue;

                        D3DXVECTOR3 item_position = driver::RPM<D3DXVECTOR3>(loot_item + 0x28, globals::pid);
                        printf("X: %f Y: %f Z: %f\n", item_position.x, item_position.y, item_position.z);
                        uintptr_t LogicItem = driver::RPM<uintptr_t>(loot_item + 0x18, globals::pid);
                        if (!LogicItem) continue;

                        uintptr_t ItemTemplate = driver::RPM<uintptr_t>(LogicItem + 0x38, globals::pid);
                        if (!ItemTemplate) continue;

                        uintptr_t Name = driver::RPM<uintptr_t>(ItemTemplate + 0x10, globals::pid);
                        if (!Name) continue;

                        std::string ItemName = chetoshit::GetUnicodeString(Name + 0x14, driver::RPM<uint32_t>(Name + 0x10, globals::pid));
                       
                        if (settings::itemesp) {
                                vec2 screenposition;
                                chetoshit::world_to_screen(item_position, &screenposition);
                                MSPaint::DrawTextA(ImVec2(screenposition.x, screenposition.y), ImColor(255, 255, 255, 255), ItemName.c_str());
                        }

                }
        }


xzackcc 3rd July 2021 09:41 PM

I once asked this question, anyway ..

Does anyone know what the chain to the actual exit points is which are linked to the local player?
the pointer starting at GOM + exfiltrationpoints array seems to be alright but it doesn't show the local player's exit points and if it's actually open or does "EligiblePlayers" store the array of user id's which are meant to be linked with that exit point?

madmax77 3rd July 2021 11:04 PM

anyone know why this aint picking up raiders

Code:

int pedrole = 0;

                                                                        uintptr_t Settings = driver::RPM<uintptr_t>(info + 0x38, globals::pid);
                                                                        if(Settings){
                                                                                int role = driver::RPM<int>(Settings + 0x10, globals::pid);
                                                                                pedrole = role;
                                                                        }
                                                                       
                                                                        int regdate = driver::RPM<int>(info + 0x54, globals::pid);
                                                                        if (regdate <= 0) {
                                                                                settings::colors::NameColor = ImColor(52, 235, 137, 255);
                                                                                switch (pedrole)
                                                                                {
                                                                                case EFTWildSpawnType_::bossBully:
                                                                                        settings::colors::NameColor = ImColor(66, 173, 245, 255);
                                                                                        name = "[BOSS BULLY] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::bossGluhar:
                                                                                        settings::colors::NameColor = ImColor(66, 173, 245, 255);
                                                                                        name = "[BOSS GLUHAR] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::bossKilla:
                                                                                        settings::colors::NameColor = ImColor(66, 173, 245, 255);
                                                                                        name = "[BOSS KILLA] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::bossKojaniy:
                                                                                        settings::colors::NameColor = ImColor(66, 173, 245, 255);
                                                                                        name = "[BOSS KOJANIY] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::bossSanitar:
                                                                                        settings::colors::NameColor = ImColor(66, 173, 245, 255);
                                                                                        name = "[BOSS SANITAR] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::bossTagilla:
                                                                                        settings::colors::NameColor = ImColor(66, 173, 245, 255);
                                                                                        name = "[BOSS TAGILLA] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::pmcBot:
                                                                                        name = "[RAIDER] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::marksman:
                                                                                        name = "[SCAV SNIPER] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                default:
                                                                                        name = "[SCAV] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                }
                                                                        }


24jared24 3rd July 2021 11:37 PM

Quote:

Originally Posted by madmax77 (Post 3173500)
anyone know why this aint picking up raiders

Code:

int pedrole = 0;

                                                                        uintptr_t Settings = driver::RPM<uintptr_t>(info + 0x38, globals::pid);
                                                                        if(Settings){
                                                                                int role = driver::RPM<int>(Settings + 0x10, globals::pid);
                                                                                pedrole = role;
                                                                        }
                                                                       
                                                                        int regdate = driver::RPM<int>(info + 0x54, globals::pid);
                                                                        if (regdate <= 0) {
                                                                                settings::colors::NameColor = ImColor(52, 235, 137, 255);
                                                                                switch (pedrole)
                                                                                {
                                                                                case EFTWildSpawnType_::bossBully:
                                                                                        settings::colors::NameColor = ImColor(66, 173, 245, 255);
                                                                                        name = "[BOSS BULLY] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::bossGluhar:
                                                                                        settings::colors::NameColor = ImColor(66, 173, 245, 255);
                                                                                        name = "[BOSS GLUHAR] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::bossKilla:
                                                                                        settings::colors::NameColor = ImColor(66, 173, 245, 255);
                                                                                        name = "[BOSS KILLA] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::bossKojaniy:
                                                                                        settings::colors::NameColor = ImColor(66, 173, 245, 255);
                                                                                        name = "[BOSS KOJANIY] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::bossSanitar:
                                                                                        settings::colors::NameColor = ImColor(66, 173, 245, 255);
                                                                                        name = "[BOSS SANITAR] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::bossTagilla:
                                                                                        settings::colors::NameColor = ImColor(66, 173, 245, 255);
                                                                                        name = "[BOSS TAGILLA] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::pmcBot:
                                                                                        name = "[RAIDER] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                case EFTWildSpawnType_::marksman:
                                                                                        name = "[SCAV SNIPER] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                default:
                                                                                        name = "[SCAV] (" + std::to_string(static_cast<int>(distance)) + "m)";
                                                                                        break;
                                                                                }
                                                                        }


Just use Visual Studio's debugger and step through your code. Check if pointer values make sense (at least that they aren't 0). Check if the value you're reading for Role is what you expect. Check if it matches what you have in your enum.

If you don't know how to use a debugger just google visual studio debugger tutorial and it'll take like 15 seconds to learn. It's a basic staple of programming and could solve like 90% of the issues you've posted. And if you can't solve it atleast you have more info to ask a better question other than "this doesn't work"

Heashey 4th July 2021 02:08 AM

anyone know why all my items are in the same position?
https://gyazo.com/b13d4145e66dd0826522406e6cd4a699

Code:

                uint64_t unity_player = UnityPlayer("UnityPlayer.dll");

                game_object_manager = read<uint64_t>(unity_player + 0x156C698);

                auto active_objects = read<std::array<uint64_t, 2>>(game_object_manager + 0x10);


                gameWorld = GetObjectFromList(active_objects[1], active_objects[0], "GameWorld");

                uint64_t localGameWorld = ReadChain(gameWorld, { 0x30, 0x18, 0x28 });

                uint64_t loot_array = read<uint64_t>(localGameWorld + 0x60);
                uint32_t count = read<uint32_t>(loot_array + 0x18);

                uint64_t get_item_list = read<uint64_t>(loot_array + 0x10);

                for (int i = 0; i < count; i++)
                {
                        uint64_t loot = read<uint64_t>(get_item_list + 0x20 + (i * 0x8));

                        uint64_t itemObject = read<uint64_t>(loot + 0x10);
                        uint64_t itemProfile = read<uint64_t>(itemObject + 0x28);
                        uint64_t m_pInteractive = ReadChain(itemProfile, { 0x10, 0x30, 0x60 });

                        auto target_name = read_ascii(m_pInteractive, 64);

                        uint64_t TransformTwo;
                        if (target_name == "Script")
                                continue;

                        if (in_array(target_name, contNames))
                        {
                                TransformTwo = ReadChain(itemObject, { 0x30, 0x30, 0x8 });
                                uint64_t Transform = ReadChain(TransformTwo, { 0x28 });
                                glm::vec3 containerpos = get_transform_position(Transform);
                        }
                        else {
                                uint64_t m_pItemPosition = read<uint64_t>(TransformTwo + 0x38);
                                glm::vec3 itemCoord = read<glm::vec3>(m_pItemPosition + 0xb0);

                                glm::vec2 item_screen{};

                                if (!world_to_screen(itemCoord, &item_screen))
                                        continue;

                                //printf("%s\n", target_name.c_str());

                                char buf[256];
                                sprintf(buf, "%s", target_name.c_str());
                                DrawStrokeText(item_screen.x, item_screen.y, &Col.white_, buf);
                        }

                        printf("%s\n", target_name.c_str());

                }


SizzleStreams 4th July 2021 02:45 AM

grinding da wipe

TJ888 4th July 2021 04:19 AM

Quote:

Originally Posted by xzackcc (Post 3173440)
I once asked this question, anyway ..

Does anyone know what the chain to the actual exit points is which are linked to the local player?
the pointer starting at GOM + exfiltrationpoints array seems to be alright but it doesn't show the local player's exit points and if it's actually open or does "EligiblePlayers" store the array of user id's which are meant to be linked with that exit point?

https://www.unknowncheats.me/forum/3...-post4152.html

I answered how here. Doing this will only show your local players extracts, then do the usual requirement checks to see if it's available/open.

bhehe6813 4th July 2021 07:00 AM

Quote:

Originally Posted by xzackcc (Post 3172590)
????

my w2s doesn't really differ from yours, so I don't get your point.
the "ZoomFactorX" is just a FOV scale, it does change when your change your fov and works for most scopes ..

Code:

              if (this->isAiming && this->isOpticSight) {
                        float aspectratio = kernel->read_memory<float>(Camera + 0x4C8);
                        float fov = kernel->read_memory<float>(Camera + 0x158);

                        float angle_rad = (M_PI / 180) * fov * 0.5f;
                        float angle = cos(angle_rad) / sin(angle_rad);

                        x /= angle * aspectratio * 0.5f;
                        y /= angle * 0.5f;
                }


Where are you applying this zoom factor X? Why isn't it apart of the optic sight code above? What benefits does it even have?

Quote:

Originally Posted by xzackcc (Post 3173440)
I once asked this question, anyway ..

Does anyone know what the chain to the actual exit points is which are linked to the local player?
the pointer starting at GOM + exfiltrationpoints array seems to be alright but it doesn't show the local player's exit points and if it's actually open or does "EligiblePlayers" store the array of user id's which are meant to be linked with that exit point?

I do it this way by reading different arrays depending on if scav or not:

Code:

var exfilPtrs = new List<IntPtr>();
                        var exfilPoints = H.LocalPlayer.IsPlayerScav
                            ? World.ExfilController.pScavExfilPoints
                            : World.ExfilController.pExfilPoints;
                        var exfilArraySize = M.Read<int>(exfilPoints + 0x18);
                        var exfilPtrData = M.Read(exfilPoints + 0x20, exfilArraySize * 0x8);
                        for (int i = 0x0; i < exfilPtrData.Length; i += 0x8)
                        {
                            var ptrBuffer = new byte[8];
                            Array.Copy(exfilPtrData, i, ptrBuffer, 0, 0x8);
                            IntPtr exfilPtr = MemoryManager.GetStructure<IntPtr>(ptrBuffer);
                            exfilPtrs.Add(exfilPtr);
                        }

                        objectProcessor = new Thread(() => ObjectProcessor.Processor(exfilPtrs));

Code:

        public static void Processor(List<IntPtr> exfilPtrs)
        {
            var exfils = new List<Classes.ExfilPoint>();
            foreach (var exfilPtr in exfilPtrs)
            {
                var exfil = M.Read<Classes.Exfiltration>(exfilPtr);
                if (exfil.Status == Classes.EExfilStatus.UncompleteRequirements) continue;

                var transformPosition = Classes.GetBonePosition(exfil.ExfilTransform.ExfilTransform2.ExfilTransform3
                    .ExfilTransform4.ExfilTransform);
                var exfilPoint = new Classes.ExfilPoint
                {
                    Location = Util.WorldToScreen(transformPosition),
                    Distance = Vector3.Distance(H.LocalPlayer.SavedPosition, transformPosition),
                    Name = exfil.ExfiltrationPointInfo.ExfilName
                };
                exfils.Add(exfilPoint);
            }
            H.Exfils = exfils;
        }

The way TJ888 mentioned can help you filter it more.

madmax77 4th July 2021 10:10 AM

Quote:

Originally Posted by xzackcc (Post 3173545)
My dude, you were asking questions that have been answered over 10 times already.
You also seem to not use mono dissect nor dnspy to troubleshoot and align your offsets and their chains properly.

The reason why he's saying that is that you ask for help on each feature you add.

Check your posts from within the last 72 hours...

https://i.imgur.com/d0PrTUv.png
https://i.imgur.com/0JOvpQV.png
https://i.imgur.com/67dVBHz.png

and the list goes on and on ..
https://i.imgur.com/wTM7fhl.png
https://i.imgur.com/nzt6kvL.png
https://i.imgur.com/KZc98ns.png
https://i.imgur.com/RqPlgXm.png

Im using Unispect, but i get that im posting here a lot and not taking the time to read over my code and try to troubleshoot it myself. I will correct myself in the future

Quote:

Originally Posted by xzackcc (Post 3173545)
My dude, you were asking questions that have been answered over 10 times already.
You also seem to not use mono dissect nor dnspy to troubleshoot and align your offsets and their chains properly.

The reason why he's saying that is that you ask for help on each feature you add.

Check your posts from within the last 72 hours...

https://i.imgur.com/d0PrTUv.png
https://i.imgur.com/0JOvpQV.png
https://i.imgur.com/67dVBHz.png

and the list goes on and on ..
https://i.imgur.com/wTM7fhl.png
https://i.imgur.com/nzt6kvL.png
https://i.imgur.com/KZc98ns.png
https://i.imgur.com/RqPlgXm.png

Im using Unispect, but i get that im posting here a lot and not taking the time to read over my code and try to troubleshoot it myself. I will correct myself in the future

Marcx 4th July 2021 01:43 PM

Quote:

Originally Posted by xzackcc (Post 3172584)
...

 Moderator note  This file has not been thoroughly analyzed. Approved for analysis purposes only, use at your own risk.


File Approved
  • SHA256: B2099334CD04D0054B3358D5C8E534E9F43CDE1834FCB46B8A0B40DB54DCD449 - Assembly-CSharp-clean_[unknowncheats.me]_.dll
Interested in how we analyze files? Click here to find out.

Thanks for sharing.

https://www.unknowncheats.me/forum/d...=file&id=33780

xzackcc 4th July 2021 02:26 PM

Quote:

Originally Posted by TJ888 (Post 3173656)
https://www.unknowncheats.me/forum/3...-post4152.html

I answered how here. Doing this will only show your local players extracts, then do the usual requirement checks to see if it's available/open.

How in the world did I miss your post?! I miss the times back with the w2s fortnite aimbot :D

Ye, I actually had that idea but wanted to make sure this is the right way of doing it.

Thanks, works like a charm! :)
https://i.imgur.com/s7vb76I.jpeg

Quote:

Originally Posted by bhehe6813 (Post 3173736)
Where are you applying this zoom factor X? Why isn't it apart of the optic sight code above? What benefits does it even have?

it's pretty much the same as what you do with the fov ..
https://i.imgur.com/d2OggpZ.jpeg

Quote:

Originally Posted by bhehe6813 (Post 3173736)
I do it this way by reading different arrays depending on if scav or not:

~ snip

The way TJ888 mentioned can help you filter it more.

yep, that's what I was doing all the time but I don't like to see every exfiltration point even if it's not mine. :)


Quote:

Originally Posted by madmax77 (Post 3173829)
Im using Unispect, but i get that im posting here a lot and not taking the time to read over my code and try to troubleshoot it myself. I will correct myself in the future

Good start right there; Once you figure out how the engine, its classes, function and variables work together, you'll notice how easy it is (~ most of the stuff you asked for).

emodro 4th July 2021 02:51 PM

Has view angles changed in the last day or 2? I was getting direction but now it's not working. I reverted to an older build but still nothing. pulling my hair out.

0x204 ?
and movement context at 0x40 ?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

xzackcc 4th July 2021 02:58 PM

Quote:

Originally Posted by emodro (Post 3174037)
Has view angles changed in the last day or 2? I was getting direction but now it's not working. I reverted to an older build but still nothing. pulling my hair out.

0x204 ?
and movement context at 0x40 ?

movement at 0x40
local va at 0x20C

emodro 4th July 2021 03:05 PM

Quote:

Originally Posted by xzackcc (Post 3174042)
movement at 0x40
local va at 0x20C

Thank you! I missed the post somehow

eldev 4th July 2021 11:15 PM

is unlim stamina safe?

Heashey 4th July 2021 11:33 PM

Quote:

Originally Posted by eldev (Post 3174336)
is unlim stamina safe?

yes it is

s2055656915 5th July 2021 12:56 PM

What are the changes of KD in eft.player

xiaoying2014 5th July 2021 01:34 PM

Who can provide ideas for opening the door, thank you

s2055656915 5th July 2021 02:54 PM

Who knows what has changed

s2055656915 5th July 2021 08:45 PM

Quote:

Originally Posted by montroisiemecon (Post 2950397)
A disgusting, yet version proof version of the KD computation

Code:

float getKD(const PlayerProfile& profile)
{
    auto stats = profile.stats;
    auto overallCounters = _deref(stats).overallCounters;
    auto counters = driver::readMemory<uint64_t>((uint64_t)overallCounters + 0x10);
    auto count = driver::readMemory<uint32_t>(counters + 0x40);
    if (count < 0 || count > 1000)
        return 0.f;
    auto entries = driver::readMemory<uint64_t>(counters + 0x18);
    auto keys = driver::readMemory<uint64_t>(counters + 0x28);

    if (is_bad_ptr(entries))
        return 0.f;

    uint32_t kills(0), deaths(0);

    auto arrayBase = entries + 0x28;

    for (auto i = 0; i < count; i++)
    {
        auto key = driver::readMemory<uint64_t>(arrayBase + i * 0x18 + 0x18);
        auto hash = driver::readMemory<uint32_t>(key + 0x18);
        auto value = driver::readMemory<uint64_t>(arrayBase + i * 0x18 + 0x20);

        auto keySet = driver::readMemory<uint64_t>(key + 0x10);
        auto keySetSlots = driver::readMemory<uint64_t>(keySet + 0x18);
        auto setArrayBase = keySetSlots + 0x28;
        auto first = driver::readMemory<uint64_t>(setArrayBase);
        auto statName = UnityEngineString(first).getString();
        if (statName == xorstr_("Kills"))
            kills = value;
        else if (statName == xorstr_("Deaths"))
            deaths = value;
    }

    return (deaths == 0) ? float(kills) : float(kills) / float(deaths);
}




12.11 It doesn't work. Who knows which changes have been made

Edit:
Thanks to xzackcc

24jared24 5th July 2021 08:47 PM

Quote:

Originally Posted by s2055656915 (Post 3174970)
12.11 It doesn't work. Who knows which changes have been made

I literally implemented this yesterday using this post and don't think anything changed. Works perfectly for me. Say what your actual problem is instead of "it doesn't work"

s2055656915 5th July 2021 08:56 PM

Quote:

Originally Posted by 24jared24 (Post 3174975)
I literally implemented this yesterday using this post and don't think anything changed. Works perfectly for me. Say what your actual problem is instead of "it doesn't work"

Thanks to xzackcc, it has worked

xzackcc 5th July 2021 10:07 PM

Quote:

Originally Posted by s2055656915 (Post 3174989)
counters address is 0 My chain may have broken

how about posting your code so we can troubleshoot your issue properly - just asking "What changed cuz it doesn't work!?" won't get you anywhere.

s2055656915 5th July 2021 10:15 PM

Quote:

Originally Posted by xzackcc (Post 3175052)
how about posting your code so we can troubleshoot your issue properly - just asking "What changed cuz it doesn't work!?" won't get you anywhere.

Thanks to xzackcc, it has worked

ConspiracyNomad 5th July 2021 11:31 PM

Quote:

Originally Posted by xzackcc (Post 3174026)
How in the world did I miss your post?! I miss the times back with the w2s fortnite aimbot :D

Ye, I actually had that idea but wanted to make sure this is the right way of doing it.

Thanks, works like a charm! :)
https://i.imgur.com/s7vb76I.jpeg



it's pretty much the same as what you do with the fov ..
https://i.imgur.com/d2OggpZ.jpeg



yep, that's what I was doing all the time but I don't like to see every exfiltration point even if it's not mine. :)




Good start right there; Once you figure out how the engine, its classes, function and variables work together, you'll notice how easy it is (~ most of the stuff you asked for).

Which font are you using?

xzackcc 5th July 2021 11:43 PM

Quote:

Originally Posted by eldev (Post 3174336)
is unlim stamina safe?

Quote:

Originally Posted by Heashey (Post 3174343)
yes it is

can someone else confirm this is indeed working and safe to use?

hollow 6th July 2021 12:08 AM

Quote:

Originally Posted by xzackcc (Post 3175096)
can someone else confirm this is indeed working and safe to use?

yes//

24jared24 6th July 2021 12:09 AM

Quote:

Originally Posted by xzackcc (Post 3175096)
can someone else confirm this is indeed working and safe to use?

Yes stam and handstam I have no issues

JudischerHund 6th July 2021 12:41 AM

Quote:

Originally Posted by vectless (Post 3158246)
Code:

// Tested as a PMC only, solving Player Scavs will be a similar process. Have fun.
var profile = Mem.Read<UInt64>(entity.Address + 0x3D8);
var stats = Mem.Read<UInt64>(profile + 0xD8);
var overallCounters = Mem.Read<UInt64>(stats + 0x18); // SessionCounters is at 0x10
var counters = Mem.Read<UInt64>(overallCounters + 0x10); // Dictionary<IntPtr, ulong>
 
if(KillHash == 0)
{
    if (!entity.IsMe) continue;
 
    var arrayBase = Mem.Read<UInt64>(counters + 0x18) + 0x28;
   
    var killCounterKey = Mem.Read<UInt64>(arrayBase + 6 * 0x18);
    KillHash = Mem.Read<UInt32>(killCounterKey + 0x18);
   
    var deathCounterKey = Mem.Read<UInt64>(arrayBase + 2 * 0x18);
    DeathHash = Mem.Read<UInt32>(deathCounterKey + 0x18);
}
 
var countersDict = new MemDictionary<ulong, ulong>(counters); // Key param is GClass141C in this post
foreach (var entry in countersDict.Data)
{
    var keyClass = entry.Key;
    var value = entry.Value;
 
    var hash = Mem.Read<UInt32>(keyClass + 0x18);
 
    if (hash == KillHash) // This hash should work with PMCs and Player Scavs
        kills = value;
 
    if (hash == DeathHash) // This hash is PMC's only
        deaths = value;
}
 
var kd = deaths != 0 ? (float)kills / deaths : kills;

Creds: Razchek

Doesn't work,
Code:

KillHash = Mem.Read<UInt32>(killCounterKey + 0x18);
seems to be a pointer for every entry in the list....

Edit: I read the code completely wrong nevermind. How big is each entry in the dictionary to manually iterate it?

Edit: Managed to fix it, BSG just overcomplicates this for some reason........

bhehe6813 6th July 2021 02:35 AM

Quote:

Originally Posted by swh4641 (Post 3123600)
about external vischeck, easy
Code:

// EFT.PlayerBody
// Token: 0x06006EAD RID: 28333 RVA: 0x00231F3C File Offset: 0x0023013C
public bool IsVisible()
{
        return this.BodySkins[EBodyModelPart.Body].IsVisible() || this.BodySkins[EBodyModelPart.Feet].IsVisible();
}

Code:

public bool IsVisible()
                {
                        AbstractSkin[] lods = this._lods;
                        for (int i = 0; i < lods.Length; i++)
                        {
                                if (lods[i].SkinnedMeshRenderer.isVisible)
                                {
                                        return true;
                                }
                        }
                        return false;
                }


You can't just read isVisible. It's an external call that takes place in unityplayer. Copy pasting functions you don't understand from dnspy isn't anything special.

nikobelic29 6th July 2021 03:30 AM

https://i.imgur.com/7kaF1qc.png how to filter KD from overallcounter

mapleint 6th July 2021 12:00 PM

new hotfix, GOM is still the same


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

EliteProducer 6th July 2021 02:21 PM

Quote:

Originally Posted by mapleint (Post 3175386)
new hotfix, GOM is still the same

Why are you even using offsets for gom? I gave you sig?

Also, i'm pretty sure GOM doesn't even change unless they update the engine.

You also made a post saying gom has changed, when it didn't? :thinking:

MrCrashU 6th July 2021 06:09 PM

Quote:

Originally Posted by xzackcc (Post 3172241)
that is correct.



simple,
Code:

// playerinfo -> side (int32_t) and
// playerinfo -> NicknameChangeDate (int64_t)

pseudo,
Code:

if(NicknameChangeDate() <= 0 && side == SCAV)
    // bot scav

if(NicknameChangeDate() > 0 && side == SCAV)
    // player scav

if(NicknameChangeDate() > 0 && side == PMC)
    // player pmc


Code:

switch (this->Side())
{
case 0x1:
        return "PMC (USEC)";
case 0x2:
        return "PMC (BEAR)";
case 0x4:
        return "SCAV";
default:
        return "UNDEFINED";
}


bonus,
Code:

// playerinfo -> settings -> Role
Code:

// code
enum EFTWildSpawnType_
{
        marksman,
        assault,
        bossTest,
        bossBully,
        followerTest,
        followerBully,
        bossKilla,
        bossKojaniy,
        followerKojaniy,
        pmcBot,
        cursedAssault,
        bossGluhar,
        followerGluharAssault,
        followerGluharSecurity,
        followerGluharScout,
        followerGluharSnipe,
        followerSanitar,
        bossSanitar,
        test,
        assaultGroup,
        sectantWarrior,
        sectantPriest,
        bossTagilla,
        followerTagilla
};

EFTWildSpawnType_ Role()
{
        return kernel->read_memory<EFTWildSpawnType_>((uint64_t)this + 0x0010);
}


wildspawntype is now a bitflag

virii72 6th July 2021 06:12 PM

New EXP values up to level 44 for those that need it:
Code:

let expTable = [1000, 4017, 8432, 14256, 21477, 30023, 39936, 51204, 63723, 77563, 92713, 111881, 134674, 161139, 191417, 225194,
    262366, 302484, 345751, 391649, 440444, 492366, 547896, 609066, 675913, 748474, 826786, 910885, 1000809, 1096593, 1198275,
    1309251, 1429580, 1559321, 1698532, 1847272, 2005600, 2173575, 2351255, 2538699, 2735966, 2946585, 3170637];


ecthirune 6th July 2021 07:47 PM

Quote:

Originally Posted by MrCrashU (Post 3175607)
wildspawntype is now a bitflag

huh? wdym?

hollow 6th July 2021 09:27 PM

Quote:

Originally Posted by ecthirune (Post 3175713)
huh? wdym?

probably means bitfield and i doubt it, definitely not the way to use bitfields
but bsg is retarded so everything is possible lol

bhehe6813 6th July 2021 10:15 PM

Quote:

Originally Posted by swh4641 (Post 3123600)
about external vischeck, easy
Code:

// EFT.PlayerBody
// Token: 0x06006EAD RID: 28333 RVA: 0x00231F3C File Offset: 0x0023013C
public bool IsVisible()
{
        return this.BodySkins[EBodyModelPart.Body].IsVisible() || this.BodySkins[EBodyModelPart.Feet].IsVisible();
}

Code:

public bool IsVisible()
                {
                        AbstractSkin[] lods = this._lods;
                        for (int i = 0; i < lods.Length; i++)
                        {
                                if (lods[i].SkinnedMeshRenderer.isVisible)
                                {
                                        return true;
                                }
                        }
                        return false;
                }


Yeah, skid confirmed.

IsVisible is not accurate at all for an external vis check. Here's a mono implementation of IsVisible, showing True for visible, despite being behind a wall:

https://i.imgur.com/JUXkH50.png

Regardless, I know for certain you didn't reverse IsVisible like I did, and just posted a dnspy spinnet without understanding how it worked.

For anyone else curious how the internalcall getter works:

skinnedMeshRenderer + 0x10 is RAX, the skinnedMeshRenderer is RCX. The "isVisible" check is as follows:

Code:

rax+0x128 & 0x1000 && rax+0x160 != 0xFF;
The assembly for it is pretty simple.

The actual internal call:

https://i.imgur.com/7GYanVQ.png

The first and second "visible" check as shown in code above:

https://i.imgur.com/VBMgHfq.png

The mono test code using EFT-trainer:

Code:

                        foreach (var hostile in hostiles)
                        {
                                if (!hostile.IsValid())
                                        continue;
                                var position = hostile.Transform.position;
                                records.Add(new PointOfInterest
                                {
                                        Name = hostile.PlayerBody.BodySkins[EBodyModelPart.Body].IsVisible().ToString()
                                        Position = position,
                                        ScreenPosition = camera.WorldPointToScreenPoint(position),
                                        Color = EligibleColor
                                });
                        }

The reason this doesn't work for a vis check is that these renderers are "on screen", they are just behind other objects.

niceone1 6th July 2021 10:20 PM

Quote:

Originally Posted by virii72 (Post 3175608)
New EXP values up to level 44 for those that need it:
Code:

let expTable = [1000, 4017, 8432, 14256, 21477, 30023, 39936, 51204, 63723, 77563, 92713, 111881, 134674, 161139, 191417, 225194,
    262366, 302484, 345751, 391649, 440444, 492366, 547896, 609066, 675913, 748474, 826786, 910885, 1000809, 1096593, 1198275,
    1309251, 1429580, 1559321, 1698532, 1847272, 2005600, 2173575, 2351255, 2538699, 2735966, 2946585, 3170637];


Why don't you just post the full table?

From Previous Level
Code:

level|exp
1|0
2|1000
3|3017
4|4415
5|5824
6|7221
7|8546
8|9913
9|11268
10|12519
11|13840
12|15150
13|19168
14|22793
15|26465
16|30278
17|33777
18|37172
19|40118
20|43267
21|45898
22|48795
23|51922
24|55530
25|61170
26|66847
27|72561
28|78312
29|84099
30|89924
31|95784
32|101682
33|110976
34|120329
35|129741
36|139211
37|148740
38|158328
39|167975
40|177680
41|187444
42|197267
43|210619
44|224052
45|237565
46|251159
47|264834
48|278589
49|292426
50|306343
51|320341
52|334420
53|353353
54|372396
55|391550
56|410813
57|430187
58|449671
59|469265
60|497503
61|529571
62|567955
63|613270
64|664452
65|740677
66|842166
67|1031379
68|1408965
69|1976578
70|2500000
71|3000000
72|3500000
73|4000000
74|4500000
75|5000000
76|5500000
77|6000000
78|7000000
79|10000000

Edit: You can get it from
Code:

220dee136a0 : GClass858+GClass859
        static fields
        fields
        20 : Level (type: GClass858.GClass859.GClass863)

Edit #2:
Cumulative Total
Code:

level|exp
1|0
2|1000
3|4017
4|8432
5|14256
6|21477
7|30023
8|39936
9|51204
10|63723
11|77563
12|92713
13|111881
14|134674
15|161139
16|191417
17|225194
18|262366
19|302484
20|345751
21|391649
22|440444
23|492366
24|547896
25|609066
26|675913
27|748474
28|826786
29|910885
30|1000809
31|1096593
32|1198275
33|1309251
34|1429580
35|1559321
36|1698532
37|1847272
38|2005600
39|2173575
40|2351255
41|2538699
42|2735966
43|2946585
44|3170637
45|3408202
46|3659361
47|3924195
48|4202784
49|4495210
50|4801553
51|5121894
52|5456314
53|5809667
54|6182063
55|6573613
56|6984426
57|7414613
58|7864284
59|8333549
60|8831052
61|9360623
62|9928578
63|10541848
64|11206300
65|11946977
66|12789143
67|13820522
68|15229487
69|17206065
70|19706065
71|22706065
72|26206065
73|30206065
74|34706065
75|39706065
76|45206065
77|51206065
78|58206065
79|68206065


bhehe6813 6th July 2021 10:21 PM

Quote:

Originally Posted by niceone1 (Post 3175822)
Why don't you just post the full table?

Code:

level|exp
1|0
2|1000
3|3017
4|4415
5|5824
6|7221
7|8546
8|9913
9|11268
10|12519
11|13840
12|15150
13|19168
14|22793
15|26465
16|30278
17|33777
18|37172
19|40118
20|43267
21|45898
22|48795
23|51922
24|55530
25|61170
26|66847
27|72561
28|78312
29|84099
30|89924
31|95784
32|101682
33|110976
34|120329
35|129741
36|139211
37|148740
38|158328
39|167975
40|177680
41|187444
42|197267
43|210619
44|224052
45|237565
46|251159
47|264834
48|278589
49|292426
50|306343
51|320341
52|334420
53|353353
54|372396
55|391550
56|410813
57|430187
58|449671
59|469265
60|497503
61|529571
62|567955
63|613270
64|664452
65|740677
66|842166
67|1031379
68|1408965
69|1976578
70|2500000
71|3000000
72|3500000
73|4000000
74|4500000
75|5000000
76|5500000
77|6000000
78|7000000
79|10000000


Because he parsed his from the wiki which only goes up to 44 atm. Yours is also wrong / pre 0.12.11.

niceone1 6th July 2021 10:24 PM

Quote:

Originally Posted by bhehe6813 (Post 3175825)
Because he parsed his from the wiki which only goes up to 44 atm. Yours is also wrong / pre 0.12.11.

I parsed the values from the class i mentioned above. They should be correct.

Thats the function that uses the table.

Code:

        public static int GetLevel(int experience)
        {
                GClass858.GClass859.GClass863.GClass864[] table = Singleton<GClass858>.Instance.Experience.Level.Table;
                int num = 0;
                for (int i = 0; i < table.Length; i++)
                {
                        num += table[i].Value;
                        if (experience < num)
                        {
                                return i;
                        }
                }
                return table.Length;
        }


bhehe6813 6th July 2021 10:27 PM

Quote:

Originally Posted by niceone1 (Post 3175831)
I parsed the values from the class i mentioned above. They should be correct.

Yours is what I have, but the poster above and the wiki are saying it's changed. I dunno. It would make sense that the game's table (yours) would be the accurate one. Here's a formatted version of niceone's if anyone else wants to paste it:

Code:

            1000,3017,4415,5824,7221,8546,9913,11268,12519,13840,15150,19168,22793,26465,30278,
            33777,37172,40118,43267,45898,48795,51922,55530,61170,66847,72561,78312,84099,89924,
            95784,101682,110976,120329,129741,139211,148740,158328,167975,177680,187444,197267,
            210619,224052,237565,251159,264834,278589,292426,306343,320341,334420,353353,372396,
            391550,410813,430187,449671,469265,497503,529571,567955,613270,664452,740677,842166,
            1031379,1408965,1976578,2500000,3000000,3500000,4000000,4500000,5000000,5500000,6000000,7000000,10000000


virii72 6th July 2021 10:35 PM

Quote:

Originally Posted by niceone1 (Post 3175831)
I parsed the values from the class i mentioned above. They should be correct.

Thats the function that uses the table.

Code:

        public static int GetLevel(int experience)
        {
                GClass858.GClass859.GClass863.GClass864[] table = Singleton<GClass858>.Instance.Experience.Level.Table;
                int num = 0;
                for (int i = 0; i < table.Length; i++)
                {
                        num += table[i].Value;
                        if (experience < num)
                        {
                                return i;
                        }
                }
                return table.Length;
        }


I've had it hardcoded for awhile (from wiki as pointed out), I'll need to look at this method, but the table you posted is wrong for the current 12.11 build. My at EXP 1,006,000 at lvl 30 in game, your table would put me at 32.

niceone1 6th July 2021 10:42 PM

Quote:

Originally Posted by virii72 (Post 3175848)
I've had it hardcoded for awhile (from wiki as pointed out), I'll need to look at this method, but the table you posted is wrong for the current 12.11 build. My at EXP 1,006,000 at lvl 30 in game, your table would put me at 32.

Interesting, even the UI does use this table :D

Code:

                private void Show(Profile profile, [CanBeNull] GClass1811 inventoryController)
                {
                        if (inventoryController != null)
                        {
                                inventoryController.StopProcesses();
                        }
                        ItemUiContext.Instance.CloseAllWindows();
                        base.ShowGameObject(false);
                        this.profile_0 = profile;
                        this.method_3(this._overallToggle, true);
                        this._overallToggle.Boolean_0 = true;
                        this._playerLevelPanel.Set(profile.Info.Level, ESideType.Pmc);
                        this._nicknameLabel.text = profile.GetCorrectedNickname();
                        this._specialIcon.Show((profile.Info.Side != EPlayerSide.Savage) ? profile.Info.MemberCategory : EMemberCategory.Default, null);
                        NumberFormatInfo numberFormatInfo = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
                        numberFormatInfo.NumberGroupSeparator = " ";
                        this._experienceLabel.text = profile.Info.Experience.ToString("#,0", numberFormatInfo);
                        this.method_0(profile, inventoryController);
                        this.method_1(profile, inventoryController);
                        this.UI.AddDisposable<InventoryClothingSelectionPanel>(this._clothingPanel);
                        this.UI.AddDisposable<PlayerModelView>(this._playerModelView);
                        this._statsSpawn.method_0(profile, StatisticsSpawn.EStatisticsType.Overall);
                        this.UI.AddDisposable<StatisticsSpawn>(this._statsSpawn);
                        this._sideImage.gameObject.SetActive(profile.Info.Side != EPlayerSide.Savage);
                        switch (profile.Info.Side)
                        {
                        case EPlayerSide.Usec:
                                this._sideImage.sprite = this._usecSprite;
                                goto IL_1A3;
                        case EPlayerSide.Bear:
                                this._sideImage.sprite = this._bearSprite;
                                goto IL_1A3;
                        case EPlayerSide.Savage:
                                this._sideImage.sprite = null;
                                goto IL_1A3;
                        }
                        throw new ArgumentOutOfRangeException();
                        IL_1A3:
                        long allLong = this.profile_0.Stats.OverallCounters.GetAllLong(new object[]
                        {
                                CounterTag.Sessions
                        });
                        long allLong2 = this.profile_0.Stats.OverallCounters.GetAllLong(new object[]
                        {
                                CounterTag.ExitStatus,
                                ExitStatus.Left
                        });
                        long allLong3 = this.profile_0.Stats.OverallCounters.GetAllLong(new object[]
                        {
                                CounterTag.ExitStatus,
                                ExitStatus.Survived
                        });
                        long allLong4 = this.profile_0.Stats.OverallCounters.GetAllLong(new object[]
                        {
                                CounterTag.Deaths
                        });
                        long allLong5 = this.profile_0.Stats.OverallCounters.GetAllLong(new object[]
                        {
                                CounterTag.Kills
                        });
                        long totalInGameTime = this.profile_0.Stats.TotalInGameTime;
                        ShortStatsPanel shortStatsPanel = this._shortStatsPanel;
                        float kills = (float)allLong5;
                        shortStatsPanel.SetStats((float)allLong, kills, (float)((allLong > 0L) ? ((int)((float)allLong2 / (float)allLong * 100f)) : 0), (float)((allLong > 0L) ? ((int)((float)allLong3 / (float)allLong * 100f)) : 0), (allLong4 > 0L) ? ((float)Math.Round((double)(allLong5 / allLong4), 2)) : 0f, OverallScreen.smethod_0(totalInGameTime));
                }

Not even BSG does know how to calculate the levels (old season): https://i.imgur.com/QVah60H.png

xXBradXx 7th July 2021 12:00 AM

Quote:

Originally Posted by ecthirune (Post 3175713)
huh? wdym?

https://www.unknowncheats.me/forum/3...-post4279.html

Quote:

Originally Posted by hollow (Post 3175784)
probably means bitfield and i doubt it, definitely not the way to use bitfields
but bsg is retarded so everything is possible lol

yeah it would only make sense if the scavs could be multiple roles at the same time so they'd have several bits set, but they never are. only 1 bit is ever set. makes no sense why they changed that, but they did.

ecthirune 7th July 2021 12:07 AM

Quote:

Originally Posted by xXBradXx (Post 3175912)

ah, i didn't pay lot attention, like "wtf numbers here, whatever just hardcode them"

RonaldWeezly 7th July 2021 12:19 AM

anyone figured how to loot thru walls?

hollow 7th July 2021 02:16 AM

Quote:

Originally Posted by RonaldWeezly (Post 3175921)
anyone figured how to loot thru walls?

took a quick look in dnspy, InteractionRaycast() sets EFT.Player.InteractableObject

bhehe6813 7th July 2021 03:03 AM

Quote:

Originally Posted by 24jared24 (Post 3173344)
Method I posted still works. The colors got a little worse after the wipe patch and passing bad values (like 224) to that offset does spam console errors so clearly there's a better way to do it but it's still better than normal thermal as is.

I'm not sure what you're really wiping out / changing there. It's not the shader though. The UnityEngine.Material object doesn't contain a reference to the shader unfortunately. It's gotten via get_shader which is quite a complicated function. If I were to guess how it works, it computes a key/index for a global array.

Code:

__int64 __fastcall sub_180953880(struct __crt_stdio_stream *a1)
{
  __int64 v2; // rcx
  __int64 v3; // rbx
  __int64 v4; // rax
  _QWORD *v6; // rax
  char v7; // [rsp+30h] [rbp+8h] BYREF
  char v8; // [rsp+38h] [rbp+10h] BYREF

  if ( !a1 )
    goto LABEL_8;
  v2 = *((_QWORD *)a1 + 2);
  v3 = 0i64;
  if ( !v2 )
    v2 = 0i64;
  if ( !v2 )
  {
LABEL_8:
    _lambda_9a32fed5bf61b6b509b2d3f6003082a1_::_lambda_9a32fed5bf61b6b509b2d3f6003082a1_(
      (_lambda_9a32fed5bf61b6b509b2d3f6003082a1_ *)&v7,
      a1);
    v6 = (_QWORD *)sub_180326520((__int64)&v8);
    sub_180906270(*v6);
    JUMPOUT(0x1809538E2i64);
  }
  v4 = sub_180850810(v2, a1);
  if ( v4 )
    v3 = *(_QWORD *)sub_180903E50(&v7, v4);
  return v3;
}

The code that's import is after the !v2. The lambda stuff is just some sort of mono error handling.

Code:

  v4 = sub_180850810(v2, a1);
  if ( v4 )
    v3 = *(_QWORD *)sub_180903E50(&v7, v4);

If you follow the v4 sub, it's very complex:

Code:

__int64 __fastcall sub_180850810(__int64 a1)
{
  __int64 result; // rax

  result = sub_1800A0920(a1 + 56);
  if ( !result )
    result = sub_180C0D370();
  return result;
}

Code:

__int64 __fastcall sub_1800A0920(unsigned int *a1)
{
  unsigned int v1; // ebx
  __int64 result; // rax
  __int64 v3; // rdi
  __int64 v4; // rax
  char v5[24]; // [rsp+20h] [rbp-18h] BYREF
  unsigned int v6; // [rsp+40h] [rbp+8h] BYREF

  v1 = *a1;
  if ( !*a1 )
    return 0i64;
  v3 = qword_18156C610;
  v6 = *a1;
  if ( !qword_18156C610
    || ((v4 = sub_1800A1B70(qword_18156C610, v5, &v6),
        *(_QWORD *)v3 + 3 * (*(unsigned int *)(v3 + 8) + 8i64) == *(_QWORD *)v4) ? (result = 0i64) : (result = *(_QWORD *)(*(_QWORD *)v4 + 16i64)),
        !result) )
  {
    result = sub_180638580(v1);
  }
  return result;
}

sub_1800A1B70 computes some sort of index/key

Code:

_QWORD *__fastcall sub_1800A1B70(__int64 *a1, _QWORD *a2, int *a3)
{
  int v3; // ebx
  __int64 v5; // r11
  unsigned int v6; // er8
  __int64 v7; // r9
  __int64 v8; // rdx
  unsigned int v9; // edi
  _DWORD *v10; // rax
  int v11; // er8
  _QWORD *result; // rax

  v3 = *a3;
  v5 = *a1;
  v6 = (4097 * v3 + 2127912214) ^ ((unsigned int)(4097 * v3 + 2127912214) >> 19) ^ 0xC761C23C;
  v7 = *((unsigned int *)a1 + 2);
  v8 = ((9 * (((33 * v6 + 374761393) << 9) ^ (33 * v6 - 369570787)) - 42973499) ^ ((9
                                                                                  * (((33 * v6 + 374761393) << 9) ^ (33 * v6 - 369570787))
                                                                                  - 42973499) >> 16) ^ 0xB55A4F09) & (_DWORD)a1[1];
  v9 = ((9 * (((33 * v6 + 374761393) << 9) ^ (33 * v6 - 369570787)) - 42973499) ^ ((9
                                                                                  * (((33 * v6 + 374761393) << 9) ^ (33 * v6 - 369570787))
                                                                                  - 42973499) >> 16) ^ 0xB55A4F09) & 0xFFFFFFFC;
  v10 = (_DWORD *)(*a1 + 2 * v8 + (unsigned int)v8);
  if ( *v10 != v9 || v3 != v10[2] )
  {
    v11 = 8;
    if ( *v10 == -1 )
    {
LABEL_7:
      v10 = (_DWORD *)(v5 + 2 * (v7 + 8) + v7 + 8);
    }
    else
    {
      while ( 1 )
      {
        v8 = (unsigned int)v7 & (v11 + (_DWORD)v8);
        v10 = (_DWORD *)(v5 + 2 * v8 + (unsigned int)v8);
        if ( *v10 == v9 && v3 == v10[2] )
          break;
        v11 += 8;
        if ( *v10 == -1 )
          goto LABEL_7;
      }
    }
  }
  *a2 = v10;
  result = a2;
  a2[1] = v5 + 2 * (v7 + 8) + v7 + 8;
  return result;
}

and then the next sub is

sub_180638580

Code:

__int64 __fastcall sub_180638580(int a1)
{
  __int64 v3; // rax

  if ( !a1 || a1 < 0 )
    return 0i64;
  v3 = sub_18092E650(); // this is just a qword: qword_1815BA800
  return sub_1809344D0(v3, (unsigned int)a1, 0xFFFFFFFFi64);
}


Which calls this sub, not entirely sure what it does. Some sort of obj creation / serialization? Or perhaps serialization for mono?
Code:

__int64 __fastcall sub_1809344D0(__int64 a1, unsigned int a2)
{
  __int64 v3; // rsi
  __int64 v5; // r14
  __int64 result; // rax
  __int64 v7; // rbx
  LPVOID lpTlsValue; // [rsp+20h] [rbp-78h] BYREF
  __int64 v9; // [rsp+28h] [rbp-70h] BYREF
  __int64 v10[4]; // [rsp+30h] [rbp-68h] BYREF
  int v11; // [rsp+50h] [rbp-48h]
  const char *v12; // [rsp+58h] [rbp-40h]
  __m128i v13; // [rsp+60h] [rbp-38h]
  __int64 v14; // [rsp+70h] [rbp-28h]
  char v15; // [rsp+78h] [rbp-20h]

  v3 = 0i64;
  j_EnterCriticalSection((LPCRITICAL_SECTION)(a1 + 224));
  v5 = sub_180934DC0(a1, a2);
  j_LeaveCriticalSection((LPCRITICAL_SECTION)(a1 + 224));
  if ( v5 )
  {
    sub_1809031E0(&lpTlsValue, &v9);
    if ( lpTlsValue )
      sub_180904490(0i64);
    (*(void (__fastcall **)(__int64, __int64))(*(_QWORD *)v5 + 16i64))(v5, 3i64);
    if ( lpTlsValue )
      sub_180904490(lpTlsValue);
    result = v5;
  }
  else
  {
    j_EnterCriticalSection((LPCRITICAL_SECTION)(a1 + 184));
    if ( *(_DWORD *)(a1 + 128) == -1 )
    {
      v7 = sub_180934A40(a1, a2);
      if ( v7 )
      {
        sub_180931670(a1, 1i64);
        v3 = v7;
      }
    }
    else
    {
      v10[1] = (__int64)byte_1811FD000;
      v10[2] = (__int64)byte_1811FD000;
      v10[3] = (__int64)byte_1811FD000;
      v12 = byte_1811FD000;
      v15 = 1;
      v10[0] = (__int64)"Recursive Serialization is not supported. You can't dereference a PPtr while loading. (Construct"
                        "ors of C# classes may not load objects either. See stacktrace.)";
      v11 = 0;
      v13 = _mm_load_si128((const __m128i *)&xmmword_1812BE980);
      v14 = 0i64;
      sub_180BF3650(v10);
    }
    j_LeaveCriticalSection((LPCRITICAL_SECTION)(a1 + 184));
    result = v3;
  }
  return result;
}

Back to the original function if (!result):

sub_180C0D370 returns an error shader (meaning the get shader call failed).

Quote:

Originally Posted by 24jared24 (Post 3173344)
Method I posted still works. The colors got a little worse after the wipe patch and passing bad values (like 224) to that offset does spam console errors so clearly there's a better way to do it but it's still better than normal thermal as is.

What I do which works nicely as well, is wipe out the material and texture mask entirely. It doesn't work quite the same as your way. I will reverse get_shader eventually.

Also the reason scopes don't work is just take a look at the shaders... you can dump them out pretty easily using a few different tools available. Every single shader you can think of has a value called _ThermalOn including opticglass and others. They legit have this written into every shader. I'm pretty sure it's a global float that's shared, but if you simply write 0 to it, your thermal isn't going to work at all.

More in-depth on the above:

https://i.imgur.com/crieiLF.png

Material + 0x10 is some sort of shader info. This is passed to UnityPlayer+850810. Unityplayer + 850810 reads Material->0x10->0x38 which is some sort of key:

https://i.imgur.com/lsNLg5A.png

It passes this key to another function, unityplayer+A0920 which is that "key/index" function I mentioned above. Cleaned up a little bit, it looks like this:

Code:


v4 = sub_1800A1B70(qword_18156C610, v5, &v6)

if (((*(_QWORD *)v3 + 3 * (*(unsigned int *)(v3 + 8) + 8i64) == *(_QWORD *)v4)) {
 result = null
} else {
 result = *(_QWORD *)(*(_QWORD *)v4 + 16i64)
}

sub_1800A1B70 is the tricky one though.

RonaldWeezly 7th July 2021 03:09 AM

Quote:

Originally Posted by hollow (Post 3175993)
took a quick look in dnspy, InteractionRaycast() sets EFT.Player.InteractableObject

yeah I see it uses raycasts and what not to determine object which is interactable.

this is where ray is created:
Code:

                                return new Ray(this._playerLookRaycastTransform.position - this._playerLookRaycastTransform.forward * EFTHardSettings.Instance.BEHIND_CAST, this._playerLookRaycastTransform.forward);
i assume I can just modify said position at runtime

modifying said position @ runtime is not so easy externally

ZeusLord 7th July 2021 03:17 AM

Quote:

Originally Posted by RonaldWeezly (Post 3176024)
yeah I see it uses raycasts and what not to determine object which is interactable.

this is where ray is created:
Code:

                                return new Ray(this._playerLookRaycastTransform.position - this._playerLookRaycastTransform.forward * EFTHardSettings.Instance.BEHIND_CAST, this._playerLookRaycastTransform.forward);
i assume I can just modify said position at runtime

modifying said position @ runtime is not so easy externally

IIrc isn't there like a hand length modifier or something that controls how far you can loot?

EDIT: Think I'm stupid must of been a different thing I was thinking about as I don't see anything.

RonaldWeezly 7th July 2021 03:20 AM

anyone got any idea how i'd locate class EFTHardSettings in mem?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

ZeusLord 7th July 2021 03:32 AM

Concerning door unlocker.. Has anyone tried overwriting WorldInteractiveObject.KeyId to a random key you have in your inventory or overwriting the Template.KeyId of a random key you have in your inventory?

astarothlo 7th July 2021 05:43 AM

Does anyone know how to get the KD of the players in the game? I can read KD in offline mode.

krembo 7th July 2021 07:59 AM

Quote:

Originally Posted by ZeusLord (Post 3176036)
Concerning door unlocker.. Has anyone tried overwriting WorldInteractiveObject.KeyId to a random key you have in your inventory or overwriting the Template.KeyId of a random key you have in your inventory?

You will get insta banned for doing that.
They check that you have the key that you are using and that it actually matches the door, look for older posts in this thread(1 year+)

niceone1 7th July 2021 11:13 AM

Quote:

Originally Posted by virii72 (Post 3175848)
I've had it hardcoded for awhile (from wiki as pointed out), I'll need to look at this method, but the table you posted is wrong for the current 12.11 build. My at EXP 1,006,000 at lvl 30 in game, your table would put me at 32.

Working just fine for me. (Keep in mind that the exp values from my first posted table are relative to the previous level. That means you have to sum them up to match them against the player exp).

hollow 7th July 2021 12:23 PM

Quote:

Originally Posted by ZeusLord (Post 3176029)
IIrc isn't there like a hand length modifier or something that controls how far you can loot?

EDIT: Think I'm stupid must of been a different thing I was thinking about as I don't see anything.

you aren't wrong: EFTHardSettings.LOOT_RAYCAST_DISTANCE
according to @montroisiemecon, everything above 4m isn't accepted by the server, though

RonaldWeezly 7th July 2021 01:49 PM

Quote:

Originally Posted by hollow (Post 3176269)
you aren't wrong: EFTHardSettings.LOOT_RAYCAST_DISTANCE
according to @montroisiemecon, everything above 4m isn't accepted by the server, though

problem is finding EFTHardSettings in memory to modify this value xd

Quote:

Originally Posted by hollow (Post 3176269)
you aren't wrong: EFTHardSettings.LOOT_RAYCAST_DISTANCE
according to @montroisiemecon, everything above 4m isn't accepted by the server, though

problem is finding EFTHardSettings in memory to modify this value xd

hollow 7th July 2021 02:44 PM

easiest way to find EFTHardSettings instance would be to sigscan for its fields:
https://i.imgur.com/WpHzzXz.png

which would be 66 66 a6 3f 00 00 80 3f 9a 99 19 3e - 0x100

obviously would break if they decide to change these values (or if they change mid game, shouldn't happen though?)

swh4641 7th July 2021 04:32 PM

Quote:

Originally Posted by hollow (Post 3176367)
easiest way to find EFTHardSettings instance would be to sigscan for its fields:
https://i.imgur.com/WpHzzXz.png

which would be 66 66 a6 3f 00 00 80 3f 9a 99 19 3e - 0x100

obviously would break if they decide to change these values (or if they change mid game, shouldn't happen though?)

EFTHardSettings:get_Instance, really hard ye

ZeusLord 7th July 2021 04:38 PM

Quote:

Originally Posted by krembo (Post 3176136)
You will get insta banned for doing that.
They check that you have the key that you are using and that it actually matches the door, look for older posts in this thread(1 year+)


Yes but this would theoretically trick it into thinking you have the key because the KeyId of the key you do have would match but ofc not server sided but you never know about BSG and their infinite wisdom. I don�t use door unlocker anyways I just buy the keys off the market was just a stupid idea from browsing dnspy.

hollow 7th July 2021 04:44 PM

Quote:

Originally Posted by swh4641 (Post 3176447)
EFTHardSettings:get_Instance, really hard ye

i am very glad you're internal

krembo 7th July 2021 06:31 PM

Quote:

Originally Posted by ZeusLord (Post 3176450)
Yes but this would theoretically trick it into thinking you have the key because the KeyId of the key you do have would match but ofc not server sided but you never know about BSG and their infinite wisdom. I don�t use door unlocker anyways I just buy the keys off the market was just a stupid idea from browsing dnspy.

But then the server will actually validate that you actually have the key that you are using and will ban you when it doesn't find it.
I agree bsg is incompetent, sadly they do care about doors

Yf04zKTh12Te 7th July 2021 07:30 PM

heres updated experience table, seems to be aligned with the wiki

Code:

Level    From Previous        Cumulative Total
1          0                    0
2        1000                  1000
3        3017                  4017
4        4415                  8432
5        5824                14256
6        7221                21477
7        8546                30023
8        9913                39936
9      11268                51204
10      12519                63723
11      13840                77563
12      15150                92713
13      19168                111881
14      22793                134674
15      26465                161139
16      30278                191417
17      33777                225194
18      37172                262366
19      40118                302484
20      43267                345751
21      45898                391649
22      48795                440444
23      51922                492366
24      55530                547896
25      61170                609066
26      66847                675913
27      72561                748474
28      78312                826786
29      84099                910885
30      89924              1000809
31      95784              1096593
32      101682              1198275
33      110976              1309251
34      120329              1429580
35      129741              1559321
36      139211              1698532
37      148740              1847272
38      158328              2005600
39      167975              2173575
40      177680              2351255
41      187444              2538699
42      197267              2735966
43      210619              2946585
44      224052              3170637
45      237565              3408202
46      251159              3659361
47      264834              3924195
48      278589              4202784
49      292426              4495210
50      306343              4801553
51      320341              5121894
52      334420              5456314
53      353353              5809667
54      372396              6182063
55      391550              6573613
56      410813              6984426
57      430187              7414613
58      449671              7864284
59      469265              8333549
60      497503              8831052
61      529571              9360623
62      567955              9928578
63      613270              10541848
64      664452              11206300
65      740677              11946977
66      842166              12789143
67    1031379              13820522
68    1408965              15229487
69    1976578              17206065
70    2500000              19706065
71    3000000              22706065
72    3500000              26206065
73    4000000              30206065
74    4500000              34706065
75    5000000              39706065
76    5500000              45206065
77    6000000              51206065
78    7000000              58206065
79    10000000              68206065

sry for clownish formatting :wave:

niceone1 7th July 2021 08:20 PM

Quote:

Originally Posted by Yf04zKTh12Te (Post 3176609)
heres updated experience table, seems to be aligned with the wiki

...

Not that i have already posted it :D https://www.unknowncheats.me/forum/3...-post4451.html

Yf04zKTh12Te 7th July 2021 08:29 PM

Quote:

Originally Posted by niceone1 (Post 3176647)
Not that i have already posted it :D https://www.unknowncheats.me/forum/3...-post4451.html

sry i didnt really look into the back pages :angel:

but seems like i did read id from the same location you did

bhehe6813 8th July 2021 01:57 AM

Stop pasting other peoples get bone position's. Just paste mine. The original one that everyone pastes is dogshit for performance and has plenty of pointless mem reads.

Code:

        public struct Matrix34
        {
            public Vector4 vec0;
            public Vector4 vec1;
            public Vector4 vec2;
        }


        public enum ShuffleSel
        {
            XFromX,
            XFromY,
            XFromZ,
            XFromW,

            YFromX = 0x00,
            YFromY = 0x04,
            YFromZ = 0x08,
            YFromW = 0x0C,

            ZFromX = 0x00,
            ZFromY = 0x10,
            ZFromZ = 0x20,
            ZFromW = 0x30,

            WFromX = 0x00,
            WFromY = 0x40,
            WFromZ = 0x80,
            WFromW = 0xC0,

            ExpandX = XFromX | YFromX | ZFromX | WFromX,
            ExpandY = XFromY | YFromY | ZFromY | WFromY,
            ExpandZ = XFromZ | YFromZ | ZFromZ | WFromZ,
            ExpandW = XFromW | YFromW | ZFromW | WFromW,

            ExpandXY = XFromX | YFromX | ZFromY | WFromY,
            ExpandZW = XFromZ | YFromZ | ZFromW | WFromW,

            ExpandInterleavedXY = XFromX | YFromY | ZFromX | WFromY,
            ExpandInterleavedZW = XFromZ | YFromW | ZFromZ | WFromW,

            RotateRight = XFromY | YFromZ | ZFromW | WFromX,
            RotateLeft = XFromW | YFromX | ZFromY | WFromZ,

            Swap = XFromW | YFromZ | ZFromY | WFromX
        }

        public static unsafe Vector4 Shuffle(Vector4 v1, ShuffleSel sel)
        {
            var ptr = (float*)&v1;
            var idx = (int)sel;
            return new Vector4(*(ptr + ((idx >> 0) & 0x3)), *(ptr + ((idx >> 2) & 0x3)), *(ptr + ((idx >> 4) & 0x3)),
                *(ptr + ((idx >> 6) & 0x3)));
        }
        public struct MatrixListItem
        {
            public List<int> indexes;
        }

        public unsafe struct MatrixBuffer
        {
            public void* pMatricesBuf;
        }

        [HandleProcessCorruptedStateExceptions]
        [SecurityCritical]
        public static unsafe Vector3[] GetBonePositions(TransformInternal[] bones)
        {
            var matrixList = new Dictionary<IntPtr, MatrixListItem>();
            var dependencyTableList = new Dictionary<IntPtr, MatrixListItem>();
            var boneMatrixDictionary = new Dictionary<IntPtr, Classes.UnityMatrix>();

            // get all the matrix and dep ptrs
            foreach (var bone in bones)
            {
                if (bone.pMatrices == IntPtr.Zero)
                {
                    continue;
                }
                var index = bone.index;


                var boneMatrix = new UnityMatrix();
                if (!boneMatrixDictionary.ContainsKey(bone.pMatrices))
                {
                    boneMatrix = bone.Matrix;
                    boneMatrixDictionary.Add(bone.pMatrices, boneMatrix);
                }
                else
                {
                    boneMatrix = boneMatrixDictionary[bone.pMatrices];
                }

                var matrixListBase = boneMatrix.matrix_list_base;
                if (matrixListBase == IntPtr.Zero)
                    return new Vector3[0];
                var dependencyIndexTableBase = boneMatrix.depedency_index_table_base;
                if (dependencyIndexTableBase == IntPtr.Zero)
                    return new Vector3[0];

                // insert the matrix ptrs into list
                if (!matrixList.ContainsKey(matrixListBase))
                {
                    var item = new MatrixListItem { indexes = new List<int>() { index } };
                    matrixList.Add(matrixListBase, item);
                }
                else
                {
                    matrixList[matrixListBase].indexes.Add(index);
                }
                // insert the depedencyindex ptrs into list
                if (!dependencyTableList.ContainsKey(dependencyIndexTableBase))
                {
                    var item = new MatrixListItem { indexes = new List<int>() { index } };
                    dependencyTableList.Add(dependencyIndexTableBase, item);
                }
                else
                {
                    dependencyTableList[dependencyIndexTableBase].indexes.Add(index);
                }
            }

            var matrixBufferDict = new Dictionary<IntPtr, MatrixBuffer>();

            foreach (var matrixDict in matrixList)
            {
                // get largest index so we know how many bytes we really need
                var index = matrixDict.Value.indexes.Max();

                var matricesSize = sizeof(Matrix34) * index + sizeof(Matrix34);
                var pMatricesBufPtr = Marshal.AllocHGlobal(matricesSize);

                var pMatricesBuf = pMatricesBufPtr.ToPointer();
                var matricesBytes = M.Read(matrixDict.Key, matricesSize);
                Marshal.Copy(matricesBytes, 0, pMatricesBufPtr, matricesSize);
                var matrixBuffer = new MatrixBuffer { pMatricesBuf = pMatricesBuf };
                matrixBufferDict.Add(matrixDict.Key, matrixBuffer);
            }

            var dependencyIndexDict = new Dictionary<IntPtr, MatrixBuffer>();
            foreach (var matrixDict in dependencyTableList)
            {
                var index = matrixDict.Value.indexes.Max();

                var indicesSize = sizeof(int) * index + sizeof(int);
                var pIndicesBufPtr = Marshal.AllocHGlobal(indicesSize);
                var pIndicesBuf = pIndicesBufPtr.ToPointer();
                var indicesBytes = M.Read(matrixDict.Key, indicesSize);
                Marshal.Copy(indicesBytes, 0, pIndicesBufPtr, indicesSize);
                var matrixBuffer = new MatrixBuffer { pMatricesBuf = pIndicesBuf };
                dependencyIndexDict.Add(matrixDict.Key, matrixBuffer);
            }

            // get bone position for all bones
            var bonePositions = new Vector3[bones.Length];
            var i = 0;
            var xmmword1410D1340 = new Vector4(-2.0f, 2.0f, -2.0f, 0.0f);
            var xmmword1410D1350 = new Vector4(2.0f, -2.0f, -2.0f, 0.0f);
            var xmmword1410D1360 = new Vector4(-2.0f, -2.0f, 2.0f, 0.0f);

            foreach (var bone in bones)
            {
                if (bone.pMatrices == IntPtr.Zero)
                {
                    bonePositions[i] = Vector3.Zero;
                    i++;
                    continue;
                }
                var index = bone.index;
                var boneMatrix = boneMatrixDictionary[bone.pMatrices];
                var matrixBuffer = matrixBufferDict[boneMatrix.matrix_list_base];
                var indexBuffer = dependencyIndexDict[boneMatrix.depedency_index_table_base];

                var pMatricesBuf = matrixBuffer.pMatricesBuf;
                var pIndicesBuf = indexBuffer.pMatricesBuf;

                try
                {
                    var result = *(Vector4*)((ulong)pMatricesBuf + 0x30 * (ulong)index);
                    var indexRelation = *(int*)((ulong)pIndicesBuf + 0x4 * (ulong)index);

                    while (indexRelation >= 0)
                    {
                        var matrix34 = *(Matrix34*)((ulong)pMatricesBuf + 0x30 * (ulong)indexRelation);
                        var v10 = matrix34.vec2 * result;
                        var v11 = Shuffle(matrix34.vec1, 0);
                        var v12 = Shuffle(matrix34.vec1, (ShuffleSel)85);
                        var v13 = Shuffle(matrix34.vec1, (ShuffleSel)(-114));
                        var v14 = Shuffle(matrix34.vec1, (ShuffleSel)(-37));
                        var v15 = Shuffle(matrix34.vec1, (ShuffleSel)(-86));
                        var v16 = Shuffle(matrix34.vec1, (ShuffleSel)113);
                        result = (v11 * xmmword1410D1350 * v13 - v12 * xmmword1410D1360 * v14) *
                                Shuffle(v10, (ShuffleSel)(-86)) +
                                (v15 * xmmword1410D1360 * v14 - v11 * xmmword1410D1340 * v16) *
                                Shuffle(v10, (ShuffleSel)85) +
                                ((v12 * xmmword1410D1340 * v16 - v15 * xmmword1410D1350 * v13) * Shuffle(v10, 0) + v10) +
                                matrix34.vec0;

                        indexRelation = *(int*)((ulong)pIndicesBuf + 0x4 * (ulong)indexRelation);
                    }

                    bonePositions[i] = new Vector3(result.X, result.Y, result.Z);
                    i++;
                }
                catch
                {
                    bonePositions[i] = Vector3.Zero;
                    i++;
                }
            }

            // free pointers
            foreach (var item in matrixBufferDict)
            {
                if ((IntPtr)item.Value.pMatricesBuf != IntPtr.Zero)
                    Marshal.FreeHGlobal((IntPtr)item.Value.pMatricesBuf);
            }
            foreach (var item in dependencyIndexDict)
            {
                if ((IntPtr)item.Value.pMatricesBuf != IntPtr.Zero)
                    Marshal.FreeHGlobal((IntPtr)item.Value.pMatricesBuf);
            }
            return bonePositions;
        }

It's setup to take in a list of transforms (the inner transform object, not the base transform), and spits out an array of vector3s.

Performance tweaks:

Lots of bones share the same matrices and indices list, first we insert the ptrs into a dict so we have a unique list of them. Then we read how much we actually need all at once. The time complexity of my function is not great, it has multiple loops, and can be simplified more. But the real-world efficiency is 100x better than the other one posted. This should be easily pasted for both c++ and C#.

Quote:

Originally Posted by krembo (Post 3176561)
But then the server will actually validate that you actually have the key that you are using and will ban you when it doesn't find it.
I agree bsg is incompetent, sadly they do care about doors

They care about doors? They don't even care about walls.

https://streamable.com/a8p7rn

100% working way to loot items in a room you can't get to without modifying your position at all.

XzThabestzX 8th July 2021 04:53 AM

Quote:

Originally Posted by bhehe6813 (Post 3176891)

They care about doors? They don't even care about walls.

https://streamable.com/a8p7rn

100% working way to loot items in a room you can't get to without modifying your position at all.

Actually never thought about freecam looting, have you tried this in the live build of tarkov?

AhmedGH 8th July 2021 05:07 AM

Quote:

Originally Posted by bhehe6813 (Post 3176891)
They care about doors? They don't even care about walls.

https://streamable.com/a8p7rn

100% working way to loot items in a room you can't get to without modifying your position at all.

Switching current cam to Free cam.. Is that what it's?

bhehe6813 8th July 2021 05:18 AM

Quote:

Originally Posted by XzThabestzX (Post 3176978)
Actually never thought about freecam looting, have you tried this in the live build of tarkov?

That's not free cam. You can see when I walk forward, it's very much still attached to my player. It has limitations. If you notice, I'm not too far away (my real position) from the scav body I loot.

What's more interesting is despite not modifying any player body transforms, the raycast to determine if something is interactable still seems to work...

Quote:

Originally Posted by montroisiemecon (Post 3172465)
What the fuck did I just read

Not only this find method is pure garbage, it will just not work on bosses



You would need to sigscan it to find the instance
What is very funny with this structure is the grenade throw force. You can throw nades at 500m on live with this (hello Nikita)

Just note that anything you try to interact with or loot above 4m will be rejected by server

I don't do it much better lol:

Regex.IsMatch(eftPlayer.Name, @"\p{IsCyrillic}")

Yes I do know the proper way to do it.

vianove13 8th July 2021 09:19 PM

Quote:

Originally Posted by swh4641 (Post 3176447)
EFTHardSettings:get_Instance, really hard ye

how to find address of jit compiled mono function? mono_compile_method just throws an exception with valid pointer to MonoMethod in its argument

ZeusLord 8th July 2021 09:22 PM

Quote:

Originally Posted by vianove13 (Post 3177602)
how to find address of jit compiled mono function? mono_compile_method just throws an exception with valid pointer to MonoMethod in its argument

mono_compile_method should give you the ptr to the jit'd code but make sure you are attaching to the mono root domain before calling mono_compile_method. You just pass it the MonoMethod to mono_compile_method and it works atleast that works fine for me I had some issues before with it and it was me not attaching first so give that a shot.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

vianove13 8th July 2021 09:47 PM

Quote:

Originally Posted by ZeusLord (Post 3177604)
mono_compile_method should give you the ptr to the jit'd code but make sure you are attaching to the mono root domain before calling mono_compile_method. You just pass it the MonoMethod to mono_compile_method and it works atleast that works fine for me I had some issues before with it and it was me not attaching first so give that a shot.

thank you. finally i see it in cheat engine monocollector (https://github.com/cheat-engine/chea...erver.cpp#L604)

24jared24 8th July 2021 10:40 PM

Quote:

Originally Posted by AhmedGH (Post 3176986)
Switching current cam to Free cam.. Is that what it's?

Wait can we actually do free cam online? Did I miss this?

nicxio 9th July 2021 02:31 PM

Quote:

Originally Posted by 24jared24 (Post 3177656)
Wait can we actually do free cam online? Did I miss this?

yes i have it like half a year in my cheat and it works its not a real freecam
its like offset from playerbody

24jared24 9th July 2021 06:24 PM

Quote:

Originally Posted by nicxio (Post 3178202)
yes i have it like half a year in my cheat and it works its not a real freecam
its like offset from playerbody

Huh I tried reading the point of view at PlayerBody + 0x70] + 0x18 but got some garbage values, not sure what I'm missing

Brabra1262 9th July 2021 07:14 PM

real freecam is possible... just not public yet

Y33Tcoder 10th July 2021 12:29 AM

Hi all, does anyone happen to know what is the current offset chain to get Player->MovementContext->ViewAngles ?

I tried Player+0x40->+0x204 and Player+0x40->+0x1FC yet it both does not seem to work.

tolessthan350gt 10th July 2021 12:37 AM

Quote:

Originally Posted by Y33Tcoder (Post 3178732)
Hi all, does anyone happen to know what is the current offset chain to get Player->MovementContext->ViewAngles ?

I tried Player+0x40->+0x204 and Player+0x40->+0x1FC yet it both does not seem to work.

it's 0x20C

nikobelic29 10th July 2021 12:53 AM

nevermind.

Y33Tcoder 10th July 2021 01:00 AM

Quote:

Originally Posted by tolessthan350gt (Post 3178738)
it's 0x20C

Ah so it got moved even lower, thanks for the quick reply +rep.

z3500376 10th July 2021 06:42 AM

Quote:

Originally Posted by ZeusLord (Post 3176036)
Concerning door unlocker.. Has anyone tried overwriting WorldInteractiveObject.KeyId to a random key you have in your inventory or overwriting the Template.KeyId of a random key you have in your inventory?

I tried to replace it, it works offline, it will still pull you back to the original position in online mode

Brabra1262 10th July 2021 06:47 AM

Quote:

Originally Posted by Heashey (Post 3173616)
anyone know why all my items are in the same position?
https://gyazo.com/b13d4145e66dd0826522406e6cd4a699

Code:

                uint64_t unity_player = UnityPlayer("UnityPlayer.dll");

                game_object_manager = read<uint64_t>(unity_player + 0x156C698);

                auto active_objects = read<std::array<uint64_t, 2>>(game_object_manager + 0x10);


                gameWorld = GetObjectFromList(active_objects[1], active_objects[0], "GameWorld");

                uint64_t localGameWorld = ReadChain(gameWorld, { 0x30, 0x18, 0x28 });

                uint64_t loot_array = read<uint64_t>(localGameWorld + 0x60);
                uint32_t count = read<uint32_t>(loot_array + 0x18);

                uint64_t get_item_list = read<uint64_t>(loot_array + 0x10);

                for (int i = 0; i < count; i++)
                {
                        uint64_t loot = read<uint64_t>(get_item_list + 0x20 + (i * 0x8));

                        uint64_t itemObject = read<uint64_t>(loot + 0x10);
                        uint64_t itemProfile = read<uint64_t>(itemObject + 0x28);
                        uint64_t m_pInteractive = ReadChain(itemProfile, { 0x10, 0x30, 0x60 });

                        auto target_name = read_ascii(m_pInteractive, 64);

                        uint64_t TransformTwo;
                        if (target_name == "Script")
                                continue;

                        if (in_array(target_name, contNames))
                        {
                                TransformTwo = ReadChain(itemObject, { 0x30, 0x30, 0x8 });
                                uint64_t Transform = ReadChain(TransformTwo, { 0x28 });
                                glm::vec3 containerpos = get_transform_position(Transform);
                        }
                        else {
                                uint64_t m_pItemPosition = read<uint64_t>(TransformTwo + 0x38);
                                glm::vec3 itemCoord = read<glm::vec3>(m_pItemPosition + 0xb0);

                                glm::vec2 item_screen{};

                                if (!world_to_screen(itemCoord, &item_screen))
                                        continue;

                                //printf("%s\n", target_name.c_str());

                                char buf[256];
                                sprintf(buf, "%s", target_name.c_str());
                                DrawStrokeText(item_screen.x, item_screen.y, &Col.white_, buf);
                        }

                        printf("%s\n", target_name.c_str());

                }


yea gana assume they are all at 0,0,0, your chain is incorrect. step through and print out each value and try and debug it to find your issue. its going to be in the "transformtwo" area of which your chain is wrong so step through that specific spots and look around other threads.

POFPE 10th July 2021 07:17 AM

Code:

                uint64_t breath = animation + 0x28;
                breath = memio->read<uint64_t>(breath);
                memio->write<float>(breath + 0xA4, 0.f);//breath intensity

                uint64_t walk = animation + 0x30;
                walk = memio->read<uint64_t>(walk);
                memio->write<float>(walk + 0x44, 0.f);//walk intensity

                uint64_t Motion = animation + 0x38;
                Motion = memio->read<uint64_t>(Motion);
                memio->write<float>(Motion + 0xD0, 0.f);//mt intensity

                uint64_t Force = animation + 0x40;
                Force = memio->read<uint64_t>(Force);
                memio->write<float>(Force + 0x30, 0.f);//forcee intensity

                uint64_t Shot = animation + 0x48;
                Shot = memio->read<uint64_t>(Shot);
                memio->write<float>(Shot + 0x68, 0.f);//shotintensity
                uint64_t alignToZeroFloat22 = animation + 0x22c;
                memio->write<float>(alignToZeroFloat22, 0.f);
                uint64_t displacement= animation + 0x2F4;
                memio->write<float>(displacement, 0.f);
                uint64_t mask= animation + 0x100;
                memio->write<float>(mask,0.f);

Ok. So I saw some Post in this thread related with no recoil.
Seet Breath~Shot Effector's intensity to all 0
and write AligntoZero to 0
and then set displacement to 0 and set mask to 0.
But It always Make fireport Messy, and my aimbot's aim inaccurately.
What I Lost? Thanks.

fusionpak 10th July 2021 08:42 AM

Quote:

Originally Posted by POFPE (Post 3178897)
~ snip ~

Write 1 instead of 0 to mask, it should fix the inaccuracy for the aim, as if you write 0 it just freezes the position where it is (including if the gun is swaying when you write 0)

ConspiracyNomad 10th July 2021 10:53 AM

Having little trouble with stamina, using ptr to physical EFT class and using Stamina and HandsStamina to modificate these values - works fine, but i'm getting delayed banned (maybe 6-10 hours), am i the 1 with this problem?

I don't get banned if not using ulimited stamina

ecthirune 10th July 2021 10:54 AM

Quote:

Originally Posted by ConspiracyNomad (Post 3178978)
Having little trouble with stamina, using ptr to physical EFT class and using Stamina and HandsStamina to modificate these values - works fine, but i'm getting delayed banned (maybe 6-10 hours), am i the 1 with this problem?

I don't get banned if not using ulimited stamina

you banned for other reasons, definitely.
Using this from wipe with no problems.

ConspiracyNomad 10th July 2021 11:33 AM

Quote:

Originally Posted by ecthirune (Post 3178980)
you banned for other reasons, definitely.
Using this from wipe with no problems.

That's strange, using silent aim etc, still not banned, using unlimited stamina - ban

fusionpak 10th July 2021 11:34 AM

Quote:

Originally Posted by ConspiracyNomad (Post 3178998)
That's strange, using silent aim etc, still not banned, using unlimited stamina - ban


same. i�ve used inf stam all wipe with no issues


Sent from my iPhone using Tapatalk

ConspiracyNomad 10th July 2021 11:48 AM

Guys, hwid ban after 1 ban or 2?

fusionpak 10th July 2021 11:49 AM

Quote:

Originally Posted by ConspiracyNomad (Post 3179012)
Guys, hwid ban after 1 ban or 2?


depends, some people like myself have gotten 5+ bans with no HWID ban. others it�s on their first, just buy an RUS/CIS account and find out xD


Sent from my iPhone using Tapatalk

ConspiracyNomad 10th July 2021 12:14 PM

Quote:

Originally Posted by fusionpak (Post 3179014)
depends, some people like myself have gotten 5+ bans with no HWID ban. others it�s on their first, just buy an RUS/CIS account and find out xD


Sent from my iPhone using Tapatalk

My friend got banned, just bought new acc to my friend, i will answer later about whether he can play or he will be banned again


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

hollow 10th July 2021 04:23 PM

Quote:

Originally Posted by ConspiracyNomad (Post 3179012)
Guys, hwid ban after 1 ban or 2?

bsg usually bans your launcher hwid after the first ban

madmax77 10th July 2021 09:46 PM

im having some issues with my loot esp, so i get the position & name fine but some times it draws like random shit like 20 times in one place and when i get close it corrects itself. and i tried it with only the ids so it would draw only ids and it did the same thing so its no the id converting
https://imgur.com/a/RBCg5iX

getting the position
Code:

uintptr_t itemobject = driver::RPM<uintptr_t>(item + 0x10, globals::pid);
                                if (!itemobject) continue;

                                uintptr_t pos_offset = driver::ReadChain(itemobject, { 0x30,0x30,0x8,0x38 }, globals::pid);
                                if (!pos_offset) continue;

                                D3DXVECTOR3 pos = driver::RPM<D3DXVECTOR3>(pos_offset + 0xb0, globals::pid);
                                vec2 screenpos;
                                chetoshit::world_to_screen(pos, &screenpos);

and then how im getting the id and converting it to an actual name
Code:

uintptr_t itemtemplate = driver::ReadChain(item, { 0x10,0x28,0x50,0x38, 0x50 }, globals::pid);
                                        if (!itemtemplate) continue;

                                        int32_t size = driver::RPM<int32_t >(itemtemplate + 0x10, globals::pid);
                                        if (!size) continue;
                                        std::string id = chetoshit::GetUnicodeString(itemtemplate + 0x14, size);
                                        if (id.empty()) continue;

                                        std::string itemname = GetItemName(id);


pinefin 10th July 2021 09:59 PM

Quote:

Originally Posted by madmax77 (Post 3179437)
im having some issues with my loot esp, so i get the position & name fine but some times it draws like random shit like 20 times in one place and when i get close it corrects itself. and i tried it with only the ids so it would draw only ids and it did the same thing so its no the id converting
https://imgur.com/a/RBCg5iX

getting the position
Code:

uintptr_t itemobject = driver::RPM<uintptr_t>(item + 0x10, globals::pid);
                                if (!itemobject) continue;

                                uintptr_t pos_offset = driver::ReadChain(itemobject, { 0x30,0x30,0x8,0x38 }, globals::pid);
                                if (!pos_offset) continue;

                                D3DXVECTOR3 pos = driver::RPM<D3DXVECTOR3>(pos_offset + 0xb0, globals::pid);
                                vec2 screenpos;
                                chetoshit::world_to_screen(pos, &screenpos);

and then how im getting the id and converting it to an actual name
Code:

uintptr_t itemtemplate = driver::ReadChain(item, { 0x10,0x28,0x50,0x38, 0x50 }, globals::pid);
                                        if (!itemtemplate) continue;

                                        int32_t size = driver::RPM<int32_t >(itemtemplate + 0x10, globals::pid);
                                        if (!size) continue;
                                        std::string id = chetoshit::GetUnicodeString(itemtemplate + 0x14, size);
                                        if (id.empty()) continue;

                                        std::string itemname = GetItemName(id);


HOIYL FUCK IM HAVING THE SAME ISSUE MYSELF THOUGHT I WAS THE ONLY ONE

TYGOODSHARE^^ WILL DEBUG THIS LATER

ZeusLord 10th July 2021 11:43 PM

Escape from Tarkov Reversal, Structs and Offsets
 
Quote:

Originally Posted by madmax77 (Post 3179437)
im having some issues with my loot esp, so i get the position & name fine but some times it draws like random shit like 20 times in one place and when i get close it corrects itself. and i tried it with only the ids so it would draw only ids and it did the same thing so its no the id converting
https://imgur.com/a/RBCg5iX

getting the position
Code:

uintptr_t itemobject = driver::RPM&lt;uintptr_t&gt;(item + 0x10, globals::pid);
if (!itemobject) continue;

uintptr_t pos_offset = driver::ReadChain(itemobject, { 0x30,0x30,0x8,0x38 }, globals::pid);
if (!pos_offset) continue;

D3DXVECTOR3 pos = driver::RPM&lt;D3DXVECTOR3&gt;(pos_offset + 0xb0, globals::pid);
vec2 screenpos;
chetoshit::world_to_screen(pos, &screenpos);

and then how im getting the id and converting it to an actual name
Code:

uintptr_t itemtemplate = driver::ReadChain(item, { 0x10,0x28,0x50,0x38, 0x50 }, globals::pid);
if (!itemtemplate) continue;

int32_t size = driver::RPM&lt;int32_t &gt;(itemtemplate + 0x10, globals::pid);
if (!size) continue;
std::string id = chetoshit::GetUnicodeString(itemtemplate + 0x14, size);
if (id.empty()) continue;

std::string itemname = GetItemName(id);



Could possibly be your world to screen? Little weird that it only happens at certain ranges but could be a good start to look there/post code. I am not home atm but I�ll look into it a little more when I�m home.

xzackcc 11th July 2021 03:32 AM

Quote:

Originally Posted by madmax77 (Post 3179437)
im having some issues with my loot esp, so i get the position & name fine but some times it draws like random shit like 20 times in one place and when i get close it corrects itself. and i tried it with only the ids so it would draw only ids and it did the same thing so its no the id converting
https://imgur.com/a/RBCg5iX

getting the position
Code:

uintptr_t itemobject = driver::RPM<uintptr_t>(item + 0x10, globals::pid);
                                if (!itemobject) continue;

                                uintptr_t pos_offset = driver::ReadChain(itemobject, { 0x30,0x30,0x8,0x38 }, globals::pid);
                                if (!pos_offset) continue;

                                D3DXVECTOR3 pos = driver::RPM<D3DXVECTOR3>(pos_offset + 0xb0, globals::pid);
                                vec2 screenpos;
                                chetoshit::world_to_screen(pos, &screenpos);

and then how im getting the id and converting it to an actual name
Code:

uintptr_t itemtemplate = driver::ReadChain(item, { 0x10,0x28,0x50,0x38, 0x50 }, globals::pid);
                                        if (!itemtemplate) continue;

                                        int32_t size = driver::RPM<int32_t >(itemtemplate + 0x10, globals::pid);
                                        if (!size) continue;
                                        std::string id = chetoshit::GetUnicodeString(itemtemplate + 0x14, size);
                                        if (id.empty()) continue;

                                        std::string itemname = GetItemName(id);


To get a single item position you usually want to ..
Code:

        vector3_t get_position() {
                uint64_t obj = kernel->read_memory<uint64_t>(this->GameObject() + 0x30);
                uint64_t ptr_class = kernel->read_memory<uint64_t>(obj + 0x8);
                uint64_t ptr_class_obj = kernel->read_memory<uint64_t>(ptr_class + 0x38);
                return kernel->read_memory<vector3_t>(ptr_class_obj + 0xb0);
        }

GameObject() being ..
Code:

        uint64_t GameObject() {
                if (!Profile())
                        return 0;
                return kernel->read_memory < uint64_t >(this->Profile() + 0x30);
        }

        // and Profile() being ..
        uint64_t Profile() {
                return kernel->read_memory < uint64_t >(object + 0x10); // while object is -> const auto object = kernel->read_memory<uintptr_t>(ptr_itemlist + 0x20 + (i * 0x8));
        }


if the item is a container however, you would want to get its position by the internal matrix logic of the game,
so we do the same as for single item position but instead of returning a vector3 at 0xb0, we push the object (ptr_class_obj) pointer as transform class to our matrix logic
Code:

        vector3_t get_position() {
                uint64_t obj = kernel->read_memory<uint64_t>(this->GameObject() + 0x30);
                uint64_t ptr_class = kernel->read_memory<uint64_t>(obj + 0x8);
                uint64_t ptr_class_obj = kernel->read_memory<uint64_t>(ptr_class + 0x38);
                return this->get_matrix_position(ptr_class_obj);
        }

at this point, you want to use the position of the container as the origin for any item inside that container (this also increases your performance because you don't need to re-calculate basically the same position over and over again for items that are sitting inside the same container).

POFPE 11th July 2021 05:06 AM

Quote:

Originally Posted by fusionpak (Post 3178922)
Write 1 instead of 0 to mask, it should fix the inaccuracy for the aim, as if you write 0 it just freezes the position where it is (including if the gun is swaying when you write 0)

I wrote Mask to 1, and other things all same, But Looks like it always inaccurate.

RaiseHardError 11th July 2021 06:30 AM

Having trouble reading Local Position in Movement Context. Using offset 0x214 however im getting view angles it looks like.

xXBradXx 11th July 2021 12:33 PM

anyone know of a way to get a list of who a player has killed during the raid? or some other way of telling if a player scav is "rogue", meaning killed another scav. i'd like to get to max fence rep but it's slow going not knowing which scavs are gonna give me good karma for killing.

ecthirune 11th July 2021 01:25 PM

Quote:

Originally Posted by xXBradXx (Post 3179772)
anyone know of a way to get a list of who a player has killed during the raid? or some other way of telling if a player scav is "rogue", meaning killed another scav. i'd like to get to max fence rep but it's slow going not knowing which scavs are gonna give me good karma for killing.

Killed during raid: start from this post
About "rogue":
look at stats where you count KDa, there's some fields that may help you.

Im only suggesting, because didn't try what you asking for.

niceone1 11th July 2021 02:30 PM

Quote:

Originally Posted by ecthirune (Post 3179799)
Killed during raid: start from this post
About "rogue":
look at stats where you count KDa, there's some fields that may help you.

Im only suggesting, because didn't try what you asking for.

As far as i know the
Code:

2c0 : LastAggressor (type: EFT.Player)
and
Code:

10 : SessionCounters (type: GClass1479)
are not updating when you are playing online. They will get propper values when you reconnect to a running raid, but they wont get updated when you kill somebody. Correct me if i am wrong.

momopubg 11th July 2021 02:31 PM

Quote:

Originally Posted by xzackcc (Post 3179594)
To get a single item position you usually want to ..
Code:

        vector3_t get_position() {
                uint64_t obj = kernel->read_memory<uint64_t>(this->GameObject() + 0x30);
                uint64_t ptr_class = kernel->read_memory<uint64_t>(obj + 0x8);
                uint64_t ptr_class_obj = kernel->read_memory<uint64_t>(ptr_class + 0x38);
                return kernel->read_memory<vector3_t>(ptr_class_obj + 0xb0);
        }

GameObject() being ..
Code:

        uint64_t GameObject() {
                if (!Profile())
                        return 0;
                return kernel->read_memory < uint64_t >(this->Profile() + 0x30);
        }

        // and Profile() being ..
        uint64_t Profile() {
                return kernel->read_memory < uint64_t >(object + 0x10); // while object is -> const auto object = kernel->read_memory<uintptr_t>(ptr_itemlist + 0x20 + (i * 0x8));
        }


if the item is a container however, you would want to get its position by the internal matrix logic of the game,
so we do the same as for single item position but instead of returning a vector3 at 0xb0, we push the object (ptr_class_obj) pointer as transform class to our matrix logic
Code:

        vector3_t get_position() {
                uint64_t obj = kernel->read_memory<uint64_t>(this->GameObject() + 0x30);
                uint64_t ptr_class = kernel->read_memory<uint64_t>(obj + 0x8);
                uint64_t ptr_class_obj = kernel->read_memory<uint64_t>(ptr_class + 0x38);
                return this->get_matrix_position(ptr_class_obj);
        }

at this point, you want to use the position of the container as the origin for any item inside that container (this also increases your performance because you don't need to re-calculate basically the same position over and over again for items that are sitting inside the same container).

this writeup is perfect, but i bet they still wont be able to fix their p2c :asskiss: +rep

alexanderyy 11th July 2021 03:15 PM

Getting bone poses is not working for me.

bone chain Player->PlayerBody->PlayerBones->Head->original
(Current_player ,0xA8, 0x20, 0xD0, 0x10)

get bone pos function, I used this for rust too. So thought it would work on EFT too

Code:

    Vector3 GetPositionV2(uint64_t transform)
    {
        auto transform_internal = com->read<uint64_t>(transform + 0x10);
        if (!transform_internal)
            return Vector3();

        auto some_ptr = com->read<uint64_t>(transform_internal + 0x38);
        auto index = com->read<int32_t>(transform_internal + 0x38 + sizeof(uint64_t));
        if (!some_ptr)
            return Vector3();

        auto relation_array = com->read<uint64_t>(some_ptr + 0x8);
        if (!relation_array)
            return Vector3();

        auto dependency_index_array = com->read<uint64_t>(some_ptr + 0x10);
        if (!dependency_index_array)
            return Vector3();

        __m128i temp_0;
        __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
        __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
        __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };
        __m128 temp_1;
        __m128 temp_2;
        auto temp_main = com->read<__m128>(relation_array + index * 48);
        auto dependency_index = com->read<int32_t>(dependency_index_array + index);

        while (dependency_index >= 0)
        {
            auto relation_index = 6 * dependency_index;

            temp_0 = com->read<__m128i>(relation_array + 8 * relation_index + 16);
            temp_1 = com->read<__m128>(relation_array + 8 * relation_index + 32);
            temp_2 = com->read<__m128>(relation_array + 8 * relation_index);

            __m128 v10 = _mm_mul_ps(temp_1, temp_main);
            __m128 v11 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 0));
            __m128 v12 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 85));
            __m128 v13 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -114));
            __m128 v14 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -37));
            __m128 v15 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -86));
            __m128 v16 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 113));
            __m128 v17 = _mm_add_ps(
                _mm_add_ps(
                    _mm_add_ps(
                        _mm_mul_ps(
                            _mm_sub_ps(
                                _mm_mul_ps(_mm_mul_ps(v11, xmmword_1410D1350), v13),
                                _mm_mul_ps(_mm_mul_ps(v12, xmmword_1410D1360), v14)),
                            _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), -86))),
                        _mm_mul_ps(
                            _mm_sub_ps(
                                _mm_mul_ps(_mm_mul_ps(v15, xmmword_1410D1360), v14),
                                _mm_mul_ps(_mm_mul_ps(v11, xmmword_1410D1340), v16)),
                            _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 85)))),
                    _mm_add_ps(
                        _mm_mul_ps(
                            _mm_sub_ps(
                                _mm_mul_ps(_mm_mul_ps(v12, xmmword_1410D1340), v16),
                                _mm_mul_ps(_mm_mul_ps(v15, xmmword_1410D1350), v13)),
                            _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 0))),
                        v10)),
                temp_2);

            temp_main = v17;
            dependency_index = com->read<int32_t>(dependency_index_array + dependency_index);
        }

        return *reinterpret_cast<Vector3*>(&temp_main);
    }


hollow 11th July 2021 03:26 PM

Quote:

Originally Posted by alexanderyy (Post 3179890)
bone chain Player->PlayerBody->PlayerBones->Head->original
(Current_player ,0xA8, 0x20, 0xD0, 0x10)

not how you read a list

bhehe6813 11th July 2021 03:31 PM

Quote:

Originally Posted by alexanderyy (Post 3179890)
Getting bone poses is not working for me.

bone chain Player->PlayerBody->PlayerBones->Head->original
(Current_player ,0xA8, 0x20, 0xD0, 0x10)

get bone pos function, I used this for rust too. So thought it would work on EFT too

Code:

    Vector3 GetPositionV2(uint64_t transform)
    {
        auto transform_internal = com->read<uint64_t>(transform + 0x10);
        if (!transform_internal)
            return Vector3();

        auto some_ptr = com->read<uint64_t>(transform_internal + 0x38);
        auto index = com->read<int32_t>(transform_internal + 0x38 + sizeof(uint64_t));
        if (!some_ptr)
            return Vector3();

        auto relation_array = com->read<uint64_t>(some_ptr + 0x8);
        if (!relation_array)
            return Vector3();

        auto dependency_index_array = com->read<uint64_t>(some_ptr + 0x10);
        if (!dependency_index_array)
            return Vector3();

        __m128i temp_0;
        __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
        __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
        __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };
        __m128 temp_1;
        __m128 temp_2;
        auto temp_main = com->read<__m128>(relation_array + index * 48);
        auto dependency_index = com->read<int32_t>(dependency_index_array + index);

        while (dependency_index >= 0)
        {
            auto relation_index = 6 * dependency_index;

            temp_0 = com->read<__m128i>(relation_array + 8 * relation_index + 16);
            temp_1 = com->read<__m128>(relation_array + 8 * relation_index + 32);
            temp_2 = com->read<__m128>(relation_array + 8 * relation_index);

            __m128 v10 = _mm_mul_ps(temp_1, temp_main);
            __m128 v11 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 0));
            __m128 v12 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 85));
            __m128 v13 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -114));
            __m128 v14 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -37));
            __m128 v15 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -86));
            __m128 v16 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 113));
            __m128 v17 = _mm_add_ps(
                _mm_add_ps(
                    _mm_add_ps(
                        _mm_mul_ps(
                            _mm_sub_ps(
                                _mm_mul_ps(_mm_mul_ps(v11, xmmword_1410D1350), v13),
                                _mm_mul_ps(_mm_mul_ps(v12, xmmword_1410D1360), v14)),
                            _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), -86))),
                        _mm_mul_ps(
                            _mm_sub_ps(
                                _mm_mul_ps(_mm_mul_ps(v15, xmmword_1410D1360), v14),
                                _mm_mul_ps(_mm_mul_ps(v11, xmmword_1410D1340), v16)),
                            _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 85)))),
                    _mm_add_ps(
                        _mm_mul_ps(
                            _mm_sub_ps(
                                _mm_mul_ps(_mm_mul_ps(v12, xmmword_1410D1340), v16),
                                _mm_mul_ps(_mm_mul_ps(v15, xmmword_1410D1350), v13)),
                            _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 0))),
                        v10)),
                temp_2);

            temp_main = v17;
            dependency_index = com->read<int32_t>(dependency_index_array + dependency_index);
        }

        return *reinterpret_cast<Vector3*>(&temp_main);
    }


This is quite annoying and killing this thread. Literally every single page is someone asking the same fucking questions over and over. If you spent even 30 seconds searching you'd find your answer.

Head is:

player->PlayerBody->SkeletonRootJoin->BoneTransforms->TransformArray->Head

player->A8->0x28->0x28->0x10->0x448

Not to mention your function is fucked anyways. Matrices is 0x38 and index is 0x40. Literally just fucking search "bones" and you'll find 5000 copy pastable examples, one even by me.

bazharpaster 11th July 2021 03:52 PM

Quote:

Originally Posted by ecthirune (Post 3169720)
they will be probably outdated tomorow, you will ask for it again? :lmao:

yes cuz <3 pasting

madmax77 11th July 2021 04:15 PM

anyone have the list of the container names i remember it being in this thread but cant seem to find it

24jared24 11th July 2021 04:18 PM

Quote:

Originally Posted by madmax77 (Post 3179943)
anyone have the list of the container names i remember it being in this thread but cant seem to find it

some shitty c&p code :)
Code:

        return (name._Equal("lootable") || name._Equal("Ammo_crate_Cap") || name._Equal("Medical_Door") || name._Equal("POS_Money") || name._Equal("Toolbox_Door") || name._Equal("scontainer_Blue_Barrel_Base_Cap") || name._Equal("scontainer_wood_CAP") || name._Equal("suitcase_plastic_lootable_open") || name._Equal("weapon_box_cover") || name._Equal("Grenade_box_Door") || name._Equal("gun_safe_DoorDown") || name._Equal("boor_safe") || name.rfind("card_file_box_", 0) == 0 || name._Equal("container_supplyBox_opened_Cap") || name.rfind("cover_", 0) == 0 || name._Equal("scontainer_ammo_grenade_Door") || name._Equal("item_static_container_moneyBag_03_cover") || 0 == name.compare(name.length() - std::string("cap").length(), std::string("cap").length(), std::string("cap")));

madmax77 11th July 2021 04:25 PM

Quote:

Originally Posted by 24jared24 (Post 3179946)
some shitty c&p code :)
Code:

        return (name._Equal("lootable") || name._Equal("Ammo_crate_Cap") || name._Equal("Medical_Door") || name._Equal("POS_Money") || name._Equal("Toolbox_Door") || name._Equal("scontainer_Blue_Barrel_Base_Cap") || name._Equal("scontainer_wood_CAP") || name._Equal("suitcase_plastic_lootable_open") || name._Equal("weapon_box_cover") || name._Equal("Grenade_box_Door") || name._Equal("gun_safe_DoorDown") || name._Equal("boor_safe") || name.rfind("card_file_box_", 0) == 0 || name._Equal("container_supplyBox_opened_Cap") || name.rfind("cover_", 0) == 0 || name._Equal("scontainer_ammo_grenade_Door") || name._Equal("item_static_container_moneyBag_03_cover") || 0 == name.compare(name.length() - std::string("cap").length(), std::string("cap").length(), std::string("cap")));

thanks :)

xzackcc 11th July 2021 05:39 PM

Quote:

Originally Posted by 24jared24 (Post 3179946)
some shitty c&p code :)
Code:

        return (name._Equal("lootable") || name._Equal("Ammo_crate_Cap") || name._Equal("Medical_Door") || name._Equal("POS_Money") || name._Equal("Toolbox_Door") || name._Equal("scontainer_Blue_Barrel_Base_Cap") || name._Equal("scontainer_wood_CAP") || name._Equal("suitcase_plastic_lootable_open") || name._Equal("weapon_box_cover") || name._Equal("Grenade_box_Door") || name._Equal("gun_safe_DoorDown") || name._Equal("boor_safe") || name.rfind("card_file_box_", 0) == 0 || name._Equal("container_supplyBox_opened_Cap") || name.rfind("cover_", 0) == 0 || name._Equal("scontainer_ammo_grenade_Door") || name._Equal("item_static_container_moneyBag_03_cover") || 0 == name.compare(name.length() - std::string("cap").length(), std::string("cap").length(), std::string("cap")));

Note
Since there were already 2 users misreading and misunderstanding the code .. I am very aware that the following code shouldn't be used to determine whether an item is a container or not.
The reason why I have those is that I implemented container filtering based on its name. (misc feature tho)
Code:

uint64_t item_owner = kernel->read_memory<uint64_t>((item.Interactive() + 0x108)); // 108 : itemOwner
if (item_owner && (features::esp.item.containter_filtering.enabled() && GDK::LootableObject(item.classname)))

----------------------------------------------------------

there are some missing in your list; here is mine:

#edit: nvm, you had cap and cover_ in your list; the formatting on the site is just weird with that one-liner. :D

Code:

        if (object_name.find("cap") != std::string::npos)
                return TRUE;
        if (object_name.find("Ammo_crate_Cap") != std::string::npos)
                return TRUE;
        if (object_name.find("Grenade_box_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("POS_Money") != std::string::npos)
                return TRUE;
        if (object_name.find("Toolbox_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("card_file_box") != std::string::npos)
                return TRUE;
        if (object_name.find("cover_") != std::string::npos)
                return TRUE;
        if (object_name.find("lootable") != std::string::npos)
                return TRUE;
        if (object_name.find("scontainer_Blue_Barrel_Base_Cap") != std::string::npos)
                return TRUE;
        if (object_name.find("scontainer_wood_CAP") != std::string::npos)
                return TRUE;
        if (object_name.find("suitcase_plastic_lootable_open") != std::string::npos)
                return TRUE;
        if (object_name.find("weapon_box_cover") != std::string::npos)
                return TRUE;
        if (object_name.find("Medical_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("gun_safe_DoorDown") != std::string::npos)
                return TRUE;
        if (object_name.find("boor_safe") != std::string::npos)
                return TRUE;
        if (object_name.find("scontainer_ammo_grenade_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("scontainer_ammo_grenade_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("item_static_container_moneyBag_03_cover") != std::string::npos)
                return TRUE;


beepboop5 11th July 2021 05:55 PM

Quote:

Originally Posted by xzackcc (Post 3179995)
there are some missing in your list; here is mine:

#edit: nvm, you had cap and cover_ in your list; the formatting on the site is just weird with that one-liner. :D

Code:

        if (object_name.find("cap") != std::string::npos)
                return TRUE;
        if (object_name.find("Ammo_crate_Cap") != std::string::npos)
                return TRUE;
        if (object_name.find("Grenade_box_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("POS_Money") != std::string::npos)
                return TRUE;
        if (object_name.find("Toolbox_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("card_file_box") != std::string::npos)
                return TRUE;
        if (object_name.find("cover_") != std::string::npos)
                return TRUE;
        if (object_name.find("lootable") != std::string::npos)
                return TRUE;
        if (object_name.find("scontainer_Blue_Barrel_Base_Cap") != std::string::npos)
                return TRUE;
        if (object_name.find("scontainer_wood_CAP") != std::string::npos)
                return TRUE;
        if (object_name.find("suitcase_plastic_lootable_open") != std::string::npos)
                return TRUE;
        if (object_name.find("weapon_box_cover") != std::string::npos)
                return TRUE;
        if (object_name.find("Medical_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("gun_safe_DoorDown") != std::string::npos)
                return TRUE;
        if (object_name.find("boor_safe") != std::string::npos)
                return TRUE;
        if (object_name.find("scontainer_ammo_grenade_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("scontainer_ammo_grenade_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("item_static_container_moneyBag_03_cover") != std::string::npos)
                return TRUE;


Wtf is this shit, looks like bsg pasta, check the ItemOwner inside the LootItem class to find out if its inside a container or not. :lmao:


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

xzackcc 11th July 2021 06:45 PM

Quote:

Originally Posted by beepboop5 (Post 3180002)
Wtf is this shit, looks like bsg pasta, check the ItemOwner inside the LootItem class to find out if its inside a container or not. :lmao:

Huh, I am very aware of that. You might have misread the post and what it is about. He was asking for container names and that is what me and @24jared24 provided.

The reason why I have those is that I implemented container filtering based on its name. (misc feature tho)
Code:

uint64_t item_owner = kernel->read_memory<uint64_t>((item.Interactive() + 0x108)); // 108 : itemOwner
if (item_owner && (features::esp.item.containter_filtering.enabled() && GDK::LootableObject(item.classname)))


fusionpak 11th July 2021 10:34 PM

Quote:

Originally Posted by POFPE (Post 3179627)
~ snip ~

Code:

    uint64_t PWA= Driver::Read<uint64_t>(instance + this->offsets.Player.proceduralWeaponAnimation);
    uint64_t Sway = Driver::Read<uint64_t>(PWA+ 0x28);
    Driver::Write<uint32_t>(PWA + 0x100, 1);
    Driver::Write<float>(Sway + 0xA4, 0.f);

This is what i use myself for no sway, works perfectly fine w no inaccuracies

hollow 12th July 2021 01:02 AM

looked into reading exfil points externally, this is what i've found:

the chain to get to the collider itself is GameWorld->ExfiltrationController->ExfiltrationPoints/ScavExfiltrationPoints->BoxCollider

you are supposed to get the Bounds object of it, which is done by calling 33rd function in vtable of Collider + 0x10:
https://i.imgur.com/OEpVNYM.png

vtable function:
https://i.imgur.com/w5BxmyL.png

too tired to actually look up wtf is up with that function that returns the transform.
0x375B30 in current UnityPlayer.dll if anyone wants to reverse it further.

edit:
i have zero fucking clue what this function does, but pasting it from ida does the trick???

Code:

uint64_t sub_63EC30(uint64_t collider_30, uint64_t some_global_fuckery)
{
    __int64 v2; // rax
    __int64 _some_global_fuckery; // r9
    signed __int64 v4; // r8
    int v5; // edx
    unsigned int v6; // er9

    v2 = memory::read<uint64_t>(collider_30 + 48);
    _some_global_fuckery = some_global_fuckery;
    v4 = v2 + 16i64 * memory::read<uint64_t>(collider_30 + 64);
    if (v2 == v4)
        return 0i64;
    v5 = memory::read<unsigned int>(some_global_fuckery + 48);
    v6 = memory::read<unsigned int>(_some_global_fuckery + 52);
    while (memory::read<unsigned int>(v2) - v5 >= v6)
    {
        v2 += 16i64;
        if (v2 == v4)
            return 0i64;
    }
    return memory::read<uint64_t>(v2 + 8);
}

auto transform_internal = sub_63EC30(memory::read<uint64_t>(collider_internal + 0x30), objects::unity_player + 0x14FA170);

run your favorite pasted get_pos on the transform afterwards

RaiseHardError 12th July 2021 02:36 AM

Can't seem to get my player radar to work

Code:

    float radarScale = 1.0f;
    int localX = 0;
    int localY = 0;
    float localRotation = 180;
   
    //-4 and 3 represent (-4, 3) on a cordinate plane
    const int horDistance = (-4 - localX) * radarScale; //if positive, right, if negative left
    const int vertDistance = (3 - localY) * radarScale; //if positive, above, if negative below

    float quadrant;
    if (horDistance >= 0)
    {
        if (vertDistance >= 0)
            quadrant = 1;
        else
            quadrant = 4;
    }
    else
    {
        if (vertDistance >= 0)
            quadrant = 2;
        else
            quadrant = 3;
    }

    quadrant *= 90;
    quadrant -= std::atan((float)std::abs(vertDistance) / (float)std::abs(horDistance)) * (180 / M_PI);
 
    //valX and valY are simply an offset from the center of the coordinate plane.
    float valX = std::cos((M_PI / 180) * (quadrant - localRotation)) * std::sqrt(std::pow(horDistance, 2) + std::pow(vertDistance, 2));
    float valY = std::sin((M_PI / 180) * (quadrant - localRotation)) * std::sqrt(std::pow(horDistance, 2) + std::pow(vertDistance, 2));

This is some code I wrote to translate a point in this case (-4, 3) by the localRotation degree. However with EFT this is difficult because its rotations are not the same.

For example, in EFT when you rotate left the degrees go (0, -90, -180, -270) however when you rotate right they got (0, 90, 180, 270)
0 starts at north, however on a normal circle, that the code above is for, 0 would start on the east.

I wrote this to translate the rotation

Code:

        if (localRotation > 0)
            localRotation -= 360;

        localRotation *= -1;
        localRotation -= 90;

        if (localRotation > 360)
            localRotation = localRotation - 360;

however even with that it doesn't work. I get players teleporting and me walking in the wrong direction of the actual enemies. What is wrong with my calculation, what am I overthinking, and how can I properly move an XY coordinate around my position using my localRotation. Thank you!

xXBradXx 12th July 2021 06:49 AM

Quote:

Originally Posted by xzackcc (Post 3179995)
there are some missing in your list; here is mine:

#edit: nvm, you had cap and cover_ in your list; the formatting on the site is just weird with that one-liner. :D

Code:

        if (object_name.find("cap") != std::string::npos)
                return TRUE;
        if (object_name.find("Ammo_crate_Cap") != std::string::npos)
                return TRUE;
        if (object_name.find("Grenade_box_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("POS_Money") != std::string::npos)
                return TRUE;
        if (object_name.find("Toolbox_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("card_file_box") != std::string::npos)
                return TRUE;
        if (object_name.find("cover_") != std::string::npos)
                return TRUE;
        if (object_name.find("lootable") != std::string::npos)
                return TRUE;
        if (object_name.find("scontainer_Blue_Barrel_Base_Cap") != std::string::npos)
                return TRUE;
        if (object_name.find("scontainer_wood_CAP") != std::string::npos)
                return TRUE;
        if (object_name.find("suitcase_plastic_lootable_open") != std::string::npos)
                return TRUE;
        if (object_name.find("weapon_box_cover") != std::string::npos)
                return TRUE;
        if (object_name.find("Medical_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("gun_safe_DoorDown") != std::string::npos)
                return TRUE;
        if (object_name.find("boor_safe") != std::string::npos)
                return TRUE;
        if (object_name.find("scontainer_ammo_grenade_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("scontainer_ammo_grenade_Door") != std::string::npos)
                return TRUE;
        if (object_name.find("item_static_container_moneyBag_03_cover") != std::string::npos)
                return TRUE;


don't do this, check that the ItemOwner pointer in the LootableContainer object is not null to tell if the item is a container. LootableContainer is item + 0x10] + 0x30] and ItemOwner is LootableContainer + 0x108

Quote:

Originally Posted by hollow (Post 3180349)
yep

there's already info in this thread on how to get exfil positions and names that don't need this extra function from IDA

Yf04zKTh12Te 12th July 2021 07:55 AM

Quote:

Originally Posted by hollow (Post 3180349)
snip

sub_63EC30 queries gameobject for a component by a runtime type, you pass it 2 args - the game object and the runtime type to query it for.

tansform is a component so - transform + 0x30 is the game object its attached to

after getting the transform from the function you just grab its position and return it :)

EDIT: your '_some_global_fuckery' variable is the address of the Transform runtime type

here is partial snippet of how to work with unity types

Code:

public class TypeManager
{
        public TypeManager(ulong address)
        {
                Address = address;
        }

        public ulong Address { get; }

        public Dictionary<string, ulong> GetRegisteredTypes()
        {
                var arrayBase = Memory.Read<ulong>(Address + 0x18);

                var count = Memory.Read<uint>(Address + 0x20);

                var lastEntry = arrayBase + count + (2 * (0xC + count));

                var ret = new Dictionary<string, ulong>();

                while (arrayBase < lastEntry)
                {
                        if (Memory.Read<uint>(arrayBase) < 0xFFFFFFFE)
                        {
                                var typeName = MemoryHelper.ReadNarrowString(arrayBase + 0x8);

                                var typeAddress = Memory.Read<ulong>(arrayBase + 0x10);

                                ret.Add(typeName, typeAddress);
                        }

                        arrayBase += 0x18;
                }

                return ret;
        }

        public ulong FindTypeByName(string targetTypeName)
        {
                var arrayBase = Memory.Read<ulong>(Address + 0x18);

                var count = Memory.Read<uint>(Address + 0x20);

                var lastEntry = arrayBase + count + (2 * (0xC + count));

                while (arrayBase < lastEntry)
                {
                        if (Memory.Read<uint>(arrayBase) < 0xFFFFFFFE)
                        {
                                var typeAddress = arrayBase + 0x10;

                                var typeName = MemoryHelper.ReadNarrowString(arrayBase + 0x8);

                                if (typeName.Equals(targetTypeName, StringComparison.OrdinalIgnoreCase))
                                {
                                        return typeAddress;
                                }
                        }

                        arrayBase += 0x18;
                }

                return 0;
        }

        public Dictionary<string, ulong> GetAllDerivedTypes(ulong unityTypeAddress)
        {
                var unityType = Memory.Read<ulong>(unityTypeAddress);

                var typeIndex = Memory.Read<uint>(unityType + 0x30);

                var derivedCount = Memory.Read<uint>(unityType + 0x34);

                var total = typeIndex + derivedCount;

                var ret = new Dictionary<string, ulong>();

                if (typeIndex < total)
                {
                        var typeList = Memory.Read<ulong>(Address);

                        var startIndex = 8 * typeIndex;

                        do
                        {
                                var derivedType = Memory.Read<ulong>(typeList + startIndex + 0x8);

                                var derviedTypeName = MemoryHelper.ReadNarrowString(derivedType + 0x10);

                                ret.Add(derviedTypeName, derivedType);

                                startIndex += 0x8;

                                derivedCount--;

                        } while (derivedCount > 0);
                }

                return ret;
        }
}

public static void Test()
{
        var typeManagerAddress = Memory.Read<ulong>(MemoryContext.ModuleAddress + 0x156C690); // UnityPlayer.dll + 0x156C690

        var typeManager = new TypeManager(typeManagerAddress);

        var registeredTypes = typeManager.GetRegisteredTypes();

        var unityType = typeManager.FindTypeByName("Object");

        var derivedTypes = typeManager.GetAllDerivedTypes(unityType);
}

https://media.discordapp.net/attachm...801&height=493

this functionality can be further extended into very interesting stuff, but its for another day

@Razchek sry ;)

Razchek 12th July 2021 11:50 AM

Quote:

Originally Posted by hollow (Post 3180349)
~snip

Nice research, but you went a little deeper than needed haha. Never the less, it's something reversed and not pasted. That is something that can always be appreciated.

You are currently getting the reference to the collider component, then the GameObject that it's attached to, then getting the transform component from the gObj, and then finally getting the transform position from that component.
Exfil > Collider > GameObject > FindTransformComponent > GetPos

Although the following is only one less step, you could instead just get the GameObject from the ExfiltrationPoint component, and then the transform component and position.
Exfil > GameObject > FindTransformComponent > GetPos

If you want to iterate the components and find the transform component each time. Here is my implementation of unity's GetComponents (external):
https://www.unknowncheats.me/forum/2...-post2694.html

If you want the quick path, here's a transform 'shortcut' for ExFils (because the transform component is always at index zero in this context):
Code:

// If you write chains, make sure to comment each offset so you know wtf is going on. :)
// 0x10 = (Unity::Component)m_CachedPtr (internal unity component)
// 0x30 = GameObject gameObject
// 0x30 = gameObject.dynamic_array<GameObject::ComponentPair,0> m_Component (ComponentArray)
// 0x8  = First Index + 0x8 (ImmediatePtr<Unity::Component> component)
// 0x28 = Component's class address
var transformComponent = Memory.ReadChain(exfilPoint, 0x10, 0x30, 0x30, 0x8, 0x28);
var worldLocation = GetPosition(transformComponent);

Some symbol information added to your IDA snippets:
@Yf04zKTh12Te hit the nail on the head there. Nice snippet for type association, but those double line breaks kill my eyes man haha

hollow 12th July 2021 01:53 PM

Quote:

Originally Posted by Yf04zKTh12Te (Post 3180504)
...

Quote:

Originally Posted by Razchek (Post 3180603)
...

guess knowing how unity works would've helped me here lol

BIG thanks for the explanation and a commented chain instead of magic numbers :)

edit: may i ask where/how you got the symbols? would be of great help in situations like this

goldchain 12th July 2021 02:53 PM

I researched the EFT game for about 1 week when I started to reverse engineer the game, I will continue my research. But there are some questions in my brain that I can't answer. (I am constantly writing because I have a vitamin B12 deficiency). I would like to present my research to people who have done research on this game before. I would be very happy if you write me about my mistakes and suggestions.

(1) The game should be analyzed on Offline mode, if we don't want to take any more risks, it should be analyzed on EmuTarkov.

(2) Sclient.dll file caught some signs showing activity as Anti-Cheat. SClient.dll uses questionable Windows APIs. It also makes checks on the register.
Is it useful to unload the DLL at runtime as a bypass method? or would it work to use the force-kill method?

My goal will be to read the game memory. The first activity I will do is I think I should have access to the Local Player Object. The memory areas I want to read are: Health status (my own health status), Usernames of the players in the game, and my own coordinates in the game.

RonaldWeezly 12th July 2021 05:19 PM

Quote:

Originally Posted by montroisiemecon (Post 3171510)
Yes there are at least 2 methods



hmm? :chinese:

hollow 12th July 2021 06:54 PM

Quote:

Originally Posted by goldchain (Post 3180722)
(2) Sclient.dll file caught some signs showing activity as Anti-Cheat. SClient.dll uses questionable Windows APIs. It also makes checks on the register.
Is it useful to unload the DLL at runtime as a bypass method? or would it work to use the force-kill method?

i believe eft doesn�t use anything other than battleye. please correct me if i�m wrong.

goldchain 12th July 2021 07:03 PM

Quote:

Originally Posted by hollow (Post 3180929)
i believe eft doesn�t use anything other than battleye. please correct me if i�m wrong.

You may be right about this.

Yf04zKTh12Te 12th July 2021 08:12 PM

recently i been putting some time to reverse Transform object and decided to rewrite my GetPosition function to utilize .net support for SIMD intrinsics

so fellas who target runtime above netcore 3.0 may find this snippet interesting

Code:

public class Transform : Component
{
        #region Xmm
        private static readonly Vector128<float> Xmm300 = Vector128.Create(-2f, -2f, 2f, 0f);
        private static readonly Vector128<float> Xmm320 = Vector128.Create(-2f, 2f, -2f, 0f);
        private static readonly Vector128<float> Xmm330 = Vector128.Create(2f, -2f, -2f, 0f);
        private static readonly Vector128<float> Xmm610 = Vector128.Create(0f, 0f, 0f, 0f);
        private static readonly Vector128<float> Xmm520 = Vector128.Create(-1f, -1f, -1f, 0f);
        private static readonly Vector128<float> Xmm690 = Vector128.Create(0f, 0f, 0f, 0f);
        private static readonly Vector128<float> XmmDe0 = Vector128.Create(1f, 1f, 1f, 1f);
        #endregion

        private readonly ulong _verticesAddress;

        public Transform(ulong address) : base(address)
        {
                var hierarchy = Memory.Read<ulong>(Address + Offsets.Transform.Hierarchy);

                var indicesAddress = Memory.Read<ulong>(hierarchy + Offsets.TransformHierarchy.Indices);

                _verticesAddress = Memory.Read<ulong>(hierarchy + Offsets.TransformHierarchy.Vertices);

                HierarchyIndex = Memory.Read<int>(Address + Offsets.Transform.Index);

                HierarchyCapacity = Memory.Read<int>(hierarchy + Offsets.TransformHierarchy.Capacity);

                HierarchyCount = Memory.Read<int>(hierarchy + Offsets.TransformHierarchy.Count);

                Indices = MemoryHelper.ReadIntegers(indicesAddress, HierarchyIndex + 1); // address, count
        }

        private int HierarchyIndex { get; }

        private int HierarchyCount { get; }

        private int HierarchyCapacity { get; }

        private List<int> Indices { get; }

        public Vector3 Forward => GetRotation().Multiply(Vector3.UnitZ);

        public Vector3 GetPosition()
        {
                var vertices = MemoryHelper.ReadVertices128(_verticesAddress, 3 * HierarchyIndex + 3); // Reference v9/v10 in IDA

                var index = Indices[HierarchyIndex]; // Indices + 4 * capacity

                var result = vertices[3 * HierarchyIndex]; // Vertices + 0x30 * capacity

                while (index >= 0)
                {
                        var v9 = vertices[3 * index + 1].AsInt32(); // Vertices + 0x30 * index + 0x10

                        var v10 = Sse.Multiply(vertices[3 * index + 2], result); // Vertices + 0x30 * index + 0x20

                        var v11 = Sse2.Shuffle(v9, 0).AsSingle();
                        var v12 = Sse2.Shuffle(v9, 0x71).AsSingle();
                        var v13 = Sse2.Shuffle(v9, 0x8E).AsSingle();
                        var v14 = Sse2.Shuffle(v9, 0x55).AsSingle();
                        var v15 = Sse2.Shuffle(v9, 0xAA).AsSingle();
                        var v16 = Sse2.Shuffle(v9, 0xDB).AsSingle();

                        result = Sse.Add(
                                                Sse.Add(
                                                        Sse.Add(
                                                                Sse.Multiply(
                                                                        Sse.Subtract(
                                                                                Sse.Multiply(Sse.Multiply(v11, Xmm330), v13),
                                                                                Sse.Multiply(Sse.Multiply(v14, Xmm300), v16)),
                                                                        Sse2.Shuffle(v10.AsInt32(), 0xAA).AsSingle()),
                                                                Sse.Multiply(
                                                                        Sse.Subtract(
                                                                                Sse.Multiply(Sse.Multiply(v15, Xmm300), v16),
                                                                                Sse.Multiply(Sse.Multiply(v11, Xmm320), v12)),
                                                                        Sse2.Shuffle(v10.AsInt32(), 0x55).AsSingle())),
                                                        Sse.Add(
                                                                Sse.Multiply(
                                                                        Sse.Subtract(
                                                                                Sse.Multiply(Sse.Multiply(v14, Xmm320), v12),
                                                                                Sse.Multiply(Sse.Multiply(v15, Xmm330), v13)),
                                                                        Sse2.Shuffle(v10.AsInt32(), 0).AsSingle()),
                                                        v10)),
                                                vertices[3 * index]); // Vertices + 0x30 * index

                        index = Indices[index]; // Indices + 4 * index
                }

                return result.AsVector3();
        }

        public Quaternion GetRotation()
        {
                var vertices = MemoryHelper.ReadVertices128(_verticesAddress, 3 * HierarchyIndex + 3);

                var index = Indices[HierarchyIndex];

                var v6 = vertices[3 * HierarchyIndex].AsInt32();

                if (index >= 0)
                {
                        var v9 = Sse2.And(Xmm520.AsInt32(), Xmm610.AsInt32());

                        var v11 = Sse.And(Sse2.Shuffle(Vector128<int>.Zero, 0).AsSingle(), Xmm690);

                        do
                        {
                                var v14 = vertices[3 * index + 1]; // Vertices + 0x30 * index + 0x10

                                var v15 = Sse2.Xor(Sse2.And(Xmm610.AsInt32(), vertices[3 * index + 2].AsInt32()), XmmDe0.AsInt32()); // Vertices + 0x30 * index + 0x20

                                index = Indices[index]; // Indices + 4 * index

                                var v16 = Sse2.Xor(
                                        Sse2.And(Xmm610.AsInt32(),
                                                Sse.Or(
                                                        Sse.AndNot(
                                                                Xmm690,
                                                                Sse.Multiply(Sse2.Shuffle(v15, 0x41).AsSingle(),
                                                                        Sse2.Shuffle(v15, 0x9A).AsSingle())),
                                                        v11).AsInt32()),
                                        v6).AsSingle();

                                v6 = Sse2.Xor(
                                        v9,
                                        Sse2.Shuffle(
                                                Sse.Subtract(
                                                        Sse.Subtract(
                                                                Sse.Subtract(
                                                                        Sse.Multiply(v14, Sse2.Shuffle(v16.AsInt32(), 0xD2).AsSingle()),
                                                                        Sse2.Shuffle(
                                                                                Sse.Multiply(v14, Sse2.Shuffle(v16.AsInt32(), 0x88).AsSingle()).AsInt32(),
                                                                                0x1E).AsSingle()),
                                                                Sse2.Shuffle(
                                                                        Sse.Multiply(Sse2.Shuffle(v14.AsInt32(), 0xAF).AsSingle(), v16).AsInt32(),
                                                                        0x8D).AsSingle()),
                                                        Sse2.Shuffle(
                                                                Sse.Multiply(
                                                                        Sse.MoveLowToHigh(v14, v14),
                                                                        Sse2.Shuffle(v16.AsInt32(), 0xF5).AsSingle()).AsInt32(),
                                                                0x63).AsSingle()).AsInt32(),
                                                0xD2));

                        } while (index >= 0);
                }

                var vec4 = v6.AsSingle().AsVector4();

                return new Quaternion
                {
                        X = vec4.X,
                        Y = vec4.Y,
                        Z = vec4.Z,
                        W = vec4.W
                };
        }
}

public static class QuaternionExtensions
{
        public static Vector3 Multiply(this Quaternion rotation, Vector3 point)
        {
                // Pasted from UnityEngine.Quaternion * operator overload

                var num = rotation.X * 2f;
                var num2 = rotation.Y * 2f;
                var num3 = rotation.Z * 2f;
                var num4 = rotation.X * num;
                var num5 = rotation.Y * num2;
                var num6 = rotation.Z * num3;
                var num7 = rotation.X * num2;
                var num8 = rotation.X * num3;
                var num9 = rotation.Y * num3;
                var num10 = rotation.W * num;
                var num11 = rotation.W * num2;
                var num12 = rotation.W * num3;

                return new Vector3
                {
                        X = (1f - (num5 + num6)) * point.X + (num7 - num12) * point.Y + (num8 + num11) * point.Z,
                        Y = (num7 + num12) * point.X + (1f - (num4 + num6)) * point.Y + (num9 - num10) * point.Z,
                        Z = (num8 - num11) * point.X + (num9 + num10) * point.Y + (1f - (num4 + num5)) * point.Z
                };
        }
}

public struct Transform
{
        public const uint Hierarchy = 0x38;
        public const uint Index = 0x40;
        public const uint ChildCount = 0x80;
        public const uint Parent = 0x90;
}

public struct TransformHierarchy
{
        public const uint Capacity = 0x10;
        public const uint Count = 0x14;
        public const uint Vertices = 0x18;
        public const uint Indices = 0x20;
        public const uint TransformHierarchyList = 0x30;
}

just few key notes
- GetPosition function been tested and works great for me, didnt benchmark directly against the old one but clearly can see improved frame times.
- GetRotation is not fully tested yet, i rewrote it based on IDA output and it shares some similarities with GetPosition, might need few tweaks with deref (or not)

folks who write in native obviously have access to intrisincs so the main take is that you may notice that i dont do redundant reads for indices for each call as they dont change for Transforms lifetime.

Im sure there is room for improvement here but just this alone already boosted my performance so ill share it as is, enjoy :beerchug:

RaiseHardError 12th July 2021 09:30 PM

Hello, there is something wrong with my aimbot,
Code:

//*this is the position of localPlayer's head
    Vector delta = *this - enemyPos;
    float pitchDeg = std::asin(delta.y / delta.GetLength()) * (180/M_PI);
    float yawDeg = -std::atan2(delta.x, -delta.z) * (180/M_PI);
 
    yawDeg = yawDeg * (180/M_PI);
    pitchDeg = pitchDeg * (180/M_PI);

    if (yawDeg < -360.F)
        yawDeg += 360.F;
    if (yawDeg > 360.F)
        yawDeg -= 360.F;
    if (pitchDeg < -360.F)
        pitchDeg += 360.F;
    if (pitchDeg > 360.F)
        pitchDeg -= 360.F;

    //X Y Z constructor
    return Vector(std::clamp(yawDeg, -360.F, 360.F), std::clamp(pitchDeg, -90.F, 90.F), 0);
...
//Write this angle
    localPlayer.GetMovementContext()->WriteAngles({angle.x, angle.y})
...
//WriteAngles function angles_1 being 0x20C
    Driver::Write<2DVec>(classAddress + angles_1 , angle);

I get a ton if jittering and teleporting around. Dunno what im doing wrong, any help appreciated!

Quote:

Originally Posted by RaiseHardError (Post 3181046)
I get a ton if jittering and teleporting around. Dunno what im doing wrong, any help appreciated!

I just realized I was turning a radian into a degree twice, however still didnt fix the problem

hollow 12th July 2021 11:05 PM

Quote:

Originally Posted by RaiseHardError (Post 3181046)
Hello, there is something wrong with my aimbot,

Code:

    FAngles vector_angles()
    {
        return FAngles{ rad_to_deg(atan2(x, y)), rad_to_deg(atan2(z, sqrt(x * x + y * y))) }; // yaw, pitch
    }

    FAngles get_angle(FVector& origin, FVector& dest)
    {
        FVector diff = origin - dest;

        return diff.vector_angles();
    }

    auto angle = get_angle(fireport, aim_head);
    angle.y -= 180.f;

:flowers1:

eee2424 13th July 2021 02:24 AM

need some help
 
attempting to make external and the only issue im running into is grabbing gameworld when i send my activeobjects through GetObjectFromList it returns because activeObject and LastObject are the same and i cannot figure it out anyone know how i can fix? ignore the duplicate "activeObject1" didnt realize

https://imgur.com/aEe1FHh

Razchek 13th July 2021 02:25 AM

Quote:

Originally Posted by hollow (Post 3180685)
~
edit: may i ask where/how you got the symbols? would be of great help in situations like this

I use a similar version of Unity to get the official PDB, since I couldn't find the matching version:
- 2018.4.24.3174801/2018.4.24f1_3071911a89e9, GUID: 102F9A1E-CAF6-4DAD-BB18-C88E2BD4C571
UnityPlayer.dll & UnityPlayer.pdb Download

Should you ever need to cross reference code you can just signature a function and find that in the other version of the library in IDA.
If you end up downloading Unity 2018.4.24, the UnityPlayer.dll is in the folder:
Unity\2018.4.24f1\Editor\Data\PlaybackEngines\windowsstandalonesupport\Variations\win64_nondevelopment_mono

Tarkov uses:
- 2018.4.28.16323839/2018.4.28f1_f914ff158b2a, GUID: 3C2764B9-6B48-47FE-9362-B666C3C9A7

For some games you can get the PDB for UnityPlayer.dll straight from Unity's symbol server: https://symbolserver.unity3d.com/
  1. First get the debug path & guid from UnityPlayer.dll's PE headers
    https://i.imgur.com/urx1shA.png
  2. Browse to the corresponding directory on the symbol server (in this case: UnityPlayer_Win64_mono_x64.pdb)
  3. Find the matching GUID (102F9A1ECAF64DADBB18C88E2BD4C5711, take note to include the additional trailing '1')
  4. The resulting directory will have a file with the extension '.pd_'. This is actually a microsoft cabinet file (.cab). Open it with 7-zip or any other decompression lib that supports it
  5. Extract the file and enjoy~

The bonus about using the PDBs from the symbol server is that they're packed with type information, so you can easily identify structs. Definitely recommend going that route and downloading the symbols from there. :)

RaiseHardError 13th July 2021 03:17 AM

Quote:

Originally Posted by hollow (Post 3181129)
~snip~

Thanks! :asskiss:

krembo 13th July 2021 10:31 AM

Quote:

Originally Posted by Razchek (Post 3181274)
~

Nice method, I'm doing it differently, create a unity project with the major and minor versions you want, then you can build dev/prod with the pdb.
Then just analyze them in ida and use bindiff on the game dll.

hollow 13th July 2021 01:08 PM

Quote:

Originally Posted by Razchek (Post 3181274)
...

that�s good stuff, huge thanks!


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

VollRagm 13th July 2021 06:48 PM

Quote:

Originally Posted by Razchek (Post 3181274)
I use a similar version of Unity to get the official PDB, since I couldn't find the matching version:
- 2018.4.24.3174801/2018.4.24f1_3071911a89e9, GUID: 102F9A1E-CAF6-4DAD-BB18-C88E2BD4C571
UnityPlayer.dll & UnityPlayer.pdb Download

 Moderator note  Approved for analysis.

File Approved
  • SHA256: D0320D690DF081A39AA973C9C92D2E667172AAEB38E681FEA6B7D63221380040 - win64_nondevelopment_mono_[unknowncheats.me]_.7z
Interested in how we analyze files? Click here to find out.

Thanks for sharing.

RaiseHardError 13th July 2021 07:41 PM

Has anyone else had issues with the game crashing in the post raid screen? After clicking next the Unity crash helpers pops up. Have a feeling its something to do with setting animation values to 0?
Also have crashing when I begin firing my gun.

Edit: fixed

bhehe6813 14th July 2021 02:58 AM

Quote:

Originally Posted by montroisiemecon (Post 2972672)
Glad i could help. In order to avoid misplacement of the crosshair (meaning your crosshair will not perfectly be on 0,0), I suggest you set float_22 to 0 on procedural

What float is this? Do you know the original function that contained it? Float_22 isn't too helpful months later haha.

Razchek 14th July 2021 05:38 AM

Quote:

Originally Posted by VollRagm (Post 3182045)
Thanks for sharing.

Ty :)
Quote:

Originally Posted by hollow (Post 3181682)
that’s good stuff, huge thanks!

No worries!


Quote:

Originally Posted by bhehe6813 (Post 3182518)
What float is this? Do you know the original function that contained it? Float_22 isn't too helpful months later haha.

Hahaha I think he was referencing this:

Code:

public void UpdateSwaySettings()
{
        this.HandsContainer.SwaySpring._dampingRatio = Mathf.Lerp(EFTHardSettings.Instance.SWAY_DAMPING_NORMAL_DAMAGED.x, EFTHardSettings.Instance.SWAY_DAMPING_NORMAL_DAMAGED.y, this.\uE03C + this.Overweight);
        this.HandsContainer.SwaySpring._angularFrequency = Mathf.Lerp(EFTHardSettings.Instance.SWAY_FREQ_NORMAL_DAMAGED.x, EFTHardSettings.Instance.SWAY_FREQ_NORMAL_DAMAGED.y, this.\uE03C + this.Overweight);
}

Code:

this.\uE03C
Code:

EFT.Animations.ProceduralWeaponAnimation->single_0x35C // Offset: 0x035C (Type: Single)
There are more, just check all the sway related methods in the ProceduralWeaponAnimation class and you should be able to find all the variables you want to zero.
(I don't know all of these off the top of my head sorry, I 'soft' aim using reads only)

bhehe6813 14th July 2021 02:57 PM

Quote:

Originally Posted by Razchek (Post 3182609)
Ty :)No worries!




Hahaha I think he was referencing this:

Code:

public void UpdateSwaySettings()
{
        this.HandsContainer.SwaySpring._dampingRatio = Mathf.Lerp(EFTHardSettings.Instance.SWAY_DAMPING_NORMAL_DAMAGED.x, EFTHardSettings.Instance.SWAY_DAMPING_NORMAL_DAMAGED.y, this.\uE03C + this.Overweight);
        this.HandsContainer.SwaySpring._angularFrequency = Mathf.Lerp(EFTHardSettings.Instance.SWAY_FREQ_NORMAL_DAMAGED.x, EFTHardSettings.Instance.SWAY_FREQ_NORMAL_DAMAGED.y, this.\uE03C + this.Overweight);
}

Code:

this.\uE03C
Code:

EFT.Animations.ProceduralWeaponAnimation->single_0x35C // Offset: 0x035C (Type: Single)
There are more, just check all the sway related methods in the ProceduralWeaponAnimation class and you should be able to find all the variables you want to zero.
(I don't know all of these off the top of my head sorry, I 'soft' aim using reads only)

He could be referring to this one (uE01F). Setting it to zero would eliminate that if statement logic:

Code:

                public bool IsAiming
                {
                        get
                        {
                                return this.\uE011 && Mathf.Abs(this.BlindfireBlender.Target) < 1f;
                        }
                        set
                        {
                                this.\uE011 = value;
                                this.CameraSmoothBlender.ChangeValue(this.CameraSmoothSteady, 0f);
                                if (this.\uE01F > 0f)
                                {
                                        this.\uE021.Value = 1f;
                                        this.\uE020 = this.\uE01F * this.IntensityByPoseLevel * new Vector3(UnityEngine.Random.Range(this.AimSwayMin.x, this.AimSwayMax.x), UnityEngine.Random.Range(this.AimSwayMin.y, this.AimSwayMax.y), UnityEngine.Random.Range(this.AimSwayMin.z, this.AimSwayMax.z));
                                }
                                if (this.\uE011 && this.\uE034.StiffDraw)
                                {
                                        this.Breath.StiffUntill = Time.time + 3f;
                                }
                                this.\uE010();
                                if (this.\uE011)
                                {
                                        this.\uE008();
                                        this.\uE009();
                                        this.\uE001();
                                        return;
                                }
                                this.\uE007();
                        }
                }

What I'm trying to solve is bullets not hitting at crosshair location while using instant hit (firecontroller speedfactor). I'm not modifying mask (I modify each effector instead). I'll also take a look at modifying the one you showed. I already correct zero'ing by writing to opticcalibrationpoints, but recently have been having bullets land left and right of the crosshair, which could be sway that I'm not seeing since I have the effectors cranked down.

montroisiemecon 14th July 2021 03:39 PM

Quote:

Originally Posted by bhehe6813 (Post 3182935)
He could be referring to this one (uE01F). Setting it to zero would eliminate that if statement logic:

Code:

                public bool IsAiming
                {
                        get
                        {
                                return this.\uE011 && Mathf.Abs(this.BlindfireBlender.Target) < 1f;
                        }
                        set
                        {
                                this.\uE011 = value;
                                this.CameraSmoothBlender.ChangeValue(this.CameraSmoothSteady, 0f);
                                if (this.\uE01F > 0f)
                                {
                                        this.\uE021.Value = 1f;
                                        this.\uE020 = this.\uE01F * this.IntensityByPoseLevel * new Vector3(UnityEngine.Random.Range(this.AimSwayMin.x, this.AimSwayMax.x), UnityEngine.Random.Range(this.AimSwayMin.y, this.AimSwayMax.y), UnityEngine.Random.Range(this.AimSwayMin.z, this.AimSwayMax.z));
                                }
                                if (this.\uE011 && this.\uE034.StiffDraw)
                                {
                                        this.Breath.StiffUntill = Time.time + 3f;
                                }
                                this.\uE010();
                                if (this.\uE011)
                                {
                                        this.\uE008();
                                        this.\uE009();
                                        this.\uE001();
                                        return;
                                }
                                this.\uE007();
                        }
                }

What I'm trying to solve is bullets not hitting at crosshair location while using instant hit (firecontroller speedfactor). I'm not modifying mask (I modify each effector instead). I'll also take a look at modifying the one you showed. I already correct zero'ing by writing to opticcalibrationpoints, but recently have been having bullets land left and right of the crosshair, which could be sway that I'm not seeing since I have the effectors cranked down.

\uE01F // 0x22c

bhehe6813 14th July 2021 06:32 PM

Quote:

Originally Posted by montroisiemecon (Post 3182976)
\uE01F // 0x22c

Yeah, that's what I figured. Thanks :)


Have you gotten any of the skills like attention and search to work? I don't seem to loot or search any faster. Also, do you know the best way to do skills? Right now I'm doing this to modify the level, and set the buffs.


Code:

            M.Write(5100.0f, skills.pIntellect + 0x2C);
            var intellectBuffs = intellect.BuffList;
            foreach (var buff in intellectBuffs)
            {
                switch (buff.Id)
                {
                    case Classes.EBuffId.IntellectEliteAmmoCounter:
                        buff.SetBoolValue(true);
                        break;
                    case Classes.EBuffId.IntellectEliteContainerScope:
                        buff.SetBoolValue(true);
                        break;
                    case Classes.EBuffId.IntellectEliteNaturalLearner:
                        buff.SetBoolValue(true);
                        break;
                    case Classes.EBuffId.IntellectLearningSpeed:
                        buff.SetFloatValue(100.0f);
                        break;
                }
            }

The functions (setfloatvalue and setboolvalue) are just this:

Code:

            public void SetFloatValue(float value)
            {
                M.Write(value, pBuffPtr + 0x28);
            }
            public void SetBoolValue(bool value)
            {
                M.Write(value ? (byte)1 : (byte)0, pBuffPtr + 0x28);
            }


tolessthan350gt 14th July 2021 06:37 PM

Quote:

Originally Posted by bhehe6813 (Post 3183132)
Yeah, that's what I figured. Thanks :)


Have you gotten any of the skills like attention and search to work? I don't seem to loot or search any faster. Also, do you know the best way to do skills? Right now I'm doing this to modify the level, and set the buffs.


Code:

            M.Write(5100.0f, skills.pIntellect + 0x2C);
            var intellectBuffs = intellect.BuffList;
            foreach (var buff in intellectBuffs)
            {
                switch (buff.Id)
                {
                    case Classes.EBuffId.IntellectEliteAmmoCounter:
                        buff.SetBoolValue(true);
                        break;
                    case Classes.EBuffId.IntellectEliteContainerScope:
                        buff.SetBoolValue(true);
                        break;
                    case Classes.EBuffId.IntellectEliteNaturalLearner:
                        buff.SetBoolValue(true);
                        break;
                    case Classes.EBuffId.IntellectLearningSpeed:
                        buff.SetFloatValue(100.0f);
                        break;
                }
            }

The functions (setfloatvalue and setboolvalue) are just this:

Code:

            public void SetFloatValue(float value)
            {
                M.Write(value, pBuffPtr + 0x28);
            }
            public void SetBoolValue(bool value)
            {
                M.Write(value ? (byte)1 : (byte)0, pBuffPtr + 0x28);
            }


for instant examine i also write to AttentionExamine (0x158), check if that works for you

krembo 14th July 2021 07:03 PM

Quote:

Originally Posted by bhehe6813 (Post 3183132)
~

Ignore the levels, just set the buffs.
There are some limits for what you can set that the game will ignore after certain point.
I'm not doing instant search, but I'm doing it for others.
For the elite levels, easiest is to set your character to max skills in spt-aki/emu-tarkov and use them.
You can also calculate them from the dll, but I was too lazy for that.

xkp95175333 14th July 2021 07:22 PM

Quote:

Originally Posted by igromanru (Post 3102874)
I'm on v0.12.9.10988, and 0x156B698 is right there.
I just found the problem. GameWorld doesn't exist if you start the game without NPCs.


can giveme sig ?

bhehe6813 15th July 2021 01:14 AM

Quote:

Originally Posted by igromanru (Post 3102874)
I'm on v0.12.9.10988, and 0x156B698 is right there.
I just found the problem. GameWorld doesn't exist if you start the game without NPCs.

GameWorld def exists even if you don't start the game with NPCs.

Here's what I'm guessing:

1. You copy pasted the get object from list code that EXCLUDES the last element (coding error), but spawning in NPCs causes you to get another controller in your object list, which pushes GameWorld away from the last position.
2. There are two instances of GameWorld in the object list, but this seems unlikely.
3. Your getobjectfromlist code is just wrong perhaps?

Code:

        public static IntPtr GetObjectFromList(IntPtr listPtr, IntPtr lastObjectPtr, string objectName)
        {
            try
            {
                var activeObject = M.Read<BaseObject>(listPtr);
                var lastObject = M.Read<BaseObject>(lastObjectPtr);

                if (activeObject._object != IntPtr.Zero)
                    while (activeObject._object != IntPtr.Zero && activeObject._object != lastObject._object)
                    {
                        var classNamePtr = M.Read<IntPtr>((IntPtr)((ulong)activeObject._object + 0x60));
                        var name = M.ReadStr(classNamePtr, 256);

                        if (name == objectName)
                        {
                            return activeObject._object;
                        }


                        activeObject = M.Read<BaseObject>(activeObject.nextObjectLink);
                    }

                if (lastObject._object != IntPtr.Zero)
                {
                    var classNamePtr = M.Read<IntPtr>(lastObject._object + 0x60);
                    var name = M.ReadStr(classNamePtr, 256);

                    if (name == objectName)
                    {
                        return lastObject._object;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine([email protected]"[GO] Exception Thrown: {e}");
            }

            return IntPtr.Zero;
        }

Usage:

Code:

                    var pObjectManager = M.Read<IntPtr>(H.pObjectManager); // this is 0x156C698
                    var objectManager = M.Read<Classes.GameObjectManager>(pObjectManager);
                    var gameWorld = GetObjectFromList(objectManager.activeObjects,
                            objectManager.lastActiveObject, "GameWorld");
                    var gameWorldPtr = ReadChain(GameWorld, new List<uint>(new uint[] { 0x30, 0x18, 0x28 }));


bhehe6813 15th July 2021 08:40 PM

Anyone know how to tell the item is a corpse? I know there is the corpse id 55d7217a4bdc2d86028b456d but this doesn't seem to work on some maps? My corpse ESP is only working on like Woods, and a few other maps:

snippet
Code:

                        var itemNext = M.Read<IntPtr>(itemPtr + 0x10);
                        var item = M.Read<ItemWrapper>(itemNext);

                        var interactiveClass = item.InteractiveClass;
                        var baseObject = interactiveClass.BaseItem;
                        var gameObject = baseObject.BaseGameObject;
                        var gameObjectName = gameObject.GameObjectName;
                        var objectClass = gameObject.GameObjectClass;

                        if (Util.IsLootableObject(gameObjectName.ToLower()))
                        {


                        } else {
                            InventoryLogicItem _item = interactiveClass.InventoryLogicItem;
                           
                            ItemTemplate _itemTemplate = _item.ItemTemplate;
                            string _id = _itemTemplate.Id;
                            if (_id == "")
                                return;
                            if (_id == "55d7217a4bdc2d86028b456d" && Settings.bDrawCorpse)
                            {
                                Player player = interactiveClass.PlayerBody.PlayerBones.Player;
                                if (player.pPlayerBody == IntPtr.Zero)
                                    return;
                                var name = player.PlayerProfile.PlayerInfo.PlayerName;
                                if (name.Length == 0)
                                    name = "player";
                                Vector3 position = player.PlayerBody.SkeletonRootJoin.BoneEnumerator.BoneArray.Test.TransformInternal.BoneInfo.position;
                        }


ZeusLord 15th July 2021 08:52 PM

Quote:

Originally Posted by bhehe6813 (Post 3184192)
Anyone know how to tell the item is a corpse? I know there is the corpse id 55d7217a4bdc2d86028b456d but this doesn't seem to work on some maps? My corpse ESP is only working on like Woods, and a few other maps:

snippet
Code:

                        var itemNext = M.Read&lt;IntPtr&gt;(itemPtr + 0x10);
                        var item = M.Read&lt;ItemWrapper&gt;(itemNext);

                        var interactiveClass = item.InteractiveClass;
                        var baseObject = interactiveClass.BaseItem;
                        var gameObject = baseObject.BaseGameObject;
                        var gameObjectName = gameObject.GameObjectName;
                        var objectClass = gameObject.GameObjectClass;

                        if (Util.IsLootableObject(gameObjectName.ToLower()))
                        {


                        } else {
                            InventoryLogicItem _item = interactiveClass.InventoryLogicItem;
                           
                            ItemTemplate _itemTemplate = _item.ItemTemplate;
                            string _id = _itemTemplate.Id;
                            if (_id == "")
                                return;
                            if (_id == "55d7217a4bdc2d86028b456d" && Settings.bDrawCorpse)
                            {
                                Player player = interactiveClass.PlayerBody.PlayerBones.Player;
                                if (player.pPlayerBody == IntPtr.Zero)
                                    return;
                                var name = player.PlayerProfile.PlayerInfo.PlayerName;
                                if (name.Length == 0)
                                    name = "player";
                                Vector3 position = player.PlayerBody.SkeletonRootJoin.BoneEnumerator.BoneArray.Test.TransformInternal.BoneInfo.position;
                        }



If you wanna do it the bad but easier way there is always checking the name of it

JudischerHund 15th July 2021 08:52 PM

Quote:

Originally Posted by bhehe6813 (Post 3184192)
Anyone know how to tell the item is a corpse? I know there is the corpse id 55d7217a4bdc2d86028b456d but this doesn't seem to work on some maps? My corpse ESP is only working on like Woods, and a few other maps:

snippet
Code:

                        var itemNext = M.Read<IntPtr>(itemPtr + 0x10);
                        var item = M.Read<ItemWrapper>(itemNext);

                        var interactiveClass = item.InteractiveClass;
                        var baseObject = interactiveClass.BaseItem;
                        var gameObject = baseObject.BaseGameObject;
                        var gameObjectName = gameObject.GameObjectName;
                        var objectClass = gameObject.GameObjectClass;

                        if (Util.IsLootableObject(gameObjectName.ToLower()))
                        {


                        } else {
                            InventoryLogicItem _item = interactiveClass.InventoryLogicItem;
                           
                            ItemTemplate _itemTemplate = _item.ItemTemplate;
                            string _id = _itemTemplate.Id;
                            if (_id == "")
                                return;
                            if (_id == "55d7217a4bdc2d86028b456d" && Settings.bDrawCorpse)
                            {
                                Player player = interactiveClass.PlayerBody.PlayerBones.Player;
                                if (player.pPlayerBody == IntPtr.Zero)
                                    return;
                                var name = player.PlayerProfile.PlayerInfo.PlayerName;
                                if (name.Length == 0)
                                    name = "player";
                                Vector3 position = player.PlayerBody.SkeletonRootJoin.BoneEnumerator.BoneArray.Test.TransformInternal.BoneInfo.position;
                        }


Code:

Item Profile -> Item Information + 0x60 == "Superior" || "Bot"
Works all the time

bhehe6813 15th July 2021 09:07 PM

Quote:

Originally Posted by JudischerHund (Post 3184208)
Code:

Item Profile -> Item Information + 0x60 == "Superior" || "Bot"
Works all the time

What are you calling Item profile and item information? What game classes are those? Is that parent name in template?

JudischerHund 15th July 2021 09:20 PM

Quote:

Originally Posted by bhehe6813 (Post 3184215)
What are you calling Item profile and item information? What game classes are those? Is that parent name in template?

Code:

Item List ] Item Entry + 0x10 (Item Profile) ] 0x30 (Item Info)

ecthirune 15th July 2021 09:21 PM

Quote:

Originally Posted by bhehe6813 (Post 3184192)
Anyone know how to tell the item is a corpse? I know there is the corpse id 55d7217a4bdc2d86028b456d

item Id works 100% perfect on any map.

bhehe6813 15th July 2021 09:53 PM

Quote:

Originally Posted by bhehe6813 (Post 3184215)
What are you calling Item profile and item information? What game classes are those? Is that parent name in template?

Quote:

Originally Posted by JudischerHund (Post 3184223)
Code:

Item List ] Item Entry + 0x10 (Item Profile) ] 0x30 (Item Info)

Thanks, I get that another way. It turns out this was my issue:


Code:

                var itemPtrData = M.Read(list.listBase + 0x20, Math.Min(5000, list.itemCount * 0x8));
I thought that was a large enough limit on it, but on Reserve for instance there are 1000+ items. I changed this to a much higher number now, and my corpse ESP is working :)

montroisiemecon 15th July 2021 09:53 PM

Quote:

Originally Posted by bhehe6813 (Post 3184192)
Anyone know how to tell the item is a corpse? I know there is the corpse id 55d7217a4bdc2d86028b456d but this doesn't seem to work on some maps? My corpse ESP is only working on like Woods, and a few other maps:

snippet
Code:

                        var itemNext = M.Read<IntPtr>(itemPtr + 0x10);
                        var item = M.Read<ItemWrapper>(itemNext);

                        var interactiveClass = item.InteractiveClass;
                        var baseObject = interactiveClass.BaseItem;
                        var gameObject = baseObject.BaseGameObject;
                        var gameObjectName = gameObject.GameObjectName;
                        var objectClass = gameObject.GameObjectClass;

                        if (Util.IsLootableObject(gameObjectName.ToLower()))
                        {


                        } else {
                            InventoryLogicItem _item = interactiveClass.InventoryLogicItem;
                           
                            ItemTemplate _itemTemplate = _item.ItemTemplate;
                            string _id = _itemTemplate.Id;
                            if (_id == "")
                                return;
                            if (_id == "55d7217a4bdc2d86028b456d" && Settings.bDrawCorpse)
                            {
                                Player player = interactiveClass.PlayerBody.PlayerBones.Player;
                                if (player.pPlayerBody == IntPtr.Zero)
                                    return;
                                var name = player.PlayerProfile.PlayerInfo.PlayerName;
                                if (name.Length == 0)
                                    name = "player";
                                Vector3 position = player.PlayerBody.SkeletonRootJoin.BoneEnumerator.BoneArray.Test.TransformInternal.BoneInfo.position;
                        }


Code:

bool IsCorpse(const LootItem& lootItem)
{
    return lootItem.playerSide == 1 || lootItem.playerSide == 2 || lootItem.playerSide == 4;
}

uint32_t playerSide; // 0x140

bhehe6813 15th July 2021 09:54 PM

Quote:

Originally Posted by ecthirune (Post 3184224)
item Id works 100% perfect on any map.

Yeah I had a different issue.

Quote:

Originally Posted by montroisiemecon (Post 3184250)
Code:

bool IsCorpse(const LootItem& lootItem)
{
    return lootItem.playerSide == 1 || lootItem.playerSide == 2 || lootItem.playerSide == 4;
}

uint32_t playerSide; // 0x140

Thanks this is definetly the most efficient way, reading ids and strings when I don't need to isn't good.

Quote:

Originally Posted by montroisiemecon (Post 3184250)
Code:

bool IsCorpse(const LootItem& lootItem)
{
    return lootItem.playerSide == 1 || lootItem.playerSide == 2 || lootItem.playerSide == 4;
}

uint32_t playerSide; // 0x140

I got it. ptr from list -> 0x140.

Code:

                        var playerSide = (EPlayerSide)M.Read<int>(itemPtr + 0x140);

                        if (playerSide == EPlayerSide.Bear || playerSide == EPlayerSide.Usec || playerSide == EPlayerSide.Savage)
                        {



All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

ecthirune 15th July 2021 11:18 PM

Quote:

Originally Posted by bhehe6813 (Post 3184249)
I changed this to a much higher number now, and my corpse ESP is working :)

why you hardcode amount of items, if you can read amount of items in game-list and call "renew stored data" only if count changes?

yurchik 15th July 2021 11:53 PM

am i retarded or is there not a simple way to zero the scope range externally?

atm im finding OpticCalibrationPoints through PWA->ShotEffector->InventoryLogic.Weapon then running it back an entire struct to get the first set of CalibrationPoints since its the 2nd set if you take this chain then simply searching downwards in memory by struct size to get the rest.

also anyone know which skill buffs are worth modifying for an advantage?

for Strength JumpHeight anyone know if its safe to boost? i calculated max you can do based on weight but not sure if you have to first check if the buff is available( > level 0 strength)

bhehe6813 16th July 2021 03:54 AM

Quote:

Originally Posted by ecthirune (Post 3184329)
why you hardcode amount of items, if you can read amount of items in game-list and call "renew stored data" only if count changes?

I hardcode a limit, not the number of items of course.

I hardcore a limit because I've come across a few times when either leaving the raid (while local player is still valid) or entering the raid, where the count will be something like 10 million. That's going to read gigabytes upon gigabytes of data. It's just a safety limit on the amount of data that can be read. My driver is high performance and will accept queries for your entire ram in size rather than the default length most people have (which is the max length of a byte array). I don't hardcode a limit in the memory class because I use the same class to do stuff like dump the entire game's memory for debug/analysis purposes.

Quote:

Originally Posted by yurchik (Post 3184364)
am i retarded or is there not a simple way to zero the scope range externally?

atm im finding OpticCalibrationPoints through PWA->ShotEffector->InventoryLogic.Weapon then running it back an entire struct to get the first set of CalibrationPoints since its the 2nd set if you take this chain then simply searching downwards in memory by struct size to get the rest.

also anyone know which skill buffs are worth modifying for an advantage?

for Strength JumpHeight anyone know if its safe to boost? i calculated max you can do based on weight but not sure if you have to first check if the buff is available( > level 0 strength)

I do optic calibration points differently. You can set to zero, it's fine. It just doesn't show in the UI but it will work. I simply overwrite the first zero'ing option and instruct my users to press page up and then page down.

Read the existing calibration (x,y,z) and modify the Z to 0, keep the X/Y the same or it fucks with things. What I do is store a cache related to the item ptr so I don't need to read the calibration array over and over.

InventoryLogicWeapon -> 0x98 (pOpticCalibrationPointsArray) -> 0x20 (first calibration point vector3)

My struct layout:

Code:


        [StructLayout(LayoutKind.Explicit)]


        public struct OpticCalibrationPointArray
        {

            [FieldOffset(0x20)] public Vector3 mode0;
        }

In c++ you would simply add padding until 0x20.

Quote:

Originally Posted by yurchik (Post 3184364)
am i retarded or is there not a simple way to zero the scope range externally?

atm im finding OpticCalibrationPoints through PWA->ShotEffector->InventoryLogic.Weapon then running it back an entire struct to get the first set of CalibrationPoints since its the 2nd set if you take this chain then simply searching downwards in memory by struct size to get the rest.

also anyone know which skill buffs are worth modifying for an advantage?

for Strength JumpHeight anyone know if its safe to boost? i calculated max you can do based on weight but not sure if you have to first check if the buff is available( > level 0 strength)

You can boost to whatever you want offline. Online it just rubberbands you if you go to far. The limit I have from testing is 0.64f for StrengthBuffJumpHeightInc.

XzThabestzX 16th July 2021 04:23 AM

Quote:

Originally Posted by bhehe6813 (Post 3184531)
You can boost to whatever you want offline. Online it just rubberbands you if you go to far. The limit I have from testing is 0.64f for StrengthBuffJumpHeightInc.

iirc ApplyTeleportPacket (0x06005A2D) / Teleport (0x06006FB2) is responsible for the rubberbanding. You could try returning out of those and you shouldn't rubberband anymore.

bhehe6813 16th July 2021 04:33 AM

Quote:

Originally Posted by XzThabestzX (Post 3184542)
iirc ApplyTeleportPacket (0x06005A2D) / Teleport (0x06006FB2) is responsible for the rubberbanding. You could try returning out of those and you shouldn't rubberband anymore.

Probably difficult externally to mess with packets. You can mess with some (such as skill packets by rewriting skill id to something else which makes it fail the lookup), I'll have to look at how the teleport packets are used.

Does anyone know a good method of smoothing aimbot angles without too much overhead? This isn't necessarily related to EFT, but the current smoothing I use is this:

Code:

smoothAngle = (fov > 0.5 ? H.LocalPlayer.LocalViewAngles3 + ((angle - H.LocalPlayer.LocalViewAngles3) / ConfigSettings.AimbotSmooth) : angle);
I guess this is "Step smoothing" and it kinda performs like ass for pretty obvious reasons.

yurchik 16th July 2021 04:55 AM

Quote:

Originally Posted by bhehe6813 (Post 3184531)
I do optic calibration points differently. You can set to zero, it's fine. It just doesn't show in the UI but it will work. I simply overwrite the first zero'ing option and instruct my users to press page up and then page down.

Read the existing calibration (x,y,z) and modify the Z to 0, keep the X/Y the same or it fucks with things. What I do is store a cache related to the item ptr so I don't need to read the calibration array over and over.

InventoryLogicWeapon -> 0x98 (pOpticCalibrationPointsArray) -> 0x20 (first calibration point vector3)

My struct layout:

Code:


        [StructLayout(LayoutKind.Explicit)]


        public struct OpticCalibrationPointArray
        {

            [FieldOffset(0x20)] public Vector3 mode0;
        }

In c++ you would simply add padding until 0x20.



You can boost to whatever you want offline. Online it just rubberbands you if you go to far. The limit I have from testing is 0.64f for StrengthBuffJumpHeightInc.

Yeah, InventoryWeapon + 0x98 is where im at, problem is its 1 array down. i have to find the same ptr back some bytes and that one is the initial array(i did all of it already just saying thats what happens to me im 1 instance down probably cuz of the way im accessing it).

Idk from where you are accessing the CalibrationPointArray but for me i have to change Y not Z unless you are talking standard vector3.

also why do you need to bother caching anything? simply store the previous ptr to FireArmController and when it changes update the CalibrationPoints thats what i do you dont ever need to pg up or pg down since its applied on weapon swap. also, what i did was take the initial vector and invert the up/down to a positive value and store the rest of the vectors with that vector so even if you pg up/down it performs as the lowest zeroing.

about StrengthBuffJump, does it flag you for ban if you set StrengthBuffJumpHeightInc + 0x28? is there a limit to it that causes ban on live tarkov? do you need to check that you have the buff available first?

ecthirune 16th July 2021 06:46 AM

Quote:

Originally Posted by yurchik (Post 3184555)

about StrengthBuffJump, does it flag you for ban if you set StrengthBuffJumpHeightInc + 0x28? is there a limit to it that causes ban on live tarkov? do you need to check that you have the buff available first?

No flag, yes, there is the limit, calculated to carried weight, overlimit will rubber and shake you. No ban for any value, only server limitation for speed/weight/jumping

xzackcc 16th July 2021 10:25 AM

does anyone know what skills are safe to set?

24jared24 16th July 2021 02:11 PM

Quote:

Originally Posted by xzackcc (Post 3184733)
does anyone know what skills are safe to set?

From my testing all skills are "safe" in that you won't get banned. But anything that will make you move faster/further or carry more weight will get you rubber banded. So pretty much setting endurance/str values too high or turning on str elite effect doesn't work

giejqf 16th July 2021 05:52 PM

Does anyone know how safe is shot through walls? I assume they have implemented serverside raycast check?

Sweethamcheeks 17th July 2021 01:00 AM

Anyone know how to distinguish between player scav and PMC?

ZeusLord 17th July 2021 01:03 AM

Quote:

Originally Posted by Sweethamcheeks (Post 3185308)
Anyone know how to distinguish between player scav and PMC?


Has been posted here before just look back a little. However, just check their side and to determine if they are a player scav check if their side is scavenger and if the registration date is &gt; 0

xXBradXx 17th July 2021 02:04 AM

Quote:

Originally Posted by Sweethamcheeks (Post 3185308)
Anyone know how to distinguish between player scav and PMC?

Player -> PlayerProfile (0x458) -> PlayerInfo (0x28) -> side int (0x50)
1 for USEC 2 for bear and 4 for scav

for more about what they are you can also check the role value which is
PlayerInfo -> Settings (0x38) -> role int (0x10)
they made this a bit flag for some reason so to get the regular number from this get the base 2 log of this value and you'll get which bit is set. once u got that these are the values



note: it also just occurred to me that the side values are all powers of two and is actually also a bit flag for no reason

AhmedGH 17th July 2021 03:02 AM

Question, is modifying Bullet Speed is now detected? I set to 10.f and got banned weird..

xzackcc 17th July 2021 08:38 AM

Quote:

Originally Posted by AhmedGH (Post 3185391)
Question, is modifying Bullet Speed is now detected? I set to 10.f and got banned weird..

Must be something else. Using _speedFactor works just fine.

Sent with Samsung S20 Note Ultra 5G @ Tapatalk

giejqf 17th July 2021 09:39 AM

Quote:

Originally Posted by AhmedGH (Post 3185391)
Question, is modifying Bullet Speed is now detected? I set to 10.f and got banned weird..

In EFT.ClientFirearmController.FirearmPacket there is a member ShotsForApprovement. A member of this struct is ShotTrajectoryParts, and StartVelocity is there.

The StartVelocity is set by a function named GetShotInfo() and copied from \uE91B.StartVelocity.

And \uE91B.StartVelocity is originally set in EFT.BallisticsCalculator.CreateShot() where
Code:

float num2 = ammo.InitialSpeed * speedFactor;
So it is detectable in serverside if you modify ammo.InitialSpeed or speedFactor to a out-of-range value to achieve instant hit.

POFPE 17th July 2021 10:01 AM

Quote:

Originally Posted by AhmedGH (Post 3185391)
Question, is modifying Bullet Speed is now detected? I set to 10.f and got banned weird..

Same shit problem XDD
I got banned Today. Not rlly sure why
But I edited Speed factor's Value to 8.f

Null Terminator 17th July 2021 01:02 PM

I�ve been looking at the bullet class in dnspy (from the list of shots from ballistic calculator) and movement context for a while and trying a million different things for silent aim but can�t get anything working, should I look at another class or am I missing something.

montroisiemecon 17th July 2021 02:06 PM

Quote:

Originally Posted by Null Terminator (Post 3185671)
I’ve been looking at the bullet class in dnspy (from the list of shots from ballistic calculator) and movement context for a while and trying a million different things for silent aim but can’t get anything working, should I look at another class or am I missing something.

This list will give you nothing offline. Try another one

JudischerHund 17th July 2021 03:52 PM

There was a huge banwave in the EFT p2c market, it seems like a feature is detected. Either no stamina or bullet speed modification


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

hollow 17th July 2021 03:56 PM

can confirm they might be banning for bullet speed modification now, got banned in 3 hours yesterday

either that or they didn't like me cleaning labs 10 times in a row

Null Terminator 17th July 2021 05:12 PM

Quote:

Originally Posted by montroisiemecon (Post 3185705)
This list will give you nothing online. Try another one

I get the list perfectly fine online and use it for shoot thru walls :) was hoping I could use it for silent too :(

Avibzi 17th July 2021 05:32 PM

Quote:

Originally Posted by hollow (Post 3185773)
can confirm they might be banning for bullet speed modification now, got banned in 3 hours yesterday

either that or they didn't like me cleaning labs 10 times in a row

what offset r u modifying? _speedFactor? i'm safe using it

xXBradXx 17th July 2021 05:40 PM

Quote:

Originally Posted by JudischerHund (Post 3185768)
There was a huge banwave in the EFT p2c market, it seems like a feature is detected. Either no stamina or bullet speed modification

im using stamina cheat with no ban

hollow 17th July 2021 07:45 PM

Quote:

Originally Posted by Avibzi (Post 3185858)
what offset r u modifying? _speedFactor?

quite literally doesn't matter, initial speed is in the bullet info class that's sent to the server

montroisiemecon 17th July 2021 10:24 PM

Quote:

Originally Posted by Null Terminator (Post 3185840)
I get the list perfectly fine online and use it for shoot thru walls :) was hoping I could use it for silent too :(

miswrote
the list will give you nothing offline

Quote:

Originally Posted by hollow (Post 3185965)
quite literally doesn't matter, initial speed is in the bullet info class that's sent to the server

some of my users report more frequent bans.
there are suspicions they could log the distance at which you kill people on the server side and do some shit with that

hollow 18th July 2021 02:32 AM

Quote:

Originally Posted by montroisiemecon (Post 3186078)
some of my users report more frequent bans.
there are suspicions they could log the distance at which you kill people on the server side and do some shit with that

in this case, might be checking something related to bullet drop but, like, wtf? makes more sense to just check initial speed.

either way, guess that is the push i needed to make proper bullet drop/speed prediction

crazian 18th July 2021 05:27 AM

Quote:

Originally Posted by hollow (Post 3186186)
in this case, might be checking something related to bullet drop but, like, wtf? makes more sense to just check initial speed.

either way, guess that is the push i needed to make proper bullet drop/speed prediction

bullet speed makes sense, but bullet drop? if they really can detect bullet drop, they can detect aimbot, can't they?

POFPE 18th July 2021 06:26 AM

Quote:

Originally Posted by crazian (Post 3186272)
bullet speed makes sense, but bullet drop? if they really can detect bullet drop, they can detect aimbot, can't they?

Looks like He meant This is best time to make Prediction aimbot XD

xzackcc 18th July 2021 09:28 PM

out of curiosity, has anyone looked into the map timer/time left thingy as well as getting the current map name?

the only class i found sits at the local game world, which contains the start and end unix timestamp (apparently in real-world time, unsure)

abandoncaptian 18th July 2021 11:17 PM

I'm trying my hand at making an external hack that only reads from memory, is there a way I can play in offline mode so I can do my debugging and such and not worry about battle eye.

sp-tarkov and emutarkov are both out of date so I don't know how else to make and test cheats.

alexanderyy 19th July 2021 01:23 AM

How are people filtering items in categories like consumables, weapons, and such? I have been looking for a bit, but can't seem to find anything

Haven't seen this posted in a while, here are the updated prices

Code:

std::unordered_map<std::string, std::pair<std::string, int>> EFT_ItemNames = {
{"590c621186f774138d11ea29",        {"Flash drive",        37335}},
{"590c392f86f77444754deb29",        {"SSD",        32989}},
{"5a1eaa87fcdbcb001865f75e",        {"REAP-IR",        309573}},
{"5c110624d174af029e69734c",        {"T-7",        15372000}},
{"5d1b33a686f7742523398398",        {"Superwater",        105175}},
{"5c0558060db834001b735271",        {"GPNVG-18",        119709}},
{"5b6d9ce188a4501afc1b2b25",        {"T H I C C",        6042014}},
{"5b7c710788a4506dec015957",        {"Lucky Scav",        966537}},
{"5c1d0c5f86f7744bb2683cf0",        {"Blue",        6042713}},
{"5c94bbff86f7747ee735c08f",        {"Access",        202656}},
{"59fb016586f7746d0d4b423a",        {"MCase",        396401}},
{"5c0126f40db834002a125382",        {"RedRebel",        3462490}},
{"5aafbde786f774389d0cbc0f",        {"Ammo",        145210}},
{"5c12613b86f7743bbe2c3f76",        {"Intelligence",        119590}},
{"59faff1d86f7746c51718c9c",        {"0.2BTC",        204537}},
{"590c60fc86f77412b13fddcf",        {"DocCase",        430483}},
{"5aafbcd986f7745e590fff23",        {"MedCase",        284525}},
{"59e3639286f7741777737013",        {"BLion",        370522}},
{"5c0a840b86f7742ffa4f2482",        {"T H I C C",        10969182}},
{"5ad5d7d286f77450166e0a89",        {"KIBA outer",        408437}},
{"5d1b376e86f774252519444e",        {"Moonshine",        147207}},
{"57347ca924597744596b4e71",        {"GPU",        310057}},
{"59fafd4b86f7745ca07e1232",        {"Key tool",        637728}},
{"5a13ef0686f7746e5a411744",        {"W219 San",        128637}},
{"59e35cbb86f7741778269d83",        {"Hose",        42594}},
{"5d235bb686f77443f4331278",        {"S I C C",        750000}},
{"5c127c4486f7745625356c13",        {"MagCase",        310078}},
{"5c1d0d6d86f7744bb2683e1f",        {"Yellow",        61646}},
{"5448ba0b4bdc2d02308b456c",        {"Factory",        64475}},
{"5c1e495a86f7743109743dfb",        {"Violet",        2966841}},
{"5a13f35286f77413ef1436b0",        {"E226 San",        84217}},
{"5733279d245977289b77ec24",        {"Car batt.",        122457}},
{"5d1b2f3f86f774252167a52c",        {"FP-100",        101619}},
{"5d03794386f77420415576f5",        {"Tank battery",        761361}},
{"5c1d0f4986f7744bb01837fa",        {"Black",        4244444}},
{"5c0530ee86f774697952d952",        {"LEDX",        427617}},
{"5c1d0dc586f7744baf2e7b79",        {"Green",        146000}},
{"5c1d0efb86f7744baf2e7b7b",        {"Red",        35006944}},
{"5da5cdcd86f774529238fb9b",        {"RB-RH",        91117}},
{"5d9f1fa686f774726974a992",        {"RB-ST",        836035}},
{"5d95d6fa86f77424484aa5e9",        {"RB-PSP2",        80846}},
{"5d947d3886f774447b415893",        {"RB-SMP",        459266}},
{"5d947d4e86f774447b415895",        {"RB-KSM",        258061}},
{"5d8e0db586f7744450412a42",        {"RB-KORL",        123821}},
{"5d80cd1a86f77402aa362f42",        {"RB-ORB3",        162322}},
{"5d80cb8786f774405611c7d9",        {"RB-PP",        45314}},
{"5d80cb3886f77440556dbf09",        {"RB-PSP1",        107975}},
{"5d80cab086f77440535be201",        {"RB-MP22 key",        690437}},
{"5d80ca9086f774403a401e40",        {"RB-MP21",        64347}},
{"5d80cbd886f77470855c26c2",        {"RB-MP13",        54835}},
{"5d80c93086f7744036212b41",        {"RB-MP11",        67963}},
{"5d80c88d86f77440556dbf07",        {"RB-AM",        202315}},
{"5d80c6c586f77440351beef1",        {"RB-OB",        199632}},
{"5d80c62a86f7744036212b3f",        {"RB-VO mark.",        70259}},
{"5d80c60f86f77440373c4ece",        {"RB-BK mark.",        74374}},
{"5ad5db3786f7743568421cce",        {"EMC",        227384}},
{"5d8e0e0e86f774321140eb56",        {"RB-KPRL",        807777}},
{"5a0eed4386f77405112912aa",        {"E314 San",        35803}},
{"5a0eecf686f7740350630097",        {"E313 San",        74301}},
{"5a145d4786f7744cbb6f4a12",        {"E306 San",        91729}},
{"5a0ee4b586f7743698200d22",        {"E206 San",        51340}},
{"5a144bdb86f7741d374bbde0",        {"E205 San",        63325}},
{"5a0ea64786f7741707720468",        {"E107 San",        68387}},
{"5a145d7b86f7744cbb6f4a13",        {"E308 San",        72705}},
{"5a13f46386f7741dd7384b04",        {"W306 San",        232629}},
{"5a13ef7e86f7741290491063",        {"W301 San",        289719}},
{"5a1452ee86f7746f33111763",        {"W222 San",        67258}},
{"5a0ee37f86f774023657a86f",        {"W221 San",        58863}},
{"5a0ee34586f774023b6ee092",        {"W220 San",        177231}},
{"5d80c95986f77440351beef3",        {"RB-MP12",        100792}},
{"5d80c78786f774403a401e3e",        {"RB-AK",        96524}},
{"5937ee6486f77408994ba448",        {"Machinery",        7541}},
{"5d80ccdd86f77474f7575e02",        {"RB-ORB2",        87321}},
{"5ad7247386f7747487619dc3",        {"Goshan reg.",        92927}},
{"5d80cb5686f77440545d1286",        {"RB-PS81",        66016}},
{"5a0ee76686f7743698200d5c",        {"E216 San",        64822}},
{"5da46e3886f774653b7a83fe",        {"RB-RS",        103874}},
{"5d80c6fc86f774403a401e3c",        {"RB-TB",        137564}},
{"593962ca86f774068014d9af",        {"Unk. key",        10490}},
{"5d80c8f586f77440373c4ed0",        {"RB-OP",        382427}},
{"5a0eee1486f77402aa773226",        {"E328 San",        85447}},
{"5d8e3ecc86f774414c78d05e",        {"RB-GN",        144889}},
{"5a0ee30786f774023b6ee08f",        {"W216 San",        477041}},
{"5d80ccac86f77470841ff452",        {"RB-ORB1",        471069}},
{"5780cf7f2459777de4559322",        {"Dorm mark.",        607805}},
{"5a13f24186f77410e57c5626",        {"E222 San",        82963}},
{"5c1f79a086f7746ed066fb8f",        {"TGL ASR",        63013}},
{"5d95d6be86f77424444eb3a7",        {"RB-PS82",        388044}},
{"5a0f08bc86f77478f33b84c2",        {"Safe",        73898}},
{"5d08d21286f774736e7c94c3",        {"SSK",        112142}},
{"5c1e2d1f86f77431e9280bee",        {"TGL WT",        90654}},
{"5938504186f7740991483f30",        {"Dorm 203",        11410}},
{"593aa4be86f77457f56379f8",        {"Dorm 303",        18333}},
{"5a13eebd86f7746fd639aa93",        {"W218 San",        80171}},
{"5913915886f774123603c392",        {"Checkpoint",        64875}},
{"5780d0532459777a5108b9a2",        {"Director's",        7850}},
{"5938144586f77473c2087145",        {"Bunk key",        10450}},
{"5913611c86f77479e0084092",        {"Cabin key",        7840}},
{"5d80c66d86f774405611c7d6",        {"RB-AO",        48166}},
{"5a0ea79b86f7741d4a35298e",        {"San util.",        56376}},
{"5a0dc45586f7742f6b0b73e3",        {"W104 San",        102135}},
{"5c1e2a1e86f77431ea0ea84c",        {"TGL MO",        82476}},
{"5a0dc95c86f77452440fc675",        {"W112 San",        80249}},
{"59136a4486f774447a1ed172",        {"GDesk",        8496}},
{"5780cf942459777df90dcb72",        {"Dorm 214",        27200}},
{"59387a4986f77401cc236e62",        {"Dorm 114",        11174}},
{"5780cfa52459777dfb276eb1",        {"Dorm 220",        20194}},
{"591383f186f7744a4c5edcf3",        {"Dorm 104",        10989}},
{"5938603e86f77435642354f4",        {"Dorm 206",        6323}},
{"5d1b2ffd86f77425243e8d17",        {"NIXXOR",        23321}},
{"5d40419286f774318526545f",        {"MScissors",        13771}},
{"5c1267ee86f77416ec610f72",        {"Prokill",        76920}},
{"5c12620d86f7743f8b198b72",        {"Tetriz",        79742}},
{"5bc9b9ecd4351e3bac122519",        {"BeardOil",        34781}},
{"59faf7ca86f7740dbe19f6c2",        {"Roler",        66928}},
{"5bc9be8fd4351e00334cae6e",        {"42nd",        22692}},
{"5af0561e86f7745f5f3ad6ac",        {"Powerbank",        25605}},
{"5af0534a86f7743b6f354284",        {"Ophthalmoscope",        69402}},
{"590a373286f774287540368b",        {"DFuel",        56172}},
{"59faf98186f774067b6be103",        {"Alkali",        13045}},
{"59fafb5d86f774067a6f2084",        {"Propane",        16762}},
{"5b4335ba86f7744d2837a264",        {"Bloodset",        15114}},
{"590c35a486f774273531c822",        {"Shus",        34747}},
{"59e358a886f7741776641ac3",        {"Clin",        8666}},
{"590a391c86f774385a33c404",        {"Magnet",        19018}},
{"5c13cd2486f774072c757944",        {"Soap",        8020}},
{"5734758f24597738025ee253",        {"GoldChain",        26815}},
{"573474f924597738002c6174",        {"Chainlet",        5892}},
{"5bc9bdb8d4351e003562b8a1",        {"Badge",        37089}},
{"590c2b4386f77425357b6123",        {"Pliers",        6807}},
{"590c311186f77424d1667482",        {"Wrench",        12906}},
{"590c2d8786f774245b1f03f3",        {"Scdr.",        5777}},
{"577e1c9d2459773cd707c525",        {"Paper",        10921}},
{"57347cd0245977445a2d6ff1",        {"T-Plug",        4633}},
{"5909e99886f7740c983b9984",        {"USB-A",        4053}},
{"57347c93245977448d35f6e3",        {"Toothpaste",        4219}},
{"590c2c9c86f774245b1f03f2",        {"MTape",        2321}},
{"57347c1124597737fb1379e3",        {"Duct tape",        4203}},
{"59e36c6f86f774176c10a2a7",        {"PCord",        19121}},
{"57347baf24597738002c6178",        {"RAM",        8055}},
{"573477e124597737dd42e191",        {"CPU",        8410}},
{"5734779624597737e04bf329",        {"CPU Fan",        26098}},
{"56742c324bdc2d150f8b456d",        {"GPhone",        15601}},
{"590a3d9c86f774385926e510",        {"UV Lamp",        9192}},
{"5672cb304bdc2dc2088b456a",        {"D Batt.",        6870}},
{"5672cb124bdc2d1a0f8b4568",        {"AA Batt.",        5005}},
{"5c1265fc86f7743f896a21c2",        {"GPX",        19874}},
{"5c06782b86f77426df5407d2",        {"Caps",        8684}},
{"590a3efd86f77437d351a25b",        {"GasAn",        14132}},
{"59e3647686f774176a362507",        {"WClock",        39537}},
{"59e3658a86f7741776641ac4",        {"Cat",        29581}},
{"5734770f24597738025ee254",        {"Strike",        3984}},
{"590a3cd386f77436f20848cb",        {"ES Lamp",        11400}},
{"56742c2e4bdc2d95058b456d",        {"Zibbo",        9232}},
{"57347c5b245977448d35f6e1",        {"Bolts",        14896}},
{"57347c77245977448d35f6e2",        {"Screw nut",        7811}},
{"5d1b371186f774253763a656",        {"Fuel",        108222}},
{"5c12688486f77426843c7d32",        {"Paracord",        86277}},
{"59f32c3b86f77472a31742f0",        {"USEC",        600}},
{"59f32bb586f774757e1e8442",        {"BEAR",        600}},
{"590c31c586f774245e3141b2",        {"Nails",        7448}},
{"5addaffe86f77470b455f900",        {"KIBA inner",        178323}},
{"5ad5d64486f774079b080af8",        {"Pharmacy",        56055}},
{"5ad5d49886f77455f9731921",        {"Power cabin",        11500}},
{"5ad5d20586f77449be26d877",        {"OLI util.",        27447}},
{"5ad5ccd186f774446d5706e9",        {"OLI office",        21215}},
{"5a0eec9686f77402ac5c39f2",        {"E310 San",        96444}},
{"5a0eebed86f77461230ddb3d",        {"W325 San",        55468}},
{"5a0eeb1a86f774688b70aa5c",        {"W303 San",        64711}},
{"5c0e842486f77443a74d2976",        {"Maska-1Shch",        54788}},
{"5aa7e373e5b5b000137b76f0",        {"Altyn",        51736}},
{"5b46238386f7741a693bcf9c",        {"Kiver FS",        26685}},
{"5d40425986f7743185265461",        {"Nippers",        3838}},
{"5a0eeb8e86f77461257ed71a",        {"W309 San",        50260}},
{"5c10c8fd86f7743d7d706df3",        {"Adrenaline",        14738}},
{"5c0e531d86f7747fa23f4d42",        {"SJ6 TGLabs",        39904}},
{"5d02778e86f774203e7dedbe",        {"CMS",        17439}},
{"5751a89d24597722aa0e8db0",        {"GoldenStar",        59155}},
{"5755383e24597772cb798966",        {"Vaseline",        23277}},
{"590c657e86f77412b013051d",        {"Grizzly",        20886}},
{"5a13ee1986f774794d4c14cd",        {"W323 San",        46223}},
{"590c678286f77426c9660122",        {"IFAK",        13623}},
{"544fb45d4bdc2dee738b4568",        {"Salewa",        19034}},
{"590c661e86f7741e566b646a",        {"Car",        7271}},
{"544fb3f34bdc2d03748b456a",        {"Morphine",        10498}},
{"590c695186f7741e566b64a2",        {"Augmentin",        9298}},
{"5d40407c86f774318526545a",        {"Vodka",        16339}},
{"5bc9b156d4351e00367fbce9",        {"Mayo",        12816}},
{"5751496424597720a27126da",        {"Hot Rod",        9512}},
{"57514643245977207f2c2d09",        {"TarCola",        7372}},
{"5751435d24597720a27126d1",        {"MaxNRG",        9722}},
{"5d1b317c86f7742523398392",        {"Hand drill",        37208}},
{"5d403f9186f7743cac3f229b",        {"Whiskey",        31361}},
{"57513fcc24597720a31c09a6",        {"Vita",        7637}},
{"57513f07245977207e26a311",        {"Aple",        5693}},
{"5734795124597738002c6176",        {"Tape",        9392}},
{"575062b524597720a31c09a1",        {"Green Ice",        3687}},
{"544fb62a4bdc2dfb738b4568",        {"Pineapple",        6465}},
{"5448fee04bdc2dbc018b4567",        {"Water",        12837}},
{"5c0e533786f7747fa23f4d47",        {"Zagustin",        17387}},
{"590c5f0d86f77413997acfab",        {"MRE",        16262}},
{"57347d8724597744596b4e76",        {"Squash",        9468}},
{"57347d692459774491567cf1",        {"Peas",        9479}},
{"5c052f6886f7746b1e3db148",        {"SG-C10",        109627}},
{"5a0ea69f86f7741cd5406619",        {"E108 San",        47875}},
{"57347d5f245977448b40fa81",        {"Humpback",        5218}},
{"5751487e245977207e26a315",        {"Emelya",        2999}},
{"59e3577886f774176a362503",        {"Sugar",        18960}},
{"544fb6cc4bdc2d34748b456e",        {"Slickers",        7191}},
{"590c37d286f77443be3d7827",        {"SAS",        36507}},
{"57505f6224597709a92585a9",        {"Alyonka",        13796}},
{"5448ff904bdc2d6f028b456e",        {"Crackers",        12932}},
{"5c093e3486f77430cb02e593",        {"Dogtags",        420272}},
{"5783c43d2459774bbe137486",        {"Wallet",        7726}},
{"5c093db286f7740a1b2617e3",        {"Holodilnick",        489736}},
{"5d6d3829a4b9361bc8618943",        {"LShZ-2DTM",        44011}},
{"59fb023c86f7746d0d4b423c",        {"WCase",        3016667}},
{"590a358486f77429692b2790",        {"RBattery",        10547}},
{"590c651286f7741e566b6461",        {"SDiary",        27985}},
{"590c645c86f77412b01304d9",        {"Diary",        25866}},
{"5d1b313086f77425227d1678",        {"Relay",        19104}},
{"5d4042a986f7743185265463",        {"L&F scdr.",        8884}},
{"567143bf4bdc2d1a0f8b4567",        {"PCase",        17083}},
{"5d1c774f86f7746d6620f8db",        {"Helix",        9096}},
{"5ad7217186f7746744498875",        {"OLI reg.",        50088}},
{"5734773724597737fd047c14",        {"Cond. milk",        15529}},
{"591afe0186f77431bd616a11",        {"ZB-014",        15012}},
{"5bc9c377d4351e3bac12251b",        {"Firesteel",        39204}},
{"5af0484c86f7740f02001f7f",        {"Majaica",        17501}},
{"5d235a5986f77443f6329bc6",        {"Skull",        70759}},
{"5a0f006986f7741ffd2fe484",        {"Safe",        46166}},
{"5d1b309586f77425227d1676",        {"BrokenLCD",        9293}},
{"5bc9c049d4351e44f824d360",        {"Book",        38711}},
{"5bc9b720d4351e450201234b",        {"1GPhone",        27925}},
{"591382d986f774465a6413a7",        {"Dorm 105",        4536}},
{"590c595c86f7747884343ad7",        {"Filter",        12908}},
{"57347d3d245977448f7b7f61",        {"Croutons",        16726}},
{"59e361e886f774176c10a2a5",        {"H2O2",        9153}},
{"590de71386f774347051a052",        {"Teapot",        29200}},
{"5af04b6486f774195a3ebb49",        {"Elite",        11622}},
{"5c052e6986f7746b207bc3c9",        {"Defibrillator",        141883}},
{"59e35ef086f7741777737012",        {"Screws",        3396}},
{"5d1b39a386f774252339976f",        {"Tube",        11776}},
{"5bc9b355d4351e6d1509862a",        {"#FireKlean",        149093}},
{"5d02797c86f774203f38e30a",        {"Surv12",        28083}},
{"57513f9324597720a7128161",        {"Grand",        7069}},
{"590c346786f77423e50ed342",        {"Xeno",        19811}},
{"5c0e531286f7747fa54205c2",        {"SJ1 TGLabs",        22455}},
{"591ae8f986f77406f854be45",        {"Yotota",        7400}},
{"5d4041f086f7743cac3f22a7",        {"Ortodontox",        3510}},
{"57347da92459774491567cf5",        {"Tushonka",        8085}},
{"57347d9c245977448b40fa85",        {"Herring",        11225}},
{"57347b8b24597737dd42e192",        {"Matches",        5122}},
{"57347d7224597744596b4e72",        {"Tushonka",        7463}},
{"5c05308086f7746b2101e90b",        {"Virtex",        323616}},
{"5780cf692459777de4559321",        {"Dorm 315",        6776}},
{"5ca2113f86f7740b2547e1d2",        {"Vulkan-5",        32943}},
{"5d6fc78386f77449d825f9dc",        {"GPowder",        46196}},
{"5780d0652459777df90dcb74",        {"G. Office",        8340}},
{"573476d324597737da2adc13",        {"Malboro",        6268}},
{"590c5bbd86f774785762df04",        {"WD-40",        7342}},
{"5b43575a86f77424f443fe62",        {"FCond",        40840}},
{"573475fb24597737fb1379e1",        {"Apollon",        7620}},
{"5a0eedb386f77403506300be",        {"E322 San",        47443}},
{"59136e1e86f774432f15d133",        {"Dorm 110",        21800}},
{"57347c2e24597744902c94a1",        {"PSU",        37736}},
{"5d1b3a5d86f774252167ba22",        {"Meds",        6827}},
{"5bc9bc53d4351e00367fbcee",        {"Rooster",        56988}},
{"5aa7e3abe5b5b000171d064d",        {"ZSh-1-2M",        19919}},
{"5d03775b86f774203e7e0c4b",        {"AESA",        304540}},
{"5ad7242b86f7740a6a3abd43",        {"IDEA reg.",        49863}},
{"5ad5cfbd86f7742c825d6104",        {"OLI Log.",        395736}},
{"5c0fa877d174af02a012e1cf",        {"Aquamari",        14239}},
{"5a0ee72c86f77436955d3435",        {"E213 San",        39520}},
{"590a386e86f77429692b27ab",        {"HDD",        14299}},
{"590a3b0486f7743954552bdb",        {"PCB",        13116}},
{"590c5a7286f7747884343aea",        {"Kite",        9716}},
{"59e35de086f7741778269d84",        {"EDrill",        17888}},
{"590c5c9f86f77477c91c36e7",        {"WD-40",        15802}},
{"5d40412b86f7743cb332ac3a",        {"Shampoo",        11116}},
{"59148c8a86f774197930e983",        {"Dorm 204",        9281}},
{"5d03784a86f774203e7e0c4d",        {"MGT",        37590}},
{"5d1b36a186f7742523398433",        {"Fuel",        100764}},
{"590de7e986f7741b096e5f32",        {"Vase",        42688}},
{"5a0ee62286f774369454a7ac",        {"E209 San",        52180}},
{"575146b724597720a27126d5",        {"Milk",        16737}},
{"590c5d4b86f774784e1b9c45",        {"Iskra",        9761}},
{"5d1b304286f774253763a528",        {"LCD",        23760}},
{"5d1c819a86f774771b0acd6c",        {"WParts",        18939}},
{"5d0377ce86f774186372f689",        {"Iridium",        53754}},
{"59e3596386f774176c10a2a2",        {"PAID",        13727}},
{"5c052fb986f7746b2101e909",        {"RFIDR",        141551}},
{"590c639286f774151567fa95",        {"Manual",        8139}},
{"5d8e15b686f774445103b190",        {"HEPS",        76499}},
{"5d1b392c86f77425243e98fe",        {"Bulb",        5479}},
{"59136f6f86f774447a1ed173",        {"Car key",        5533}},
{"57347d90245977448f7b7f65",        {"Oatflakes",        12221}},
{"5a144dfd86f77445cb5a0982",        {"W203 San",        30166}},
{"5a0ec6d286f7742c0b518fb5",        {"W205 San",        64750}},
{"590a3c0a86f774385a33c450",        {"SPlug",        13349}},
{"590c2e1186f77425357b6124",        {"TSet",        34854}},
{"573476f124597737e04bf328",        {"Wilston",        5192}},
{"573478bc24597738002c6175",        {"Horse",        9297}},
{"5c0e534186f7747fa1419867",        {"eTG-c",        32958}},
{"5938994586f774523a425196",        {"Dorm 103",        4039}},
{"59e3556c86f7741776641ac2",        {"Bleach",        10613}},
{"5914578086f774123569ffa4",        {"Dorm 108",        4404}},
{"5bc9c29cd4351e003562b8a3",        {"Sprats",        7291}},
{"5673de654bdc2d180f8b456d",        {"Saury",        5361}},
{"5672c92d4bdc2d180f8b4567",        {"Dorm 118",        4154}},
{"5af0548586f7743a532b7e99",        {"Ibuprofen",        32941}},
{"5780cf9e2459777df90dcb73",        {"Dorm 218",        5047}},
{"5780cda02459777b272ede61",        {"Dorm 306",        3913}},
{"5780d07a2459777de4559324",        {"Cabin key",        5486}},
{"5672cb724bdc2dc2088b456b",        {"GMcount",        10406}},
{"5c05300686f7746dce784e5d",        {"VPX",        155575}},
{"5913877a86f774432f15d444",        {"GStorage",        17520}},
{"59e366c186f7741778269d85",        {"PGlass",        6129}},
{"5a145ebb86f77458f1796f05",        {"E316 San",        22555}},
{"5d0375ff86f774186372f685",        {"MCable",        30017}},
{"5a0f0f5886f7741c4e32a472",        {"Safe",        66877}},
{"5c06779c86f77426e00dd782",        {"Wires",        9978}},
{"5a0f075686f7745bcc42ee12",        {"Safe",        18623}},
{"59e3606886f77417674759a5",        {"NaCl",        26592}},
{"5d0379a886f77420407aa271",        {"OFZ",        62142}},
{"5a0f045e86f7745b0f0d0e42",        {"Safe",        32986}},
{"5a0eb6ac86f7743124037a28",        {"Cottage",        444853}},
{"5780cf722459777a5108b9a1",        {"Dorm 308",        2574}},
{"5d6fc87386f77449db3db94e",        {"GPowder",        35166}},
{"5a0f068686f7745b0d4ea242",        {"Safe",        67367}},
{"5a0eb38b86f774153b320eb0",        {"SMW",        11114}},
{"5c13cef886f774072e618e82",        {"TP",        5193}},
{"5734781f24597737e04bf32a",        {"DVD",        11321}},
{"5a0eff2986f7741fd654e684",        {"W321 San safe",        26104}},
{"5a16b7e1fcdbcb00165aa6c9",        {"FAST",        147375}},
{"5d1b2fa286f77425227d1674",        {"EMotor",        38560}},
{"5a0ec70e86f7742c0b518fba",        {"W207 San",        50875}},
{"5d1b385e86f774252167b98a",        {"Filter",        30925}},
{"59e35abd86f7741778269d82",        {"Sodium",        27823}},
{"5d235b4d86f7742e017bc88a",        {"GP",        25493}},
{"56742c284bdc2d98058b456d",        {"Crickent",        4172}},
{"5c0e530286f7747fa1419862",        {"Propital",        13321}},
{"5d1b3f2d86f774253763b735",        {"Syringe",        12460}},
{"5d0376a486f7747d8050965c",        {"MCB",        82722}},
{"5d1b31ce86f7742523398394",        {"RPliers",        2783}},
{"5d0378d486f77420421a5ff4",        {"PFilter",        69963}},
{"5d1b327086f7742525194449",        {"PGauge",        48370}},
{"5d1b32c186f774252167a530",        {"Therm.",        28518}},
{"5c0517910db83400232ffee5",        {"PS320 1/6x",        41737}},
{"571a28e524597720b4066567",        {"TT supp.",        9184}},
{"57838c962459774a1651ec63",        {"VSS suppressor",        21474}},
{"5a34fe59c4a282000b1521a2",        {"SDN-6",        38097}},
{"5b363dd25acfc4001a598fd2",        {"Salvo 12",        46928}},
{"5c4eecc32e221602b412b440",        {"SV98 supp.",        35199}},
{"5c6165902e22160010261b28",        {"SRD 9",        35721}},
{"5c7e8fab2e22165df16b889b",        {"Illusion 9",        18262}},
{"5caf187cae92157c28402e43",        {"ASh-12",        20390}},
{"5cebec00d7f00c065c53522a",        {"Attentuator",        35024}},
{"5cff9e84d7ad1a049e54ed55",        {"WAVE QD",        41697}},
{"5d3ef698a4b9361182109872",        {"SFN-57",        21451}},
{"5de8f2d5b74cd90030650c72",        {"MP9",        36543}},
{"5dfa3d2b0dee1b22f862eade",        {"PRS QDC",        108444}},
{"5e01ea19e9dc277128008c0b",        {"R43 7.62x54R",        33420}},
{"564caa3d4bdc2d17108b458e",        {"TGP-A",        29947}},
{"5a9fbb84a2750c00137fa685",        {"R43 5.56",        52491}},
{"57da93632459771cb65bf83f",        {"NT-4 blk.",        28030}},
{"57f3c8cc2459773ec4480328",        {"PP9101 supp.",        10183}},
{"5a33a8ebc4a282000c5a950d",        {"Alpha 9",        19821}},
{"593d493f86f7745e6b2ceb22",        {"AK-74 Hexagon",        25238}},
{"5ba26ae8d4351e00367f9bdb",        {"Rotex 2",        47069}},
{"57ffb0e42459777d047111c5",        {"PBS-4",        18986}},
{"5a9fbacda2750c00141e080f",        {"R43 7.62x39",        35634}},
{"5a0d63621526d8dba31fe3bf",        {"PBS-1",        36349}},
{"56e05b06d2720bb2668b4586",        {"PB supp.",        7768}},
{"5d2dc3e548f035404a1a4798",        {"Compact 2x32",        30697}},
{"59db7e1086f77448be30ddf3",        {"TA11D",        21357}},
{"57adff4f24597737f373b6e6",        {"BRAVO4",        43785}},
{"5c1cdd512e22161b267d91ae",        {"Prism 2.5x",        21048}},
{"544a3a774bdc2d3a388b4567",        {"HAMR",        33058}},
{"57aca93d2459771f2c7e26db",        {"SpecterDR",        34494}},
{"57c5ac0824597754771e88a9",        {"3-24x42 FFP",        24538}},
{"5a37cb10c4a282329a73b4e7",        {"6.5-20x50",        33824}},
{"5b3f7c1c5acfc40dc5296b1d",        {"PU 3.5x",        10488}},
{"5b2388675acfc4771e1be0be",        {"TAC30",        31921}},
{"5c82343a2e221644f31c0611",        {"PSO-1M2",        13794}},
{"5cf638cbd7f00c06595bc936",        {"USP-1",        8398}},
{"5d0a3a58d7ad1a669c15ca14",        {"1P59",        12193}},
{"5dfe6104585a0c3e995c7b82",        {"ADO P4",        28481}},
{"5dff772da3651922b360bf91",        {"Pilad 4x32",        13542}},
{"57235b6f24597759bf5a30f1",        {"PVS-14",        50840}},
{"5c066e3a0db834001b7353f0",        {"N-15",        40839}},
{"5c0696830db834001d23f5da",        {"PNV-10T",        30611}},
{"5b3b6e495acfc4330140bd88",        {"Vulcan MG 3.5x",        26561}},
{"5c052a900db834001a66acbd",        {"TA01NSN",        20889}},
{"5cebec38d7f00c00110a652a",        {"P90 Ring",        11282}},
{"584924ec24597768f12ae244",        {"XPS3-2",        22267}},
{"59f9d81586f7744c7506ee62",        {"UH-1",        29240}},
{"558022b54bdc2dac148b458d",        {"EXPS3",        51370}},
{"5a9fb739a2750c003215717f",        {"R43 9x19",        13704}},
{"5b30b0dc5acfc400153b7124",        {"HS401G5",        8322}},
{"58491f3324597764bc48fa02",        {"XPS3-0",        27910}},
{"5a27b6bec4a282000e496f78",        {"SR-1MP",        17121}},
{"584984812459776a704a82a6",        {"P1x42",        8993}},
{"570fd6c2d2720bc6458b457f",        {"EOT 553",        19828}},
{"591c4efa86f7741030027726",        {"EKP-8-18",        14542}},
{"5c7d55de2e221644f31bff68",        {"COMP M4",        16051}},
{"5d2da1e948f035477b1ce2ba",        {"SRS-02",        16822}},
{"5ab8ee7786f7742d8f33f0b9",        {"VKBO bag",        11094}},
{"5ab8f04f86f774585f4237d8",        {"Sling",        3433}},
{"5aa2ba19e5b5b00014028f4e",        {"Fleece",        5055}},
{"5c82342f2e221644f31c060e",        {"PSO-1",        14968}},
{"5ab8f20c86f7745cdb629fb2",        {"Shmaska",        8369}},
{"5a43957686f7742a2c2f11b0",        {"Hat",        500}},
{"5c0d2727d174af02a012cf58",        {"PSh-97",        18418}},
{"5b4329075acfc400153b78ff",        {"Pompon",        7364}},
{"5b4327aa5acfc400175496e0",        {"Panama",        1673}},
{"5bd073c986f7747f627e796c",        {"Kotton",        14319}},
{"5aa2b9ede5b5b000137b758b",        {"Cowboy",        11488}},
{"5aa2b89be5b5b0001569311f",        {"EMERCOM",        3772}},
{"5a43943586f77416ad2f06e2",        {"Hat",        500}},
{"572b7fa124597762b472f9d2",        {"Beanie",        1666}},
{"5d96141523f0ea1b7f2aacab",        {"Door Kicker",        9444}},
{"5bd06f5d86f77427101ad47c",        {"Mask",        15025}},
{"5b4325355acfc40019478126",        {"Shemagh",        4869}},
{"5b432f3d5acfc4704b4a1dfb",        {"Momex",        4620}},
{"59e770f986f7742cbe3164ef",        {"Army",        2551}},
{"5bd0716d86f774171822ef4b",        {"Mask",        6542}},
{"5bd071d786f7747e707b93a3",        {"Mask",        9085}},
{"5b432c305acfc40019478128",        {"GP-5",        25220}},
{"5ab8f4ff86f77431c60d91ba",        {"Ghost",        9106}},
{"5c1a1e3f2e221602b66cc4c2",        {"Beard",        7500}},
{"5ab8f39486f7745cd93a1cca",        {"CF",        5656}},
{"572b7f1624597762ae139822",        {"Balaclava",        3232}},
{"5c0e746986f7741453628fe5",        {"TV-110",        130094}},
{"544a5caa4bdc2d1a388b4568",        {"AVS",        121373}},
{"5ab8dced86f774646209ec87",        {"ANA M2",        69466}},
{"5c0e722886f7740458316a57",        {"ANA M1",        102149}},
{"5c0e446786f7742013381639",        {"6B5-15",        45588}},
{"5b44cad286f77402a54ae7e5",        {"TacTec",        194009}},
{"5ab8dab586f77441cd04f2a2",        {"MK3 TV-104",        27368}},
{"5b3b99475acfc432ff4dcbee",        {"1-6x24",        45730}},
{"5df8a42886f77412640e2e75",        {"MPPV",        48487}},
{"5b44c8ea86f7742d1627baf1",        {"Commando",        22636}},
{"5a32aa8bc4a2826c6e06d737",        {"RMR",        25772}},
{"5c0e6a1586f77404597b4965",        {"Belt combo",        34209}},
{"572b7adb24597762ae139821",        {"Scav Vest",        21264}},
{"5c165d832e2216398b5a7e36",        {"Tactical Sport",        22750}},
{"5b432b965acfc47a8774094e",        {"GSSh-01",        12823}},
{"5645bcc04bdc2d363b8b4572",        {"ComTac2",        27678}},
{"5aa2ba71e5b5b000137b758f",        {"Sordin",        27503}},
{"5a16b9fffcdbcb0176308b34",        {"RAC",        28358}},
{"5aa7e4a4e5b5b000137b76f2",        {"ZSh-1-2M",        38166}},
{"5a7c4850e899ef00150be885",        {"6B47",        36439}},
{"57c44dd02459772d2e0ae249",        {"VAL suppressor",        36749}},
{"5a7ad74e51dfba0015068f45",        {"G FD917",        24000}},
{"593d490386f7745ee97a1555",        {"Hexagon SKS",        36055}},
{"5aa2b8d7e5b5b00014028f4a",        {"Police",        3008}},
{"592c2d1a86f7746dbe2af32a",        {"Alpha",        36945}},
{"59e763f286f7742ee57895da",        {"Pilgrim",        40366}},
{"59e7708286f7742cbd762753",        {"Ushanka",        14806}},
{"572b7d8524597762b472f9d1",        {"Cap",        3775}},
{"5b44d22286f774172b0c9de8",        {"Kirasa-N",        46030}},
{"5d5d85c586f774279a21cbdb",        {"D3CRX",        27157}},
{"5c06c6a80db834001b735491",        {"SSh-68",        20762}},
{"5d5d8ca986f7742798716522",        {"MRig",        9814}},
{"57486e672459770abd687134",        {"OKP-7 Dove",        15553}},
{"5df8a58286f77412631087ed",        {"Tank helmet",        7828}},
{"57dbb57e2459774673234890",        {"NT-4 FDE",        29699}},
{"56ea70acd2720b844b8b4594",        {"FF 4-16",        31479}},
{"5ca20abf86f77418567a43f2",        {"Triton",        19426}},
{"5a9fbb74a2750c0032157181",        {"R43 .366TKM",        19364}},
{"5c0e9f2c86f77432297fe0a3",        {"Commando",        24030}},
{"59ef13ca86f77445fd0e2483",        {"Pumpkin",        10000}},
{"5c17a7ed2e2216152142459c",        {"AirFrame Tan",        80339}},
{"5bd073a586f7747e6f135799",        {"Mustache",        13135}},
{"59fb257e86f7742981561852",        {"DTK-4M",        27947}},
{"5ca21c6986f77479963115a7",        {"Redut-T5",        188296}},
{"5ac8d6885acfc400180ae7b0",        {"FAST MT Tan",        74354}},
{"55d614004bdc2d86028b4568",        {"556-MONSTER",        26597}},
{"5a32a064c4a28200741e22de",        {"Osprey 9",        22190}},
{"545cdb794bdc2d3a198b456a",        {"6B43 6A",        313305}},
{"5abcc328d8ce8700194394f3",        {"APB supp.",        5611}},
{"5e00c1ad86f774747333222c",        {"EXFIL Black",        144111}},
{"5b86a0e586f7745b600ccb23",        {"Bramit",        32952}},
{"58aeac1b86f77457c419f475",        {"MPX-SD",        12033}},
{"58d268fc86f774111273f8c2",        {"DP",        20419}},
{"5947db3f86f77447880cf76f",        {"EKP-8-02",        9997}},
{"5c0e3eb886f7742015526062",        {"6B5-16",        64975}},
{"5c0e874186f7745dc7616606",        {"Maska-1Shch (Killa)",        80079}},
{"5d5d87f786f77427997cfaef",        {"A18",        109500}},
{"59bfc5c886f7743bf6794e62",        {"Vityaz-SN supp.",        11666}},
{"5929a2a086f7744f4b234d43",        {"6sh112",        14766}},
{"5b432b2f5acfc4771e1c6622",        {"Shattered",        18991}},
{"5b40e3f35acfc40016388218",        {"ACHHC",        39093}},
{"572b7fa524597762b747ce82",        {"Half-mask",        7611}},
{"55d6190f4bdc2d87028b4567",        {"556-MINI",        88594}},
{"5926d33d86f77410de68ebc0",        {"MP5SD supp.",        71701}},
{"5b40e1525acfc4771e1c6611",        {"ULACH",        62213}},
{"57ae0171245977343c27bfcf",        {"PK-06",        10708}},
{"5aa66be6e5b5b0214e506e97",        {"ATACR 7-35x56",        62437}},
{"5a7c74b3e899ef0014332c29",        {"NSPU-M",        14518}},
{"5d5d646386f7742797261fd9",        {"6B3TM-01M",        49790}},
{"5b432b6c5acfc4001a599bf0",        {"DSkull",        5037}},
{"5d44064fa4b9361e4f6eb8b5",        {"Ultra 5",        37142}},
{"5a16bb52fcdbcb001a3b00dc",        {"SLock",        13237}},
{"5c0e53c886f7747fa54205c7",        {"6B13 DFL",        59090}},
{"58d399e486f77442e0016fe7",        {"T-1",        18811}},
{"5c7955c22e221644f31bfd5e",        {"ONE",        29251}},
{"593d489686f7745c6255d58a",        {"AKM Hexagon",        35070}},
{"570fd721d2720bc5458b4596",        {"MRS",        13459}},
{"59e7715586f7742ee5789605",        {"Respirator",        7630}},
{"5c0e625a86f7742d77340f62",        {"Zhuk-6a",        183541}},
{"5df8a4d786f77412672a1e3b",        {"6Sh118",        189965}},
{"56e33680d2720be2748b4576",        {"T-Bag",        4048}},
{"5c0505e00db834001b735073",        {"PK-120",        10976}},
{"5ab8e79e86f7742d8b372e78",        {"GZHEL-K",        122889}},
{"5d6d3716a4b9361bc8618872",        {"LShZ-2DTM",        65764}},
{"59e7711e86f7746cae05fbe1",        {"Kolpak",        7888}},
{"5aa7e454e5b5b0214e506fa2",        {"ZSh-1-2M",        58089}},
{"5b4329f05acfc47a86086aa1",        {"Ronin",        100504}},
{"5b44d0de86f774503d30cba8",        {"Gen4 HMK",        109756}},
{"5d5d940f86f7742797262046",        {"Mechanism",        86666}},
{"5d1b5e94d7ad1a2b865a96b0",        {"FLIR RS-32",        426110}},
{"59e7643b86f7742cbf2c109a",        {"TV-106 + TV-109",        10263}},
{"5e01ef6886f77445f643baa4",        {"EXFIL Tan",        82109}},
{"5aa7d193e5b5b000171d063f",        {"Sfera-S",        45726}},
{"56e335e4d2720b6c058b456d",        {"ScavBP",        17711}},
{"5d5e9c74a4b9364855191c40",        {"TC-2002",        32319}},
{"5aa7e276e5b5b000171d0647",        {"Altyn",        103107}},
{"576fd4ec2459777f0b518431",        {"PSO 1M2-1",        11263}},
{"5b4326435acfc433000ed01d",        {"Mask",        5912}},
{"5d0a3e8cd7ad1a6f6a3d35bd",        {"1P69",        13568}},
{"5b3116595acfc40019476364",        {"ROMEO4",        11346}},
{"59bffbb386f77435b379b9c2",        {"Hybrid 46",        40185}},
{"5648a7494bdc2d9d488b4583",        {"PACA",        38429}},
{"59c0ec5b86f77435b128bfca",        {"Hexagon 12K",        25262}},
{"544a5cde4bdc2d39388b456b",        {"MBSS",        11518}},
{"545cdae64bdc2d39198b4568",        {"Tri-Zip",        53689}},
{"59e7635f86f7742cbf2c1095",        {"3M",        18833}},
{"5ab8e4ed86f7742d8e50c7fa",        {"MF-UN",        44690}},
{"5c0a2cec0db834001b7ce47d",        {"HHS-1 Tan",        38839}},
{"5648a69d4bdc2ded0b8b457b",        {"BlackRock",        34340}},
{"5c0e5edb86f77461f55ed1f7",        {"Zhuk-3",        36987}},
{"5c0e774286f77468413cc5b2",        {"Blackjack 50",        105236}},
{"5c0e5bab86f77461f55ed1f3",        {"6B23-1",        46776}},
{"5c0e655586f774045612eeb2",        {"Trooper",        87279}},
{"5c0e51be86f774598e797894",        {"6B13 FL",        70862}},
{"5c0e57ba86f7747fa141986d",        {"6B23-2 (MF)",        69427}},
{"5ca2151486f774244a3b8d30",        {"Redut-M",        97588}},
{"5c0e541586f7747fa54205c9",        {"6B13M Tan",        191175}},
{"5b44cf1486f77431723e3d05",        {"Gen4 Assault",        124746}},
{"5ab8ebf186f7742d8b372e80",        {"Attack 2",        73723}},
{"5b44cd8b86f774503d30cba2",        {"Gen4 Full",        122820}},
{"5c0e805e86f774683f3dd637",        {"Paratus",        70107}},
{"5b44c6ae86f7742d1627baea",        {"Beta2",        45740}},
{"56e33634d2720bd8058b456b",        {"Duffle",        12876}},
{"5ca20d5986f774331e7c9602",        {"Berkut",        21774}},
{"5aa7cfc0e5b5b00015693143",        {"6B47 DFL",        29247}},
{"5c066ef40db834001966a595",        {"NVG strap",        36361}},
{"5aa7d03ae5b5b00016327db5",        {"UNTAR",        23924}},
{"5b40e4035acfc47a87740943",        {"ACHHC",        45379}},
{"5645bc214bdc2d363b8b4571",        {"Kiver-M",        18921}},
{"5b432d215acfc4771e1c6624",        {"LZSh",        30319}},
{"5d5e7d28a4b936645d161203",        {"TC-2001",        31441}},
{"577d141e24597739c5255e01",        {"FF3",        18336}},
{"5c08f87c0db8340019124324",        {"ShPM",        9715}},
{"5ca20ee186f774799474abc2",        {"Vulkan-5",        164030}},
{"5d63d33b86f7746ea9275524",        {"F scdr.",        6754}},
{"5ab8f85d86f7745cd93a1cf5",        {"Shemagh",        21091}},
{"57ac965c24597706be5f975c",        {"SpecterDR",        37962}},
{"5a154d5cfcdbcb001a3b00da",        {"FAST MT",        84015}},
{"5b40e2bc5acfc40016388216",        {"ULACH",        52596}},
{"5c05293e0db83400232fff80",        {"TA01NSN",        22968}},
{"570fd79bd2720bc7458b4583",        {"OKP-7",        8809}},
{"5df8a2ca86f7740bfe6df777",        {"6B2",        19548}},
{"5c07dd120db834001c39092d",        {"HHS-1",        32940}},
{"59fb042886f7746c5005a7b2",        {"ICase",        1229994}},
{"5c091a4e0db834001d5addc8",        {"Maska-1Shch",        78053}},
{"5af0454c86f7746bf20992e8",        {"Alu splint",        11171}},
{"5ac66cb05acfc40198510a10",        {"AK-101",        35677}},
{"5ac66d015acfc400180ae6e4",        {"AK-102",        78445}},
{"5ac66d2e5acfc43b321d4b53",        {"AK-103",        36504}},
{"5ac66d725acfc43b321d4b60",        {"AK-104",        26037}},
{"5ac66d9b5acfc4001633997a",        {"AK-105",        21793}},
{"5bf3e03b0db834001d2c4a9c",        {"AK-74",        15881}},
{"5ac4cd105acfc40016339859",        {"AK-74M",        14547}},
{"5644bd2b4bdc2d3b4c8b4572",        {"AK-74N",        28593}},
{"59d6088586f774275f37482f",        {"AKM",        40963}},
{"5a0ec13bfcdbcb00165aa685",        {"AKMN",        58373}},
{"59ff346386f77477562ff5e2",        {"AKMS",        27465}},
{"5abcbc27d8ce8700182eceeb",        {"AKMSN",        33822}},
{"5bf3e0490db83400196199af",        {"AKS-74",        14641}},
{"5ab8e9fcd8ce870019439434",        {"AKS-74N",        34495}},
{"57c44b372459772d2b39b8ce",        {"AS VAL",        65140}},
{"5cadfbf7ae92152ac412eeef",        {"ASh-12",        55219}},
{"5447a9cd4bdc2dbd208b4567",        {"M4A1",        0}},
{"5b0bbe4e5acfc40dc528a72d",        {"SA-58",        0}},
{"5c488a752e221602b412af63",        {"MDR",        47041}},
{"5bb2475ed4351e00853264e3",        {"HK 416A5",        45168}},
{"57dc2fa62459775949412633",        {"AKS-74U",        22054}},
{"5839a40f24597726f856b511",        {"AKS-74UB",        26049}},
{"583990e32459771419544dd2",        {"AKS-74UN",        28519}},
{"5dcbd56fdbd3d91b3e5468d5",        {"MDR",        0}},
{"5c07c60e0db834002330051f",        {"ADAR 2-15",        9833}},
{"5d43021ca4b9362eab4b5e25",        {"TX-15 DML",        30628}},
{"574d967124597745970e7c94",        {"SKS",        11602}},
{"587e02ff24597743df3deaeb",        {"OP-SKS",        19390}},
{"59e6687d86f77411d949b251",        {"VPO-209",        25849}},
{"5c501a4d2e221602b412b540",        {"Vepr Hunter",        22542}},
{"59e6152586f77473dc057aa1",        {"VPO-136",        11034}},
{"588892092459774ac91d4b11",        {"DVL-10",        132852}},
{"5bfd297f0db834001a669119",        {"Mosin Infantry",        40004}},
{"5ae08f0a5acfc408fb1398a1",        {"Mosin",        45725}},
{"5df24cf80dee1b22f862e9bc",        {"T-5000M",        53757}},
{"5bfea6e90db834001b7347f3",        {"M700",        31375}},
{"55801eed4bdc2d89578b4588",        {"SV-98",        37458}},
{"5de652c31b7e3716273428be",        {"VPO-215",        17294}},
{"5beed0f50db834001c062b12",        {"RPK-16",        41522}},
{"5df8ce05b11454561e39243b",        {"SR-25",        61137}},
{"5a367e5dc4a282000e49738f",        {"RSASS",        461838}},
{"57838ad32459774a17445cd2",        {"VSS Vintorez",        37847}},
{"5aafa857e5b5b00018480968",        {"M1A",        59596}},
{"5c46fbd72e2216398b5a8c9c",        {"SVDS",        79486}},
{"5bffdc370db834001d23eca8",        {"6Kh5",        19272}},
{"5bc9c1e2d4351e00367fbcf0",        {"Axe",        63876}},
{"57e26fc7245977162a14b800",        {"A-2607",        3747}},
{"57e26ea924597715ca604a09",        {"A-2607",        3179}},
{"5c012ffc0db834001d23f03f",        {"Camper",        56738}},
{"5bffe7930db834001b734a39",        {"SCA",        450000}},
{"54491bb74bdc2d09088b4567",        {"ER BAYONET",        10895}},
{"5c07df7f0db834001b73588a",        {"Crowbar",        10693}},
{"57cd379a24597778e7682ecf",        {"KATT",        16800}},
{"5bffdd7e0db834001b734a1a",        {"M-2",        1570000}},
{"5bead2e00db834001c062938",        {"MPL-50",        3560}},
{"5c010e350db83400232feec7",        {"SP-8",        53277}},
{"59f98b4986f7746f546d2cef",        {"SR-1MP",        17151}},
{"5cadc190ae921500103bb3b6",        {"M9A3",        12016}},
{"5d3eb3b0a4b93615055e84d2",        {"FN 5-7",        29141}},
{"5a7ae0c351dfba0017554310",        {"Glock 17",        13810}},
{"5b1fa9b25acfc40018633c01",        {"Glock 18C",        16379}},
{"56d59856d2720bd8418b456a",        {"P226R",        9346}},
{"56e0598dd2720bb5668b45a6",        {"PB",        14035}},
{"5448bd6b4bdc2dfc2f8b4569",        {"PM",        6061}},
{"579204f224597773d619e051",        {"PM (t)",        8906}},
{"5abccb7dd8ce87001773e277",        {"APB",        17226}},
{"5a17f98cfcdbcb0980087290",        {"APS",        11600}},
{"5b3b713c5acfc4330140bd8d",        {"TT Gold",        26508}},
{"576a581d2459771e7b1bc4f1",        {"MP-443 \"Grach\"",        9844}},
{"571a12c42459771f627b58a0",        {"TT",        8431}},
{"5d67abc1a4b93614ec50137f",        {"FN 5-7 FDE",        28666}},
{"54491c4f4bdc2db1078b4568",        {"MP-133",        14449}},
{"56dee2bdd2720bc8328b4567",        {"MP-153",        25363}},
{"5a7828548dc32e5a9c28b516",        {"M870 12ga",        25035}},
{"576165642459773c7a400233",        {"Saiga 12ga v.10",        16697}},
{"5a38e6bac4a2826c6e06d79b",        {"TOZ-106",        10761}},
{"5e00903ae9dc277128008b87",        {"MP9",        20509}},
{"5cc82d76e24e8d00134b4b83",        {"P90",        57074}},
{"5926bb2186f7744b1c6c6e60",        {"MP5",        25112}},
{"5d2f0d8048f0356c925bc3b0",        {"MP5K-N",        14544}},
{"5ba26383d4351e00334c93d9",        {"MP7A1",        38625}},
{"5bd70322209c4d00d7167b8f",        {"MP7A2",        39045}},
{"57f4c844245977379d5c14d1",        {"PP-9 Klin",        13184}},
{"57d14d2524597714373db789",        {"PP-91 Kedr",        11346}},
{"57f3c6bd24597738e730fa2f",        {"PP-91-01 Kedr-B",        24235}},
{"59f9cabd86f7743a10721f46",        {"Saiga-9",        9328}},
{"58948c8e86f77409493f7266",        {"MPX",        41930}},
{"59984ab886f7743e98271174",        {"PP-19-01",        20179}},
{"5de7bd7bfd6b4e6e2276dc25",        {"MP9-N",        17869}},
{"5710c24ad2720bc3458b45a3",        {"F-1",        8566}},
{"58d3db5386f77426186285a0",        {"M67",        22034}},
{"5a2a57cfc4a2826c6e06d44a",        {"RDG-2B",        5828}},
{"5448be9a4bdc2dfd2f8b456a",        {"RGD-5",        9386}},
{"5a0c27731526d80618476ac4",        {"Zarya",        7839}},
{"59e690b686f7746c9f75e848",        {"M995",        1082}},
{"5c0d688c86f77413ae3407b2",        {"BP gs",        688}},
{"5ba26835d4351e0035628ff5",        {"AP SX",        865}},
{"5c0d5e4486f77478390952fe",        {"PPBS gs",        833}},
{"56dff026d2720bb8668b4567",        {"BS gs",        901}},
{"59e0d99486f7744a32234762",        {"BP gzh",        1201}},
{"5a6086ea4f39f99cd479502f",        {"M61",        2014}},
{"5c0d668f86f7747ccb7f13b2",        {"SPP gs",        522}},
{"5e023d48186a883be655e551",        {"BS",        1024}},
{"5c0d56a986f774449d5de529",        {"RIP",        410}},
{"5c925fa22e221601da359b7b",        {"AP 6.3",        859}},
{"59e6906286f7746c9f75e847",        {"M856A1",        683}},
{"57a0e5022459774d1673f889",        {"SP6",        344}},
{"5a608bf24f39f98ffc77720e",        {"M62",        893}},
{"54527ac44bdc2d36668b4567",        {"M855A1",        1079}},
{"59e77a2386f7742ee578960a",        {"PS",        820}},
{"56dff061d2720bb5668b4567",        {"BT gs",        686}},
{"5c0d5ae286f7741e46554302",        {"Warmageddon",        79}},
{"5e023d34e8a400319a28ed44",        {"BT",        867}},
{"5cc80f67e4a949035e43bbba",        {"SB193",        1067}},
{"5c0d591486f7744c505b416f",        {"RIP",        158}},
{"5cadf6eeae921500134b2799",        {"PS12B",        863}},
{"56dfef82d2720bbd668b4567",        {"BP gs",        471}},
{"5a3c16fe86f77452b62de32a",        {"Luger CCI",        274}},
{"5cc80f79e4a949033c7343b2",        {"SS198LF",        278}},
{"5ba26844d4351e00334c9475",        {"Subsonic SX",        525}},
{"5ba2678ad4351e44f824b344",        {"FMJ SX",        670}},
{"560d61e84bdc2da74d8b4571",        {"SNB",        766}},
{"5e023e88277cce2b522ff2b1",        {"Ultra Nosler",        267}},
{"5cc80f53e4a949000e1ea4f8",        {"L191",        756}},
{"5a26ac0ec4a28200741e1e18",        {"BT gzh",        865}},
{"5cc86832d7f00c000d3a6e6c",        {"R37.F",        110}},
{"54527a984bdc2d4e668b4567",        {"M855",        259}},
{"5cc80f38e4a949001152b560",        {"SS190",        1213}},
{"5a26ac06c4a282000c5a90a8",        {"PE gzh",        257}},
{"5cc80f8fe4a949033b0224a2",        {"SS197SR",        309}},
{"58dd3ad986f77403051cba8f",        {"M80",        606}},
{"5cadf6ddae9215051e1c23b2",        {"PS12",        449}},
{"5cc86840d7f00c002412c56c",        {"R37.X",        211}},
{"5e023cf8186a883be655e54f",        {"T-46M",        411}},
{"59e6918f86f7746c9f75e849",        {"RRLP",        57}},
{"59e4d24686f7741776641ac7",        {"US gzh",        350}},
{"57372140245977611f70ee91",        {"SP7 gzh",        308}},
{"56dff2ced2720bb4668b4567",        {"PP gs",        144}},
{"5a26abfac4a28232980eabff",        {"P gzh",        169}},
{"57371aab2459775a77142f22",        {"PstM gzh",        6053}},
{"59e68f6f86f7746c9f75e846",        {"M856",        130}},
{"57a0dfb82459774d3078b56c",        {"SP5",        190}},
{"5a269f97c4a282000b151807",        {"PS gzh",        573}},
{"5887431f2459777e1612938f",        {"LPS",        419}},
{"5d6e68a8a4b9360b6c0d54e2",        {"AP-20",        1323}},
{"5ba26812d4351e003201fef1",        {"Action SX",        102}},
{"5e023e53d4353e3302577c4c",        {"FMJ",        124}},
{"59e6920f86f77411d82aa167",        {"FMJ",        75}},
{"5e023e6e34d52a55c3304f71",        {"SP",        112}},
{"5656d7c34bdc2d9d198b4587",        {"PS gzh",        92}},
{"56dff421d2720b5f5a8b4567",        {"SP",        45}},
{"5cadf6e5ae921500113bb973",        {"PS12A",        176}},
{"573719df2459775a626ccbc2",        {"PBM gzh",        370}},
{"59e6927d86f77411da468256",        {"HP",        47}},
{"59e4d3d286f774176a36250a",        {"HP",        651}},
{"56dff3afd2720bba668b4567",        {"PS gs",        78}},
{"5737207f24597760ff7b25f2",        {"PSV",        85}},
{"573720e02459776143012541",        {"RG028 gzh",        111}},
{"573602322459776445391df1",        {"LRNPC",        68}},
{"573603562459776430731618",        {"Pst gzh",        70}},
{"5737218f245977612125ba51",        {"SP8 gzh",        166}},
{"5d6e68b3a4b9361bca7e50b5",        {"CSP",        497}},
{"5d6e6a5fa4b93614ec501745",        {"Devastator",        285}},
{"573603c924597764442bd9cb",        {"PT gzh",        63}},
{"59e6658b86f77411d949b250",        {"Geksa",        235}},
{"5c3df7d588a4501f290594e5",        {"T gzh",        44}},
{"573718ba2459775a75491131",        {"BZhT gzh",        266}},
{"56d59d3ad2720bdb418b4577",        {"Pst gzh",        71}},
{"5d6e68d1a4b93622fe60e845",        {"SFormance",        362}},
{"5736026a245977644601dc61",        {"P gl",        85}},
{"59e4cf5286f7741778269d8a",        {"T-45M1",        72}},
{"5d6e68c4a4b9361b93413f79",        {"0.5",        989}},
{"59e655cb86f77411dc52a77b",        {"Eko",        85}},
{"56dff4ecd2720b5f5a8b4568",        {"US gs",        56}},
{"573601b42459776410737435",        {"LRN",        71}},
{"57371b192459775a9f58a5e0",        {"PPe gzh",        7329}},
{"57371f8d24597761006c6a81",        {"PSO gzh",        37}},
{"5735ff5c245977640e39ba7e",        {"FMJ43",        68}},
{"56dff0bed2720bb0668b4567",        {"FMJ",        43}},
{"5735fdcd2459776445391d61",        {"AKBS",        49}},
{"58864a4f2459770fcc257101",        {"PSO gzh",        51}},
{"5737201124597760fc4431f1",        {"Pst gzh",        105}},
{"57371e4124597760ff7b25f1",        {"PPT gzh",        455}},
{"5d6e6a05a4b93618084f58d0",        {"Slug",        186}},
{"56dff216d2720bbd668b4568",        {"HP",        78}},
{"5d6e68e6a4b9361c140bcfe0",        {"FTX",        364}},
{"57371eb62459776125652ac1",        {"PRS gs",        39}},
{"5d6e6911a4b9361bd5780d52",        {"Flechette",        444}},
{"5d6e6806a4b936088465b17e",        {"Magnum",        126}},
{"56dff4a2d2720bbd668b456a",        {"T gs",        35}},
{"59e6542b86f77411dc52a77a",        {"FMJ",        70}},
{"5d6e689ca4b9361bc8618956",        {"Poleva-6u",        419}},
{"57371f2b24597761224311f1",        {"PS gs PPO",        46}},
{"5d6e68dea4b9361bcc29e659",        {"DualSabot",        217}},
{"5d6e6869a4b9361c140bcfde",        {"Grizzly",        88}},
{"5d6e6a42a4b9364f07165f52",        {"Poleva-6u",        130}},
{"5d6e6a53a4b9361bd473feec",        {"Poleva-3",        53}},
{"56dff338d2720bbd668b4569",        {"PRS gs",        34}},
{"5d6e6891a4b9361bd473feea",        {"Poleva-3",        111}},
{"5d6e67fba4b9361bc73bc779",        {"Express",        73}},
{"5d6e69c7a4b9360b6c0d54e4",        {"7.3mm",        38}},
{"5d6e6772a4b936088465b17c",        {"5.25mm",        35}},
{"58820d1224597753c90aeb13",        {"Slug",        41}},
{"5d6e69b9a4b9361bc8618958",        {"6.2mm",        312}},
{"560d5e524bdc2d25448b4571",        {"7mm",        29}},
{"5d6e695fa4b936359b35d852",        {"5.6mm",        25}},
{"573719762459775a626ccbc1",        {"P gzh",        21}},
{"5a38ebd9c4a282000d722a5b",        {"7.5mm",        26}},
{"5cfe8010d7ad1a59283b14c6",        {"X-47 762",        30132}},
{"5bae13ded4351e44f824bf38",        {"AA762R 02",        16361}},
{"59c1383d86f774290a37e0ca",        {"PMAG D60",        43765}},
{"5a9e81fba2750c00164f6b11",        {"SR3M.130",        44364}},
{"5c6592372e221600133e47d7",        {"MAG5-100",        20889}},
{"5a351711c4a282000b1521a4",        {"X-5 MP5",        23741}},
{"544a37c44bdc2d25388b4567",        {"MAG5-60",        57879}},
{"5c5db6742e2216000f1b2852",        {"MPX drum",        24012}},
{"5c5970672e221602b21d7855",        {"SKS AALVX",        11629}},
{"5caf1109ae9215753c44119f",        {"ASh-12",        22154}},
{"55d482194bdc2d1d4e8b456b",        {"6L31",        21644}},
{"55d485be4bdc2d962f8b456f",        {"PM drum",        20818}},
{"5d3eb5eca4b9363b1f22f8e4",        {"5-7",        10043}},
{"5addccf45acfc400185c2989",        {"X-14 762",        16682}},
{"5b7bef9c5acfc43d102852ec",        {"X-FAL 762",        14632}},
{"5cf8f3b0d7f00c00217872ef",        {"Powermag",        23951}},
{"5ba26586d4351e44f824b340",        {"MP7",        55310}},
{"5cc70093e4a949033c734312",        {"P90",        18941}},
{"5c88f24b2e22160bc12c69a6",        {"SVD",        18892}},
{"5df8f535bb49d91fb446d6b0",        {"KAC 762",        9550}},
{"5d25af8f8abbc3055079fec5",        {"AA-70",        15223}},
{"5c6175362e221600133e3b94",        {"AK-A-16",        45154}},
{"5de8e8dafd6b4e6e2276dc32",        {"MP9",        10875}},
{"5c503ad32e2216398b5aada2",        {"VPO101",        9403}},
{"5888988e24597752fe43a6fa",        {"DVL-10",        6295}},
{"5bed625c0db834001c062946",        {"RPK-16 drum",        18869}},
{"5de8ea8ffd6b4e6e2276dc35",        {"MP9",        14200}},
{"5ba264f6d4351e0034777d52",        {"MP7",        6785}},
{"5a7882dcc5856700177af662",        {"M870x4",        19099}},
{"5d2f213448f0355009199284",        {"MP5",        9996}},
{"5cf12a15d7f00c05464b293f",        {"AA-70",        15624}},
{"5addcce35acfc4001a5fc635",        {"M14",        18486}},
{"559ba5b34bdc2d1f1a8b4582",        {"SV-98 poly",        4677}},
{"5c920e902e221644f31c3c99",        {"P226",        11083}},
{"5cbdc23eae9215001136a407",        {"Molot drum",        18927}},
{"5c471c442e221602b542a6f8",        {"SVD",        5537}},
{"5c6d42cb2e2216000e69d7d1",        {"HK poly",        10177}},
{"5a718f958dc32e00094b97e7",        {"G SGMT",        11580}},
{"5caf1041ae92157c28402e3f",        {"ASh-12",        13569}},
{"5a3501acc4a282000d72293a",        {"PMAG 762",        22984}},
{"5d25a6a48abbc306c62e6310",        {"M700 AICS",        11377}},
{"5c0548ae0db834001966a3c2",        {"C-10 AK",        9605}},
{"57838f9f2459774a150289a0",        {"6L25",        16857}},
{"5de8eac42a78646d96665d91",        {"MP9",        25230}},
{"5ba2657ed4351e0035628ff2",        {"MP7",        38478}},
{"5a718b548dc32e000d46d262",        {"Glock 9x19",        1757}},
{"5448c1d04bdc2dff2f8b4569",        {"GEN M3",        3534}},
{"5d25a4a98abbc30b917421a4",        {"AICS",        5563}},
{"5ce69cbad7f00c00b61c5098",        {"PMAG .308 AC",        6853}},
{"5c5db6552e2216001026119d",        {"MPX",        3941}},
{"587df583245977373c4f1129",        {"SKS-A5",        7982}},
{"5bfea7ad0db834001c38f1ee",        {"Wyatt",        10422}},
{"5c5db6652e221600113fba51",        {"MPX pad",        16186}},
{"5d25a7b88abbc3054f3e60bc",        {"PMAG .308 AC",        12634}},
{"5d25a6538abbc306c62e630d",        {"AICS",        13092}},
{"5b7bef5d5acfc43bca7067a3",        {"SA58/FAL",        15163}},
{"5c6d46132e221601da357d56",        {"Battlemag",        13370}},
{"56deeefcd2720bc8328b4568",        {"МP153x8",        2122}},
{"5b7d37845acfc400170e2f87",        {"L1A1 762",        20044}},
{"56d59948d2720bb7418b4582",        {"P226",        10222}},
{"57838f0b2459774a256959b2",        {"6L24",        3897}},
{"5df25b6c0b92095fd441e4cf",        {"T-5000M",        50807}},
{"5aaa5dfee5b5b000140293d3",        {"GEN M3",        9593}},
{"5926c3b286f774640d189b6b",        {"MP5",        4987}},
{"5a718da68dc32e000d46d264",        {"GL9",        14725}},
{"5de8eaadbbaf010b10528a6d",        {"MP9",        16565}},
{"5cadc2e0ae9215051e1c21e7",        {"M9A3",        12323}},
{"5c0672ed0db834001b7353f3",        {"SG-919",        16974}},
{"5df8f541c41b2312ea3335e3",        {"KAC 762",        19997}},
{"5ae0973a5acfc4001562206c",        {"Mosin",        4468}},
{"59fafc5086f7740dbe19f6c3",        {"AK30",        19492}},
{"5a7ad2e851dfba0016153692",        {"Big Stick",        6073}},
{"544a378f4bdc2d30388b4567",        {"GEN M3",        10673}},
{"5c05413a0db834001c390617",        {"HK Steel",        9675}},
{"59d625f086f774661516605d",        {"AK55",        3536}},
{"55802d5f4bdc2dac148b458e",        {"GEN M3",        13745}},
{"57d1519e24597714373db79d",        {"PP91",        13194}},
{"587df3a12459772c28142567",        {"SKS int.",        5987}},
{"5bfeaa0f0db834001b734927",        {"Wyatt",        21805}},
{"5aaa5e60e5b5b000140293d6",        {"GEN M3",        2183}},
{"59d6272486f77466146386ff",        {"GEN M3",        18942}},
{"5aaf8a0be5b5b00015693243",        {"M1A",        7326}},
{"5b7c2d1d5acfc43d1028532a",        {"SA58/FAL MMW",        6204}},
{"576a5ed62459771e9c2096cb",        {"MP-443",        3485}},
{"5c6d450c2e221600114c997d",        {"PM Gen.2",        9286}},
{"59f99a7d86f7745b134aa97b",        {"SR1-MP",        4226}},
{"5c6161fb2e221600113fbde5",        {"Sb.3x5",        7926}},
{"5c503ac82e221602b21d6e9a",        {"VPO101",        4207}},
{"5b7bef1e5acfc43d82528402",        {"SA58/FAL",        2620}},
{"5aaa4194e5b5b055d06310a5",        {"GEN M3",        6531}},
{"5bed61680db834001d2c45ab",        {"AK-12",        10462}},
{"5894a05586f774094708ef75",        {"MPX",        3301}},
{"599860ac86f77436b225ed1a",        {"PP-19-01",        5937}},
{"5a78830bc5856700137e4c90",        {"M870x7",        36851}},
{"55d481904bdc2d8c2f8b456a",        {"6L26",        6951}},
{"5a966f51a2750c00156aacf6",        {"SAI-02",        9575}},
{"5b1fb3e15acfc4001637f068",        {"6P2 bak.",        6011}},
{"57d14e1724597714010c3f4b",        {"PP91",        1867}},
{"5ac66bea5acfc43b321d4aec",        {"AK-103",        5327}},
{"5a38ed75c4a28232996e40c6",        {"Sb.3x4",        1381}},
{"564ca9df4bdc2d35148b4569",        {"6L18",        8201}},
{"5a78832ec5856700155a6ca3",        {"M870x10",        33200}},
{"5a01c29586f77474660c694c",        {"6L10",        3134}},
{"571a29dc2459771fb2755a6a",        {"tt-105",        3964}},
{"5ac66c5d5acfc4001718d314",        {"6L29",        3096}},
{"5448c12b4bdc2d02308b456f",        {"PM",        6268}},
{"5c0673fb0db8340023300271",        {"SG-919",        2086}},
{"5a17fb03fcdbcbcae668728f",        {"APS",        1468}},
{"5b099ac65acfc400186331e1",        {"SA58/FAL",        4522}},
{"564ca99c4bdc2d16268b4589",        {"6L20",        2718}},
{"5882163e24597758206fee8c",        {"МP153x5",        902}},
{"55d4837c4bdc2d1d4e8b456c",        {"Saiga 545",        3504}},
{"59e5f5a486f7746c530b3ce2",        {"6P2 Sb-11",        9284}},
{"57616a9e2459773c7a400234",        {"Sb.5",        2923}},
{"55d485804bdc2d8c2f8b456b",        {"MP-133x8",        14742}},
{"55d484b44bdc2d1d4e8b456d",        {"MP-133x6",        4140}},
{"55d4887d4bdc2d962f8b4570",        {"STANAG",        6718}},
{"55d480c04bdc2d1d4e8b456a",        {"6L23",        4625}},
{"59e5d83b86f7745aed03d262",        {"AK ribbed",        1045}},
{"5882163824597757561aa922",        {"МP153x6",        1221}},
{"5882163224597757561aa920",        {"МP153x7",        1663}},
{"5a0060fc86f7745793204432",        {"AKMS al.",        11447}},
{"5998529a86f774647f44f421",        {"Sb.7",        1809}},
{"5a38ee51c4a282000c5a955c",        {"20-01 Sb.3x2",        725}},
{"5b1fd4e35acfc40018633c39",        {"AK al.",        5999}},
{"5c06595c0db834001a66af6c",        {"LA-5B/PEQ",        12167}},
{"5c5952732e2216398b5abda2",        {"Perst-3",        12125}},
{"544909bb4bdc2d6f028b4577",        {"AN/PEQ-15",        18066}},
{"5d2369418abbc306c62e0c80",        {"DBAL-PL",        27300}},
{"5b07dd285acfc4001754240d",        {"LAS/TAC 2",        26129}},
{"5b3a337e5acfc4704b4a19a0",        {"Klesch-2U",        18157}},
{"5a5f1ce64f39f90b401987bc",        {"2IRS",        14193}},
{"5a7b483fe899ef0016170d15",        {"XC1",        13166}},
{"5a800961159bd4315e3a1657",        {"GTL 21",        13387}},
{"5d10b49bd7ad1a1a560708b0",        {"AN/PEQ-2",        9703}},
{"57fd23e32459772d0805bcf1",        {"LS321",        17240}},
{"5c079ed60db834001a66b372",        {"TT Precision",        6572}},
{"560d657b4bdc2da74d8b4572",        {"Klesch",        10312}},
{"56def37dd2720bec348b456a",        {"X400",        10677}},
{"5cc9c20cd7f00c001336c65d",        {"TBL",        12949}},
{"59d790f486f77403cb06aec6",        {"XHP35",        5465}},
{"57d17c5e2459775a5c57d17d",        {"WF501B",        4284}},
{"5755356824597772cb798962",        {"AI-2",        2999}},
{"544fb37f4bdc2dee738b4567",        {"Painkillers",        5845}},
{"544fb25a4bdc2dfb738b4567",        {"Bandage",        1894}},
{"544fb3364bdc2d34748b456a",        {"Splint",        2527}},
{"5751a25924597722c463c472",        {"Bandage",        2228}},
{"5c1cd46f2e22164bef5cfedb",        {"B-25U RK-1",        46766}},
{"5c1bc5af2e221602b412949b",        {"RK-2",        12670}},
{"5b057b4f5acfc4771e1bd3e9",        {"SE-5",        31444}},
{"5de8fbad2fbe23140d3ee9c4",        {"MP9 VFG",        13611}},
{"5c1bc5612e221602b5429350",        {"RK-1",        50331}},
{"59f8a37386f7747af3328f06",        {"Shift",        92869}},
{"5a7dbfc1159bd40016548fde",        {"CQR",        16439}},
{"5c791e872e2216001219c40a",        {"SI Cobra",        20296}},
{"57cffb66245977632f391a99",        {"AFG M-LOK",        46638}},
{"5c1bc7432e221602b412949d",        {"RK-5",        21526}},
{"5c1bc7752e221602b1779b34",        {"RK-6",        9637}},
{"588226dd24597767ad33f789",        {"AFG FDE",        11533}},
{"588226e62459776e3e094af7",        {"AFG FG",        10198}},
{"588226ef24597767af46e39c",        {"AFG OD",        28472}},
{"588226d124597767ad33f787",        {"AFG blk.",        13543}},
{"5c1bc4812e22164bef5cfde7",        {"RK-0",        18625}},
{"59fc48e086f77463b1118392",        {"RVG blk.",        22642}},
{"5c1bc5fb2e221602b1779b32",        {"RK-4",        11511}},
{"5c7fc87d2e221644f31c0298",        {"GF MOD.3",        7229}},
{"5cf4fb76d7f00c065703d3ac",        {"Pillau",        5856}},
{"5c87ca002e221600114cb150",        {"KAC VG",        10145}},
{"558032614bdc2de7118b4585",        {"BGV-MK46K",        6341}},
{"58c157be86f77403c74b2bb6",        {"BGV-MK46K FDE",        5559}},
{"58c157c886f774032749fb06",        {"BGV-MK46K SG",        6116}},
{"591af28e86f77414a27a9e1d",        {"UVG",        14077}},
{"5cda9bcfd7f00c0c0b53e900",        {"ASh-12",        24181}},
{"5df36948bb49d91fb446d5ad",        {"T-5000 pad",        1850}},
{"57cffcd624597763133760c5",        {"AFG M-LOK",        40294}},
{"57cffcdd24597763f5110006",        {"AFG M-LOK",        7984}},
{"57cffce524597763b31685d8",        {"AFG M-LOK",        62344}},
{"5a33e75ac4a2826c6e06d759",        {"CQR",        21698}},
{"5d025cc1d7ad1a53845279ef",        {"Ergo",        43278}},
{"5df38a5fb74cd90030650cb6",        {"T-5000",        4479}},
{"5b3cadf35acfc400194776a0",        {"TT grips",        14159}},
{"56e05a6ed2720bd0748b4567",        {"PB bakelite",        9000}},
{"59db3a1d86f77429e05b4e92",        {"GRAL-S",        55278}},
{"5cf54404d7f00c108840b2ef",        {"AK MG-47",        12035}},
{"5b30ac585acfc433000eb79c",        {"MOE AK",        84346}},
{"5c6bf4aa2e2216001219b0ae",        {"US Palm AK",        25887}},
{"5bffef760db8340019668fe4",        {"P226 CL",        8300}},
{"55802f5d4bdc2dac148b458f",        {"AR15 MOE",        31207}},
{"5d15cf3bd7ad1a67e71518b2",        {"MOE FDE",        19454}},
{"5c6d7b3d2e221600114c9b7d",        {"HK V2",        10284}},
{"5bb20e0ed4351e3bac1212dc",        {"Battle Grip",        10619}},
{"5649ae4a4bdc2d1b2b8b4588",        {"RК-3",        22240}},
{"5d023784d7ad1a049d4aa7f2",        {"SKS AG-58",        7616}},
{"5bffcf7a0db83400232fea79",        {"TT-206",        6135}},
{"5bbde41ed4351e003562b038",        {"Mosin",        17243}},
{"5b07db875acfc40dc528a5f6",        {"TD120001",        179798}},
{"5c079ec50db834001966a706",        {"TT RazorArms",        7426}},
{"59db3b0886f77429d72fb895",        {"Stark AR RG",        23449}},
{"59db3acc86f7742a2c4ab912",        {"Stark AR RG",        29739}},
{"5cc9bcaed7f00c011c04e179",        {"HG15",        21424}},
{"5947fa2486f77425b47c1a9b",        {"SAW",        10827}},
{"5947f92f86f77427344a76b1",        {"SAW",        15232}},
{"5b7d679f5acfc4001a5c4024",        {"SA58 AG-FAL",        11916}},
{"5b099b965acfc400186331e6",        {"SA58 SAW",        5679}},
{"5a69a2ed8dc32e000d46d1f1",        {"R43 VAL",        118766}},
{"57c55efc2459772d2c6271e7",        {"OMRG Blk.",        28868}},
{"57af48872459771f0b2ebf11",        {"OMRG FDE",        31348}},
{"57c55f092459772d291a8463",        {"OMRG GE",        20764}},
{"57c55f112459772d28133310",        {"OMRG GG",        23725}},
{"57c55f172459772d27602381",        {"OMRG OD",        20977}},
{"5b39ffbd5acfc47a8773fb06",        {"P226 Hogue",        6316}},
{"5c471be12e221602b66cd9ac",        {"SVDS",        6617}},
{"5cf50850d7f00c056e24104c",        {"AK EPG",        10430}},
{"5cf508bfd7f00c056e24104e",        {"AK EPG",        7918}},
{"57d152ec245977144076ccdf",        {"PP91",        5462}},
{"5bb20e18d4351e00320205d5",        {"Battle Grip",        11940}},
{"55d4b9964bdc2d1d4e8b456e",        {"A2",        4029}},
{"5c48a2c22e221602b313fb6c",        {"MDR",        15516}},
{"5dcbd6dddbd3d91b3e5468de",        {"MDR Black",        13340}},
{"5bffec120db834001c38f5fa",        {"P226 Axelson",        9109}},
{"5a339805c4a2826c6e06d73d",        {"MIAD FDE",        9087}},
{"5addc7db5acfc4001669f279",        {"M14ALCS",        7005}},
{"5bfe86a20db834001d23e8f7",        {"AGR-870",        7010}},
{"5afd7e445acfc4001637e35a",        {"SKS SAW",        5007}},
{"5cdeac5cd7f00c000f261694",        {"Pro700",        5160}},
{"5beec8ea0db834001a6f9dbf",        {"AK-12",        13864}},
{"5a7b4960e899ef197b331a2d",        {"G Pach TRG",        7898}},
{"571659bb2459771fb2755a12",        {"ECS FDE",        3177}},
{"5c00076d0db834001d23ee1f",        {"P226 Elite Wooden",        7140}},
{"5a0071d486f77404e23a12b2",        {"AKM wood",        18222}},
{"57c44fa82459772d2d75e415",        {"VAL",        10143}},
{"571a282c2459771fb2755a69",        {"TT grips",        5057}},
{"56d5a2bbd2720bb8418b456a",        {"P226 Black",        22278}},
{"5c0006470db834001a6697fe",        {"P226 Scorpion",        2450}},
{"5894a51286f77426d13baf02",        {"MPX",        6739}},
{"5a17fc70fcdbcb0176308b3d",        {"APS Bak.",        9200}},
{"5c0684e50db834002a12585a",        {"Hogue-like",        4684}},
{"5b7d678a5acfc4001a5c4022",        {"SA58",        2980}},
{"5998517986f7746017232f7e",        {"PP-19-01",        5457}},
{"59e62cc886f77440d40b52a1",        {"AKM bak.",        7000}},
{"5649ad3f4bdc2df8348b4585",        {"6P4 Sb.8V",        8000}},
{"576a63cd2459771e796e0e11",        {"MP443",        3685}},
{"5649ade84bdc2d1b2b8b4587",        {"6P1 Sb.8",        4555}},
{"5a38eecdc4a282329a73b512",        {"TOZ106",        7225}},
{"59e6318286f77444dd62c4cc",        {"Molot bak.",        6085}},
{"57e3dba62459770f0c32322b",        {"6P4 Sb.9",        5009}},
{"5cadc431ae921500113bb8d5",        {"M9A3 PGrip",        8263}},
{"5c1a1cc52e221602b3136e3d",        {"M Frame",        7913}},
{"5aa2b923e5b5b000137b7589",        {"RGlasses",        13229}},
{"5d5fca1ea4b93635fd598c07",        {"Crossbow",        8339}},
{"59e770b986f7742cbd762754",        {"AFGlass",        9592}},
{"5c0d32fcd174af02a1659c75",        {"Proximity",        5854}},
{"5d6d2ef3a4b93618084f58bd",        {"Aviator",        6339}},
{"5d6d2e22a4b9361bd5780d05",        {"Gascan",        5208}},
{"5b432be65acfc433000ed01f",        {"6B34",        3179}},
{"5aa2b9aee5b5b00015693121",        {"RayBench",        13176}},
{"5aa2b986e5b5b00014028f4c",        {"Dundukk",        2597}},
{"557ff21e4bdc2d89578b4586",        {"TGlasses",        1253}},
{"5a16b8a9fcdbcb00165aa6ca",        {"TATM",        15665}},
{"5a16b93dfcdbcbcae6687261",        {"DDT",        9944}},
{"5c11046cd174af02a012e42b",        {"W-PVS7",        6588}},
{"5c0695860db834001b735461",        {"10T adapter",        20616}},
{"5c0e66e2d174af02a96252f4",        {"SLAAP",        57378}},
{"5d6d3be5a4b9361bc73bc763",        {"Aventail",        20912}},
{"5e00cfa786f77469dc6e5685",        {"TW Ears",        35677}},
{"5a16badafcdbcb001865f72d",        {"SArmor",        23489}},
{"5c178a942e22164bef5ceca3",        {"Chops",        29325}},
{"5c1793902e221602b21d3de2",        {"CP Ears",        22302}},
{"5a16ba61fcdbcb098008728a",        {"Mandible",        13651}},
{"5e01f31d86f77465cf261343",        {"TW Ears",        29753}},
{"5d6d3943a4b9360dbc46d0cc",        {"Cover",        7336}},
{"5d2f261548f03576f500e7b7",        {"MP5K Upper",        6711}},
{"5c07a8770db8340023300450",        {"Gen.3 upper",        27849}},
{"59bfe68886f7746004266202",        {"MUR-1S Upper",        45176}},
{"5a71e4f48dc32e001207fb26",        {"G ZT Spartan",        17714}},
{"5d2c772c48f0355d95672c25",        {"Dog Leg Rail",        30747}},
{"5cadc55cae921500103bb3be",        {"M9A3",        3685}},
{"5a7afa25e899ef00135e31b0",        {"PS9",        14122}},
{"5a71e22f8dc32e00094b97f4",        {"G ZT HEX",        14199}},
{"5d2c770c48f0354b4a07c100",        {"PDC",        34832}},
{"5de8e67c4a9f347bc92edbd7",        {"MP9-N Upper",        27500}},
{"5bffe7c50db834001d23ece1",        {"P226 Axelson",        11018}},
{"5bb20d53d4351e4502010a69",        {"416A5 Upper",        8260}},
{"5c503d0a2e221602b542b7ef",        {"VPO101",        12000}},
{"5d4405aaa4b9361e6a4e6bd3",        {"TX15 LW Upper",        37450}},
{"5649af884bdc2d1b2b8b4589",        {"B-33",        40687}},
{"5b099bb25acfc400186331e8",        {"SA58 ED",        19862}},
{"5beec91a0db834001961942d",        {"RPK-16",        7785}},
{"5926f2e086f7745aae644231",        {"MP5SD upper",        17859}},
{"5839a7742459773cf9693481",        {"AKS-74UB",        36198}},
{"5a6f5f078dc32e00094b97dd",        {"G ViperCut",        8937}},
{"5cc70102e4a949035e43ba74",        {"P90 Upper",        6629}},
{"5a9685b1a2750c0032157104",        {"G MotoCut",        9017}},
{"5a7033908dc32e000a311392",        {"G AW C",        9981}},
{"5a702d198dc32e000b452fc3",        {"G AW",        8366}},
{"5c010a700db834001d23ef5d",        {"P226 EmpScorp",        9639}},
{"5d2c76ed48f03532f2136169",        {"Bastion",        6438}},
{"5894a5b586f77426d2590767",        {"MPX GEN1",        15130}},
{"5c471bd12e221602b4129c3a",        {"SVDS",        9068}},
{"5c0e2f26d174af02a9625114",        {"ADAR Upper",        9088}},
{"5cc700ede4a949033c734315",        {"EFFEN 90",        27048}},
{"55d355e64bdc2d962f8b4569",        {"M4A1 Upper",        7085}},
{"5c0009510db834001966907f",        {"P226 Stainless Elite",        6016}},
{"5c0125fc0db834001a669aa3",        {"P226 Legion",        5276}},
{"5926c0df86f77462f647f764",        {"MP5 Upper",        6714}},
{"5dfce88fe9dc277128008b2e",        {"SVDS CDC",        33333}},
{"5df8e4080b92095fd441e594",        {"SR-25 Upper",        4774}},
{"56d5a407d2720bb3418b456b",        {"P226 Slide",        3563}},
{"5a6f5e048dc32e00094b97da",        {"Glock",        6008}},
{"59985a6c86f77414ec448d17",        {"Vityaz-SN",        3202}},
{"5cf7acfcd7f00c1084477cf2",        {"PS90 Upper",        7761}},
{"578395402459774a256959b5",        {"VSS",        19912}},
{"57c44f4f2459772d2c627113",        {"VAL",        20667}},
{"5b7d6c105acfc40015109a5f",        {"FAL",        2603}},
{"5ac50da15acfc4001718d287",        {"6P34 0-1",        29999}},
{"59e6449086f7746c9f75e822",        {"Molot",        10358}},
{"5649af094bdc2df8348b4586",        {"6P1 0-1",        8187}},
{"57dc334d245977597164366f",        {"6P26 Sb.7",        5762}},
{"59d6507c86f7741b846413a2",        {"6P1 0-1",        8750}},
{"57616c112459773cce774d66",        {"Sb.0-2",        9999}},
{"59985a8086f77414ec448d1a",        {"PP-19-01",        3428}},
{"5b1faa0f5acfc40dc528aeb5",        {"G18C",        6537}},
{"5d3eb44aa4b93650d64e4979",        {"5-7",        9784}},
{"58949edd86f77409483e16a9",        {"MPX 2x",        13602}},
{"5de922d4b11454561e39239f",        {"MP9 CH",        650}},
{"5b2240bf5acfc40dc528af69",        {"Raptor",        19000}},
{"5cc6ea78e4a949000e1ea3c1",        {"P90",        29141}},
{"5df8e053bb49d91fb446d6a6",        {"SR-25",        22405}},
{"55d44fd14bdc2d962f8b456e",        {"AR-15",        2500}},
{"5926c32286f774616e42de99",        {"MP5 CH",        7565}},
{"56ea7165d2720b6e518b4583",        {"BOTL",        14104}},
{"5df8e085bb49d91fb446d6a8",        {"SR-25 Ambi",        10000}},
{"5bb20dbcd4351e44f824c04e",        {"Ext. Latch",        10770}},
{"5c0faf68d174af02a96260b8",        {"ADAR",        9148}},
{"5c5db6b32e221600102611a0",        {"MPX SCH",        15848}},
{"5cc6ea85e4a949000e1ea3c3",        {"TheHandler",        16600}},
{"5648ac824bdc2ded0b8b457d",        {"RP-1",        3212}},
{"58949fac86f77409483e16aa",        {"MPX 1x",        24407}},
{"5d2f2d5748f03572ec0c0139",        {"MP5K CH",        20067}},
{"5c471c842e221615214259b5",        {"SVDS",        17727}},
{"59e649f986f77411d949b246",        {"Molot GTube",        33752}},
{"5d00ec68d7ad1a04a067e5be",        {"GS-5B",        59071}},
{"5b237e425acfc4771e1be0b6",        {"TROY Combo",        17660}},
{"5cf656f2d7f00c06585fb6eb",        {"VS Combo",        20858}},
{"5a34fbadc4a28200741e230a",        {"JPGS6",        9408}},
{"5dfa3d45dfc58d14537c20b0",        {"SR25",        11250}},
{"5a01ad4786f77450561fda02",        {"VDM CS",        2904}},
{"56ea8d2fd2720b7c698b4570",        {"RGBlock",        10354}},
{"56eabcd4d2720b66698b4574",        {"MK12",        6144}},
{"59ccd11386f77428f24a488f",        {"PP-19-01 GTube",        11215}},
{"59d36a0086f7747e673f3946",        {"AKS74U GTube",        8333}},
{"5bb20dcad4351e3bac1212da",        {"416A5",        9876}},
{"59d64ec286f774171d1e0a42",        {"6P1 Sb.1-2",        8610}},
{"59c6633186f7740cf0493bb9",        {"AK74 GTube",        7363}},
{"5ae30e795acfc408fb139a0b",        {"M4 FS",        13838}},
{"5c5039be2e221602b177c9ff",        {"VPO101",        31952}},
{"59ccfdba86f7747f2109a587",        {"M1-B",        4798}},
{"5dfa3cd1b33c0951220c079b",        {"KAC QDC",        9934}},
{"5c78f2882e22165df16b832e",        {"JailBrake",        8558}},
{"5cdd7693d7f00c0010373aa5",        {"M11",        8210}},
{"5d026791d7ad1a04a067ea63",        {"RED 762",        18986}},
{"5dcbe965e4ed22586443a79d",        {"MDR .308",        8006}},
{"5cdd7685d7f00c000f260ed2",        {"SHREWD 762",        8679}},
{"5c878ebb2e2216001219d48a",        {"DGNAK47B",        31664}},
{"5addbb825acfc408fb139400",        {"M14 JP",        5929}},
{"5bc5a35cd4351e450201232f",        {"Mosin WM",        9157}},
{"5c878e9d2e2216000f201903",        {"DGN762B",        31515}},
{"5cf6937cd7f00c056c53fb39",        {"ST6012 556",        15443}},
{"5998597786f77414ea6da093",        {"PP-19-01",        6192}},
{"5d1f819086f7744b355c219b",        {"WAVE 762",        11853}},
{"5cf78720d7f00c06595bc93e",        {"BMD 762",        11373}},
{"5c7951452e221644f31bfd5c",        {"Antidote",        18463}},
{"5bbdb8bdd4351e4502011460",        {"Atlas 7 762",        12978}},
{"5d02676dd7ad1a049e54f6dc",        {"Vette 556",        12873}},
{"5a7b32a2e899ef00135e345a",        {"G G4",        9821}},
{"5a7c147ce899ef00150bd8b8",        {"VP-09 556",        6420}},
{"5943eeeb86f77412d6384f6b",        {"PWS CQB 74",        22363}},
{"5943ee5a86f77413872d25ec",        {"PWS CQB",        9414}},
{"5a7ad0c451dfba0013379712",        {"G CC 4P",        4769}},
{"5d443f8fa4b93678dd4a01aa",        {"30CB",        21180}},
{"5d02677ad7ad1a04a15c0f95",        {"Vette 762",        8787}},
{"5c07c5ed0db834001b73571c",        {"MP5 Noveske",        14026}},
{"5a70366c8dc32e001207fb06",        {"G DD FH",        3957}},
{"59fb137a86f7740adb646af1",        {"Monster Claw",        21837}},
{"5addbb945acfc4001a5fc44e",        {"M14 GoodIron",        7791}},
{"5c4ee3d62e2216152006f302",        {"SV98 Mk.2.0",        8027}},
{"5b3a16655acfc40016387a2a",        {"Annihilator",        76911}},
{"5bc5a351d4351e003477a414",        {"Mosin TPP",        8457}},
{"5b7d693d5acfc43bca706a3d",        {"X3 762",        8897}},
{"5cff9e5ed7ad1a09407397d4",        {"WAVE 556",        11557}},
{"5cf6935bd7f00c06585fb791",        {"MPX CBrake",        11612}},
{"5c7fb51d2e2216001219ce11",        {"AR15 SF3P",        9531}},
{"56ea8180d2720bf2698b456a",        {"QDC 556",        10189}},
{"5b099b7d5acfc400186331e4",        {"SA58 3-pr.",        2954}},
{"5ac72e945acfc43f3b691116",        {"6P44 0-20",        22369}},
{"5ac72e725acfc400180ae701",        {"6P44 0-20",        24999}},
{"5d440625a4b9361eec4ae6c5",        {"223CB",        10677}},
{"5cc9b815d7f00c000e2579d6",        {"TROY Claymore",        5602}},
{"5ac72e895acfc43b321d4bd5",        {"6P46 0-20",        9166}},
{"5c7e5f112e221600106f4ede",        {"51T 556",        12720}},
{"5addbbb25acfc40015621bd9",        {"Phantom 762",        5541}},
{"5bbdb83fd4351e44f824c44b",        {"Mosin Tanker",        5029}},
{"58889c7324597754281f9439",        {"DVL-10 MD",        11811}},
{"5beec3420db834001b095429",        {"RPK-16",        2894}},
{"5cc9ad73d7f00c000e2579d4",        {"SRVV",        24458}},
{"5cc9a96cd7f00c011c04e04a",        {"AK74 SRVV",        26934}},
{"5caf17c9ae92150b30006be1",        {"ASh-12",        5727}},
{"5addbba15acfc400185c2854",        {"M14 Vortex",        3855}},
{"5c4eec9b2e2216398b5aaba2",        {"SV98 thr.",        24345}},
{"5c6beec32e221601da3578f2",        {"P226 TJC",        4033}},
{"5649ab884bdc2ded0b8b457f",        {"DTK-1",        7999}},
{"5df35e7f2a78646d96665dd4",        {"T-5000M",        8702}},
{"5a34fd2bc4a282329a73b4c5",        {"51T 762",        14809}},
{"5c48a2a42e221602b66d1e07",        {"MDR 5.56",        7258}},
{"5c6d710d2e22165df16b81e7",        {"WarComp 556",        30000}},
{"5ac72e7d5acfc40016339a02",        {"AK-103",        5260}},
{"5a7037338dc32e000d46d257",        {"G 3Port",        5480}},
{"5addbb6e5acfc408fb1393fd",        {"NM",        5914}},
{"5888996c24597754281f9419",        {"DVL-10 М2",        7901}},
{"5bffd7ed0db834001d23ebf9",        {"DTK-TT",        3888}},
{"5ac72e615acfc43f67248aa0",        {"AK-101",        600}},
{"5ba26acdd4351e003562908e",        {"MP7A1",        7750}},
{"5a9ea27ca2750c00137fa672",        {"Dynacomp AK",        6402}},
{"5a705e128dc32e000d46d258",        {"G AW",        3662}},
{"56ea6fafd2720b844b8b4593",        {"KX3 556",        5807}},
{"59e61eb386f77440d64f5daf",        {"VPO136",        23056}},
{"5a7ad1fb51dfba0013379715",        {"LWD-COMP9",        4175}},
{"5cc82796e24e8d000f5859a8",        {"P90",        5311}},
{"5b7d68af5acfc400170e30c3",        {"SA58 Austrian",        5809}},
{"5c471bfc2e221602b21d4e17",        {"SVDS",        11024}},
{"5c0fafb6d174af02a96260ba",        {"ADAR",        13529}},
{"560e620e4bdc2d724b8b456b",        {"SV-98 MD",        6242}},
{"544a38634bdc2d58388b4568",        {"USGI A2",        4555}},
{"5a0abb6e1526d8000a025282",        {"TT AK",        4497}},
{"5ac7655e5acfc40016339a19",        {"6P20 0-20",        9891}},
{"58949dea86f77409483e16a8",        {"MPX A2",        6176}},
{"5a0d716f1526d8000d26b1e2",        {"AKML",        6832}},
{"5649aa744bdc2ded0b8b457e",        {"6P20 0-20",        9000}},
{"57dc324a24597759501edc20",        {"6P26 0-20",        4599}},
{"59e8a00d86f7742ad93b569c",        {"VPO209 thr.",        2000}},
{"59d64fc686f774171b243fe2",        {"6P1 0-14",        5816}},
{"5998598e86f7740b3f498a86",        {"Saiga-9",        4222}},
{"5aafa1c2e5b5b00015042a56",        {"SOCOM16 M1A",        4652}},
{"5ab3afb2d8ce87001660304d",        {"SOCOM16 thr.",        43888}},
{"5a1eacb3fcdbcb09800872be",        {"REAP-IR cup",        22275}},
{"5d123b70d7ad1a0ee35e0754",        {"KAC long",        8537}},
{"56083eab4bdc2d26448b456a",        {"SV-98 HR",        9687}},
{"5d123b7dd7ad1a004f01b262",        {"KAC stopper",        6766}},
{"5d123a3cd7ad1a004e476058",        {"KAC short",        8196}},
{"5b3cbc235acfc4001863ac44",        {"Vulcan MG cup",        7762}},
{"5c4eecde2e221602b3140418",        {"SV-98 HS",        7952}},
{"5d0b5cd3d7ad1a3fe32ad263",        {"1P59 cup",        4563}},
{"57f3a5ae2459772b0e0bf19e",        {"PSO eyecup",        7558}},
{"5cf639aad7f00c065703d455",        {"USP-1 cup",        3063}},
{"5bfe86bd0db83400232fe959",        {"AGR-870 cap",        6273}},
{"5ba36f85d4351e0085325c81",        {"NSPU-M cup",        1580}},
{"5a71e1868dc32e00094b97f3",        {"G ZT cap",        6579}},
{"591c4e1186f77410354b316e",        {"Kobra",        3225}},
{"5cf78496d7f00c065703d6ca",        {"BMD A3",        14444}},
{"57f3c7e024597738ea4ba286",        {"PP9101 thr.",        6817}},
{"5a6b585a8dc32e5a9c28b4f1",        {"G AW thr.",        3947}},
{"5de8f237bbaf010b10528a70",        {"MP9 mount",        4350}},
{"5c7954d52e221600106f4cc7",        {"ONE mount",        20958}},
{"560838c94bdc2d77798b4569",        {"RTC 12ga",        14597}},
{"59bffc1f86f77435b128b872",        {"DT Mount",        8562}},
{"5a6b592c8dc32e00094b97bf",        {"G DD thr.",        6856}},
{"5926e16e86f7742f5a0f7ecb",        {"3 Lug",        9270}},
{"5c0000c00db834001a6697fc",        {"MP5 3Lug",        11233}},
{"5cf79599d7f00c10875d9212",        {"TR thr.",        5352}},
{"5e01e9e273d8eb11426f5bc3",        {"SVDS Thr.",        36629}},
{"58272d7f2459774f6311ddfd",        {"GK-02",        8111}},
{"5c0111ab0db834001966914d",        {"Cylinder 12ga",        4901}},
{"5cf67a1bd7f00c06585fb6f3",        {"WT1052",        5412}},
{"5cf67cadd7f00c065a5abab7",        {"WT SKS",        13210}},
{"5b363e1b5acfc4771e1c5e80",        {"12ga thr.",        6857}},
{"5cf79389d7f00c10941a0c4d",        {"Mosin thr.",        1500}},
{"5de6556a205ddc616a6bc4f7",        {"VPO215 cap",        29999}},
{"5a6b59a08dc32e000b452fb7",        {"G SAI thr.",        6240}},
{"587de5ba2459771c0f1e8a58",        {"P226 thr. cap",        400}},
{"576167ab2459773cad038c43",        {"SOK-12 thr. tube",        14663}},
{"5d270ca28abbc31ee25ee821",        {"M700 cap",        600}},
{"5cadc390ae921500126a77f1",        {"M9A3 cap",        300}},
{"5df916dfbb49d91fb446d6b9",        {"URX 4 14.5\"",        18125}},
{"5d2f259b48f0355a844acd74",        {"MP5K",        3365}},
{"5cf4e3f3d7f00c06595bc7f0",        {"Aggressor",        23912}},
{"5c17664f2e2216398b5a7e3c",        {"CMRD",        37109}},
{"5b800e9286f7747a8b04f3ff",        {"HEX blk",        15640}},
{"5b099a9d5acfc47a8607efe7",        {"SA58 4Rail",        7780}},
{"5beec3e30db8340019619424",        {"RPK-16",        7012}},
{"5648b4534bdc2d3d1c8b4580",        {"B10М+B19",        19764}},
{"57cff947245977638e6f2a19",        {"MOE AKM",        20736}},
{"5d123102d7ad1a004e475fe5",        {"AR15 URX 3 8\"",        11815}},
{"5d00ede1d7ad1a0940739a76",        {"SWS N6 10.5\"",        10738}},
{"5d122e7bd7ad1a07102d6d7f",        {"URX 3.1 10.75\"",        16358}},
{"5a957c3fa2750c00137fa5f7",        {"XRSU47SU",        34043}},
{"5a9d6d34a2750c00141e07da",        {"TRAX 2",        9919}},
{"5648ae314bdc2d3d1c8b457f",        {"CAA RS47",        11741}},
{"5c78f2492e221600114c9f04",        {"AR15 SAI QD 14.5\"",        36548}},
{"5c9a25172e2216000f20314e",        {"RIS II 12.25 FDE",        20125}},
{"5c5db5f22e2216000e5e47e8",        {"MPX Midwest 4.5\"",        5644}},
{"5c48a14f2e2216152006edd7",        {"MDR",        71111}},
{"5df25d3bfd6b4e6e2276dc9a",        {"T-5000",        6500}},
{"5888976c24597754281f93f5",        {"DVL-10 М2",        15975}},
{"5a788068c5856700137e4c8f",        {"M870 MOE",        59300}},
{"5b2cfa535acfc432ff4db7a0",        {"MK10 RL",        17326}},
{"5c59529a2e221602b177d160",        {"MPX OEM 14\"",        12878}},
{"5a329052c4a28200741e22d3",        {"RSASS",        16337}},
{"5d010d1cd7ad1a59283b1ce7",        {"MP5 HX-5",        14057}},
{"5c6d5d8b2e221644fc630b39",        {"VYPR 10\"",        15922}},
{"5a9d56c8a2750c0032157146",        {"TRAX 1",        10279}},
{"588b56d02459771481110ae2",        {"RIS II 9.5 blk.",        13779}},
{"5d15ce51d7ad1a1eff619092",        {"Goliaf",        6982}},
{"5c6c2c9c2e2216000f2002e4",        {"416A5 TROY 13\"",        11218}},
{"5b7bee755acfc400196d5383",        {"SA58 CASV FAS",        8025}},
{"5b7bedd75acfc43d825283f9",        {"FAL CASV",        13525}},
{"5827272a24597748c74bdeea",        {"MTU002 L",        12270}},
{"595cfa8b86f77427437e845b",        {"LVOA-C",        18851}},
{"5c6d11152e2216000f2003e7",        {"416A5 CRUX 15\"",        26034}},
{"5c6d11072e2216000e69d2e4",        {"416A5 Midwest 13.5\"",        8338}},
{"595cf16b86f77427440c32e2",        {"LVOA-S",        13857}},
{"5c9a26332e2216001219ea70",        {"RIS II FSP 9.5 FDE",        53308}},
{"5c9a07572e221644f31c4b32",        {"Zhukov-U",        14742}},
{"5dfcd0e547101c39625f66f9",        {"SAG MK1",        15912}},
{"5c78f26f2e221601da3581d1",        {"MOE SL",        12683}},
{"59fb375986f7741b681b81a6",        {"UFM",        10772}},
{"5c78f2612e221600114c9f0d",        {"AR15 SAI QD 10\"",        14706}},
{"5d00ef6dd7ad1a0940739b16",        {"SWS N6 Split",        14937}},
{"5d4405f0a4b9361e6a4e6bd9",        {"Ion Lite",        16280}},
{"55d45f484bdc2d972f8b456d",        {"MP133 rails",        17703}},
{"5d2c829448f0353a5c7d6674",        {"CAF wood",        11469}},
{"5c6d10e82e221601da357b07",        {"416A5 MRS 14\"",        13636}},
{"5c78f2792e221600106f4683",        {"MOE SL",        10874}},
{"5bb20dfcd4351e00334c9e24",        {"416A5 4Rail ext.",        7325}},
{"5bb20df1d4351e00347787d5",        {"416A5 4Rail",        5030}},
{"5a9548c9159bd400133e97b3",        {"TL-99",        10076}},
{"57ffa9f4245977728561e844",        {"B-11",        6078}},
{"5d1b198cd7ad1a604869ad72",        {"AKM-L",        6418}},
{"5cde7afdd7f00c000d36b89d",        {"MOD*X",        14941}},
{"58272b392459774b4c7b3ccd",        {"MTU002 S",        8410}},
{"5c617a5f2e2216000f1e81b3",        {"B-10",        9798}},
{"5c6d10fa2e221600106f3f23",        {"416A5 Midwest 9\"",        8000}},
{"5d19cd96d7ad1a4a992c9f52",        {"MP5 Tri-Rail",        16434}},
{"5bb20de5d4351e0035629e59",        {"416A5 4Rail",        5436}},
{"5b7bebc85acfc43bca706666",        {"SA58 M-LOK",        5484}},
{"5cdaa99dd7f00c002412d0b2",        {"ASh-12",        6830}},
{"5c471c6c2e221602b66cd9ae",        {"SVDS",        12407}},
{"5c5db6302e2216000e5e47f0",        {"MPX Midwest 10.5\"",        7800}},
{"55d459824bdc2d892f8b4573",        {"KAC RIS",        7889}},
{"5b7be2345acfc400196d524a",        {"SA58 KeyMod",        7284}},
{"5894a42086f77426d2590762",        {"MPX GEN1",        4707}},
{"5c0e2f5cd174af02a012cfc9",        {"ADAR wood",        9211}},
{"5926f34786f77469195bfe92",        {"MP5SD HG",        16249}},
{"5b7d671b5acfc43d82528ddd",        {"FAL Belgian",        6441}},
{"5c5db5fc2e2216000f1b2842",        {"MPX Midwest 6.5\"",        7034}},
{"576169e62459773c69055191",        {"Sb.7-1",        5533}},
{"5ae30db85acfc408fb139a05",        {"M4",        7628}},
{"5cbda392ae92155f3c17c39f",        {"AK100",        6937}},
{"5a788031c585673f2b5c1c79",        {"PR870",        5114}},
{"5648b1504bdc2d9d488b4584",        {"6P20 Sb.9",        12493}},
{"59d64f2f86f77417193ef8b3",        {"6P1 Sb.6-1",        13802}},
{"59e898ee86f77427614bd225",        {"VPO209",        3333}},
{"59e6284f86f77440d569536f",        {"VPO136",        9780}},
{"5648b0744bdc2d363b8b4578",        {"6P20 Sb.6",        9833}},
{"57dc32dc245977596d4ef3d3",        {"6P26 Sb.6",        8000}},
{"5926c36d86f77467a92a8629",        {"MP5WT",        6033}},
{"5a788089c5856700142fdd9c",        {"Speedfeed",        2492}},
{"5b7bed205acfc400161d08cc",        {"FAL",        6625}},
{"55d45d3f4bdc2d972f8b456c",        {"MP133 beech",        12062}},
{"56deed6ed2720b4c698b4583",        {"МP153 Poly",        19875}},
{"5d00e0cbd7ad1a6c6566a42d",        {"AR15 Viper",        11399}},
{"57cffd8224597763b03fc609",        {"MOE AKM",        10529}},
{"57cffddc24597763133760c6",        {"MOE AKM",        13666}},
{"57cffe0024597763b03fc60b",        {"MOE AKM",        10151}},
{"57cffe20245977632f391a9d",        {"MOE AKM",        10797}},
{"5c9a1c3a2e2216000e69fb6a",        {"Zhukov-U",        10751}},
{"5c9a1c422e221600106f69f0",        {"Zhukov-U",        11959}},
{"5dcbe9431e1f4616d354987e",        {"MDR 308 16\"",        26646}},
{"5d3eb5b6a4b9361eab311902",        {"5-7 barrel",        17750}},
{"5d3eb59ea4b9361c284bb4b2",        {"5-7 thr.",        4200}},
{"5c48a2852e221602b21d5923",        {"MDR 556 406mm",        25448}},
{"5df256570dee1b22f862e9c4",        {"T-5000M 660mm",        17672}},
{"5a6b5ed88dc32e000c52ec86",        {"G SAI",        14482}},
{"5d440b93a4b9364276578d4b",        {"AR-15 18\"",        30190}},
{"5dfa397fb11454561e39246c",        {"SR-25 20\"",        40300}},
{"5a6b5b8a8dc32e001207faf3",        {"G AW",        10639}},
{"5c6d85e02e22165df16b81f4",        {"416A5 10.6\"",        12743}},
{"5bb20da5d4351e0035629dbf",        {"416A5 16.5\"",        18161}},
{"5a787f7ac5856700177af660",        {"M870 508mm",        30041}},
{"5b3baf8f5acfc40dc5296692",        {"TT 116mm gild",        6422}},
{"5a6b5e468dc32e001207faf5",        {"G DD thr.",        11663}},
{"5cc701aae4a949000e1ea45c",        {"P90 10.5\"",        40000}},
{"5bb20dadd4351e00367faeff",        {"416A5 20\"",        30414}},
{"5c5db5852e2216003a0fe71a",        {"MPX 4.5\"",        3800}},
{"5d440b9fa4b93601354d480c",        {"AR-15 20\"",        41519}},
{"55d35ee94bdc2d61338b4568",        {"AR-15 260mm",        59807}},
{"587de4282459771bca0ec90b",        {"P226 thr.",        21741}},
{"5b7be1125acfc4001876c0e5",        {"SA58 16\"",        19151}},
{"5d2703038abbc3105103d94c",        {"M700 20\"",        22800}},
{"5cc701d7e4a94900100ac4e7",        {"P90 16\"",        22300}},
{"5d2702e88abbc31ed91efc44",        {"M700 26\"",        25900}},
{"5beec1bd0db834001e6006f3",        {"RPK-16 15\"",        8963}},
{"5b099a765acfc47a8607efe3",        {"SA58 11\"",        15833}},
{"5888956924597752983e182d",        {"DVL10 660mm",        250000}},
{"5c471cb32e221602b177afaa",        {"SVDS 22\"",        35689}},
{"5a34fae7c4a2826c6e06d760",        {"AR-10 22\"",        26620}},
{"5bb20d92d4351e00853263eb",        {"416A5 11\"",        15560}},
{"5beec2820db834001b095426",        {"RPK-16 22\"",        33066}},
{"5a34f7f1c4a2826c6e06d75d",        {"AR-10 18\"",        21902}},
{"5888945a2459774bf43ba385",        {"DVL10 500mm",        22590}},
{"5c5db5b82e2216003a0fe71d",        {"MPX 10.5\"",        8174}},
{"5bb20d9cd4351e00334c9d8a",        {"416A5 14.5\"",        21866}},
{"5b7be1265acfc400161d0798",        {"SA58 21\"",        31566}},
{"5addbac75acfc400194dbc56",        {"M1A 22\"",        54802}},
{"5df917564a9f347bc92edca3",        {"SR-25 16\"",        21697}},
{"5bfebc250db834001a6694e1",        {"M700 26\"",        15989}},
{"5c5db5c62e22160012542255",        {"MPX 14\"",        43868}},
{"5ae09bff5acfc4001562219d",        {"Mosin 730mm",        48510}},
{"5a6b60158dc32e000a31138b",        {"G17 comp",        5098}},
{"5a787fadc5856700155a6ca1",        {"M870 660mm",        14215}},
{"5bfd4cd60db834001c38f095",        {"Mosin 220mm",        19917}},
{"55d3632e4bdc2d972f8b4569",        {"AR-15 370mm",        34972}},
{"5bfebc320db8340019668d79",        {"M700 20\"",        22037}},
{"5c5db5962e2216000e5e46eb",        {"MPX 6.5\"",        5174}},
{"5a787fdfc5856700142fdd9a",        {"M870 325mm",        9250}},
{"5a787f25c5856700186c4ab9",        {"M870 355mm",        11969}},
{"5aaf9d53e5b5b00015042a52",        {"M1A 16\"",        11473}},
{"588200af24597742fa221dfb",        {"MP153 610mm",        90000}},
{"5c0e2f94d174af029f650d56",        {"AR-15 406mm",        18353}},
{"571a279b24597720b4066566",        {"TT 121mm thr.",        11833}},
{"55d4491a4bdc2d882f8b456e",        {"MP133 510mm",        17420}},
{"560835c74bdc2dc8488b456f",        {"MP133 510mm rib",        21111}},
{"560836b64bdc2d57468b4567",        {"MP133 540mm rib",        4200}},
{"5608379a4bdc2d26448b4569",        {"MP133 750mm rib",        7680}},
{"5a6b5f868dc32e000a311389",        {"G17",        2980}},
{"5608373c4bdc2dc8488b4570",        {"MP133 710mm",        6123}},
{"5bfd4cc90db834001d23e846",        {"Mosin 200mm",        2100}},
{"560836484bdc2d20478b456e",        {"MP133 540mm",        3900}},
{"55d449444bdc2d962f8b456d",        {"MP133 610mm rib",        5103}},
{"58aeaaa886f7744fc1560f81",        {"MPXSD 165mm",        10097}},
{"588200c224597743990da9ed",        {"MP153 660mm",        7179}},
{"5bfd4cbe0db834001b73449f",        {"Mosin 514mm",        6914}},
{"560836fb4bdc2d773f8b4569",        {"МP133 660mm",        5005}},
{"56d5a1f7d2720bb3418b456a",        {"P226 112mm",        2000}},
{"588200cf2459774414733d55",        {"MP153 710mm",        7481}},
{"560837824bdc2d57468b4568",        {"MP133 750mm",        7062}},
{"560837544bdc2de22e8b456e",        {"MP133 710mm rib",        6958}},
{"560837154bdc2da74d8b4568",        {"MP133 660mm rib",        5501}},
{"55d448594bdc2d8c2f8b4569",        {"MP133 610mm",        4902}},
{"56deec93d2720bec348b4568",        {"MP153 750mm",        8218}},
{"5a787ebcc5856700142fdd98",        {"M870 508mm FS",        16695}},
{"5de65547883dde217541644b",        {"VPO-215 23\"",        50000}},
{"5894a2c386f77427140b8342",        {"MPX 203mm",        85000}},
{"571a26d524597720680fbe8a",        {"TT 116mm",        12000}},
{"5b1fa9ea5acfc40018633c0a",        {"G18C comp",        11785}},
{"5cadc1c6ae9215000f2775a4",        {"M9A3 thr.",        1660}},
{"5df35ea9c41b2312ea3334d8",        {"Orsis long",        3437}},
{"5df35e970b92095fd441e4d2",        {"T-5000M",        6922}},
{"59c63b4486f7747afb151c1c",        {"SD TRR",        3284}},
{"5addbfbb5acfc400194dbcf7",        {"M8",        123824}},
{"5a32aa0cc4a28232996e405f",        {"RM50",        5372}},
{"5dff8db859400025ea5150d4",        {"SVD Low",        20789}},
{"5addbfef5acfc400185c2857",        {"UTG 4p",        134568}},
{"5a27bad7c4a282000b15184b",        {"SR-1MP 4x",        12362}},
{"5926dad986f7741f82604363",        {"MFI mount",        75660}},
{"5c90c3622e221601da359851",        {"B-13V",        9565}},
{"5a37ca54c4a282000d72296a",        {"JP 30mm",        29411}},
{"5c61a40d2e2216001403158d",        {"B-13",        9742}},
{"5a33bab6c4a28200741e22f8",        {"RM35",        13705}},
{"593d1fa786f7746da62d61ac",        {"SKS SOCOM",        11929}},
{"5a1ead28fcdbcb001912fa9f",        {"DLOC-IRD",        55310}},
{"59db7eed86f77461f8380365",        {"TA51",        22460}},
{"5b2389515acfc4771e1be0c0",        {"AR-PEPR 30mm",        31890}},
{"59eb7ebe86f7740b373438ce",        {"6P29M",        43986}},
{"5a7b4900e899ef197b331a2a",        {"UM3",        14574}},
{"5aa66a9be5b5b0214e506e89",        {"NF 34mm",        155986}},
{"5a7ad55551dfba0015068f42",        {"G TS mount",        10430}},
{"5b800ed086f7747baf6e2f9e",        {"AK HEX",        9596}},
{"5a9fc7e6a2750c0032157184",        {"B-3",        13915}},
{"57a3459f245977764a01f703",        {"B-3",        28689}},
{"5addc00b5acfc4001669f144",        {"M14 CASV-14",        7777}},
{"587e08ee245977446b4410cf",        {"OPSKS DT",        6510}},
{"58d39d3d86f77445bb794ae7",        {"AMM",        4398}},
{"5df35eb2b11454561e3923e2",        {"Orsis med.",        3526}},
{"5d024f5cd7ad1a04a067e91a",        {"Patriot K+W",        4781}},
{"591ee00d86f774592f7b841e",        {"Kobra",        6255}},
{"5a789261c5856700186c65d3",        {"MT Clamp",        5444}},
{"5c471c2d2e22164bef5d077f",        {"SVDS LB",        9180}},
{"5c86592b2e2216000e69e77c",        {"KH/F 34mm",        292500}},
{"5a7ad4af51dfba0013379717",        {"G AT base",        8325}},
{"5a27b3d0c4a282000d721ec1",        {"SR-1MP mount",        16691}},
{"5c7d560b2e22160bc12c6139",        {"SS",        7315}},
{"57acb6222459771ec34b5cb0",        {"043-02",        8756}},
{"5addbfd15acfc40015621bde",        {"M14 MSM",        7264}},
{"5bc5a372d4351e44f824d17f",        {"Mosin MNG",        3649}},
{"5b3a08b25acfc4001754880c",        {"P226 Bridge",        7712}},
{"5b31163c5acfc400153b71cb",        {"ROMEO",        4178}},
{"5c7d55f52e221644f31bff6a",        {"LRP",        8154}},
{"5b4736a986f774040571e998",        {"QARS 3.2\"",        19249}},
{"5addbffe5acfc4001714dfac",        {"M14 DCSB",        5377}},
{"5beecbb80db834001d2c465e",        {"RPK-16 rail",        7727}},
{"59e0bed186f774156f04ce84",        {"6 CASV",        16416}},
{"5a78948ec5856700177b1124",        {"M870 XS",        7687}},
{"5addbfe15acfc4001a5fc58b",        {"M14 ARMS#18",        6451}},
{"55d48a634bdc2d8b2f8b456a",        {"SPRM",        120000}},
{"5c064c400db834001d23f468",        {"QD LT101",        5778}},
{"5aa66c72e5b5b00016327c93",        {"NF 34mm RIS",        6296}},
{"58d39b0386f77443380bf13c",        {"AMSH",        5355}},
{"5cde7b43d7f00c000d36b93e",        {"MOD*X rail mount",        14230}},
{"5b3b99265acfc4704b4a1afb",        {"NF 30mm",        24402}},
{"5a27b281c4a28200741e1e52",        {"SR-1MP 1x",        13351}},
{"5b4736b986f77405cb415c10",        {"QARS 4.2\"",        60898}},
{"5b30bc285acfc47a8608615d",        {"MK10 10\"",        22312}},
{"58d2664f86f7747fec5834f6",        {"DPCSM",        7018}},
{"5b3b6dc75acfc47a8773fb1e",        {"Armasight",        9075}},
{"5b7be47f5acfc400170e2dd2",        {"M-LOK 2.5\"",        5742}},
{"5bbdb811d4351e45020113c7",        {"Mosin 3Rail",        11585}},
{"5a33b2c9c4a282000c5a9511",        {"RM33",        10926}},
{"57ffb0062459777a045af529",        {"B-18",        6419}},
{"5a33b652c4a28232996e407c",        {"AC32062",        6185}},
{"5c61627a2e22160012542c55",        {"TOZ106 mount",        7550}},
{"5649a2464bdc2d91118b45a8",        {"MPR45",        10412}},
{"58a5c12e86f7745d585a2b9e",        {"MPX 4\"",        3785}},
{"57c69dd424597774c03b7bbc",        {"30mm Mount",        14364}},
{"5a9d6d13a2750c00164f6b03",        {"SI 6\"",        29232}},
{"5a966ec8a2750c00171b3f36",        {"B&T 3x",        24092}},
{"59e0be5d86f7742d48765bd2",        {"CASV 4\"",        5093}},
{"5c6162682e22160010261a2b",        {"TOZ106 DT",        5109}},
{"57d17e212459775a1179a0f5",        {"25mm ring",        4145}},
{"5bfe7fb30db8340018089fed",        {"133/153 12003",        5238}},
{"5d133067d7ad1a33013f95b4",        {"URX 3 3\"",        19602}},
{"59e0bdb186f774156f04ce82",        {"CASV 2\"",        9714}},
{"5b7be4895acfc400170e2dd5",        {"M-LOK 4.1\"",        24486}},
{"57ee59b42459771c7b045da5",        {"PP91 RIS",        4633}},
{"57ffaea724597779f52b3a4d",        {"B-12",        4502}},
{"55d48ebc4bdc2d8c2f8b456c",        {"Sprut",        4863}},
{"5d7b6bafa4b93652786f4c76",        {"5-7 RMR",        5840}},
{"5ab24ef9e5b5b00fe93c9209",        {"SOCOM16 upper",        6719}},
{"5d0a29ead7ad1a0026013f27",        {"1P59 mount",        7325}},
{"5cc7012ae4a949001252b43e",        {"EFFEN 90",        18355}},
{"5b7be46e5acfc400170e2dcf",        {"Vltor 5\"",        19055}},
{"5bfebc5e0db834001a6694e5",        {"M700 30mm",        8617}},
{"5b30bc165acfc40016387293",        {"MK10 3\"",        10115}},
{"5b800ebc86f774394e230a90",        {"HEX Med",        14594}},
{"5c0102b20db834001d23eebc",        {"RAHG 4\"",        4924}},
{"577d128124597739d65d0e56",        {"FFWB",        5892}},
{"5b7be4575acfc400161d0832",        {"Vltor 2\"",        9722}},
{"58a56f8d86f774651579314c",        {"MPX 2\"",        4706}},
{"5b7be4645acfc400170e2dcc",        {"Vltor 4\"",        6624}},
{"5b3f7bf05acfc433000ecf6b",        {"Kochetov",        3510}},
{"5cc70146e4a949000d73bf6b",        {"P90 side",        4927}},
{"5dff77c759400025ea5150cf",        {"UTG 25mm",        3305}},
{"5c0102aa0db834001b734ba1",        {"RAHG 2\"",        4745}},
{"5cdeaca5d7f00c00b61c4b70",        {"Pro700 mount",        3756}},
{"5bfebc530db834001d23eb65",        {"M700 Multi-slot",        8187}},
{"5a9d6d00a2750c5c985b5305",        {"SI 4\"",        10769}},
{"5cc7015ae4a949001152b4c6",        {"P90 top",        43288}},
{"5de8fbf2b74cd90030650c79",        {"MP9 bottom",        6714}},
{"5c1cdd302e221602b3137250",        {"Compact mount",        19710}},
{"5de6558e9f98ac2bc65950fc",        {"VPO215 rail",        3050}},
{"5b3f7c005acfc4704b4a1de8",        {"PU ring",        1298}},
{"5a9d6d21a2750c00137fa649",        {"TRAX Bridge",        7773}},
{"5d0a29fed7ad1a002769ad08",        {"1P69 mount",        9640}},
{"576a7c512459771e796e0e17",        {"B-8",        6055}},
{"5de8fc0b205ddc616a6bc51b",        {"MP9 side",        5755}},
{"5a7893c1c585673f2b5c374d",        {"MTU-028SG",        5403}},
{"5bfd36290db834001966869a",        {"Mosin sawn-off sniper",        54444}},
{"5df35e59c41b2312ea3334d5",        {"T-5000 body",        24420}},
{"5de910da8b6c4240ba2651b5",        {"MP9",        42683}},
{"5ab372a310e891001717f0d8",        {"S.A.S.S.",        25889}},
{"5b7d63de5acfc400170e2f8d",        {"SA58 SPR",        12879}},
{"5bcf0213d4351e0085327c17",        {"A1",        45000}},
{"5b0e794b5acfc47a877359b2",        {"AK Zhukov-S",        40579}},
{"58889d0c2459775bc215d981",        {"DVL-10",        39833}},
{"5926d40686f7740f152b6b7e",        {"MP5 A3",        15240}},
{"5bd704e7209c4d00d7167c31",        {"A2",        71666}},
{"5addbf175acfc408fb13965b",        {"M1A Archangel",        36333}},
{"5cde739cd7f00c0010373bd3",        {"MOD*X Gen.3",        19258}},
{"5bbde409d4351e003562b036",        {"Mosin pad",        12694}},
{"5947e98b86f774778f1448bc",        {"UBR GEN2",        13524}},
{"5b04473a5acfc40018632f70",        {"UAS AK",        13319}},
{"5cf13123d7f00c1085616a50",        {"Archangel M700",        14707}},
{"5a17fb9dfcdbcbcae6687291",        {"APB",        23677}},
{"5b7d63b75acfc400170e2f8a",        {"SA58/FAL PRS2",        10680}},
{"5df35ddddfc58d14537c2036",        {"T-5000M",        3150}},
{"5d25d0ac8abbc3054f3e61f7",        {"AICS M700",        20357}},
{"5d0236dad7ad1a0940739d29",        {"SKS UAS",        21439}},
{"5cdeac22d7f00c000f26168f",        {"Pro 700",        14198}},
{"56083a334bdc2dc8488b4571",        {"133/153",        6884}},
{"5926d3c686f77410de68ebc8",        {"MP5 A2",        47634}},
{"5c87a07c2e2216001219d4a2",        {"HK E1",        20983}},
{"5bae13bad4351e00320204af",        {"Archangel OPFOR PRS",        16755}},
{"5bfeb32b0db834001a6694d9",        {"Overmolded Ghillie",        14090}},
{"59ecc3dd86f7746dc827481c",        {"PT-3",        24999}},
{"5c471b5d2e221602b21d4e14",        {"SVDS",        7437}},
{"5d44069ca4b9361ebd26fc37",        {"PRS GEN3",        24124}},
{"5b222d405acfc400153af4fe",        {"PT-1",        14892}},
{"58ac1bf086f77420ed183f9f",        {"MPX Pipe",        19578}},
{"5d1c702ad7ad1a632267f429",        {"GLR-17",        37863}},
{"5649b2314bdc2d79388b4576",        {"МЕ4",        83223}},
{"5aaf8e43e5b5b00015693246",        {"SOCOM16",        14681}},
{"5cc700d4e4a949000f0f0f28",        {"P90 DI",        4150}},
{"5a9eb32da2750c00171b3f9c",        {"GLSHOCK",        29723}},
{"5947c73886f7747701588af5",        {"BUS",        10757}},
{"5d120a28d7ad1a1c8962e295",        {"ACE pad",        60389}},
{"5a78813bc5856700186c4abe",        {"M870 SGA",        127762}},
{"5d135e83d7ad1a21b83f42d8",        {"CTR",        20566}},
{"5addc7005acfc4001669f275",        {"M14ALCS",        17972}},
{"5b7d63cf5acfc4001876c8df",        {"SA58 folding",        9047}},
{"5c793fde2e221601da358614",        {"Viper Mod1",        14416}},
{"58d2912286f7744e27117493",        {"MOE RBP",        17723}},
{"5ab626e4d8ce87272e4c6e43",        {"6P21 Sb.5",        75479}},
{"56083be64bdc2d20478b456f",        {"133/153 plastic",        74035}},
{"5addc7ac5acfc400194dbd90",        {"M14ALCS",        15967}},
{"5b0800175acfc400153aebd4",        {"F93 PRO",        21714}},
{"5b7d64555acfc4001876c8e2",        {"SA58 BRS",        12072}},
{"59ecc28286f7746d7a68aa8c",        {"AKS74 PT",        19112}},
{"5d120a10d7ad1a4e1026ba85",        {"ACE SOCOM",        12140}},
{"5abcd472d8ce8700166032ae",        {"6P4N Sb.1-19",        1556}},
{"5bbdb870d4351e00367fb67d",        {"Mosin MonteCarlo",        20320}},
{"5b222d335acfc4771e1be099",        {"AKM/AK74 PT",        10109}},
{"5cde77a9d7f00c000f261009",        {"AB adpt.",        2602}},
{"5a33cae9c4a28232980eb086",        {"PRS GEN2",        10898}},
{"5cf518cfd7f00c065b422214",        {"AKTS AK",        26142}},
{"5b39f8db5acfc40016387a1b",        {"EMOD",        10473}},
{"5afd7ded5acfc40017541f5e",        {"TAPCO Intrafuse",        18491}},
{"5a0c59791526d8dba737bba7",        {"6G15U",        7648}},
{"5c793fb92e221644f31bfb64",        {"Advanced Tube",        103884}},
{"5a33ca0fc4a282000d72292f",        {"A2",        9786}},
{"5cf50fc5d7f00c056c53f83c",        {"AKTS AK74",        10901}},
{"5cdeac42d7f00c000d36ba73",        {"Pro 700",        4699}},
{"5cc700b9e4a949000f0f0f25",        {"P90",        25000}},
{"5c07c9660db834001a66b588",        {"MP5 EndCap",        15345}},
{"5d2f25bc48f03502573e5d85",        {"End Cap",        2500}},
{"5b099bf25acfc4001637e683",        {"SA58 adpt.",        12847}},
{"5beec8c20db834001d2c465c",        {"AK-12",        7299}},
{"5cc700cae4a949035e43ba72",        {"P90 butt",        5383}},
{"5bfe86df0db834001b734685",        {"GLR-16-S",        16441}},
{"56eabf3bd2720b75698b4569",        {"MOE",        21493}},
{"59ff3b6a86f77477562ff5ed",        {"6P4 Sb.1-19",        20660}},
{"5c5db6ee2e221600113fba54",        {"MPX MD CQB",        3750}},
{"591aef7986f774139d495f03",        {"M7A1PDW",        13736}},
{"5ac78eaf5acfc4001926317a",        {"74M/100 PT",        4772}},
{"5c5db6f82e2216003a0fe914",        {"MPX ULSS",        15215}},
{"5894a13e86f7742405482982",        {"MPX telestock",        44000}},
{"5ae30c9a5acfc408fb139a03",        {"SOPMOD",        6712}},
{"5c503af12e221602b177ca02",        {"VPO101",        10774}},
{"5bb20e58d4351e00320205d7",        {"Enhanced Tube",        11876}},
{"587e0531245977466077a0f7",        {"OP-SKS Wood",        22611}},
{"5bb20e70d4351e0035629f8f",        {"Slim Line",        7091}},
{"599851db86f77467372f0a18",        {"PP-19-01",        53851}},
{"5c99f3592e221644fc633070",        {"TOZ106 Mosin",        18851}},
{"5beec8b20db834001961942a",        {"RPK-16 tube",        16425}},
{"5cebec10d7f00c065703d185",        {"PS90",        3350}},
{"5bfd37c80db834001d23e842",        {"Mosin sniper carbine",        14000}},
{"5c0e2ff6d174af02a1659d4a",        {"ADAR wood",        10579}},
{"55d4ae6c4bdc2d8b2f8b456e",        {"M4SS",        4400}},
{"5ae35b315acfc4001714e8b0",        {"M870 LEO",        3923}},
{"5a7880d0c5856700142fdd9d",        {"M870 SPS",        10493}},
{"5b7d645e5acfc400170e2f90",        {"SA58 Hump",        7291}},
{"5a788169c5856700142fdd9e",        {"M870 Raptor",        8952}},
{"59d6514b86f774171a068a08",        {"6P1 Sb.5",        48888}},
{"5bfd384c0db834001a6691d3",        {"Mosin carbine",        9000}},
{"56083cba4bdc2de22e8b456f",        {"133/153 wood",        6574}},
{"59e89d0986f77427600d226e",        {"VPO209",        7895}},
{"5649b0fc4bdc2d17108b4588",        {"6P20 Sb.7",        14010}},
{"5ae096d95acfc400185c2c81",        {"Mosin stock",        25801}},
{"57ade1442459771557167e15",        {"Baskak",        6154}},
{"59e6227d86f77440d64f5dc2",        {"VPO136",        2100}},
{"574dad8024597745964bf05c",        {"56-A-231 Sb.5",        12667}},
{"578395e82459774a0e553c7b",        {"VSS Wood",        7063}},
{"57c450252459772d28133253",        {"VAL",        4969}},
{"5c0faeddd174af02a962601f",        {"ADAR",        4307}},
{"5ac50c185acfc400163398d4",        {"6P34 Sb.15",        5416}},
{"5bfe89510db834001808a127",        {"AGR-870 tube",        7638}},
{"5afd7e095acfc40017541f61",        {"SKS TAPCO",        9727}},
{"5bfd36ad0db834001c38ef66",        {"Mosin sawn-off",        15237}},
{"5de655be4a9f347bc92edb88",        {"VPO-215",        16786}},
{"57dc347d245977596754e7a1",        {"6P26 Sb.5",        6798}},
{"5adf23995acfc400185c2aeb",        {"MC 20-01",        2575}},
{"57616ca52459773c69055192",        {"SOK12 AK",        5383}},
{"5649b1c04bdc2d16268b457c",        {"6P20 Sb.5",        12503}},
{"5649be884bdc2d79388b4577",        {"Colt",        5311}},
{"5bfd35380db83400232fe5cc",        {"Mosin inf. stock",        19086}},
{"5a38ef1fc4a282000b1521f6",        {"TOZ106",        12000}},
{"5947eab886f77475961d96c5",        {"UBR GEN2",        13350}},
{"591af10186f774139d495f0e",        {"M7A1PDW",        20278}},
{"5888961624597754281f93f3",        {"Harris HBR",        13627}},
{"56ea8222d2720b69698b4567",        {"SV98 Bipod",        8509}},
{"5cadd919ae921500126a77f3",        {"M9A3 FS",        460}},
{"5aba62f8d8ce87001943946b",        {"APS FS",        5000}},
{"5cadd940ae9215051e1c2316",        {"M9A3 RS",        6969}},
{"5abcbb20d8ce87001773e258",        {"M14 RS",        10000}},
{"5dfa3d7ac41b2312ea33362a",        {"KAC RS",        11606}},
{"5d3eb4aba4b93650d64e497d",        {"5-7 RS",        19999}},
{"56ea7293d2720b8d4b8b45ba",        {"SM220-239",        3819}},
{"56d5a77ed2720b90418b4568",        {"P226 RS",        7333}},
{"5cadd954ae921500103bb3c2",        {"SM M9",        3600}},
{"5d3eb536a4b9363b1f22f8e2",        {"5-7 FS",        4250}},
{"5894a73486f77426d259076c",        {"MPX FS",        9865}},
{"5894a81786f77427140b8347",        {"MPX RS",        6666}},
{"5de8fb539f98ac2bc659513a",        {"MP9 RS",        15011}},
{"5926d2be86f774134d668e4e",        {"MP5 Drum RS",        9860}},
{"5a7d9122159bd4001438dbf4",        {"G SE RS",        10988}},
{"5c05295e0db834001a66acbb",        {"ACOG Bck-up",        2400}},
{"5aafa49ae5b5b00015042a58",        {".125 Blade",        9888}},
{"5c1780312e221602b66cc189",        {"KAC RS",        7332}},
{"5dfa3d950dee1b22f862eae0",        {"KAC FS",        10232}},
{"5ba26b17d4351e00367f9bdd",        {"MP7 FlipUp RS",        28330}},
{"5bb20e49d4351e3bac1212de",        {"416A5 FlipUp RS",        7366}},
{"5649d9a14bdc2d79388b4580",        {"TT01",        7801}},
{"5c17804b2e2216152006c02f",        {"KAC FS",        8814}},
{"5c503b1c2e221602b21d6e9d",        {"VPO101 RS",        314}},
{"5a71e0fb8dc32e00094b97f2",        {"G ZT RS",        2000}},
{"57838e1b2459774a256959b1",        {"VSS RS",        18422}},
{"5caf16a2ae92152ac412efbc",        {"ASh-12 FS",        5811}},
{"5ae30bad5acfc400185c2dc4",        {"CHandle",        10999}},
{"58272b842459774abc128d50",        {"CSS RSRM",        2400}},
{"5bc09a18d4351e003562b68e",        {"MBUS RS",        6830}},
{"5caf1691ae92152ac412efb9",        {"ASh-12 CH",        4992}},
{"5addba3e5acfc4001669f0ab",        {".062 Blade",        1628}},
{"5c07b36c0db834002a1259e9",        {"P226 TD FS",        1500}},
{"5a7d90eb159bd400165484f1",        {"G SE FS",        9250}},
{"5c07b3850db834002330045b",        {"P226 TD RS",        1400}},
{"5ac733a45acfc400192630e2",        {"6P44 Sb.1-30",        50000}},
{"56083e1b4bdc2dc8488b4572",        {"SV-98 RS",        23000}},
{"5ba26b01d4351e0085325a51",        {"MP7 FlipUp FS",        15555}},
{"5a0ed824fcdbcb0176308b0d",        {"AKMP RS",        470}},
{"5bc09a30d4351e00367fb7c8",        {"MBUS FS",        7025}},
{"57c44e7b2459772d28133248",        {"VAL RS",        5999}},
{"5a7d9104159bd400134c8c21",        {"G TFX FS",        5000}},
{"5a0f096dfcdbcb0176308b15",        {"AKMP FS",        8214}},
{"5a6f58f68dc32e000a311390",        {"Glock FS",        9333}},
{"5a7d912f159bd400165484f3",        {"G TFX RS",        6644}},
{"5c471b7e2e2216152006e46c",        {"SVDS RS",        2600}},
{"5ae099925acfc4001a5fc7b3",        {"Mosin RS",        1500}},
{"55d5f46a4bdc2d1b198b4567",        {"A2 RS",        4500}},
{"5beec9450db83400970084fd",        {"RPK16 RS base",        8000}},
{"5bf3f59f0db834001a6fa060",        {"RPK-16 RS",        9000}},
{"5bfd4c980db834001b73449d",        {"Mosin RS",        800}},
{"5ae099875acfc4001714e593",        {"Mosin FS",        4169}},
{"55d4af3a4bdc2d972f8b456f",        {"LPA2 FS",        8888}},
{"5c471ba12e221602b3137d76",        {"SVDS FS",        10788}},
{"5a0eb980fcdbcb001a3b00a6",        {"AKMB RS",        471}},
{"59e8977386f77415a553c453",        {"VPO209",        22222}},
{"57a9b9ce2459770ee926038d",        {"SOK12 RS",        17037}},
{"5b0bc22d5acfc47a8607f085",        {"SA58 Holland",        4436}},
{"5ac72e475acfc400180ae6fe",        {"6P20 Sb.2",        6503}},
{"5649b0544bdc2d1b2b8b458a",        {"6P20 Sb.2",        9999}},
{"56d5a661d2720bd8418b456b",        {"P226 FS",        3611}},
{"59d650cf86f7741b846413a4",        {"6P1 Sb.2-1",        8200}},
{"574db213245977459a2f3f5d",        {"SKS RS",        14884}},
{"5aba639ed8ce8700182ece67",        {"APB RS",        5000}},
{"5aba637ad8ce87001773e17f",        {"APS RS",        9999}},
{"5a71e0048dc32e000c52ecc8",        {"G ZT FS",        1300}},
{"5a6f5d528dc32e00094b97d9",        {"Glock RS",        604}},
{"599860e986f7743bb57573a6",        {"PP-19-01",        4333}},
{"5da743f586f7744014504f72",        {"USEC",        79118}},
{"5ac4c50d5acfc40019262e87",        {"K1S",        7250}},
{"5a16b672fcdbcb001912fa83",        {"FVisor",        14596}},
{"5e01f37686f774773c6f6c15",        {"EXFIL Tan",        23077}},
{"5e00cdd986f7747473332240",        {"EXFIL Blk.",        25708}},
{"5913651986f774432f15d132",        {"Shestyorka",        7105}},
{"593858c486f774253a24cb52",        {"Pump Back",        5128}},
{"57a349b2245977762b199ec7",        {"Pump Frnt",        3185}},
{"5b43271c5acfc432ff4dce65",        {"Bandana",        5780}},
{"5aa2b87de5b5b00016327c25",        {"BEAR",        3000}},
{"5b40e5e25acfc4001a599bea",        {"BEAR",        6193}},
{"5aa2ba46e5b5b000137b758d",        {"UXPRO",        7532}},
{"5b40e61f5acfc4001a599bec",        {"USEC",        30000}},
{"5aa2a7e8e5b5b00016327c16",        {"USEC",        17975}},
{"5df8a6a186f77412640e2e80",        {"Ball Red",        7000}},
{"5df8a72c86f77412640e2e83",        {"Ball Silver",        10000}},
{"5df8a77486f77412672a1e3f",        {"Ball Violet",        20000}},
{"5d1340bdd7ad1a0e8d245aab",        {"GEN M3",        10624}},
{"5d1340cad7ad1a0b0b249869",        {"GEN M3",        11062}},
{"5de653abf76fdc1ce94a5a2a",        {"VPO215",        4496}},
{"5c793fc42e221600114ca25d",        {"Advanced Tube",        101066}},
{"5c18b90d2e2216152142466b",        {"MBUS FS FDE",        7028}},
{"5c18b9192e2216398b5a8104",        {"MBUS RS FDE",        6306}},
{"5d124c1ad7ad1a12227c53a7",        {"KAC stopper",        5386}},
{"5d124c01d7ad1a115c7d59fb",        {"KAC short",        7184}},
{"5dfe14f30b92095fd441edaf",        {"ETMI-019",        5958}},
{"5b8403a086f7747ff856f4e2",        {"HEX Med",        10760}},
{"5d4aaa54a4b9365392071170",        {"AKM-L",        14874}},
{"5b80242286f77429445e0b47",        {"AK HEX",        23360}},
{"5d4aaa73a4b9365392071175",        {"AKM-L",        13807}},
{"5d4aab30a4b9365435358c55",        {"VS Combo",        22847}},
{"5b7be1ca5acfc400170e2d2f",        {"SA58 4Rail full",        11235}},
{"5a8036fb86f77407252ddc02",        {"Shoreline",        18207}},
{"574eb85c245977648157eec3",        {"Factory",        13863}},
{"5798a2832459774b53341029",        {"Customs",        25428}},
{"5900b89686f7744e704a8747",        {"Woods",        10380}},
{"5a80a29286f7742b25692012",        {"Resort",        8100}},
{"5be4038986f774527d3fae60",        {"Interchange",        9068}},
{"5b3f3af486f774679e752c1f",        {"Armband",        557}},
{"5b3f3b0186f774021a2afef7",        {"Armband",        547}},
{"5b3f3ade86f7746b6b790d8e",        {"Armband",        991}},
{"5b3f16c486f7747c327f55f7",        {"Armband",        2561}},
{"5b3f3b0e86f7746752107cda",        {"Armband",        535}},
{"5c0919b50db834001b7ce3b9",        {"Maska-1Shch",        35301}},
{"544fb5454bdc2df8738b456a",        {"MultiTool",        26851}},
{"5b4391a586f7745321235ab2",        {"Camera",        39305}},
{"5ac78a9b86f7741cca0bbd8d",        {"Jammer",        24037}},
{"5991b51486f77447b112d44f",        {"MS2000",        16889}},
{"5656eb674bdc2d35148b457c",        {"40mm",        9800}},
{"59148f8286f7741b951ea113",        {"WSafe",        6403}},
{"57372c21245977670937c6c2",        {"BT gs",        30481}},
{"57372d1b2459776862260581",        {"PP gs",        1000}},
{"57372deb245977685d4159b3",        {"PRS gs",        5224}},
{"57372f7d245977699b53e301",        {"US gs",        17667}},
{"573722e82459776104581c21",        {"BZhT gzh",        36900}},
{"5737250c2459776125652acc",        {"PBM gzh",        10105}},
{"5737256c2459776125652acd",        {"PstM gzh",        26333}},
{"573725b0245977612125bae2",        {"PPe gzh",        7000}},
{"573727c624597765cc785b5b",        {"Pst gzh",        12000}},
{"573728cc24597765cc785b5d",        {"SP7 gzh",        18500}},
{"573728f324597765e5728561",        {"SP8 gzh",        13999}},
{"5c11279ad174af029d64592b",        {"Warmageddon",        1200}},
{"5c1262a286f7743f8a69aab2",        {"PPBS gs 30",        40416}},
{"57372db0245977685d4159b2",        {"PP gs",        26000}},
{"57372e4a24597768553071c2",        {"PRS gs",        6356}},
{"57372ebf2459776862260582",        {"PS gs",        9800}},
{"5c1127d0d174af29be75cf68",        {"12/70 RIP",        2243}},
{"5649ed104bdc2d3d1c8b458b",        {"7.62x39 PS 30",        29375}},
{"560d75f54bdc2da74d8b4573",        {"SNB 7.62x54R 30",        28145}},
{"5c1260dc86f7746b106e8748",        {"BP gs 8",        7000}},
{"5c12619186f7743f871c8a32",        {"SPP 8",        9333}},
{"58d2946c86f7744e271174b5",        {"MOE FG",        14200}},
{"58d2946386f774496974c37e",        {"MOE FDE",        9537}},
{"58d2947e86f77447aa070d53",        {"MOE SG",        13864}},
{"58d2947686f774485c6a1ee5",        {"MOE OD",        10538}},
{"5e42c83786f7742a021fdf3c",        {"#21WS",        1089264}},
{"5e42c81886f7742a01529f57",        {"#11SR",        2177848}},
{"5739d41224597779c3645501",        {"Pst gzh",        2500}},
{"5447ac644bdc2d6c208b4567",        {"M855",        1650}},
{"5e2af55f86f7746d4159f07c",        {"Grenades",        319726}},
{"5e2af4d286f7746d4159f07a",        {"Aramid",        6957}},
{"5e2af4a786f7746d3f3c3400",        {"Ripstop",        10262}},
{"5e2af47786f7746d404f3aaa",        {"Fleece",        8343}},
{"5e2af41e86f774755a234b67",        {"Cordura",        9745}},
{"5e2af37686f774755a234b65",        {"SurvL",        13088}},
{"5e2af2bc86f7746d3f3c33fc",        {"HMatches",        8822}},
{"5e2af29386f7746d4159f077",        {"KEK",        16808}},
{"5e2af22086f7746d3f3c33fa",        {"Poxeram",        11848}},
{"5e2af00086f7746d3f3c33f7",        {"DCleaner",        18391}},
{"5e2af02c86f7746d420957d4",        {"Chlorine",        18354}},
{"5e2aef7986f7746d3f3c33f5",        {"Repellent",        7253}},
{"5e2aee0a86f774755a234b62",        {"Cyclon",        54562}},
{"5e2aedd986f7746d404f3aa4",        {"GreenBat",        24956}},
{"5e2af51086f7746d3f3c3402",        {"Fuze",        8265}},
{"5e32f56fcb6d5863cc5e5ee4",        {"VOG-17",        9636}},
{"5e340dcdcb6d5863cc5e5efb",        {"VOG-25",        15587}},
{"5e4abb5086f77406975c9342",        {"Slick",        232264}},
{"5e4abc6786f77406812bd572",        {"SFMP",        109270}},
{"5e4d34ca86f774264f758330",        {"Razor",        31793}},
{"5e4bfc1586f774264f7582d3",        {"TC 800",        36988}},
{"5e4ac41886f77406a511c9a8",        {"CPC MOD2",        200286}},
{"5e4abc1f86f774069619fbaa",        {"Bank Robber",        13000}},
{"5e4abfed86f77406a2713cf7",        {"Tarzan",        14734}},
{"5e54f79686f7744022011103",        {"Plague mask",        58013}},
{"5e569a132642e66b0b68015c",        {"DRG L-1",        5928}},
{"5e42c71586f7747f245e1343",        {"ULTRA med.",        2556597}},
{"5e54f62086f774219b0f1937",        {"Raven",        30240}},
{"5e54f76986f7740366043752",        {"Shroud",        26802}},
{"5696686a4bdc2da3298b456a",        {"USD",        127}},
{"569668774bdc2da2298b4568",        {"EUR",        148}},
{"5e54f6af86f7742199090bf3",        {"DrLupo's",        32741}},
{"5e71f6be86f77429f2683c44",        {"Rivals",        24000}},
{"5e71fad086f77422443d4604",        {"Rivals",        32000}},
{"5e71f70186f77429ee09f183",        {"Rivals",        25600}},
{"5ea03f7400685063ec28bfa8",        {"PPSh-41",        15475}},
{"5e81c3cbac2bb513793cdc75",        {"M1911A1",        9482}},
{"5ea02bb600685063ec28bfa1",        {"PPSh-41 10.6\"",        20000}},
{"5e81c519cb2b95385c177551",        {"1911A1 .45",        9785}},
{"5ea034eb5aad6446a939737b",        {"PPSh",        3907}},
{"5e81c4ca763d9f754677befa",        {"1911",        9262}},
{"5ea034f65aad6446a939737e",        {"PPSh drum",        28817}},
{"5ea03e5009aa976f2e7a514b",        {"PPSh-41",        10352}},
{"5e81edc13397a21db957f6a1",        {"1911A1 slide",        15986}},
{"5ea03e9400685063ec28bfa4",        {"PPSh-41",        2120}},
{"5e81c6bf763d9f754677beff",        {"1911A1",        18210}},
{"5e81c539cb2b95385c177553",        {"1911A1 SS",        10000}},
{"5e81c550763d9f754677befd",        {"1911A1 Ham.",        4747}},
{"5e81c6a2ac2bb513793cdc7f",        {"1911A1 Trig.",        450}},
{"5e81ee213397a21db957f6a6",        {"1911A1 FS",        502}},
{"5e81ee4dcb2b95385c177582",        {"1911A1 RS",        604}},
{"5e9dacf986f774054d6b89f4",        {"Defender-2",        180046}},
{"5ea05cf85ad9772e6624305d",        {"TK FAST MT",        13809}},
{"5ea058e01dbce517f324b3e2",        {"TK Heavy Trooper",        67776}},
{"5e9dcf5986f7746c417435b3",        {"Day Pack",        18860}},
{"5e9db13186f7742f845ee9d3",        {"LBCR",        33930}},
{"5c5db63a2e2216000f1b284a",        {"MPX Midwest 14\"",        9477}},
{"5e208b9842457a4a7a33d074",        {"DTKP",        29187}},
{"57372ac324597767001bc261",        {"BP gs",        1000}},
{"57372c89245977685d4159b1",        {"BT gs",        46667}},
{"5c1127bdd174af44217ab8b9",        {"RIP 20",        7000}},
{"5857a8b324597729ab0a0e7d",        {"Beta",        750000}},
{"5ede7b0c6d23e5473e6e8c66",        {"RB-RLSA",        75643}},
{"5ede7a8229445733cb4c18e2",        {"RB-PKPM mark.",        244750}},
{"5e81f423763d9f754677bf2e",        {"FMJ",        186}},
{"5ea2a8e200685063ec28c05a",        {"RIP",        481}},
{"5ea17bbc09aa976f2e7a51cd",        {"RC2",        28241}},
{"5e5699df2161e06ac158df6f",        {"XRS-DRG",        11860}},
{"5ea16acdfadf1d18c87b0784",        {"SMR MK16 9.5\"",        10950}},
{"5ea16ada09aa976f2e7a51be",        {"SMR MK16 13.5\"",        16025}},
{"5e56991336989c75ab4f03f6",        {"SVD MHG",        17280}},
{"5b363dea5acfc4771e1c5e7e",        {"12ga adpt.",        5485}},
{"5e569a2e56edd02abe09f280",        {"XD RGL",        8570}},
{"5ea16d4d5aad6446a939753d",        {"ACH",        12164}},
{"5d44334ba4b9362b346d1948",        {"Raptor Grey",        21169}},
{"5cbda9f4ae9215000e5b9bfc",        {"6P20 Sb.9 Plum",        10793}},
{"5d00f63bd7ad1a59283b1c1e",        {"AR15 Viper",        11178}},
{"5e2192a498a36665e8337386",        {"AK MG-47",        12590}},
{"5e217ba4c1434648c13568cd",        {"Kocherga",        13612}},
{"5d4406a8a4b9361e4f6eb8b7",        {"PRS GEN3",        19358}},
{"5cbdb1b0ae9215000d50e105",        {"6P20 Sb.7 Plum",        16969}},
{"5d135ecbd7ad1a21c176542e",        {"CTR",        17111}},
{"5b84038986f774774913b0c1",        {"HEX",        8337}},
{"5e569a0156edd02abe09f27d",        {"SVD mod. rail",        10917}},
{"5ea172e498dacb342978818e",        {"FH556RC",        13198}},
{"5e21ca18e4d47f0da15e77dd",        {"CNC War.",        1675}},
{"5ea18c84ecf1982c7712d9a2",        {"Bastion plate",        81997}},
{"5ea17ca01412a1425304d1c0",        {"Bastion",        58802}},
{"5e0090f7e9dc277128008b93",        {"MP9 Upper",        80000}},
{"5d124c0ed7ad1a10d168dd9b",        {"KAC long",        6643}},
{"5e81ebcd8e146c7080625e15",        {"FN40GL",        110000}},
{"5ed51652f6c34d2cc26336a1",        {"M.U.L.E.",        65841}},
{"5ed5166ad380ab312177c100",        {"Obdolbos",        39876}},
{"5ed515ece452db0eb56fc028",        {"P22",        31000}},
{"5ed515e03a40a50460332579",        {"L1",        22417}},
{"5ed515c8d380ab312177c0fa",        {"3-(b-TG)",        22023}},
{"5ed515f6915ec335206e4152",        {"AHF1-M",        21500}},
{"5ed5160a87bb8443d10680b5",        {"Meldonin",        40430}},
{"5efb0cabfb3e451d70735af5",        {"AP",        933}},
{"5efb0fc6aeb21837e749c801",        {"HS",        318}},
{"5efb0d4f4bc50b58e81710f3",        {"LM",        120}},
{"5f0596629e22f464da6bbdd9",        {"AP-M",        587}},
{"5ede474b0c226a66f5402622",        {"M381",        19440}},
{"5ede475b549eed7c6d5c18fb",        {"M386",        3777}},
{"5ede4739e0350d05467f73e8",        {"M406",        4351}},
{"5f0c892565703e5c461894e9",        {"M433",        6123}},
{"5ede47405b097655935d7d16",        {"M441",        20569}},
{"5ede475339ee016e8c534742",        {"M576",        1517}},
{"5efb0c1bd79ff02a1f5e68d9",        {"M993",        1677}},
{"5efb0da7a29a85116f6ea05f",        {"PBP gzh",        1331}},
{"5efb0e16aeb21837e749c7ff",        {"QuakeMaker",        433}},
{"5eff09cd30a7dc22fd1ddfed",        {"E110 San Tape",        431874}},
{"5efde6b4f5448336730dbd61",        {"Keycard",        151958}},
{"5e997f0b86f7741ac73993e2",        {"Sanitar bag",        28023}},
{"57372bd3245977670b7cd243",        {"BS gs",        24250}},
{"5857a8bc2459772bad15db29",        {"Gamma",        1850000}},
{"544a11ac4bdc2d470e8b456a",        {"Alpha",        360000}},
{"59db794186f77448bc595262",        {"Epsilon",        1100000}},
{"5c093ca986f7740a1867ab12",        {"Kappa",        4900000}},
{"5648b62b4bdc2d9d488b4585",        {"GP-34",        50900}},
{"5f5e45cc5021ce62144be7aa",        {"LK 3F",        9734}},
{"5f5e467b0bc58666c37e7821",        {"F5 Switchblade",        45358}},
{"5f5e46b96bdad616ad46d613",        {"F4 Terminator",        78319}},
{"5f5f41f56760b4138443b352",        {"Thunderbolt",        18688}},
{"5f2a9575926fd9352339381f",        {"RFB",        0}},
{"5f36a0e5fbf956000b716b65",        {"M45A1",        10576}},
{"5e870397991fd70db46995c8",        {"590A1",        17818}},
{"5e848cc2988a8701445df1e8",        {"KS-23M",        49640}},
{"5f4f9eb969cdc30ff33f09db",        {"Compass",        27874}},
{"5e8f3423fd7471236e6e3b64",        {"Kvass",        10698}},
{"5f5f41476bdad616ad46d631",        {"Korund-VM",        125139}},
{"5f60c74e3b85f6263c145586",        {"Rys-T",        198327}},
{"5f60b34a41e30a4ab12a6947",        {"Caiman",        91060}},
{"5d70e500a4b9364de70d38ce",        {"VOG-30",        980}},
{"5e85aa1a988a8701445df1f5",        {"Barrikada",        839}},
{"5e85a9a6eacf8c039e4e2ac1",        {"Shrap-10",        369}},
{"5f647f31b6238e5dd066e196",        {"Shrapnel-25",        1057}},
{"5e85a9f4add9fe03027d9bf1",        {"Zvezda",        20373}},
{"5e831507ea0a7c419c2f9bd9",        {"Esmarch",        1930}},
{"5e8488fa988a8701445df1e4",        {"Hemostat",        10703}},
{"5f63407e1b231926f2329f15",        {"R43 VPO101",        34668}},
{"5f60cd6cf2bcbb675b00dac6",        {"XCEL",        34979}},
{"5f60b85bbdb8e27dee3dc985",        {"Applique",        37371}},
{"5f60bf4558eff926626a60f2",        {"FAV",        20385}},
{"5f60c076f2bcbb675b00dac2",        {"Mandible",        40583}},
{"5f60c85b58eff926626a60f7",        {"Rys-T",        48464}},
{"5f6331e097199b7db2128dc2",        {"X47",        22546}},
{"55f84c3c4bdc2d5f408b4576",        {"RIS II 9.5 FDE",        15557}},
{"5efaf417aeb21837e749c7f2",        {"B-30+B-31S",        29603}},
{"5f3e7823ddc4f03b010e2045",        {"M45A1 slide",        100000}},
{"5f60e6403b85f6263c14558c",        {"Beret",        10375}},
{"5f60e7788adaa7100c3adb49",        {"Beret",        10644}},
{"5f60e784f2bcbb675b00dac7",        {"Beret",        8378}},
{"5dcbd6b46ec07c0c4347a564",        {"MDR Black",        40805}},
{"5eea21647547d6330471b3c9",        {"MOE M590",        9390}},
{"5e848d51e4dbc5266a4ec63b",        {"KS-23M",        5651}},
{"5f2aa47a200e2c0ee46efa71",        {"RFB",        9429}},
{"5f63418ef5750b524b45f116",        {"Bravo-18",        14286}},
{"5e87076ce2db31558c75a11d",        {"Speedfeed",        16311}},
{"5f6336bbda967c74a42e9932",        {"LCH-7 12.5\"",        27076}},
{"5f745ee30acaeb0d490d8c5b",        {"Veritas",        34129}},
{"5f6340d3ca442212f4047eb2",        {"TD",        21960}},
{"5f633f68f5750b524b45f112",        {"RRD-4C",        50424}},
{"5f633f791b231926f2329f13",        {"RRD-4C",        61674}},
{"5f2aa4559b44de6b1b4e68d1",        {"RFB",        6000}},
{"5ef61964ec7f42238c31e0c1",        {"AO MB",        7482}},
{"5f6339d53ada5942720e2dc3",        {"CRD 556",        11332}},
{"5f6372e2865db925d54f3869",        {"FF CQB 556",        10086}},
{"5d270b3c8abbc3105335cfb8",        {"M700 cap",        500}},
{"5f2aa43ba9b91d26f20ae6d2",        {"RFB spacer",        14968}},
{"5f2aa4464b50c14bcf07acdb",        {"RFB cap",        9333}},
{"5e8708d4ae379e67d22e0102",        {"590 GR FS",        13600}},
{"5e87114fe2db31558c75a120",        {"GR RS",        19999}},
{"5f3e78a7fbf956000b716b8e",        {"Lomount FS",        750}},
{"5f3e7897ddc4f03b010e204a",        {"Lomount RS",        10000}},
{"5ef3553c43cb350a955a7ccb",        {"Wilson Ext.",        4021}},
{"5ef35f46382a846010715a96",        {"HEX ham.",        12281}},
{"5ef35d2ac64c5d0dfc0571b0",        {"1911A1 ham.",        4369}},
{"5ef35bc243cb350a955a7ccd",        {"US Ham.",        14138}},
{"5ef32e4d1c1fd62aea6a150d",        {"TrikTrig",        10225}},
{"5f3e777688ca2d00ad199d25",        {"M45A1 SLock",        500}},
{"5f3e76d86cda304dcc634054",        {"M45A1 Ham.",        500}},
{"5f3e772a670e2a7b01739a52",        {"M45A1 Trig.",        550}},
{"5f633ff5c444ce7e3c30a006",        {"Avalanche",        32174}},
{"56deee15d2720bee328b4567",        {"МP153x4",        5000}},
{"5cbdaf89ae9215000e5b9c94",        {"6L23 Plum",        2752}},
{"5f647d9f8499b57dc40ddb93",        {"KS-23Mx3",        8481}},
{"59fafc9386f774067d462453",        {"AK30 FDE",        22440}},
{"5d1340b3d7ad1a0b52682ed7",        {"GEN M3",        8897}},
{"5e21a3c67e40bd02257a008a",        {"GEN M3",        18833}},
{"5e87080c81c4ed43e83cefda",        {"590A1x8",        24148}},
{"5f3e77b26cda304dcc634057",        {"M45A1",        5497}},
{"5cffa483d7ad1a049e54ef1c",        {"ammo belt",        1030}},
{"5ef3448ab37dfd6af863525c",        {"Mec-Gar",        18291}},
{"5eeb2ff5ea4f8b73c827350b",        {"M590 rail",        20915}},
{"5a398b75c4a282000a51a266",        {"PRA",        25976}},
{"5a398ab9c4a282000c5a9842",        {"SCRA",        26793}},
{"5f2aa49f9b44de6b1b4e68d4",        {"RFB scope mount",        9448}},
{"5ef5d994dfbc9f3c660ded95",        {"Weig-a-tinny",        2900}},
{"5ef369b08cef260c0642acaf",        {"TGM",        2300}},
{"5f2aa493cd375f14e15eea72",        {"RFB HG rail",        7944}},
{"5eea217fc64c5d0dfc05712a",        {"SGA M590",        9834}},
{"5e848dc4e4dbc5266a4ec63d",        {"KS-23M steel",        11700}},
{"5e848db4681bea2ada00daa9",        {"KS23 wood",        12749}},
{"5e87116b81c4ed43e83cefdd",        {"M590A1",        26049}},
{"5ef1ba28c64c5d0dfc0571a5",        {"MT Crosshair",        21067}},
{"5ef1b9f0c64c5d0dfc0571a1",        {"M590 LEO",        6292}},
{"5f63405df5750b524b45f114",        {"VPO101 SVD style",        24472}},
{"5e848d1c264f7c180b5e35a9",        {"KS23 510mm",        21211}},
{"5e848d2eea0a7c419c2f9bfd",        {"KS23 700mm",        14548}},
{"5f2aa46b878ef416f538b567",        {"RFB 18\"",        50581}},
{"5e87071478f43e51ca2de5e1",        {"M590 20\"",        45000}},
{"5f3e77f59103d430b93f94c1",        {"M1911A1 .45",        14916}},
{"5f3e7801153b8571434a924c",        {"1911A1 NM",        41389}},
{"545cdb794bdc2d3a198b456a",        {"6B43 6A",        324736}},
{"5d1b371186f774253763a656",        {"Fuel",        101305}},
{"5f6341043ada5942720e2dc5",        {"Scorpius",        20751}},
{"57c9a89124597704ee6faec1",        {"P226 FDE",        1247}},
{"5ef366938cef260c0642acad",        {"ALG#423",        2900}},
{"5e848d99865c0f329958c83b",        {"KS23M",        9720}},
{"5f3e778efcd9b651187d7201",        {"M45A1",        1200}},
{"5c0e655586f774045612eeb2",        {"Trooper",        82057}},
{"5d43021ca4b9362eab4b5e25",        {"TX-15 DML",        67569}},
{"5c07c60e0db834002330051f",        {"ADAR 2-15",        19503}},
{"5b0bbe4e5acfc40dc528a72d",        {"SA-58",        32716}},
{"5c488a752e221602b412af63",        {"MDR",        50585}},
{"5dcbd56fdbd3d91b3e5468d5",        {"MDR",        91753}},
{"5447a9cd4bdc2dbd208b4567",        {"M4A1",        62343}},
{"5f2a9575926fd9352339381f",        {"RFB",        44996}},
{"5fc3f2d5900b1d5091531e57",        {"Vector 9x19",        55791}},
{"5fb64bc92b1b027b1f50bcf2",        {"Vector .45ACP",        66579}},
{"5fc3e272f8b6a877a729eac5",        {"UMP 45",        25944}},
{"5fd4c4fa16cac650092f6771",        {"IDEA Rig",        9599}},
{"5fd4c5477a8d854fa0105061",        {"Security",        8443}},
{"5fd4c60f875c30179f5d04c2",        {"BSS-MK1",        24099}},
{"5fbcc1d9016cce60e8341ab3",        {"SIG MCX .300 BLK",        49625}},
{"5fc22d7c187fea44d52eda44",        {"Mk-18",        105123}},
{"5fbe3ffdf8b6a877a729ea82",        {"BCP FMJ",        214}},
{"5fd20ff893a8961fc660a954",        {"AP",        714}},
{"5fc382a9d724d907e2077dab",        {"AP",        9662}},
{"5fc275cf85fd526b824a571a",        {"FMJ",        3007}},
{"5fc382c1016cce60e8341b20",        {"UPZ",        511}},
{"5fc382b6d6fa9c00c571bbc3",        {"TAC-X",        598}},
{"5fd4c474dd870108a754b241",        {"Hexgrid",        209750}},
{"5fc4b9b17283c4046c5814d7",        {"Omega 45K",        25627}},
{"5fbe7618d6fa9c00c571bb6c",        {"SRD762",        54543}},
{"5fbe760793164a5b6278efc8",        {"SRD762-QD",        65512}},
{"5fc0fa957283c4046c58147e",        {"MCX RS",        3400}},
{"5fc64ea372b0dd78d51159dc",        {"Knife",        22625}},
{"5fca138c2a7b221b2852a5c6",        {"xTG-12",        39084}},
{"5fca13ca637ee0341a484f46",        {"SJ9 TGLabs",        500000}},
{"5fce0cf655375d18a253eff0",        {"RVG FDE",        28444}},
{"5fc0f9b5d724d907e2077d82",        {"MVF001 A3",        10210}},
{"5fc0f9cbd6fa9c00c571bb90",        {"SSVFK",        9315}},
{"5fbc210bf24b94483f726481",        {"MCX block",        37444}},
{"5fc2360f900b1d5091531e19",        {"Mk18 block",        82666}},
{"5fbcbcf593164a5b6278efb2",        {"3-pr 762",        8623}},
{"5fbcbd02900b1d5091531dd3",        {"Micro 762",        9153}},
{"5fb65424956329274326f316",        {"Vector .45",        7250}},
{"5fc23636016cce60e8341b05",        {"AC-858",        12192}},
{"5fbbc3324e8a554c40648348",        {"Vector 9x19",        5212}},
{"5fbcbd10ab884124df0cd563",        {"TPB 762",        58502}},
{"5fbc22ccf24b94483f726483",        {"T-LOK",        67778}},
{"5fbbc34106bde7524f03cbe9",        {"Vector cap",        3412}},
{"5fc4b992187fea44d52edaa9",        {"DT Omega",        8961}},
{"5fc4b97bab884124df0cd5e3",        {"Omega piston",        6375}},
{"5fb6548dd1409e5ca04b54f9",        {"Vector cap",        6500}},
{"5fc0fa362770a0045c59c677",        {"MCX FS",        8065}},
{"5fb6567747ce63734e3fa1dc",        {"Defiance FS",        10315}},
{"5fb6564947ce63734e3fa1da",        {"Defiance RS",        9640}},
{"5fbcc640016cce60e8341acc",        {"MCX",        20000}},
{"5fb651dc85f90547f674b6f4",        {"G30 MagEx",        38592}},
{"5fb651b52b1b027b1f50bcff",        {"Glock .45",        7445}},
{"5fc3e466187fea44d52eda90",        {"UMP 45",        14291}},
{"5fc23426900b1d5091531e15",        {"Mk-18",        11914}},
{"5fbb976df9986c4cff3fe5f2",        {"Vector Bottom",        5751}},
{"5fc53954f8b6a877a729eaeb",        {"UMP rail bott",        3312}},
{"5fce0f9b55375d18a253eff2",        {"Vector side",        4522}},
{"5fbb978207e8a97d1f0902d3",        {"Mk.5 Modular",        4474}},
{"5fc5396e900b1d5091531e72",        {"UMP side",        3612}},
{"5fc2369685fd526b824a5713",        {"Precision",        19176}},
{"5fc3e4ee7283c4046c5814af",        {"UMP",        6532}},
{"5fb655b748c711690e3a8d5a",        {"Vector NFA",        7286}},
{"5fb655a72b1b027b1f50bd06",        {"Vector PSA",        4806}},
{"5fce16961f152d4312622bc9",        {"DS150 FDE",        9559}},
{"5fbcc437d724d907e2077d5c",        {"MCX thin",        5571}},
{"5fbbaa86f9986c4cff3fe5f6",        {"DS150",        12697}},
{"5fb6558ad6f0b2136f2d7eb7",        {"Vector fold.",        6538}},
{"5fbcc429900b1d5091531dd7",        {"MCX telestock",        7128}},
{"5fbbfabed5cb881a7363194e",        {"MCX 171mm",        10189}},
{"5fbbfacda56d053a3543f799",        {"MCX 229mm",        15825}},
{"5fc23678ab884124df0cd590",        {"Mk-18 24\"",        68385}},
{"5fbbc366ca32ed67276c1557",        {"Vector 9x19 5\"",        10887}},
{"5fb653962b1b027b1f50bd03",        {"Vector .45 6\"",        22358}},
{"5fc3e4a27283c4046c5814ab",        {"UMP-45 8\"",        8536}},
{"5fb65363d1409e5ca04b54f5",        {"Vector .45 5\"",        8311}},
{"5fbbc383d5cb881a7363194a",        {"Vector 9x19 6\"",        13272}},
{"5fbc227aa56d053a3543f79e",        {"MCX 12\"",        12864}},
{"5fc235db2770a0045c59c683",        {"Mk-18 18\"",        25518}},
{"5fbc226eca32ed67276c155d",        {"MCX 8\"",        6078}},
{"5fbcbd6c187fea44d52eda14",        {"MCX",        9275}},
{"5fbcc3e4d6fa9c00c571bb58",        {"MCX GEN1",        40000}},
{"5fc278107283c4046c581489",        {"Mk-18 Upper",        47070}},
{"5fd8d28367cb5e077335170f",        {"Smoke",        27369}},
{"57372f5c24597769917c0131",        {"T gs",        1000}},
{"573724b42459776125652ac2",        {"P gzh",        1000}},
{"5737273924597765dd374461",        {"PSO gzh",        1000}},
{"5737266524597761006c6a8c",        {"PRS gs",        1000}},
{"5737280e24597765cc785b5c",        {"PSV",        1000}},
{"5737287724597765e1625ae2",        {"RG028 gzh",        1000}},
{"57372e73245977685d4159b4",        {"PS gs",        1000}},
{"5737260b24597761224311f2",        {"PPT gzh",        1000}},
{"5737300424597769942d5a01",        {"US gs",        1000}},
{"5737330a2459776af32363a1",        {"FMJ",        1000}},
{"5737339e2459776af261abeb",        {"HP",        1000}},
{"57372ee1245977685d4159b5",        {"T gs",        1000}},
{"573733c72459776b0b7b51b0",        {"SP",        1000}},
{"5737292724597765e5728562",        {"BP gs",        100000}},
{"57372b832459776701014e41",        {"BS gs",        1000}},
{"57372a7f24597766fe0de0c1",        {"BP gs",        43000}},
{"57372bad245977670b7cd242",        {"BS gs",        1000}},
{"57372f2824597769a270a191",        {"T gs",        1000}},
{"57372c56245977685e584582",        {"BT gs",        26600}},
{"57372e1924597768553071c1",        {"PRS gs",        10000}},
{"573726d824597765d96be361",        {"PS gs PPO",        1000}},
{"57372d4c245977685a3da2a1",        {"PP gs",        1000}},
{"57372e94245977685648d3e1",        {"PS gs",        1000}},
{"57372fc52459776998772ca1",        {"US gs",        1000}},
{"5f9949d869e2777a0e779ba5",        {"Rivals",        20000}},
{"5f99418230835532b445e954",        {"Rivals",        20000}},
{"5f994730c91ed922dd355de3",        {"Rivals",        20000}},
{"5449016a4bdc2d6f028b456f",        {"RUB",        0}},
{"5d1b36a186f7742523398433",        {"Fuel",        32250}},
{"5ab8e4ed86f7742d8e50c7fa",        {"MF-UN",        38274}},
{"5aa7e373e5b5b000137b76f0",        {"Altyn",        39024}},
{"5ab8e79e86f7742d8b372e78",        {"GZHEL-K",        109372}},
{"60391b0fb847c71012789415",        {"TP-200",        21651}},
{"60391a8b3364dc22b04d0ce5",        {"Thermite",        57133}},
{"60391afc25aff57af81f7085",        {"Ratchet",        79263}},
{"60337f5dce399e10262255d1",        {"STM9 MB",        3329}},
{"602a97060ddce744014caf6f",        {"PL15 supp.",        16961}},
{"6034d2d697633951dc245ea6",        {"G2 Gunslinger DE",        47215}},
{"6038d614d10cbf667352dd44",        {"Takedown",        31523}},
{"6034d103ca006d2dca39b3f0",        {"Takedown",        33819}},
{"603648ff5a45383c122086ac",        {"Azimut",        21764}},
{"6034d0230ca681766b6a0fb5",        {"CSA",        13731}},
{"6034cf5fffd42c541047f72e",        {"Umka",        15681}},
{"6040dd4ddcf9592f401632d2",        {"Azimut",        21715}},
{"602a9740da11d6478d5a06dc",        {"PL-15",        16991}},
{"60339954d62c9b14ed777c06",        {"STM-9",        20337}},
{"6038b4ca92ec1c3103795a0d",        {"Slick",        235371}},
{"6038b4b292ec1c3103795a0b",        {"Slick",        233528}},
{"6033fa48ffd42c541047f728",        {"M32",        17970}},
{"60098af40accd37ef2175f27",        {"CAT",        2175}},
{"60098ad7c2240c0fe85c570a",        {"AFAK",        24555}},
{"60098b1705871270cd5352a1",        {"EWR",        12333}},
{"601948682627df266209af05",        {"Taiga-1",        5988889}},
{"60363c0c92ec1c31037959f5",        {"GP-7",        8647}},
{"603618feffd42c541047f771",        {"Cap",        9534}},
{"603619720ca681766b6a0fc4",        {"Cap",        8758}},
{"6040de02647ad86262233012",        {"Cap",        23023}},
{"60361a7497633951dc245eb4",        {"Cap",        2668}},
{"60361b0b5a45383c122086a1",        {"Cap",        4347}},
{"60361b5a9a15b10d96792291",        {"Cap",        3704}},
{"603409c80ca681766b6a0fb2",        {"Condor",        17375}},
{"60194943740c5d77f6705eea",        {"SOST",        166}},
{"601949593ae8f707c4608daa",        {"SSA AP",        1057}},
{"601aa3d2b2bcb34913271e6d",        {"MAI AP",        1413}},
{"60228a76d62c9b14ed777a66",        {"PL15 FS",        800}},
{"60228a850ddce744014caf69",        {"PL15 FS ext.",        950}},
{"60229948cacb6b0506369e27",        {"PL15 RS",        900}},
{"602293f023506e50807090cb",        {"PL15 RS ext.",        950}},
{"602f85fd9b513876d4338d9c",        {"STM9 mwell",        8201}},
{"60338ff388382f4fab3fd2c8",        {"STM9 mwell G",        5976}},
{"6033749e88382f4fab3fd2c5",        {"MASP",        14267}},
{"602286df23506e50807090c6",        {"9x19 PL15",        7673}},
{"602e3f1254072b51b239f713",        {"STM Tube",        32444}},
{"602e620f9b513876d4338d9a",        {"GL-Core",        8267}},
{"602a95edda11d6478d5a06da",        {"PL-15 9x19",        7556}},
{"603372b4da11d6478d5a07ff",        {"STM-9 10.5\"",        7155}},
{"602a95fe4e02ce1eaa358729",        {"PL15 thr.",        20000}},
{"603372d154072b51b239f9e1",        {"STM-9 12\"",        13883}},
{"603372f153a60014f970616d",        {"STM-9 14\"",        18920}},
{"603373004e02ce1eaa358814",        {"STM-9 16\"",        30916}},
{"6034e3e20ddce744014cb878",        {"STM 12\"",        13928}},
{"6034e3d953a60014f970617b",        {"STM 15\"",        14956}},
{"6034e3cb0ddce744014cb870",        {"STM 9\"",        14232}},
{"602e71bd53a60014f9705bfa",        {"DLG123",        2794}},
{"60228924961b8d75ee233c32",        {"PL15 Slide",        3900}},
{"602e63fb6335467b0c5ac94d",        {"STM-9 Upper",        6545}},
{"59e6687d86f77411d949b251",        {"VPO-209",        0}},
{"587e02ff24597743df3deaeb",        {"OP-SKS",        0}},
{"574d967124597745970e7c94",        {"SKS",        0}},
{"59e6152586f77473dc057aa1",        {"VPO-136",        0}},
{"5c501a4d2e221602b412b540",        {"Vepr Hunter",        0}},
{"5ac66d015acfc400180ae6e4",        {"AK-102",        0}},
{"5644bd2b4bdc2d3b4c8b4572",        {"AK-74N",        0}},
{"5ab8e9fcd8ce870019439434",        {"AKS-74N",        0}},
{"5ac66d725acfc43b321d4b60",        {"AK-104",        0}},
{"5bb2475ed4351e00853264e3",        {"HK 416A5",        0}},
{"5fbcc1d9016cce60e8341ab3",        {"SIG MCX .300 BLK",        0}},
{"5ac66d9b5acfc4001633997a",        {"AK-105",        0}},
{"5cadfbf7ae92152ac412eeef",        {"ASh-12",        0}},
{"5ac66d2e5acfc43b321d4b53",        {"AK-103",        0}},
{"57dc2fa62459775949412633",        {"AKS-74U",        0}},
{"5839a40f24597726f856b511",        {"AKS-74UB",        0}},
{"5bf3e03b0db834001d2c4a9c",        {"AK-74",        0}},
{"59d6088586f774275f37482f",        {"AKM",        0}},
{"5a0ec13bfcdbcb00165aa685",        {"AKMN",        0}},
{"59ff346386f77477562ff5e2",        {"AKMS",        0}},
{"5ac66cb05acfc40198510a10",        {"AK-101",        0}},
{"57c44b372459772d2b39b8ce",        {"AS VAL",        0}},
{"5abcbc27d8ce8700182eceeb",        {"AKMSN",        0}},
{"583990e32459771419544dd2",        {"AKS-74UN",        0}},
{"5ac4cd105acfc40016339859",        {"AK-74M",        0}},
{"5bf3e0490db83400196199af",        {"AKS-74",        0}},
{"5bfd297f0db834001a669119",        {"Mosin Infantry",        0}},
{"5bfea6e90db834001b7347f3",        {"M700",        0}},
{"5ae08f0a5acfc408fb1398a1",        {"Mosin",        0}},
{"5de652c31b7e3716273428be",        {"VPO-215",        0}},
{"5df24cf80dee1b22f862e9bc",        {"T-5000M",        0}},
{"588892092459774ac91d4b11",        {"DVL-10",        0}},
{"55801eed4bdc2d89578b4588",        {"SV-98",        0}},
{"5beed0f50db834001c062b12",        {"RPK-16",        0}},
{"5df8ce05b11454561e39243b",        {"SR-25",        0}},
{"5c46fbd72e2216398b5a8c9c",        {"SVDS",        0}},
{"5aafa857e5b5b00018480968",        {"M1A",        0}},
{"5a367e5dc4a282000e49738f",        {"RSASS",        0}},
{"5fc22d7c187fea44d52eda44",        {"Mk-18",        0}},
{"57838ad32459774a17445cd2",        {"VSS Vintorez",        0}},
{"579204f224597773d619e051",        {"PM (t)",        0}},
{"56d59856d2720bd8418b456a",        {"P226R",        0}},
{"5abccb7dd8ce87001773e277",        {"APB",        0}},
{"5f36a0e5fbf956000b716b65",        {"M45A1",        0}},
{"5d3eb3b0a4b93615055e84d2",        {"FN 5-7",        0}},
{"5b3b713c5acfc4330140bd8d",        {"TT Gold",        0}},
{"5d67abc1a4b93614ec50137f",        {"FN 5-7 FDE",        0}},
{"5cadc190ae921500103bb3b6",        {"M9A3",        0}},
{"571a12c42459771f627b58a0",        {"TT",        0}},
{"56e0598dd2720bb5668b45a6",        {"PB",        0}},
{"5e81c3cbac2bb513793cdc75",        {"M1911A1",        0}},
{"5448bd6b4bdc2dfc2f8b4569",        {"PM",        0}},
{"5a17f98cfcdbcb0980087290",        {"APS",        0}},
{"602a9740da11d6478d5a06dc",        {"PL-15",        0}},
{"576a581d2459771e7b1bc4f1",        {"MP-443 Grach\"",        0}},
{"5b1fa9b25acfc40018633c01",        {"Glock 18C",        0}},
{"5a7ae0c351dfba0017554310",        {"Glock 17",        0}},
{"59f98b4986f7746f546d2cef",        {"SR-1MP",        0}},
{"5a38e6bac4a2826c6e06d79b",        {"TOZ-106",        0}},
{"5e870397991fd70db46995c8",        {"590A1",        0}},
{"5a7828548dc32e5a9c28b516",        {"M870 12ga",        0}},
{"56dee2bdd2720bc8328b4567",        {"MP-153",        0}},
{"54491c4f4bdc2db1078b4568",        {"MP-133",        0}},
{"5e848cc2988a8701445df1e8",        {"KS-23M",        0}},
{"576165642459773c7a400233",        {"Saiga 12ga v.10",        0}},
{"5e00903ae9dc277128008b87",        {"MP9",        0}},
{"59984ab886f7743e98271174",        {"PP-19-01",        0}},
{"5cc82d76e24e8d00134b4b83",        {"P90",        0}},
{"5bd70322209c4d00d7167b8f",        {"MP7A2",        0}},
{"5ba26383d4351e00334c93d9",        {"MP7A1",        0}},
{"5de7bd7bfd6b4e6e2276dc25",        {"MP9-N",        0}},
{"60339954d62c9b14ed777c06",        {"STM-9",        17916}},
{"57d14d2524597714373db789",        {"PP-91 Kedr",        0}},
{"5fc3e272f8b6a877a729eac5",        {"UMP 45",        0}},
{"5926bb2186f7744b1c6c6e60",        {"MP5",        0}},
{"58948c8e86f77409493f7266",        {"MPX",        0}},
{"57f3c6bd24597738e730fa2f",        {"PP-91-01 Kedr-B",        0}},
{"5d2f0d8048f0356c925bc3b0",        {"MP5K-N",        0}},
{"59f9cabd86f7743a10721f46",        {"Saiga-9",        0}},
{"5ea03f7400685063ec28bfa8",        {"PPSh-41",        0}},
{"5fb64bc92b1b027b1f50bcf2",        {"Vector .45ACP",        0}},
{"5fc3f2d5900b1d5091531e57",        {"Vector 9x19",        0}},
{"57f4c844245977379d5c14d1",        {"PP-9 Klin",        0}},
{"5e81ebcd8e146c7080625e15",        {"FN40GL",        0}},
{"5648b62b4bdc2d9d488b4585",        {"GP-34",        0}},
{"60b0f561c4449e4cb624c1d7",        {"Poison",        32290}},
{"6065dc8a132d4d12c81fd8e3",        {"CMMG block",        10006}},
{"609269c3b0e443224b421cc1",        {"ASR 556",        17947}},
{"6065c6e7132d4d12c81fd8e1",        {"SV Brake",        6404}},
{"607ffb988900dc2d9a55b6e4",        {"ProComp 762",        10014}},
{"60926df0132d4d12c81fd9df",        {"SAKER ASR 556",        37934}},
{"609b9e31506cf869cf3eaf41",        {"TargetRing",        9454}},
{"60a23797a37c940de7062d02",        {"ROMEO8T",        22642}},
{"609a63b6e2ff132951242d09",        {"Krechet",        14234}},
{"609bab8b455afd752b2e6138",        {"T12W",        45833}},
{"606f2696f2cb2e02a42aceb1",        {"Ultima Thermal",        25737}},
{"606f26752535c57a13424d22",        {"Ultima mount",        8248}},
{"60785c0d232e5a31c233d51c",        {"Ultima rbr.",        7983}},
{"606587bd6d0bd7580617bacc",        {"Mk47 Ambi",        6570}},
{"6076c87f232e5a31c233d50e",        {"МP155x6",        7777}},
{"609a4b4fe2ff132951242d04",        {"Arbalet VPO",        6107}},
{"60785ce5132d4d12c81fd918",        {"Ultima top",        66203}},
{"6086b5392535c57a13424d70",        {"CG",        4344}},
{"607ea812232e5a31c233d53c",        {"Ultima shrt.",        16489}},
{"606587d11246154cad35d635",        {"RipStock",        5471}},
{"606587e18900dc2d9a55b65f",        {"CMMG",        9445}},
{"607d5a891246154cad35d6aa",        {"MP155 walnut",        7825}},
{"606eef756d0bd7580617baf8",        {"Ultima",        32176}},
{"6087e2a5232e5a31c233d552",        {"OPFOR AA47",        37175}},
{"606f263a8900dc2d9a55b68d",        {"Ultima Large",        10827}},
{"606f262c6d0bd7580617bafa",        {"Ultima Med.",        8271}},
{"606ef0812535c57a13424d20",        {"Ultima Small",        10539}},
{"6076c1b9f2cb2e02a42acedc",        {"MP155 510mm",        12998}},
{"60658776f2cb2e02a42ace2b",        {"Mk47 254mm",        17416}},
{"6065878ac9cf8012264142fd",        {"Mk47 409mm",        206092}},
{"6086b5731246154cad35d6c7",        {"Type-340",        13492}},
{"6065881d1246154cad35d637",        {"MK3 RML15",        12512}},
{"6065880c132d4d12c81fd8da",        {"MK3 RML9",        9578}},
{"6087e0336d0bd7580617bb7a",        {"Wing&Skull",        27562}},
{"607d5aa50494a626335e12ed",        {"МP155 walnut",        13752}},
{"606ee5c81246154cad35d65e",        {"Ultima",        7090}},
{"6087e663132d4d12c81fd96b",        {"AGS-74",        33705}},
{"606eef46232e5a31c233d500",        {"Ultima",        7737}},
{"606587a88900dc2d9a55b659",        {"Mk47 Resolute",        10563}},
{"56e294cdd2720b603a8b4575",        {"Terraplane 85L",        100000000}},
{"60a2828e8689911a226117f9",        {"Pillbox",        19953}},
{"60a272cc93ef783291411d8e",        {"Drawbridge",        39899}},
{"5732ee6a24597719ae0c0281",        {"Waist bag",        15000}},
{"60a6220e953894617404b00a",        {"CR MK2 (R)",        30361}},
{"60a621c49c197e4e8c4455e6",        {"CR MK2 (A)",        22760}},
{"609e860ebd219504d8507525",        {"AVS MBAV",        210984}},
{"60a3c70cde5f453f634816a3",        {"Osprey MK4A (A)",        145680}},
{"60a3c68c37ea821725773ef5",        {"Osprey MK4A (P)",        172500}},
{"60b0f6c058e0b0481a09ad11",        {"WZ",        28146}},
{"606587252535c57a13424cfd",        {"Mk47",        105316}},
{"606dae0ab0e443224b421bb7",        {"MP-155",        20085}},
{"60b0f988c4449e4cb624c1da",        {"Evasion",        428142}},
{"609e8540d5c319764c2bc2e9",        {"THOR CV",        66230}},
{"60a283193cb70855c43a381d",        {"THOR IC",        275319}},
{"60a7ad3a0c5cb24b0134664a",        {"\"Gorilla\"",        139000}},
{"60a7ad2a2198820d95707a2e",        {"\"UBEY\"",        146875}},
{"60a7acf20c5cb24b01346648",        {"Cap",        29048}},
{"60bf74184a63fc79b60c57f6",        {"Bomber",        16882}},
{"60b52e5bc7d8103275739d67",        {"Chimera",        4046}},
{"60b0f93284c20f0feb453da7",        {"RatCola",        15023}},
{"6087e570b998180e9f76dc24",        {"Dead Blow",        45000}},
{"60b0f7057897d47c5b04ab94",        {"Loot Lord",        52281}},
{"606587252535c57a13424cfd",        {"Mk47",        0}},
{"606dae0ab0e443224b421bb7",        {"MP-155",        0}}
};


bhehe6813 19th July 2021 04:21 AM

Quote:

Originally Posted by alexanderyy (Post 3186867)
How are people filtering items in categories like consumables, weapons, and such? I have been looking for a bit, but can't seem to find anything

Haven't seen this posted in a while, here are the updated prices

Code:

std::unordered_map<std::string, std::pair<std::string, int>> EFT_ItemNames = {
{"590c621186f774138d11ea29",        {"Flash drive",        37335}},
{"590c392f86f77444754deb29",        {"SSD",        32989}},
{"5a1eaa87fcdbcb001865f75e",        {"REAP-IR",        309573}},
{"5c110624d174af029e69734c",        {"T-7",        15372000}},
{"5d1b33a686f7742523398398",        {"Superwater",        105175}},
{"5c0558060db834001b735271",        {"GPNVG-18",        119709}},
{"5b6d9ce188a4501afc1b2b25",        {"T H I C C",        6042014}},
{"5b7c710788a4506dec015957",        {"Lucky Scav",        966537}},
{"5c1d0c5f86f7744bb2683cf0",        {"Blue",        6042713}},
{"5c94bbff86f7747ee735c08f",        {"Access",        202656}},
{"59fb016586f7746d0d4b423a",        {"MCase",        396401}},
{"5c0126f40db834002a125382",        {"RedRebel",        3462490}},
{"5aafbde786f774389d0cbc0f",        {"Ammo",        145210}},
{"5c12613b86f7743bbe2c3f76",        {"Intelligence",        119590}},
{"59faff1d86f7746c51718c9c",        {"0.2BTC",        204537}},
{"590c60fc86f77412b13fddcf",        {"DocCase",        430483}},
{"5aafbcd986f7745e590fff23",        {"MedCase",        284525}},
{"59e3639286f7741777737013",        {"BLion",        370522}},
{"5c0a840b86f7742ffa4f2482",        {"T H I C C",        10969182}},
{"5ad5d7d286f77450166e0a89",        {"KIBA outer",        408437}},
{"5d1b376e86f774252519444e",        {"Moonshine",        147207}},
{"57347ca924597744596b4e71",        {"GPU",        310057}},
{"59fafd4b86f7745ca07e1232",        {"Key tool",        637728}},
{"5a13ef0686f7746e5a411744",        {"W219 San",        128637}},
{"59e35cbb86f7741778269d83",        {"Hose",        42594}},
{"5d235bb686f77443f4331278",        {"S I C C",        750000}},
{"5c127c4486f7745625356c13",        {"MagCase",        310078}},
{"5c1d0d6d86f7744bb2683e1f",        {"Yellow",        61646}},
{"5448ba0b4bdc2d02308b456c",        {"Factory",        64475}},
{"5c1e495a86f7743109743dfb",        {"Violet",        2966841}},
{"5a13f35286f77413ef1436b0",        {"E226 San",        84217}},
{"5733279d245977289b77ec24",        {"Car batt.",        122457}},
{"5d1b2f3f86f774252167a52c",        {"FP-100",        101619}},
{"5d03794386f77420415576f5",        {"Tank battery",        761361}},
{"5c1d0f4986f7744bb01837fa",        {"Black",        4244444}},
{"5c0530ee86f774697952d952",        {"LEDX",        427617}},
{"5c1d0dc586f7744baf2e7b79",        {"Green",        146000}},
{"5c1d0efb86f7744baf2e7b7b",        {"Red",        35006944}},
{"5da5cdcd86f774529238fb9b",        {"RB-RH",        91117}},
{"5d9f1fa686f774726974a992",        {"RB-ST",        836035}},
{"5d95d6fa86f77424484aa5e9",        {"RB-PSP2",        80846}},
{"5d947d3886f774447b415893",        {"RB-SMP",        459266}},
{"5d947d4e86f774447b415895",        {"RB-KSM",        258061}},
{"5d8e0db586f7744450412a42",        {"RB-KORL",        123821}},
{"5d80cd1a86f77402aa362f42",        {"RB-ORB3",        162322}},
{"5d80cb8786f774405611c7d9",        {"RB-PP",        45314}},
{"5d80cb3886f77440556dbf09",        {"RB-PSP1",        107975}},
{"5d80cab086f77440535be201",        {"RB-MP22 key",        690437}},
{"5d80ca9086f774403a401e40",        {"RB-MP21",        64347}},
{"5d80cbd886f77470855c26c2",        {"RB-MP13",        54835}},
{"5d80c93086f7744036212b41",        {"RB-MP11",        67963}},
{"5d80c88d86f77440556dbf07",        {"RB-AM",        202315}},
{"5d80c6c586f77440351beef1",        {"RB-OB",        199632}},
{"5d80c62a86f7744036212b3f",        {"RB-VO mark.",        70259}},
{"5d80c60f86f77440373c4ece",        {"RB-BK mark.",        74374}},
{"5ad5db3786f7743568421cce",        {"EMC",        227384}},
{"5d8e0e0e86f774321140eb56",        {"RB-KPRL",        807777}},
{"5a0eed4386f77405112912aa",        {"E314 San",        35803}},
{"5a0eecf686f7740350630097",        {"E313 San",        74301}},
{"5a145d4786f7744cbb6f4a12",        {"E306 San",        91729}},
{"5a0ee4b586f7743698200d22",        {"E206 San",        51340}},
{"5a144bdb86f7741d374bbde0",        {"E205 San",        63325}},
{"5a0ea64786f7741707720468",        {"E107 San",        68387}},
{"5a145d7b86f7744cbb6f4a13",        {"E308 San",        72705}},
{"5a13f46386f7741dd7384b04",        {"W306 San",        232629}},
{"5a13ef7e86f7741290491063",        {"W301 San",        289719}},
{"5a1452ee86f7746f33111763",        {"W222 San",        67258}},
{"5a0ee37f86f774023657a86f",        {"W221 San",        58863}},
{"5a0ee34586f774023b6ee092",        {"W220 San",        177231}},
{"5d80c95986f77440351beef3",        {"RB-MP12",        100792}},
{"5d80c78786f774403a401e3e",        {"RB-AK",        96524}},
{"5937ee6486f77408994ba448",        {"Machinery",        7541}},
{"5d80ccdd86f77474f7575e02",        {"RB-ORB2",        87321}},
{"5ad7247386f7747487619dc3",        {"Goshan reg.",        92927}},
{"5d80cb5686f77440545d1286",        {"RB-PS81",        66016}},
{"5a0ee76686f7743698200d5c",        {"E216 San",        64822}},
{"5da46e3886f774653b7a83fe",        {"RB-RS",        103874}},
{"5d80c6fc86f774403a401e3c",        {"RB-TB",        137564}},
{"593962ca86f774068014d9af",        {"Unk. key",        10490}},
{"5d80c8f586f77440373c4ed0",        {"RB-OP",        382427}},
{"5a0eee1486f77402aa773226",        {"E328 San",        85447}},
{"5d8e3ecc86f774414c78d05e",        {"RB-GN",        144889}},
{"5a0ee30786f774023b6ee08f",        {"W216 San",        477041}},
{"5d80ccac86f77470841ff452",        {"RB-ORB1",        471069}},
{"5780cf7f2459777de4559322",        {"Dorm mark.",        607805}},
{"5a13f24186f77410e57c5626",        {"E222 San",        82963}},
{"5c1f79a086f7746ed066fb8f",        {"TGL ASR",        63013}},
{"5d95d6be86f77424444eb3a7",        {"RB-PS82",        388044}},
{"5a0f08bc86f77478f33b84c2",        {"Safe",        73898}},
{"5d08d21286f774736e7c94c3",        {"SSK",        112142}},
{"5c1e2d1f86f77431e9280bee",        {"TGL WT",        90654}},
{"5938504186f7740991483f30",        {"Dorm 203",        11410}},
{"593aa4be86f77457f56379f8",        {"Dorm 303",        18333}},
{"5a13eebd86f7746fd639aa93",        {"W218 San",        80171}},
{"5913915886f774123603c392",        {"Checkpoint",        64875}},
{"5780d0532459777a5108b9a2",        {"Director's",        7850}},
{"5938144586f77473c2087145",        {"Bunk key",        10450}},
{"5913611c86f77479e0084092",        {"Cabin key",        7840}},
{"5d80c66d86f774405611c7d6",        {"RB-AO",        48166}},
{"5a0ea79b86f7741d4a35298e",        {"San util.",        56376}},
{"5a0dc45586f7742f6b0b73e3",        {"W104 San",        102135}},
{"5c1e2a1e86f77431ea0ea84c",        {"TGL MO",        82476}},
{"5a0dc95c86f77452440fc675",        {"W112 San",        80249}},
{"59136a4486f774447a1ed172",        {"GDesk",        8496}},
{"5780cf942459777df90dcb72",        {"Dorm 214",        27200}},
{"59387a4986f77401cc236e62",        {"Dorm 114",        11174}},
{"5780cfa52459777dfb276eb1",        {"Dorm 220",        20194}},
{"591383f186f7744a4c5edcf3",        {"Dorm 104",        10989}},
{"5938603e86f77435642354f4",        {"Dorm 206",        6323}},
{"5d1b2ffd86f77425243e8d17",        {"NIXXOR",        23321}},
{"5d40419286f774318526545f",        {"MScissors",        13771}},
{"5c1267ee86f77416ec610f72",        {"Prokill",        76920}},
{"5c12620d86f7743f8b198b72",        {"Tetriz",        79742}},
{"5bc9b9ecd4351e3bac122519",        {"BeardOil",        34781}},
{"59faf7ca86f7740dbe19f6c2",        {"Roler",        66928}},
{"5bc9be8fd4351e00334cae6e",        {"42nd",        22692}},
{"5af0561e86f7745f5f3ad6ac",        {"Powerbank",        25605}},
{"5af0534a86f7743b6f354284",        {"Ophthalmoscope",        69402}},
{"590a373286f774287540368b",        {"DFuel",        56172}},
{"59faf98186f774067b6be103",        {"Alkali",        13045}},
{"59fafb5d86f774067a6f2084",        {"Propane",        16762}},
{"5b4335ba86f7744d2837a264",        {"Bloodset",        15114}},
{"590c35a486f774273531c822",        {"Shus",        34747}},
{"59e358a886f7741776641ac3",        {"Clin",        8666}},
{"590a391c86f774385a33c404",        {"Magnet",        19018}},
{"5c13cd2486f774072c757944",        {"Soap",        8020}},
{"5734758f24597738025ee253",        {"GoldChain",        26815}},
{"573474f924597738002c6174",        {"Chainlet",        5892}},
{"5bc9bdb8d4351e003562b8a1",        {"Badge",        37089}},
{"590c2b4386f77425357b6123",        {"Pliers",        6807}},
{"590c311186f77424d1667482",        {"Wrench",        12906}},
{"590c2d8786f774245b1f03f3",        {"Scdr.",        5777}},
{"577e1c9d2459773cd707c525",        {"Paper",        10921}},
{"57347cd0245977445a2d6ff1",        {"T-Plug",        4633}},
{"5909e99886f7740c983b9984",        {"USB-A",        4053}},
{"57347c93245977448d35f6e3",        {"Toothpaste",        4219}},
{"590c2c9c86f774245b1f03f2",        {"MTape",        2321}},
{"57347c1124597737fb1379e3",        {"Duct tape",        4203}},
{"59e36c6f86f774176c10a2a7",        {"PCord",        19121}},
{"57347baf24597738002c6178",        {"RAM",        8055}},
{"573477e124597737dd42e191",        {"CPU",        8410}},
{"5734779624597737e04bf329",        {"CPU Fan",        26098}},
{"56742c324bdc2d150f8b456d",        {"GPhone",        15601}},
{"590a3d9c86f774385926e510",        {"UV Lamp",        9192}},
{"5672cb304bdc2dc2088b456a",        {"D Batt.",        6870}},
{"5672cb124bdc2d1a0f8b4568",        {"AA Batt.",        5005}},
{"5c1265fc86f7743f896a21c2",        {"GPX",        19874}},
{"5c06782b86f77426df5407d2",        {"Caps",        8684}},
{"590a3efd86f77437d351a25b",        {"GasAn",        14132}},
{"59e3647686f774176a362507",        {"WClock",        39537}},
{"59e3658a86f7741776641ac4",        {"Cat",        29581}},
{"5734770f24597738025ee254",        {"Strike",        3984}},
{"590a3cd386f77436f20848cb",        {"ES Lamp",        11400}},
{"56742c2e4bdc2d95058b456d",        {"Zibbo",        9232}},
{"57347c5b245977448d35f6e1",        {"Bolts",        14896}},
{"57347c77245977448d35f6e2",        {"Screw nut",        7811}},
{"5d1b371186f774253763a656",        {"Fuel",        108222}},
{"5c12688486f77426843c7d32",        {"Paracord",        86277}},
{"59f32c3b86f77472a31742f0",        {"USEC",        600}},
{"59f32bb586f774757e1e8442",        {"BEAR",        600}},
{"590c31c586f774245e3141b2",        {"Nails",        7448}},
{"5addaffe86f77470b455f900",        {"KIBA inner",        178323}},
{"5ad5d64486f774079b080af8",        {"Pharmacy",        56055}},
{"5ad5d49886f77455f9731921",        {"Power cabin",        11500}},
{"5ad5d20586f77449be26d877",        {"OLI util.",        27447}},
{"5ad5ccd186f774446d5706e9",        {"OLI office",        21215}},
{"5a0eec9686f77402ac5c39f2",        {"E310 San",        96444}},
{"5a0eebed86f77461230ddb3d",        {"W325 San",        55468}},
{"5a0eeb1a86f774688b70aa5c",        {"W303 San",        64711}},
{"5c0e842486f77443a74d2976",        {"Maska-1Shch",        54788}},
{"5aa7e373e5b5b000137b76f0",        {"Altyn",        51736}},
{"5b46238386f7741a693bcf9c",        {"Kiver FS",        26685}},
{"5d40425986f7743185265461",        {"Nippers",        3838}},
{"5a0eeb8e86f77461257ed71a",        {"W309 San",        50260}},
{"5c10c8fd86f7743d7d706df3",        {"Adrenaline",        14738}},
{"5c0e531d86f7747fa23f4d42",        {"SJ6 TGLabs",        39904}},
{"5d02778e86f774203e7dedbe",        {"CMS",        17439}},
{"5751a89d24597722aa0e8db0",        {"GoldenStar",        59155}},
{"5755383e24597772cb798966",        {"Vaseline",        23277}},
{"590c657e86f77412b013051d",        {"Grizzly",        20886}},
{"5a13ee1986f774794d4c14cd",        {"W323 San",        46223}},
{"590c678286f77426c9660122",        {"IFAK",        13623}},
{"544fb45d4bdc2dee738b4568",        {"Salewa",        19034}},
{"590c661e86f7741e566b646a",        {"Car",        7271}},
{"544fb3f34bdc2d03748b456a",        {"Morphine",        10498}},
{"590c695186f7741e566b64a2",        {"Augmentin",        9298}},
{"5d40407c86f774318526545a",        {"Vodka",        16339}},
{"5bc9b156d4351e00367fbce9",        {"Mayo",        12816}},
{"5751496424597720a27126da",        {"Hot Rod",        9512}},
{"57514643245977207f2c2d09",        {"TarCola",        7372}},
{"5751435d24597720a27126d1",        {"MaxNRG",        9722}},
{"5d1b317c86f7742523398392",        {"Hand drill",        37208}},
{"5d403f9186f7743cac3f229b",        {"Whiskey",        31361}},
{"57513fcc24597720a31c09a6",        {"Vita",        7637}},
{"57513f07245977207e26a311",        {"Aple",        5693}},
{"5734795124597738002c6176",        {"Tape",        9392}},
{"575062b524597720a31c09a1",        {"Green Ice",        3687}},
{"544fb62a4bdc2dfb738b4568",        {"Pineapple",        6465}},
{"5448fee04bdc2dbc018b4567",        {"Water",        12837}},
{"5c0e533786f7747fa23f4d47",        {"Zagustin",        17387}},
{"590c5f0d86f77413997acfab",        {"MRE",        16262}},
{"57347d8724597744596b4e76",        {"Squash",        9468}},
{"57347d692459774491567cf1",        {"Peas",        9479}},
{"5c052f6886f7746b1e3db148",        {"SG-C10",        109627}},
{"5a0ea69f86f7741cd5406619",        {"E108 San",        47875}},
{"57347d5f245977448b40fa81",        {"Humpback",        5218}},
{"5751487e245977207e26a315",        {"Emelya",        2999}},
{"59e3577886f774176a362503",        {"Sugar",        18960}},
{"544fb6cc4bdc2d34748b456e",        {"Slickers",        7191}},
{"590c37d286f77443be3d7827",        {"SAS",        36507}},
{"57505f6224597709a92585a9",        {"Alyonka",        13796}},
{"5448ff904bdc2d6f028b456e",        {"Crackers",        12932}},
{"5c093e3486f77430cb02e593",        {"Dogtags",        420272}},
{"5783c43d2459774bbe137486",        {"Wallet",        7726}},
{"5c093db286f7740a1b2617e3",        {"Holodilnick",        489736}},
{"5d6d3829a4b9361bc8618943",        {"LShZ-2DTM",        44011}},
{"59fb023c86f7746d0d4b423c",        {"WCase",        3016667}},
{"590a358486f77429692b2790",        {"RBattery",        10547}},
{"590c651286f7741e566b6461",        {"SDiary",        27985}},
{"590c645c86f77412b01304d9",        {"Diary",        25866}},
{"5d1b313086f77425227d1678",        {"Relay",        19104}},
{"5d4042a986f7743185265463",        {"L&F scdr.",        8884}},
{"567143bf4bdc2d1a0f8b4567",        {"PCase",        17083}},
{"5d1c774f86f7746d6620f8db",        {"Helix",        9096}},
{"5ad7217186f7746744498875",        {"OLI reg.",        50088}},
{"5734773724597737fd047c14",        {"Cond. milk",        15529}},
{"591afe0186f77431bd616a11",        {"ZB-014",        15012}},
{"5bc9c377d4351e3bac12251b",        {"Firesteel",        39204}},
{"5af0484c86f7740f02001f7f",        {"Majaica",        17501}},
{"5d235a5986f77443f6329bc6",        {"Skull",        70759}},
{"5a0f006986f7741ffd2fe484",        {"Safe",        46166}},
{"5d1b309586f77425227d1676",        {"BrokenLCD",        9293}},
{"5bc9c049d4351e44f824d360",        {"Book",        38711}},
{"5bc9b720d4351e450201234b",        {"1GPhone",        27925}},
{"591382d986f774465a6413a7",        {"Dorm 105",        4536}},
{"590c595c86f7747884343ad7",        {"Filter",        12908}},
{"57347d3d245977448f7b7f61",        {"Croutons",        16726}},
{"59e361e886f774176c10a2a5",        {"H2O2",        9153}},
{"590de71386f774347051a052",        {"Teapot",        29200}},
{"5af04b6486f774195a3ebb49",        {"Elite",        11622}},
{"5c052e6986f7746b207bc3c9",        {"Defibrillator",        141883}},
{"59e35ef086f7741777737012",        {"Screws",        3396}},
{"5d1b39a386f774252339976f",        {"Tube",        11776}},
{"5bc9b355d4351e6d1509862a",        {"#FireKlean",        149093}},
{"5d02797c86f774203f38e30a",        {"Surv12",        28083}},
{"57513f9324597720a7128161",        {"Grand",        7069}},
{"590c346786f77423e50ed342",        {"Xeno",        19811}},
{"5c0e531286f7747fa54205c2",        {"SJ1 TGLabs",        22455}},
{"591ae8f986f77406f854be45",        {"Yotota",        7400}},
{"5d4041f086f7743cac3f22a7",        {"Ortodontox",        3510}},
{"57347da92459774491567cf5",        {"Tushonka",        8085}},
{"57347d9c245977448b40fa85",        {"Herring",        11225}},
{"57347b8b24597737dd42e192",        {"Matches",        5122}},
{"57347d7224597744596b4e72",        {"Tushonka",        7463}},
{"5c05308086f7746b2101e90b",        {"Virtex",        323616}},
{"5780cf692459777de4559321",        {"Dorm 315",        6776}},
{"5ca2113f86f7740b2547e1d2",        {"Vulkan-5",        32943}},
{"5d6fc78386f77449d825f9dc",        {"GPowder",        46196}},
{"5780d0652459777df90dcb74",        {"G. Office",        8340}},
{"573476d324597737da2adc13",        {"Malboro",        6268}},
{"590c5bbd86f774785762df04",        {"WD-40",        7342}},
{"5b43575a86f77424f443fe62",        {"FCond",        40840}},
{"573475fb24597737fb1379e1",        {"Apollon",        7620}},
{"5a0eedb386f77403506300be",        {"E322 San",        47443}},
{"59136e1e86f774432f15d133",        {"Dorm 110",        21800}},
{"57347c2e24597744902c94a1",        {"PSU",        37736}},
{"5d1b3a5d86f774252167ba22",        {"Meds",        6827}},
{"5bc9bc53d4351e00367fbcee",        {"Rooster",        56988}},
{"5aa7e3abe5b5b000171d064d",        {"ZSh-1-2M",        19919}},
{"5d03775b86f774203e7e0c4b",        {"AESA",        304540}},
{"5ad7242b86f7740a6a3abd43",        {"IDEA reg.",        49863}},
{"5ad5cfbd86f7742c825d6104",        {"OLI Log.",        395736}},
{"5c0fa877d174af02a012e1cf",        {"Aquamari",        14239}},
{"5a0ee72c86f77436955d3435",        {"E213 San",        39520}},
{"590a386e86f77429692b27ab",        {"HDD",        14299}},
{"590a3b0486f7743954552bdb",        {"PCB",        13116}},
{"590c5a7286f7747884343aea",        {"Kite",        9716}},
{"59e35de086f7741778269d84",        {"EDrill",        17888}},
{"590c5c9f86f77477c91c36e7",        {"WD-40",        15802}},
{"5d40412b86f7743cb332ac3a",        {"Shampoo",        11116}},
{"59148c8a86f774197930e983",        {"Dorm 204",        9281}},
{"5d03784a86f774203e7e0c4d",        {"MGT",        37590}},
{"5d1b36a186f7742523398433",        {"Fuel",        100764}},
{"590de7e986f7741b096e5f32",        {"Vase",        42688}},
{"5a0ee62286f774369454a7ac",        {"E209 San",        52180}},
{"575146b724597720a27126d5",        {"Milk",        16737}},
{"590c5d4b86f774784e1b9c45",        {"Iskra",        9761}},
{"5d1b304286f774253763a528",        {"LCD",        23760}},
{"5d1c819a86f774771b0acd6c",        {"WParts",        18939}},
{"5d0377ce86f774186372f689",        {"Iridium",        53754}},
{"59e3596386f774176c10a2a2",        {"PAID",        13727}},
{"5c052fb986f7746b2101e909",        {"RFIDR",        141551}},
{"590c639286f774151567fa95",        {"Manual",        8139}},
{"5d8e15b686f774445103b190",        {"HEPS",        76499}},
{"5d1b392c86f77425243e98fe",        {"Bulb",        5479}},
{"59136f6f86f774447a1ed173",        {"Car key",        5533}},
{"57347d90245977448f7b7f65",        {"Oatflakes",        12221}},
{"5a144dfd86f77445cb5a0982",        {"W203 San",        30166}},
{"5a0ec6d286f7742c0b518fb5",        {"W205 San",        64750}},
{"590a3c0a86f774385a33c450",        {"SPlug",        13349}},
{"590c2e1186f77425357b6124",        {"TSet",        34854}},
{"573476f124597737e04bf328",        {"Wilston",        5192}},
{"573478bc24597738002c6175",        {"Horse",        9297}},
{"5c0e534186f7747fa1419867",        {"eTG-c",        32958}},
{"5938994586f774523a425196",        {"Dorm 103",        4039}},
{"59e3556c86f7741776641ac2",        {"Bleach",        10613}},
{"5914578086f774123569ffa4",        {"Dorm 108",        4404}},
{"5bc9c29cd4351e003562b8a3",        {"Sprats",        7291}},
{"5673de654bdc2d180f8b456d",        {"Saury",        5361}},
{"5672c92d4bdc2d180f8b4567",        {"Dorm 118",        4154}},
{"5af0548586f7743a532b7e99",        {"Ibuprofen",        32941}},
{"5780cf9e2459777df90dcb73",        {"Dorm 218",        5047}},
{"5780cda02459777b272ede61",        {"Dorm 306",        3913}},
{"5780d07a2459777de4559324",        {"Cabin key",        5486}},
{"5672cb724bdc2dc2088b456b",        {"GMcount",        10406}},
{"5c05300686f7746dce784e5d",        {"VPX",        155575}},
{"5913877a86f774432f15d444",        {"GStorage",        17520}},
{"59e366c186f7741778269d85",        {"PGlass",        6129}},
{"5a145ebb86f77458f1796f05",        {"E316 San",        22555}},
{"5d0375ff86f774186372f685",        {"MCable",        30017}},
{"5a0f0f5886f7741c4e32a472",        {"Safe",        66877}},
{"5c06779c86f77426e00dd782",        {"Wires",        9978}},
{"5a0f075686f7745bcc42ee12",        {"Safe",        18623}},
{"59e3606886f77417674759a5",        {"NaCl",        26592}},
{"5d0379a886f77420407aa271",        {"OFZ",        62142}},
{"5a0f045e86f7745b0f0d0e42",        {"Safe",        32986}},
{"5a0eb6ac86f7743124037a28",        {"Cottage",        444853}},
{"5780cf722459777a5108b9a1",        {"Dorm 308",        2574}},
{"5d6fc87386f77449db3db94e",        {"GPowder",        35166}},
{"5a0f068686f7745b0d4ea242",        {"Safe",        67367}},
{"5a0eb38b86f774153b320eb0",        {"SMW",        11114}},
{"5c13cef886f774072e618e82",        {"TP",        5193}},
{"5734781f24597737e04bf32a",        {"DVD",        11321}},
{"5a0eff2986f7741fd654e684",        {"W321 San safe",        26104}},
{"5a16b7e1fcdbcb00165aa6c9",        {"FAST",        147375}},
{"5d1b2fa286f77425227d1674",        {"EMotor",        38560}},
{"5a0ec70e86f7742c0b518fba",        {"W207 San",        50875}},
{"5d1b385e86f774252167b98a",        {"Filter",        30925}},
{"59e35abd86f7741778269d82",        {"Sodium",        27823}},
{"5d235b4d86f7742e017bc88a",        {"GP",        25493}},
{"56742c284bdc2d98058b456d",        {"Crickent",        4172}},
{"5c0e530286f7747fa1419862",        {"Propital",        13321}},
{"5d1b3f2d86f774253763b735",        {"Syringe",        12460}},
{"5d0376a486f7747d8050965c",        {"MCB",        82722}},
{"5d1b31ce86f7742523398394",        {"RPliers",        2783}},
{"5d0378d486f77420421a5ff4",        {"PFilter",        69963}},
{"5d1b327086f7742525194449",        {"PGauge",        48370}},
{"5d1b32c186f774252167a530",        {"Therm.",        28518}},
{"5c0517910db83400232ffee5",        {"PS320 1/6x",        41737}},
{"571a28e524597720b4066567",        {"TT supp.",        9184}},
{"57838c962459774a1651ec63",        {"VSS suppressor",        21474}},
{"5a34fe59c4a282000b1521a2",        {"SDN-6",        38097}},
{"5b363dd25acfc4001a598fd2",        {"Salvo 12",        46928}},
{"5c4eecc32e221602b412b440",        {"SV98 supp.",        35199}},
{"5c6165902e22160010261b28",        {"SRD 9",        35721}},
{"5c7e8fab2e22165df16b889b",        {"Illusion 9",        18262}},
{"5caf187cae92157c28402e43",        {"ASh-12",        20390}},
{"5cebec00d7f00c065c53522a",        {"Attentuator",        35024}},
{"5cff9e84d7ad1a049e54ed55",        {"WAVE QD",        41697}},
{"5d3ef698a4b9361182109872",        {"SFN-57",        21451}},
{"5de8f2d5b74cd90030650c72",        {"MP9",        36543}},
{"5dfa3d2b0dee1b22f862eade",        {"PRS QDC",        108444}},
{"5e01ea19e9dc277128008c0b",        {"R43 7.62x54R",        33420}},
{"564caa3d4bdc2d17108b458e",        {"TGP-A",        29947}},
{"5a9fbb84a2750c00137fa685",        {"R43 5.56",        52491}},
{"57da93632459771cb65bf83f",        {"NT-4 blk.",        28030}},
{"57f3c8cc2459773ec4480328",        {"PP9101 supp.",        10183}},
{"5a33a8ebc4a282000c5a950d",        {"Alpha 9",        19821}},
{"593d493f86f7745e6b2ceb22",        {"AK-74 Hexagon",        25238}},
{"5ba26ae8d4351e00367f9bdb",        {"Rotex 2",        47069}},
{"57ffb0e42459777d047111c5",        {"PBS-4",        18986}},
{"5a9fbacda2750c00141e080f",        {"R43 7.62x39",        35634}},
{"5a0d63621526d8dba31fe3bf",        {"PBS-1",        36349}},
{"56e05b06d2720bb2668b4586",        {"PB supp.",        7768}},
{"5d2dc3e548f035404a1a4798",        {"Compact 2x32",        30697}},
{"59db7e1086f77448be30ddf3",        {"TA11D",        21357}},
{"57adff4f24597737f373b6e6",        {"BRAVO4",        43785}},
{"5c1cdd512e22161b267d91ae",        {"Prism 2.5x",        21048}},
{"544a3a774bdc2d3a388b4567",        {"HAMR",        33058}},
{"57aca93d2459771f2c7e26db",        {"SpecterDR",        34494}},
{"57c5ac0824597754771e88a9",        {"3-24x42 FFP",        24538}},
{"5a37cb10c4a282329a73b4e7",        {"6.5-20x50",        33824}},
{"5b3f7c1c5acfc40dc5296b1d",        {"PU 3.5x",        10488}},
{"5b2388675acfc4771e1be0be",        {"TAC30",        31921}},
{"5c82343a2e221644f31c0611",        {"PSO-1M2",        13794}},
{"5cf638cbd7f00c06595bc936",        {"USP-1",        8398}},
{"5d0a3a58d7ad1a669c15ca14",        {"1P59",        12193}},
{"5dfe6104585a0c3e995c7b82",        {"ADO P4",        28481}},
{"5dff772da3651922b360bf91",        {"Pilad 4x32",        13542}},
{"57235b6f24597759bf5a30f1",        {"PVS-14",        50840}},
{"5c066e3a0db834001b7353f0",        {"N-15",        40839}},
{"5c0696830db834001d23f5da",        {"PNV-10T",        30611}},
{"5b3b6e495acfc4330140bd88",        {"Vulcan MG 3.5x",        26561}},
{"5c052a900db834001a66acbd",        {"TA01NSN",        20889}},
{"5cebec38d7f00c00110a652a",        {"P90 Ring",        11282}},
{"584924ec24597768f12ae244",        {"XPS3-2",        22267}},
{"59f9d81586f7744c7506ee62",        {"UH-1",        29240}},
{"558022b54bdc2dac148b458d",        {"EXPS3",        51370}},
{"5a9fb739a2750c003215717f",        {"R43 9x19",        13704}},
{"5b30b0dc5acfc400153b7124",        {"HS401G5",        8322}},
{"58491f3324597764bc48fa02",        {"XPS3-0",        27910}},
{"5a27b6bec4a282000e496f78",        {"SR-1MP",        17121}},
{"584984812459776a704a82a6",        {"P1x42",        8993}},
{"570fd6c2d2720bc6458b457f",        {"EOT 553",        19828}},
{"591c4efa86f7741030027726",        {"EKP-8-18",        14542}},
{"5c7d55de2e221644f31bff68",        {"COMP M4",        16051}},
{"5d2da1e948f035477b1ce2ba",        {"SRS-02",        16822}},
{"5ab8ee7786f7742d8f33f0b9",        {"VKBO bag",        11094}},
{"5ab8f04f86f774585f4237d8",        {"Sling",        3433}},
{"5aa2ba19e5b5b00014028f4e",        {"Fleece",        5055}},
{"5c82342f2e221644f31c060e",        {"PSO-1",        14968}},
{"5ab8f20c86f7745cdb629fb2",        {"Shmaska",        8369}},
{"5a43957686f7742a2c2f11b0",        {"Hat",        500}},
{"5c0d2727d174af02a012cf58",        {"PSh-97",        18418}},
{"5b4329075acfc400153b78ff",        {"Pompon",        7364}},
{"5b4327aa5acfc400175496e0",        {"Panama",        1673}},
{"5bd073c986f7747f627e796c",        {"Kotton",        14319}},
{"5aa2b9ede5b5b000137b758b",        {"Cowboy",        11488}},
{"5aa2b89be5b5b0001569311f",        {"EMERCOM",        3772}},
{"5a43943586f77416ad2f06e2",        {"Hat",        500}},
{"572b7fa124597762b472f9d2",        {"Beanie",        1666}},
{"5d96141523f0ea1b7f2aacab",        {"Door Kicker",        9444}},
{"5bd06f5d86f77427101ad47c",        {"Mask",        15025}},
{"5b4325355acfc40019478126",        {"Shemagh",        4869}},
{"5b432f3d5acfc4704b4a1dfb",        {"Momex",        4620}},
{"59e770f986f7742cbe3164ef",        {"Army",        2551}},
{"5bd0716d86f774171822ef4b",        {"Mask",        6542}},
{"5bd071d786f7747e707b93a3",        {"Mask",        9085}},
{"5b432c305acfc40019478128",        {"GP-5",        25220}},
{"5ab8f4ff86f77431c60d91ba",        {"Ghost",        9106}},
{"5c1a1e3f2e221602b66cc4c2",        {"Beard",        7500}},
{"5ab8f39486f7745cd93a1cca",        {"CF",        5656}},
{"572b7f1624597762ae139822",        {"Balaclava",        3232}},
{"5c0e746986f7741453628fe5",        {"TV-110",        130094}},
{"544a5caa4bdc2d1a388b4568",        {"AVS",        121373}},
{"5ab8dced86f774646209ec87",        {"ANA M2",        69466}},
{"5c0e722886f7740458316a57",        {"ANA M1",        102149}},
{"5c0e446786f7742013381639",        {"6B5-15",        45588}},
{"5b44cad286f77402a54ae7e5",        {"TacTec",        194009}},
{"5ab8dab586f77441cd04f2a2",        {"MK3 TV-104",        27368}},
{"5b3b99475acfc432ff4dcbee",        {"1-6x24",        45730}},
{"5df8a42886f77412640e2e75",        {"MPPV",        48487}},
{"5b44c8ea86f7742d1627baf1",        {"Commando",        22636}},
{"5a32aa8bc4a2826c6e06d737",        {"RMR",        25772}},
{"5c0e6a1586f77404597b4965",        {"Belt combo",        34209}},
{"572b7adb24597762ae139821",        {"Scav Vest",        21264}},
{"5c165d832e2216398b5a7e36",        {"Tactical Sport",        22750}},
{"5b432b965acfc47a8774094e",        {"GSSh-01",        12823}},
{"5645bcc04bdc2d363b8b4572",        {"ComTac2",        27678}},
{"5aa2ba71e5b5b000137b758f",        {"Sordin",        27503}},
{"5a16b9fffcdbcb0176308b34",        {"RAC",        28358}},
{"5aa7e4a4e5b5b000137b76f2",        {"ZSh-1-2M",        38166}},
{"5a7c4850e899ef00150be885",        {"6B47",        36439}},
{"57c44dd02459772d2e0ae249",        {"VAL suppressor",        36749}},
{"5a7ad74e51dfba0015068f45",        {"G FD917",        24000}},
{"593d490386f7745ee97a1555",        {"Hexagon SKS",        36055}},
{"5aa2b8d7e5b5b00014028f4a",        {"Police",        3008}},
{"592c2d1a86f7746dbe2af32a",        {"Alpha",        36945}},
{"59e763f286f7742ee57895da",        {"Pilgrim",        40366}},
{"59e7708286f7742cbd762753",        {"Ushanka",        14806}},
{"572b7d8524597762b472f9d1",        {"Cap",        3775}},
{"5b44d22286f774172b0c9de8",        {"Kirasa-N",        46030}},
{"5d5d85c586f774279a21cbdb",        {"D3CRX",        27157}},
{"5c06c6a80db834001b735491",        {"SSh-68",        20762}},
{"5d5d8ca986f7742798716522",        {"MRig",        9814}},
{"57486e672459770abd687134",        {"OKP-7 Dove",        15553}},
{"5df8a58286f77412631087ed",        {"Tank helmet",        7828}},
{"57dbb57e2459774673234890",        {"NT-4 FDE",        29699}},
{"56ea70acd2720b844b8b4594",        {"FF 4-16",        31479}},
{"5ca20abf86f77418567a43f2",        {"Triton",        19426}},
{"5a9fbb74a2750c0032157181",        {"R43 .366TKM",        19364}},
{"5c0e9f2c86f77432297fe0a3",        {"Commando",        24030}},
{"59ef13ca86f77445fd0e2483",        {"Pumpkin",        10000}},
{"5c17a7ed2e2216152142459c",        {"AirFrame Tan",        80339}},
{"5bd073a586f7747e6f135799",        {"Mustache",        13135}},
{"59fb257e86f7742981561852",        {"DTK-4M",        27947}},
{"5ca21c6986f77479963115a7",        {"Redut-T5",        188296}},
{"5ac8d6885acfc400180ae7b0",        {"FAST MT Tan",        74354}},
{"55d614004bdc2d86028b4568",        {"556-MONSTER",        26597}},
{"5a32a064c4a28200741e22de",        {"Osprey 9",        22190}},
{"545cdb794bdc2d3a198b456a",        {"6B43 6A",        313305}},
{"5abcc328d8ce8700194394f3",        {"APB supp.",        5611}},
{"5e00c1ad86f774747333222c",        {"EXFIL Black",        144111}},
{"5b86a0e586f7745b600ccb23",        {"Bramit",        32952}},
{"58aeac1b86f77457c419f475",        {"MPX-SD",        12033}},
{"58d268fc86f774111273f8c2",        {"DP",        20419}},
{"5947db3f86f77447880cf76f",        {"EKP-8-02",        9997}},
{"5c0e3eb886f7742015526062",        {"6B5-16",        64975}},
{"5c0e874186f7745dc7616606",        {"Maska-1Shch (Killa)",        80079}},
{"5d5d87f786f77427997cfaef",        {"A18",        109500}},
{"59bfc5c886f7743bf6794e62",        {"Vityaz-SN supp.",        11666}},
{"5929a2a086f7744f4b234d43",        {"6sh112",        14766}},
{"5b432b2f5acfc4771e1c6622",        {"Shattered",        18991}},
{"5b40e3f35acfc40016388218",        {"ACHHC",        39093}},
{"572b7fa524597762b747ce82",        {"Half-mask",        7611}},
{"55d6190f4bdc2d87028b4567",        {"556-MINI",        88594}},
{"5926d33d86f77410de68ebc0",        {"MP5SD supp.",        71701}},
{"5b40e1525acfc4771e1c6611",        {"ULACH",        62213}},
{"57ae0171245977343c27bfcf",        {"PK-06",        10708}},
{"5aa66be6e5b5b0214e506e97",        {"ATACR 7-35x56",        62437}},
{"5a7c74b3e899ef0014332c29",        {"NSPU-M",        14518}},
{"5d5d646386f7742797261fd9",        {"6B3TM-01M",        49790}},
{"5b432b6c5acfc4001a599bf0",        {"DSkull",        5037}},
{"5d44064fa4b9361e4f6eb8b5",        {"Ultra 5",        37142}},
{"5a16bb52fcdbcb001a3b00dc",        {"SLock",        13237}},
{"5c0e53c886f7747fa54205c7",        {"6B13 DFL",        59090}},
{"58d399e486f77442e0016fe7",        {"T-1",        18811}},
{"5c7955c22e221644f31bfd5e",        {"ONE",        29251}},
{"593d489686f7745c6255d58a",        {"AKM Hexagon",        35070}},
{"570fd721d2720bc5458b4596",        {"MRS",        13459}},
{"59e7715586f7742ee5789605",        {"Respirator",        7630}},
{"5c0e625a86f7742d77340f62",        {"Zhuk-6a",        183541}},
{"5df8a4d786f77412672a1e3b",        {"6Sh118",        189965}},
{"56e33680d2720be2748b4576",        {"T-Bag",        4048}},
{"5c0505e00db834001b735073",        {"PK-120",        10976}},
{"5ab8e79e86f7742d8b372e78",        {"GZHEL-K",        122889}},
{"5d6d3716a4b9361bc8618872",        {"LShZ-2DTM",        65764}},
{"59e7711e86f7746cae05fbe1",        {"Kolpak",        7888}},
{"5aa7e454e5b5b0214e506fa2",        {"ZSh-1-2M",        58089}},
{"5b4329f05acfc47a86086aa1",        {"Ronin",        100504}},
{"5b44d0de86f774503d30cba8",        {"Gen4 HMK",        109756}},
{"5d5d940f86f7742797262046",        {"Mechanism",        86666}},
{"5d1b5e94d7ad1a2b865a96b0",        {"FLIR RS-32",        426110}},
{"59e7643b86f7742cbf2c109a",        {"TV-106 + TV-109",        10263}},
{"5e01ef6886f77445f643baa4",        {"EXFIL Tan",        82109}},
{"5aa7d193e5b5b000171d063f",        {"Sfera-S",        45726}},
{"56e335e4d2720b6c058b456d",        {"ScavBP",        17711}},
{"5d5e9c74a4b9364855191c40",        {"TC-2002",        32319}},
{"5aa7e276e5b5b000171d0647",        {"Altyn",        103107}},
{"576fd4ec2459777f0b518431",        {"PSO 1M2-1",        11263}},
{"5b4326435acfc433000ed01d",        {"Mask",        5912}},
{"5d0a3e8cd7ad1a6f6a3d35bd",        {"1P69",        13568}},
{"5b3116595acfc40019476364",        {"ROMEO4",        11346}},
{"59bffbb386f77435b379b9c2",        {"Hybrid 46",        40185}},
{"5648a7494bdc2d9d488b4583",        {"PACA",        38429}},
{"59c0ec5b86f77435b128bfca",        {"Hexagon 12K",        25262}},
{"544a5cde4bdc2d39388b456b",        {"MBSS",        11518}},
{"545cdae64bdc2d39198b4568",        {"Tri-Zip",        53689}},
{"59e7635f86f7742cbf2c1095",        {"3M",        18833}},
{"5ab8e4ed86f7742d8e50c7fa",        {"MF-UN",        44690}},
{"5c0a2cec0db834001b7ce47d",        {"HHS-1 Tan",        38839}},
{"5648a69d4bdc2ded0b8b457b",        {"BlackRock",        34340}},
{"5c0e5edb86f77461f55ed1f7",        {"Zhuk-3",        36987}},
{"5c0e774286f77468413cc5b2",        {"Blackjack 50",        105236}},
{"5c0e5bab86f77461f55ed1f3",        {"6B23-1",        46776}},
{"5c0e655586f774045612eeb2",        {"Trooper",        87279}},
{"5c0e51be86f774598e797894",        {"6B13 FL",        70862}},
{"5c0e57ba86f7747fa141986d",        {"6B23-2 (MF)",        69427}},
{"5ca2151486f774244a3b8d30",        {"Redut-M",        97588}},
{"5c0e541586f7747fa54205c9",        {"6B13M Tan",        191175}},
{"5b44cf1486f77431723e3d05",        {"Gen4 Assault",        124746}},
{"5ab8ebf186f7742d8b372e80",        {"Attack 2",        73723}},
{"5b44cd8b86f774503d30cba2",        {"Gen4 Full",        122820}},
{"5c0e805e86f774683f3dd637",        {"Paratus",        70107}},
{"5b44c6ae86f7742d1627baea",        {"Beta2",        45740}},
{"56e33634d2720bd8058b456b",        {"Duffle",        12876}},
{"5ca20d5986f774331e7c9602",        {"Berkut",        21774}},
{"5aa7cfc0e5b5b00015693143",        {"6B47 DFL",        29247}},
{"5c066ef40db834001966a595",        {"NVG strap",        36361}},
{"5aa7d03ae5b5b00016327db5",        {"UNTAR",        23924}},
{"5b40e4035acfc47a87740943",        {"ACHHC",        45379}},
{"5645bc214bdc2d363b8b4571",        {"Kiver-M",        18921}},
{"5b432d215acfc4771e1c6624",        {"LZSh",        30319}},
{"5d5e7d28a4b936645d161203",        {"TC-2001",        31441}},
{"577d141e24597739c5255e01",        {"FF3",        18336}},
{"5c08f87c0db8340019124324",        {"ShPM",        9715}},
{"5ca20ee186f774799474abc2",        {"Vulkan-5",        164030}},
{"5d63d33b86f7746ea9275524",        {"F scdr.",        6754}},
{"5ab8f85d86f7745cd93a1cf5",        {"Shemagh",        21091}},
{"57ac965c24597706be5f975c",        {"SpecterDR",        37962}},
{"5a154d5cfcdbcb001a3b00da",        {"FAST MT",        84015}},
{"5b40e2bc5acfc40016388216",        {"ULACH",        52596}},
{"5c05293e0db83400232fff80",        {"TA01NSN",        22968}},
{"570fd79bd2720bc7458b4583",        {"OKP-7",        8809}},
{"5df8a2ca86f7740bfe6df777",        {"6B2",        19548}},
{"5c07dd120db834001c39092d",        {"HHS-1",        32940}},
{"59fb042886f7746c5005a7b2",        {"ICase",        1229994}},
{"5c091a4e0db834001d5addc8",        {"Maska-1Shch",        78053}},
{"5af0454c86f7746bf20992e8",        {"Alu splint",        11171}},
{"5ac66cb05acfc40198510a10",        {"AK-101",        35677}},
{"5ac66d015acfc400180ae6e4",        {"AK-102",        78445}},
{"5ac66d2e5acfc43b321d4b53",        {"AK-103",        36504}},
{"5ac66d725acfc43b321d4b60",        {"AK-104",        26037}},
{"5ac66d9b5acfc4001633997a",        {"AK-105",        21793}},
{"5bf3e03b0db834001d2c4a9c",        {"AK-74",        15881}},
{"5ac4cd105acfc40016339859",        {"AK-74M",        14547}},
{"5644bd2b4bdc2d3b4c8b4572",        {"AK-74N",        28593}},
{"59d6088586f774275f37482f",        {"AKM",        40963}},
{"5a0ec13bfcdbcb00165aa685",        {"AKMN",        58373}},
{"59ff346386f77477562ff5e2",        {"AKMS",        27465}},
{"5abcbc27d8ce8700182eceeb",        {"AKMSN",        33822}},
{"5bf3e0490db83400196199af",        {"AKS-74",        14641}},
{"5ab8e9fcd8ce870019439434",        {"AKS-74N",        34495}},
{"57c44b372459772d2b39b8ce",        {"AS VAL",        65140}},
{"5cadfbf7ae92152ac412eeef",        {"ASh-12",        55219}},
{"5447a9cd4bdc2dbd208b4567",        {"M4A1",        0}},
{"5b0bbe4e5acfc40dc528a72d",        {"SA-58",        0}},
{"5c488a752e221602b412af63",        {"MDR",        47041}},
{"5bb2475ed4351e00853264e3",        {"HK 416A5",        45168}},
{"57dc2fa62459775949412633",        {"AKS-74U",        22054}},
{"5839a40f24597726f856b511",        {"AKS-74UB",        26049}},
{"583990e32459771419544dd2",        {"AKS-74UN",        28519}},
{"5dcbd56fdbd3d91b3e5468d5",        {"MDR",        0}},
{"5c07c60e0db834002330051f",        {"ADAR 2-15",        9833}},
{"5d43021ca4b9362eab4b5e25",        {"TX-15 DML",        30628}},
{"574d967124597745970e7c94",        {"SKS",        11602}},
{"587e02ff24597743df3deaeb",        {"OP-SKS",        19390}},
{"59e6687d86f77411d949b251",        {"VPO-209",        25849}},
{"5c501a4d2e221602b412b540",        {"Vepr Hunter",        22542}},
{"59e6152586f77473dc057aa1",        {"VPO-136",        11034}},
{"588892092459774ac91d4b11",        {"DVL-10",        132852}},
{"5bfd297f0db834001a669119",        {"Mosin Infantry",        40004}},
{"5ae08f0a5acfc408fb1398a1",        {"Mosin",        45725}},
{"5df24cf80dee1b22f862e9bc",        {"T-5000M",        53757}},
{"5bfea6e90db834001b7347f3",        {"M700",        31375}},
{"55801eed4bdc2d89578b4588",        {"SV-98",        37458}},
{"5de652c31b7e3716273428be",        {"VPO-215",        17294}},
{"5beed0f50db834001c062b12",        {"RPK-16",        41522}},
{"5df8ce05b11454561e39243b",        {"SR-25",        61137}},
{"5a367e5dc4a282000e49738f",        {"RSASS",        461838}},
{"57838ad32459774a17445cd2",        {"VSS Vintorez",        37847}},
{"5aafa857e5b5b00018480968",        {"M1A",        59596}},
{"5c46fbd72e2216398b5a8c9c",        {"SVDS",        79486}},
{"5bffdc370db834001d23eca8",        {"6Kh5",        19272}},
{"5bc9c1e2d4351e00367fbcf0",        {"Axe",        63876}},
{"57e26fc7245977162a14b800",        {"A-2607",        3747}},
{"57e26ea924597715ca604a09",        {"A-2607",        3179}},
{"5c012ffc0db834001d23f03f",        {"Camper",        56738}},
{"5bffe7930db834001b734a39",        {"SCA",        450000}},
{"54491bb74bdc2d09088b4567",        {"ER BAYONET",        10895}},
{"5c07df7f0db834001b73588a",        {"Crowbar",        10693}},
{"57cd379a24597778e7682ecf",        {"KATT",        16800}},
{"5bffdd7e0db834001b734a1a",        {"M-2",        1570000}},
{"5bead2e00db834001c062938",        {"MPL-50",        3560}},
{"5c010e350db83400232feec7",        {"SP-8",        53277}},
{"59f98b4986f7746f546d2cef",        {"SR-1MP",        17151}},
{"5cadc190ae921500103bb3b6",        {"M9A3",        12016}},
{"5d3eb3b0a4b93615055e84d2",        {"FN 5-7",        29141}},
{"5a7ae0c351dfba0017554310",        {"Glock 17",        13810}},
{"5b1fa9b25acfc40018633c01",        {"Glock 18C",        16379}},
{"56d59856d2720bd8418b456a",        {"P226R",        9346}},
{"56e0598dd2720bb5668b45a6",        {"PB",        14035}},
{"5448bd6b4bdc2dfc2f8b4569",        {"PM",        6061}},
{"579204f224597773d619e051",        {"PM (t)",        8906}},
{"5abccb7dd8ce87001773e277",        {"APB",        17226}},
{"5a17f98cfcdbcb0980087290",        {"APS",        11600}},
{"5b3b713c5acfc4330140bd8d",        {"TT Gold",        26508}},
{"576a581d2459771e7b1bc4f1",        {"MP-443 \"Grach\"",        9844}},
{"571a12c42459771f627b58a0",        {"TT",        8431}},
{"5d67abc1a4b93614ec50137f",        {"FN 5-7 FDE",        28666}},
{"54491c4f4bdc2db1078b4568",        {"MP-133",        14449}},
{"56dee2bdd2720bc8328b4567",        {"MP-153",        25363}},
{"5a7828548dc32e5a9c28b516",        {"M870 12ga",        25035}},
{"576165642459773c7a400233",        {"Saiga 12ga v.10",        16697}},
{"5a38e6bac4a2826c6e06d79b",        {"TOZ-106",        10761}},
{"5e00903ae9dc277128008b87",        {"MP9",        20509}},
{"5cc82d76e24e8d00134b4b83",        {"P90",        57074}},
{"5926bb2186f7744b1c6c6e60",        {"MP5",        25112}},
{"5d2f0d8048f0356c925bc3b0",        {"MP5K-N",        14544}},
{"5ba26383d4351e00334c93d9",        {"MP7A1",        38625}},
{"5bd70322209c4d00d7167b8f",        {"MP7A2",        39045}},
{"57f4c844245977379d5c14d1",        {"PP-9 Klin",        13184}},
{"57d14d2524597714373db789",        {"PP-91 Kedr",        11346}},
{"57f3c6bd24597738e730fa2f",        {"PP-91-01 Kedr-B",        24235}},
{"59f9cabd86f7743a10721f46",        {"Saiga-9",        9328}},
{"58948c8e86f77409493f7266",        {"MPX",        41930}},
{"59984ab886f7743e98271174",        {"PP-19-01",        20179}},
{"5de7bd7bfd6b4e6e2276dc25",        {"MP9-N",        17869}},
{"5710c24ad2720bc3458b45a3",        {"F-1",        8566}},
{"58d3db5386f77426186285a0",        {"M67",        22034}},
{"5a2a57cfc4a2826c6e06d44a",        {"RDG-2B",        5828}},
{"5448be9a4bdc2dfd2f8b456a",        {"RGD-5",        9386}},
{"5a0c27731526d80618476ac4",        {"Zarya",        7839}},
{"59e690b686f7746c9f75e848",        {"M995",        1082}},
{"5c0d688c86f77413ae3407b2",        {"BP gs",        688}},
{"5ba26835d4351e0035628ff5",        {"AP SX",        865}},
{"5c0d5e4486f77478390952fe",        {"PPBS gs",        833}},
{"56dff026d2720bb8668b4567",        {"BS gs",        901}},
{"59e0d99486f7744a32234762",        {"BP gzh",        1201}},
{"5a6086ea4f39f99cd479502f",        {"M61",        2014}},
{"5c0d668f86f7747ccb7f13b2",        {"SPP gs",        522}},
{"5e023d48186a883be655e551",        {"BS",        1024}},
{"5c0d56a986f774449d5de529",        {"RIP",        410}},
{"5c925fa22e221601da359b7b",        {"AP 6.3",        859}},
{"59e6906286f7746c9f75e847",        {"M856A1",        683}},
{"57a0e5022459774d1673f889",        {"SP6",        344}},
{"5a608bf24f39f98ffc77720e",        {"M62",        893}},
{"54527ac44bdc2d36668b4567",        {"M855A1",        1079}},
{"59e77a2386f7742ee578960a",        {"PS",        820}},
{"56dff061d2720bb5668b4567",        {"BT gs",        686}},
{"5c0d5ae286f7741e46554302",        {"Warmageddon",        79}},
{"5e023d34e8a400319a28ed44",        {"BT",        867}},
{"5cc80f67e4a949035e43bbba",        {"SB193",        1067}},
{"5c0d591486f7744c505b416f",        {"RIP",        158}},
{"5cadf6eeae921500134b2799",        {"PS12B",        863}},
{"56dfef82d2720bbd668b4567",        {"BP gs",        471}},
{"5a3c16fe86f77452b62de32a",        {"Luger CCI",        274}},
{"5cc80f79e4a949033c7343b2",        {"SS198LF",        278}},
{"5ba26844d4351e00334c9475",        {"Subsonic SX",        525}},
{"5ba2678ad4351e44f824b344",        {"FMJ SX",        670}},
{"560d61e84bdc2da74d8b4571",        {"SNB",        766}},
{"5e023e88277cce2b522ff2b1",        {"Ultra Nosler",        267}},
{"5cc80f53e4a949000e1ea4f8",        {"L191",        756}},
{"5a26ac0ec4a28200741e1e18",        {"BT gzh",        865}},
{"5cc86832d7f00c000d3a6e6c",        {"R37.F",        110}},
{"54527a984bdc2d4e668b4567",        {"M855",        259}},
{"5cc80f38e4a949001152b560",        {"SS190",        1213}},
{"5a26ac06c4a282000c5a90a8",        {"PE gzh",        257}},
{"5cc80f8fe4a949033b0224a2",        {"SS197SR",        309}},
{"58dd3ad986f77403051cba8f",        {"M80",        606}},
{"5cadf6ddae9215051e1c23b2",        {"PS12",        449}},
{"5cc86840d7f00c002412c56c",        {"R37.X",        211}},
{"5e023cf8186a883be655e54f",        {"T-46M",        411}},
{"59e6918f86f7746c9f75e849",        {"RRLP",        57}},
{"59e4d24686f7741776641ac7",        {"US gzh",        350}},
{"57372140245977611f70ee91",        {"SP7 gzh",        308}},
{"56dff2ced2720bb4668b4567",        {"PP gs",        144}},
{"5a26abfac4a28232980eabff",        {"P gzh",        169}},
{"57371aab2459775a77142f22",        {"PstM gzh",        6053}},
{"59e68f6f86f7746c9f75e846",        {"M856",        130}},
{"57a0dfb82459774d3078b56c",        {"SP5",        190}},
{"5a269f97c4a282000b151807",        {"PS gzh",        573}},
{"5887431f2459777e1612938f",        {"LPS",        419}},
{"5d6e68a8a4b9360b6c0d54e2",        {"AP-20",        1323}},
{"5ba26812d4351e003201fef1",        {"Action SX",        102}},
{"5e023e53d4353e3302577c4c",        {"FMJ",        124}},
{"59e6920f86f77411d82aa167",        {"FMJ",        75}},
{"5e023e6e34d52a55c3304f71",        {"SP",        112}},
{"5656d7c34bdc2d9d198b4587",        {"PS gzh",        92}},
{"56dff421d2720b5f5a8b4567",        {"SP",        45}},
{"5cadf6e5ae921500113bb973",        {"PS12A",        176}},
{"573719df2459775a626ccbc2",        {"PBM gzh",        370}},
{"59e6927d86f77411da468256",        {"HP",        47}},
{"59e4d3d286f774176a36250a",        {"HP",        651}},
{"56dff3afd2720bba668b4567",        {"PS gs",        78}},
{"5737207f24597760ff7b25f2",        {"PSV",        85}},
{"573720e02459776143012541",        {"RG028 gzh",        111}},
{"573602322459776445391df1",        {"LRNPC",        68}},
{"573603562459776430731618",        {"Pst gzh",        70}},
{"5737218f245977612125ba51",        {"SP8 gzh",        166}},
{"5d6e68b3a4b9361bca7e50b5",        {"CSP",        497}},
{"5d6e6a5fa4b93614ec501745",        {"Devastator",        285}},
{"573603c924597764442bd9cb",        {"PT gzh",        63}},
{"59e6658b86f77411d949b250",        {"Geksa",        235}},
{"5c3df7d588a4501f290594e5",        {"T gzh",        44}},
{"573718ba2459775a75491131",        {"BZhT gzh",        266}},
{"56d59d3ad2720bdb418b4577",        {"Pst gzh",        71}},
{"5d6e68d1a4b93622fe60e845",        {"SFormance",        362}},
{"5736026a245977644601dc61",        {"P gl",        85}},
{"59e4cf5286f7741778269d8a",        {"T-45M1",        72}},
{"5d6e68c4a4b9361b93413f79",        {"0.5",        989}},
{"59e655cb86f77411dc52a77b",        {"Eko",        85}},
{"56dff4ecd2720b5f5a8b4568",        {"US gs",        56}},
{"573601b42459776410737435",        {"LRN",        71}},
{"57371b192459775a9f58a5e0",        {"PPe gzh",        7329}},
{"57371f8d24597761006c6a81",        {"PSO gzh",        37}},
{"5735ff5c245977640e39ba7e",        {"FMJ43",        68}},
{"56dff0bed2720bb0668b4567",        {"FMJ",        43}},
{"5735fdcd2459776445391d61",        {"AKBS",        49}},
{"58864a4f2459770fcc257101",        {"PSO gzh",        51}},
{"5737201124597760fc4431f1",        {"Pst gzh",        105}},
{"57371e4124597760ff7b25f1",        {"PPT gzh",        455}},
{"5d6e6a05a4b93618084f58d0",        {"Slug",        186}},
{"56dff216d2720bbd668b4568",        {"HP",        78}},
{"5d6e68e6a4b9361c140bcfe0",        {"FTX",        364}},
{"57371eb62459776125652ac1",        {"PRS gs",        39}},
{"5d6e6911a4b9361bd5780d52",        {"Flechette",        444}},
{"5d6e6806a4b936088465b17e",        {"Magnum",        126}},
{"56dff4a2d2720bbd668b456a",        {"T gs",        35}},
{"59e6542b86f77411dc52a77a",        {"FMJ",        70}},
{"5d6e689ca4b9361bc8618956",        {"Poleva-6u",        419}},
{"57371f2b24597761224311f1",        {"PS gs PPO",        46}},
{"5d6e68dea4b9361bcc29e659",        {"DualSabot",        217}},
{"5d6e6869a4b9361c140bcfde",        {"Grizzly",        88}},
{"5d6e6a42a4b9364f07165f52",        {"Poleva-6u",        130}},
{"5d6e6a53a4b9361bd473feec",        {"Poleva-3",        53}},
{"56dff338d2720bbd668b4569",        {"PRS gs",        34}},
{"5d6e6891a4b9361bd473feea",        {"Poleva-3",        111}},
{"5d6e67fba4b9361bc73bc779",        {"Express",        73}},
{"5d6e69c7a4b9360b6c0d54e4",        {"7.3mm",        38}},
{"5d6e6772a4b936088465b17c",        {"5.25mm",        35}},
{"58820d1224597753c90aeb13",        {"Slug",        41}},
{"5d6e69b9a4b9361bc8618958",        {"6.2mm",        312}},
{"560d5e524bdc2d25448b4571",        {"7mm",        29}},
{"5d6e695fa4b936359b35d852",        {"5.6mm",        25}},
{"573719762459775a626ccbc1",        {"P gzh",        21}},
{"5a38ebd9c4a282000d722a5b",        {"7.5mm",        26}},
{"5cfe8010d7ad1a59283b14c6",        {"X-47 762",        30132}},
{"5bae13ded4351e44f824bf38",        {"AA762R 02",        16361}},
{"59c1383d86f774290a37e0ca",        {"PMAG D60",        43765}},
{"5a9e81fba2750c00164f6b11",        {"SR3M.130",        44364}},
{"5c6592372e221600133e47d7",        {"MAG5-100",        20889}},
{"5a351711c4a282000b1521a4",        {"X-5 MP5",        23741}},
{"544a37c44bdc2d25388b4567",        {"MAG5-60",        57879}},
{"5c5db6742e2216000f1b2852",        {"MPX drum",        24012}},
{"5c5970672e221602b21d7855",        {"SKS AALVX",        11629}},
{"5caf1109ae9215753c44119f",        {"ASh-12",        22154}},
{"55d482194bdc2d1d4e8b456b",        {"6L31",        21644}},
{"55d485be4bdc2d962f8b456f",        {"PM drum",        20818}},
{"5d3eb5eca4b9363b1f22f8e4",        {"5-7",        10043}},
{"5addccf45acfc400185c2989",        {"X-14 762",        16682}},
{"5b7bef9c5acfc43d102852ec",        {"X-FAL 762",        14632}},
{"5cf8f3b0d7f00c00217872ef",        {"Powermag",        23951}},
{"5ba26586d4351e44f824b340",        {"MP7",        55310}},
{"5cc70093e4a949033c734312",        {"P90",        18941}},
{"5c88f24b2e22160bc12c69a6",        {"SVD",        18892}},
{"5df8f535bb49d91fb446d6b0",        {"KAC 762",        9550}},
{"5d25af8f8abbc3055079fec5",        {"AA-70",        15223}},
{"5c6175362e221600133e3b94",        {"AK-A-16",        45154}},
{"5de8e8dafd6b4e6e2276dc32",        {"MP9",        10875}},
{"5c503ad32e2216398b5aada2",        {"VPO101",        9403}},
{"5888988e24597752fe43a6fa",        {"DVL-10",        6295}},
{"5bed625c0db834001c062946",        {"RPK-16 drum",        18869}},
{"5de8ea8ffd6b4e6e2276dc35",        {"MP9",        14200}},
{"5ba264f6d4351e0034777d52",        {"MP7",        6785}},
{"5a7882dcc5856700177af662",        {"M870x4",        19099}},
{"5d2f213448f0355009199284",        {"MP5",        9996}},
{"5cf12a15d7f00c05464b293f",        {"AA-70",        15624}},
{"5addcce35acfc4001a5fc635",        {"M14",        18486}},
{"559ba5b34bdc2d1f1a8b4582",        {"SV-98 poly",        4677}},
{"5c920e902e221644f31c3c99",        {"P226",        11083}},
{"5cbdc23eae9215001136a407",        {"Molot drum",        18927}},
{"5c471c442e221602b542a6f8",        {"SVD",        5537}},
{"5c6d42cb2e2216000e69d7d1",        {"HK poly",        10177}},
{"5a718f958dc32e00094b97e7",        {"G SGMT",        11580}},
{"5caf1041ae92157c28402e3f",        {"ASh-12",        13569}},
{"5a3501acc4a282000d72293a",        {"PMAG 762",        22984}},
{"5d25a6a48abbc306c62e6310",        {"M700 AICS",        11377}},
{"5c0548ae0db834001966a3c2",        {"C-10 AK",        9605}},
{"57838f9f2459774a150289a0",        {"6L25",        16857}},
{"5de8eac42a78646d96665d91",        {"MP9",        25230}},
{"5ba2657ed4351e0035628ff2",        {"MP7",        38478}},
{"5a718b548dc32e000d46d262",        {"Glock 9x19",        1757}},
{"5448c1d04bdc2dff2f8b4569",        {"GEN M3",        3534}},
{"5d25a4a98abbc30b917421a4",        {"AICS",        5563}},
{"5ce69cbad7f00c00b61c5098",        {"PMAG .308 AC",        6853}},
{"5c5db6552e2216001026119d",        {"MPX",        3941}},
{"587df583245977373c4f1129",        {"SKS-A5",        7982}},
{"5bfea7ad0db834001c38f1ee",        {"Wyatt",        10422}},
{"5c5db6652e221600113fba51",        {"MPX pad",        16186}},
{"5d25a7b88abbc3054f3e60bc",        {"PMAG .308 AC",        12634}},
{"5d25a6538abbc306c62e630d",        {"AICS",        13092}},
{"5b7bef5d5acfc43bca7067a3",        {"SA58/FAL",        15163}},
{"5c6d46132e221601da357d56",        {"Battlemag",        13370}},
{"56deeefcd2720bc8328b4568",        {"МP153x8",        2122}},
{"5b7d37845acfc400170e2f87",        {"L1A1 762",        20044}},
{"56d59948d2720bb7418b4582",        {"P226",        10222}},
{"57838f0b2459774a256959b2",        {"6L24",        3897}},
{"5df25b6c0b92095fd441e4cf",        {"T-5000M",        50807}},
{"5aaa5dfee5b5b000140293d3",        {"GEN M3",        9593}},
{"5926c3b286f774640d189b6b",        {"MP5",        4987}},
{"5a718da68dc32e000d46d264",        {"GL9",        14725}},
{"5de8eaadbbaf010b10528a6d",        {"MP9",        16565}},
{"5cadc2e0ae9215051e1c21e7",        {"M9A3",        12323}},
{"5c0672ed0db834001b7353f3",        {"SG-919",        16974}},
{"5df8f541c41b2312ea3335e3",        {"KAC 762",        19997}},
{"5ae0973a5acfc4001562206c",        {"Mosin",        4468}},
{"59fafc5086f7740dbe19f6c3",        {"AK30",        19492}},
{"5a7ad2e851dfba0016153692",        {"Big Stick",        6073}},
{"544a378f4bdc2d30388b4567",        {"GEN M3",        10673}},
{"5c05413a0db834001c390617",        {"HK Steel",        9675}},
{"59d625f086f774661516605d",        {"AK55",        3536}},
{"55802d5f4bdc2dac148b458e",        {"GEN M3",        13745}},
{"57d1519e24597714373db79d",        {"PP91",        13194}},
{"587df3a12459772c28142567",        {"SKS int.",        5987}},
{"5bfeaa0f0db834001b734927",        {"Wyatt",        21805}},
{"5aaa5e60e5b5b000140293d6",        {"GEN M3",        2183}},
{"59d6272486f77466146386ff",        {"GEN M3",        18942}},
{"5aaf8a0be5b5b00015693243",        {"M1A",        7326}},
{"5b7c2d1d5acfc43d1028532a",        {"SA58/FAL MMW",        6204}},
{"576a5ed62459771e9c2096cb",        {"MP-443",        3485}},
{"5c6d450c2e221600114c997d",        {"PM Gen.2",        9286}},
{"59f99a7d86f7745b134aa97b",        {"SR1-MP",        4226}},
{"5c6161fb2e221600113fbde5",        {"Sb.3x5",        7926}},
{"5c503ac82e221602b21d6e9a",        {"VPO101",        4207}},
{"5b7bef1e5acfc43d82528402",        {"SA58/FAL",        2620}},
{"5aaa4194e5b5b055d06310a5",        {"GEN M3",        6531}},
{"5bed61680db834001d2c45ab",        {"AK-12",        10462}},
{"5894a05586f774094708ef75",        {"MPX",        3301}},
{"599860ac86f77436b225ed1a",        {"PP-19-01",        5937}},
{"5a78830bc5856700137e4c90",        {"M870x7",        36851}},
{"55d481904bdc2d8c2f8b456a",        {"6L26",        6951}},
{"5a966f51a2750c00156aacf6",        {"SAI-02",        9575}},
{"5b1fb3e15acfc4001637f068",        {"6P2 bak.",        6011}},
{"57d14e1724597714010c3f4b",        {"PP91",        1867}},
{"5ac66bea5acfc43b321d4aec",        {"AK-103",        5327}},
{"5a38ed75c4a28232996e40c6",        {"Sb.3x4",        1381}},
{"564ca9df4bdc2d35148b4569",        {"6L18",        8201}},
{"5a78832ec5856700155a6ca3",        {"M870x10",        33200}},
{"5a01c29586f77474660c694c",        {"6L10",        3134}},
{"571a29dc2459771fb2755a6a",        {"tt-105",        3964}},
{"5ac66c5d5acfc4001718d314",        {"6L29",        3096}},
{"5448c12b4bdc2d02308b456f",        {"PM",        6268}},
{"5c0673fb0db8340023300271",        {"SG-919",        2086}},
{"5a17fb03fcdbcbcae668728f",        {"APS",        1468}},
{"5b099ac65acfc400186331e1",        {"SA58/FAL",        4522}},
{"564ca99c4bdc2d16268b4589",        {"6L20",        2718}},
{"5882163e24597758206fee8c",        {"МP153x5",        902}},
{"55d4837c4bdc2d1d4e8b456c",        {"Saiga 545",        3504}},
{"59e5f5a486f7746c530b3ce2",        {"6P2 Sb-11",        9284}},
{"57616a9e2459773c7a400234",        {"Sb.5",        2923}},
{"55d485804bdc2d8c2f8b456b",        {"MP-133x8",        14742}},
{"55d484b44bdc2d1d4e8b456d",        {"MP-133x6",        4140}},
{"55d4887d4bdc2d962f8b4570",        {"STANAG",        6718}},
{"55d480c04bdc2d1d4e8b456a",        {"6L23",        4625}},
{"59e5d83b86f7745aed03d262",        {"AK ribbed",        1045}},
{"5882163824597757561aa922",        {"МP153x6",        1221}},
{"5882163224597757561aa920",        {"МP153x7",        1663}},
{"5a0060fc86f7745793204432",        {"AKMS al.",        11447}},
{"5998529a86f774647f44f421",        {"Sb.7",        1809}},
{"5a38ee51c4a282000c5a955c",        {"20-01 Sb.3x2",        725}},
{"5b1fd4e35acfc40018633c39",        {"AK al.",        5999}},
{"5c06595c0db834001a66af6c",        {"LA-5B/PEQ",        12167}},
{"5c5952732e2216398b5abda2",        {"Perst-3",        12125}},
{"544909bb4bdc2d6f028b4577",        {"AN/PEQ-15",        18066}},
{"5d2369418abbc306c62e0c80",        {"DBAL-PL",        27300}},
{"5b07dd285acfc4001754240d",        {"LAS/TAC 2",        26129}},
{"5b3a337e5acfc4704b4a19a0",        {"Klesch-2U",        18157}},
{"5a5f1ce64f39f90b401987bc",        {"2IRS",        14193}},
{"5a7b483fe899ef0016170d15",        {"XC1",        13166}},
{"5a800961159bd4315e3a1657",        {"GTL 21",        13387}},
{"5d10b49bd7ad1a1a560708b0",        {"AN/PEQ-2",        9703}},
{"57fd23e32459772d0805bcf1",        {"LS321",        17240}},
{"5c079ed60db834001a66b372",        {"TT Precision",        6572}},
{"560d657b4bdc2da74d8b4572",        {"Klesch",        10312}},
{"56def37dd2720bec348b456a",        {"X400",        10677}},
{"5cc9c20cd7f00c001336c65d",        {"TBL",        12949}},
{"59d790f486f77403cb06aec6",        {"XHP35",        5465}},
{"57d17c5e2459775a5c57d17d",        {"WF501B",        4284}},
{"5755356824597772cb798962",        {"AI-2",        2999}},
{"544fb37f4bdc2dee738b4567",        {"Painkillers",        5845}},
{"544fb25a4bdc2dfb738b4567",        {"Bandage",        1894}},
{"544fb3364bdc2d34748b456a",        {"Splint",        2527}},
{"5751a25924597722c463c472",        {"Bandage",        2228}},
{"5c1cd46f2e22164bef5cfedb",        {"B-25U RK-1",        46766}},
{"5c1bc5af2e221602b412949b",        {"RK-2",        12670}},
{"5b057b4f5acfc4771e1bd3e9",        {"SE-5",        31444}},
{"5de8fbad2fbe23140d3ee9c4",        {"MP9 VFG",        13611}},
{"5c1bc5612e221602b5429350",        {"RK-1",        50331}},
{"59f8a37386f7747af3328f06",        {"Shift",        92869}},
{"5a7dbfc1159bd40016548fde",        {"CQR",        16439}},
{"5c791e872e2216001219c40a",        {"SI Cobra",        20296}},
{"57cffb66245977632f391a99",        {"AFG M-LOK",        46638}},
{"5c1bc7432e221602b412949d",        {"RK-5",        21526}},
{"5c1bc7752e221602b1779b34",        {"RK-6",        9637}},
{"588226dd24597767ad33f789",        {"AFG FDE",        11533}},
{"588226e62459776e3e094af7",        {"AFG FG",        10198}},
{"588226ef24597767af46e39c",        {"AFG OD",        28472}},
{"588226d124597767ad33f787",        {"AFG blk.",        13543}},
{"5c1bc4812e22164bef5cfde7",        {"RK-0",        18625}},
{"59fc48e086f77463b1118392",        {"RVG blk.",        22642}},
{"5c1bc5fb2e221602b1779b32",        {"RK-4",        11511}},
{"5c7fc87d2e221644f31c0298",        {"GF MOD.3",        7229}},
{"5cf4fb76d7f00c065703d3ac",        {"Pillau",        5856}},
{"5c87ca002e221600114cb150",        {"KAC VG",        10145}},
{"558032614bdc2de7118b4585",        {"BGV-MK46K",        6341}},
{"58c157be86f77403c74b2bb6",        {"BGV-MK46K FDE",        5559}},
{"58c157c886f774032749fb06",        {"BGV-MK46K SG",        6116}},
{"591af28e86f77414a27a9e1d",        {"UVG",        14077}},
{"5cda9bcfd7f00c0c0b53e900",        {"ASh-12",        24181}},
{"5df36948bb49d91fb446d5ad",        {"T-5000 pad",        1850}},
{"57cffcd624597763133760c5",        {"AFG M-LOK",        40294}},
{"57cffcdd24597763f5110006",        {"AFG M-LOK",        7984}},
{"57cffce524597763b31685d8",        {"AFG M-LOK",        62344}},
{"5a33e75ac4a2826c6e06d759",        {"CQR",        21698}},
{"5d025cc1d7ad1a53845279ef",        {"Ergo",        43278}},
{"5df38a5fb74cd90030650cb6",        {"T-5000",        4479}},
{"5b3cadf35acfc400194776a0",        {"TT grips",        14159}},
{"56e05a6ed2720bd0748b4567",        {"PB bakelite",        9000}},
{"59db3a1d86f77429e05b4e92",        {"GRAL-S",        55278}},
{"5cf54404d7f00c108840b2ef",        {"AK MG-47",        12035}},
{"5b30ac585acfc433000eb79c",        {"MOE AK",        84346}},
{"5c6bf4aa2e2216001219b0ae",        {"US Palm AK",        25887}},
{"5bffef760db8340019668fe4",        {"P226 CL",        8300}},
{"55802f5d4bdc2dac148b458f",        {"AR15 MOE",        31207}},
{"5d15cf3bd7ad1a67e71518b2",        {"MOE FDE",        19454}},
{"5c6d7b3d2e221600114c9b7d",        {"HK V2",        10284}},
{"5bb20e0ed4351e3bac1212dc",        {"Battle Grip",        10619}},
{"5649ae4a4bdc2d1b2b8b4588",        {"RК-3",        22240}},
{"5d023784d7ad1a049d4aa7f2",        {"SKS AG-58",        7616}},
{"5bffcf7a0db83400232fea79",        {"TT-206",        6135}},
{"5bbde41ed4351e003562b038",        {"Mosin",        17243}},
{"5b07db875acfc40dc528a5f6",        {"TD120001",        179798}},
{"5c079ec50db834001966a706",        {"TT RazorArms",        7426}},
{"59db3b0886f77429d72fb895",        {"Stark AR RG",        23449}},
{"59db3acc86f7742a2c4ab912",        {"Stark AR RG",        29739}},
{"5cc9bcaed7f00c011c04e179",        {"HG15",        21424}},
{"5947fa2486f77425b47c1a9b",        {"SAW",        10827}},
{"5947f92f86f77427344a76b1",        {"SAW",        15232}},
{"5b7d679f5acfc4001a5c4024",        {"SA58 AG-FAL",        11916}},
{"5b099b965acfc400186331e6",        {"SA58 SAW",        5679}},
{"5a69a2ed8dc32e000d46d1f1",        {"R43 VAL",        118766}},
{"57c55efc2459772d2c6271e7",        {"OMRG Blk.",        28868}},
{"57af48872459771f0b2ebf11",        {"OMRG FDE",        31348}},
{"57c55f092459772d291a8463",        {"OMRG GE",        20764}},
{"57c55f112459772d28133310",        {"OMRG GG",        23725}},
{"57c55f172459772d27602381",        {"OMRG OD",        20977}},
{"5b39ffbd5acfc47a8773fb06",        {"P226 Hogue",        6316}},
{"5c471be12e221602b66cd9ac",        {"SVDS",        6617}},
{"5cf50850d7f00c056e24104c",        {"AK EPG",        10430}},
{"5cf508bfd7f00c056e24104e",        {"AK EPG",        7918}},
{"57d152ec245977144076ccdf",        {"PP91",        5462}},
{"5bb20e18d4351e00320205d5",        {"Battle Grip",        11940}},
{"55d4b9964bdc2d1d4e8b456e",        {"A2",        4029}},
{"5c48a2c22e221602b313fb6c",        {"MDR",        15516}},
{"5dcbd6dddbd3d91b3e5468de",        {"MDR Black",        13340}},
{"5bffec120db834001c38f5fa",        {"P226 Axelson",        9109}},
{"5a339805c4a2826c6e06d73d",        {"MIAD FDE",        9087}},
{"5addc7db5acfc4001669f279",        {"M14ALCS",        7005}},
{"5bfe86a20db834001d23e8f7",        {"AGR-870",        7010}},
{"5afd7e445acfc4001637e35a",        {"SKS SAW",        5007}},
{"5cdeac5cd7f00c000f261694",        {"Pro700",        5160}},
{"5beec8ea0db834001a6f9dbf",        {"AK-12",        13864}},
{"5a7b4960e899ef197b331a2d",        {"G Pach TRG",        7898}},
{"571659bb2459771fb2755a12",        {"ECS FDE",        3177}},
{"5c00076d0db834001d23ee1f",        {"P226 Elite Wooden",        7140}},
{"5a0071d486f77404e23a12b2",        {"AKM wood",        18222}},
{"57c44fa82459772d2d75e415",        {"VAL",        10143}},
{"571a282c2459771fb2755a69",        {"TT grips",        5057}},
{"56d5a2bbd2720bb8418b456a",        {"P226 Black",        22278}},
{"5c0006470db834001a6697fe",        {"P226 Scorpion",        2450}},
{"5894a51286f77426d13baf02",        {"MPX",        6739}},
{"5a17fc70fcdbcb0176308b3d",        {"APS Bak.",        9200}},
{"5c0684e50db834002a12585a",        {"Hogue-like",        4684}},
{"5b7d678a5acfc4001a5c4022",        {"SA58",        2980}},
{"5998517986f7746017232f7e",        {"PP-19-01",        5457}},
{"59e62cc886f77440d40b52a1",        {"AKM bak.",        7000}},
{"5649ad3f4bdc2df8348b4585",        {"6P4 Sb.8V",        8000}},
{"576a63cd2459771e796e0e11",        {"MP443",        3685}},
{"5649ade84bdc2d1b2b8b4587",        {"6P1 Sb.8",        4555}},
{"5a38eecdc4a282329a73b512",        {"TOZ106",        7225}},
{"59e6318286f77444dd62c4cc",        {"Molot bak.",        6085}},
{"57e3dba62459770f0c32322b",        {"6P4 Sb.9",        5009}},
{"5cadc431ae921500113bb8d5",        {"M9A3 PGrip",        8263}},
{"5c1a1cc52e221602b3136e3d",        {"M Frame",        7913}},
{"5aa2b923e5b5b000137b7589",        {"RGlasses",        13229}},
{"5d5fca1ea4b93635fd598c07",        {"Crossbow",        8339}},
{"59e770b986f7742cbd762754",        {"AFGlass",        9592}},
{"5c0d32fcd174af02a1659c75",        {"Proximity",        5854}},
{"5d6d2ef3a4b93618084f58bd",        {"Aviator",        6339}},
{"5d6d2e22a4b9361bd5780d05",        {"Gascan",        5208}},
{"5b432be65acfc433000ed01f",        {"6B34",        3179}},
{"5aa2b9aee5b5b00015693121",        {"RayBench",        13176}},
{"5aa2b986e5b5b00014028f4c",        {"Dundukk",        2597}},
{"557ff21e4bdc2d89578b4586",        {"TGlasses",        1253}},
{"5a16b8a9fcdbcb00165aa6ca",        {"TATM",        15665}},
{"5a16b93dfcdbcbcae6687261",        {"DDT",        9944}},
{"5c11046cd174af02a012e42b",        {"W-PVS7",        6588}},
{"5c0695860db834001b735461",        {"10T adapter",        20616}},
{"5c0e66e2d174af02a96252f4",        {"SLAAP",        57378}},
{"5d6d3be5a4b9361bc73bc763",        {"Aventail",        20912}},
{"5e00cfa786f77469dc6e5685",        {"TW Ears",        35677}},
{"5a16badafcdbcb001865f72d",        {"SArmor",        23489}},
{"5c178a942e22164bef5ceca3",        {"Chops",        29325}},
{"5c1793902e221602b21d3de2",        {"CP Ears",        22302}},
{"5a16ba61fcdbcb098008728a",        {"Mandible",        13651}},
{"5e01f31d86f77465cf261343",        {"TW Ears",        29753}},
{"5d6d3943a4b9360dbc46d0cc",        {"Cover",        7336}},
{"5d2f261548f03576f500e7b7",        {"MP5K Upper",        6711}},
{"5c07a8770db8340023300450",        {"Gen.3 upper",        27849}},
{"59bfe68886f7746004266202",        {"MUR-1S Upper",        45176}},
{"5a71e4f48dc32e001207fb26",        {"G ZT Spartan",        17714}},
{"5d2c772c48f0355d95672c25",        {"Dog Leg Rail",        30747}},
{"5cadc55cae921500103bb3be",        {"M9A3",        3685}},
{"5a7afa25e899ef00135e31b0",        {"PS9",        14122}},
{"5a71e22f8dc32e00094b97f4",        {"G ZT HEX",        14199}},
{"5d2c770c48f0354b4a07c100",        {"PDC",        34832}},
{"5de8e67c4a9f347bc92edbd7",        {"MP9-N Upper",        27500}},
{"5bffe7c50db834001d23ece1",        {"P226 Axelson",        11018}},
{"5bb20d53d4351e4502010a69",        {"416A5 Upper",        8260}},
{"5c503d0a2e221602b542b7ef",        {"VPO101",        12000}},
{"5d4405aaa4b9361e6a4e6bd3",        {"TX15 LW Upper",        37450}},
{"5649af884bdc2d1b2b8b4589",        {"B-33",        40687}},
{"5b099bb25acfc400186331e8",        {"SA58 ED",        19862}},
{"5beec91a0db834001961942d",        {"RPK-16",        7785}},
{"5926f2e086f7745aae644231",        {"MP5SD upper",        17859}},
{"5839a7742459773cf9693481",        {"AKS-74UB",        36198}},
{"5a6f5f078dc32e00094b97dd",        {"G ViperCut",        8937}},
{"5cc70102e4a949035e43ba74",        {"P90 Upper",        6629}},
{"5a9685b1a2750c0032157104",        {"G MotoCut",        9017}},
{"5a7033908dc32e000a311392",        {"G AW C",        9981}},
{"5a702d198dc32e000b452fc3",        {"G AW",        8366}},
{"5c010a700db834001d23ef5d",        {"P226 EmpScorp",        9639}},
{"5d2c76ed48f03532f2136169",        {"Bastion",        6438}},
{"5894a5b586f77426d2590767",        {"MPX GEN1",        15130}},
{"5c471bd12e221602b4129c3a",        {"SVDS",        9068}},
{"5c0e2f26d174af02a9625114",        {"ADAR Upper",        9088}},
{"5cc700ede4a949033c734315",        {"EFFEN 90",        27048}},
{"55d355e64bdc2d962f8b4569",        {"M4A1 Upper",        7085}},
{"5c0009510db834001966907f",        {"P226 Stainless Elite",        6016}},
{"5c0125fc0db834001a669aa3",        {"P226 Legion",        5276}},
{"5926c0df86f77462f647f764",        {"MP5 Upper",        6714}},
{"5dfce88fe9dc277128008b2e",        {"SVDS CDC",        33333}},
{"5df8e4080b92095fd441e594",        {"SR-25 Upper",        4774}},
{"56d5a407d2720bb3418b456b",        {"P226 Slide",        3563}},
{"5a6f5e048dc32e00094b97da",        {"Glock",        6008}},
{"59985a6c86f77414ec448d17",        {"Vityaz-SN",        3202}},
{"5cf7acfcd7f00c1084477cf2",        {"PS90 Upper",        7761}},
{"578395402459774a256959b5",        {"VSS",        19912}},
{"57c44f4f2459772d2c627113",        {"VAL",        20667}},
{"5b7d6c105acfc40015109a5f",        {"FAL",        2603}},
{"5ac50da15acfc4001718d287",        {"6P34 0-1",        29999}},
{"59e6449086f7746c9f75e822",        {"Molot",        10358}},
{"5649af094bdc2df8348b4586",        {"6P1 0-1",        8187}},
{"57dc334d245977597164366f",        {"6P26 Sb.7",        5762}},
{"59d6507c86f7741b846413a2",        {"6P1 0-1",        8750}},
{"57616c112459773cce774d66",        {"Sb.0-2",        9999}},
{"59985a8086f77414ec448d1a",        {"PP-19-01",        3428}},
{"5b1faa0f5acfc40dc528aeb5",        {"G18C",        6537}},
{"5d3eb44aa4b93650d64e4979",        {"5-7",        9784}},
{"58949edd86f77409483e16a9",        {"MPX 2x",        13602}},
{"5de922d4b11454561e39239f",        {"MP9 CH",        650}},
{"5b2240bf5acfc40dc528af69",        {"Raptor",        19000}},
{"5cc6ea78e4a949000e1ea3c1",        {"P90",        29141}},
{"5df8e053bb49d91fb446d6a6",        {"SR-25",        22405}},
{"55d44fd14bdc2d962f8b456e",        {"AR-15",        2500}},
{"5926c32286f774616e42de99",        {"MP5 CH",        7565}},
{"56ea7165d2720b6e518b4583",        {"BOTL",        14104}},
{"5df8e085bb49d91fb446d6a8",        {"SR-25 Ambi",        10000}},
{"5bb20dbcd4351e44f824c04e",        {"Ext. Latch",        10770}},
{"5c0faf68d174af02a96260b8",        {"ADAR",        9148}},
{"5c5db6b32e221600102611a0",        {"MPX SCH",        15848}},
{"5cc6ea85e4a949000e1ea3c3",        {"TheHandler",        16600}},
{"5648ac824bdc2ded0b8b457d",        {"RP-1",        3212}},
{"58949fac86f77409483e16aa",        {"MPX 1x",        24407}},
{"5d2f2d5748f03572ec0c0139",        {"MP5K CH",        20067}},
{"5c471c842e221615214259b5",        {"SVDS",        17727}},
{"59e649f986f77411d949b246",        {"Molot GTube",        33752}},
{"5d00ec68d7ad1a04a067e5be",        {"GS-5B",        59071}},
{"5b237e425acfc4771e1be0b6",        {"TROY Combo",        17660}},
{"5cf656f2d7f00c06585fb6eb",        {"VS Combo",        20858}},
{"5a34fbadc4a28200741e230a",        {"JPGS6",        9408}},
{"5dfa3d45dfc58d14537c20b0",        {"SR25",        11250}},
{"5a01ad4786f77450561fda02",        {"VDM CS",        2904}},
{"56ea8d2fd2720b7c698b4570",        {"RGBlock",        10354}},
{"56eabcd4d2720b66698b4574",        {"MK12",        6144}},
{"59ccd11386f77428f24a488f",        {"PP-19-01 GTube",        11215}},
{"59d36a0086f7747e673f3946",        {"AKS74U GTube",        8333}},
{"5bb20dcad4351e3bac1212da",        {"416A5",        9876}},
{"59d64ec286f774171d1e0a42",        {"6P1 Sb.1-2",        8610}},
{"59c6633186f7740cf0493bb9",        {"AK74 GTube",        7363}},
{"5ae30e795acfc408fb139a0b",        {"M4 FS",        13838}},
{"5c5039be2e221602b177c9ff",        {"VPO101",        31952}},
{"59ccfdba86f7747f2109a587",        {"M1-B",        4798}},
{"5dfa3cd1b33c0951220c079b",        {"KAC QDC",        9934}},
{"5c78f2882e22165df16b832e",        {"JailBrake",        8558}},
{"5cdd7693d7f00c0010373aa5",        {"M11",        8210}},
{"5d026791d7ad1a04a067ea63",        {"RED 762",        18986}},
{"5dcbe965e4ed22586443a79d",        {"MDR .308",        8006}},
{"5cdd7685d7f00c000f260ed2",        {"SHREWD 762",        8679}},
{"5c878ebb2e2216001219d48a",        {"DGNAK47B",        31664}},
{"5addbb825acfc408fb139400",        {"M14 JP",        5929}},
{"5bc5a35cd4351e450201232f",        {"Mosin WM",        9157}},
{"5c878e9d2e2216000f201903",        {"DGN762B",        31515}},
{"5cf6937cd7f00c056c53fb39",        {"ST6012 556",        15443}},
{"5998597786f77414ea6da093",        {"PP-19-01",        6192}},
{"5d1f819086f7744b355c219b",        {"WAVE 762",        11853}},
{"5cf78720d7f00c06595bc93e",        {"BMD 762",        11373}},
{"5c7951452e221644f31bfd5c",        {"Antidote",        18463}},
{"5bbdb8bdd4351e4502011460",        {"Atlas 7 762",        12978}},
{"5d02676dd7ad1a049e54f6dc",        {"Vette 556",        12873}},
{"5a7b32a2e899ef00135e345a",        {"G G4",        9821}},
{"5a7c147ce899ef00150bd8b8",        {"VP-09 556",        6420}},
{"5943eeeb86f77412d6384f6b",        {"PWS CQB 74",        22363}},
{"5943ee5a86f77413872d25ec",        {"PWS CQB",        9414}},
{"5a7ad0c451dfba0013379712",        {"G CC 4P",        4769}},
{"5d443f8fa4b93678dd4a01aa",        {"30CB",        21180}},
{"5d02677ad7ad1a04a15c0f95",        {"Vette 762",        8787}},
{"5c07c5ed0db834001b73571c",        {"MP5 Noveske",        14026}},
{"5a70366c8dc32e001207fb06",        {"G DD FH",        3957}},
{"59fb137a86f7740adb646af1",        {"Monster Claw",        21837}},
{"5addbb945acfc4001a5fc44e",        {"M14 GoodIron",        7791}},
{"5c4ee3d62e2216152006f302",        {"SV98 Mk.2.0",        8027}},
{"5b3a16655acfc40016387a2a",        {"Annihilator",        76911}},
{"5bc5a351d4351e003477a414",        {"Mosin TPP",        8457}},
{"5b7d693d5acfc43bca706a3d",        {"X3 762",        8897}},
{"5cff9e5ed7ad1a09407397d4",        {"WAVE 556",        11557}},
{"5cf6935bd7f00c06585fb791",        {"MPX CBrake",        11612}},
{"5c7fb51d2e2216001219ce11",        {"AR15 SF3P",        9531}},
{"56ea8180d2720bf2698b456a",        {"QDC 556",        10189}},
{"5b099b7d5acfc400186331e4",        {"SA58 3-pr.",        2954}},
{"5ac72e945acfc43f3b691116",        {"6P44 0-20",        22369}},
{"5ac72e725acfc400180ae701",        {"6P44 0-20",        24999}},
{"5d440625a4b9361eec4ae6c5",        {"223CB",        10677}},
{"5cc9b815d7f00c000e2579d6",        {"TROY Claymore",        5602}},
{"5ac72e895acfc43b321d4bd5",        {"6P46 0-20",        9166}},
{"5c7e5f112e221600106f4ede",        {"51T 556",        12720}},
{"5addbbb25acfc40015621bd9",        {"Phantom 762",        5541}},
{"5bbdb83fd4351e44f824c44b",        {"Mosin Tanker",        5029}},
{"58889c7324597754281f9439",        {"DVL-10 MD",        11811}},
{"5beec3420db834001b095429",        {"RPK-16",        2894}},
{"5cc9ad73d7f00c000e2579d4",        {"SRVV",        24458}},
{"5cc9a96cd7f00c011c04e04a",        {"AK74 SRVV",        26934}},
{"5caf17c9ae92150b30006be1",        {"ASh-12",        5727}},
{"5addbba15acfc400185c2854",        {"M14 Vortex",        3855}},
{"5c4eec9b2e2216398b5aaba2",        {"SV98 thr.",        24345}},
{"5c6beec32e221601da3578f2",        {"P226 TJC",        4033}},
{"5649ab884bdc2ded0b8b457f",        {"DTK-1",        7999}},
{"5df35e7f2a78646d96665dd4",        {"T-5000M",        8702}},
{"5a34fd2bc4a282329a73b4c5",        {"51T 762",        14809}},
{"5c48a2a42e221602b66d1e07",        {"MDR 5.56",        7258}},
{"5c6d710d2e22165df16b81e7",        {"WarComp 556",        30000}},
{"5ac72e7d5acfc40016339a02",        {"AK-103",        5260}},
{"5a7037338dc32e000d46d257",        {"G 3Port",        5480}},
{"5addbb6e5acfc408fb1393fd",        {"NM",        5914}},
{"5888996c24597754281f9419",        {"DVL-10 М2",        7901}},
{"5bffd7ed0db834001d23ebf9",        {"DTK-TT",        3888}},
{"5ac72e615acfc43f67248aa0",        {"AK-101",        600}},
{"5ba26acdd4351e003562908e",        {"MP7A1",        7750}},
{"5a9ea27ca2750c00137fa672",        {"Dynacomp AK",        6402}},
{"5a705e128dc32e000d46d258",        {"G AW",        3662}},
{"56ea6fafd2720b844b8b4593",        {"KX3 556",        5807}},
{"59e61eb386f77440d64f5daf",        {"VPO136",        23056}},
{"5a7ad1fb51dfba0013379715",        {"LWD-COMP9",        4175}},
{"5cc82796e24e8d000f5859a8",        {"P90",        5311}},
{"5b7d68af5acfc400170e30c3",        {"SA58 Austrian",        5809}},
{"5c471bfc2e221602b21d4e17",        {"SVDS",        11024}},
{"5c0fafb6d174af02a96260ba",        {"ADAR",        13529}},
{"560e620e4bdc2d724b8b456b",        {"SV-98 MD",        6242}},
{"544a38634bdc2d58388b4568",        {"USGI A2",        4555}},
{"5a0abb6e1526d8000a025282",        {"TT AK",        4497}},
{"5ac7655e5acfc40016339a19",        {"6P20 0-20",        9891}},
{"58949dea86f77409483e16a8",        {"MPX A2",        6176}},
{"5a0d716f1526d8000d26b1e2",        {"AKML",        6832}},
{"5649aa744bdc2ded0b8b457e",        {"6P20 0-20",        9000}},
{"57dc324a24597759501edc20",        {"6P26 0-20",        4599}},
{"59e8a00d86f7742ad93b569c",        {"VPO209 thr.",        2000}},
{"59d64fc686f774171b243fe2",        {"6P1 0-14",        5816}},
{"5998598e86f7740b3f498a86",        {"Saiga-9",        4222}},
{"5aafa1c2e5b5b00015042a56",        {"SOCOM16 M1A",        4652}},
{"5ab3afb2d8ce87001660304d",        {"SOCOM16 thr.",        43888}},
{"5a1eacb3fcdbcb09800872be",        {"REAP-IR cup",        22275}},
{"5d123b70d7ad1a0ee35e0754",        {"KAC long",        8537}},
{"56083eab4bdc2d26448b456a",        {"SV-98 HR",        9687}},
{"5d123b7dd7ad1a004f01b262",        {"KAC stopper",        6766}},
{"5d123a3cd7ad1a004e476058",        {"KAC short",        8196}},
{"5b3cbc235acfc4001863ac44",        {"Vulcan MG cup",        7762}},
{"5c4eecde2e221602b3140418",        {"SV-98 HS",        7952}},
{"5d0b5cd3d7ad1a3fe32ad263",        {"1P59 cup",        4563}},
{"57f3a5ae2459772b0e0bf19e",        {"PSO eyecup",        7558}},
{"5cf639aad7f00c065703d455",        {"USP-1 cup",        3063}},
{"5bfe86bd0db83400232fe959",        {"AGR-870 cap",        6273}},
{"5ba36f85d4351e0085325c81",        {"NSPU-M cup",        1580}},
{"5a71e1868dc32e00094b97f3",        {"G ZT cap",        6579}},
{"591c4e1186f77410354b316e",        {"Kobra",        3225}},
{"5cf78496d7f00c065703d6ca",        {"BMD A3",        14444}},
{"57f3c7e024597738ea4ba286",        {"PP9101 thr.",        6817}},
{"5a6b585a8dc32e5a9c28b4f1",        {"G AW thr.",        3947}},
{"5de8f237bbaf010b10528a70",        {"MP9 mount",        4350}},
{"5c7954d52e221600106f4cc7",        {"ONE mount",        20958}},
{"560838c94bdc2d77798b4569",        {"RTC 12ga",        14597}},
{"59bffc1f86f77435b128b872",        {"DT Mount",        8562}},
{"5a6b592c8dc32e00094b97bf",        {"G DD thr.",        6856}},
{"5926e16e86f7742f5a0f7ecb",        {"3 Lug",        9270}},
{"5c0000c00db834001a6697fc",        {"MP5 3Lug",        11233}},
{"5cf79599d7f00c10875d9212",        {"TR thr.",        5352}},
{"5e01e9e273d8eb11426f5bc3",        {"SVDS Thr.",        36629}},
{"58272d7f2459774f6311ddfd",        {"GK-02",        8111}},
{"5c0111ab0db834001966914d",        {"Cylinder 12ga",        4901}},
{"5cf67a1bd7f00c06585fb6f3",        {"WT1052",        5412}},
{"5cf67cadd7f00c065a5abab7",        {"WT SKS",        13210}},
{"5b363e1b5acfc4771e1c5e80",        {"12ga thr.",        6857}},
{"5cf79389d7f00c10941a0c4d",        {"Mosin thr.",        1500}},
{"5de6556a205ddc616a6bc4f7",        {"VPO215 cap",        29999}},
{"5a6b59a08dc32e000b452fb7",        {"G SAI thr.",        6240}},
{"587de5ba2459771c0f1e8a58",        {"P226 thr. cap",        400}},
{"576167ab2459773cad038c43",        {"SOK-12 thr. tube",        14663}},
{"5d270ca28abbc31ee25ee821",        {"M700 cap",        600}},
{"5cadc390ae921500126a77f1",        {"M9A3 cap",        300}},
{"5df916dfbb49d91fb446d6b9",        {"URX 4 14.5\"",        18125}},
{"5d2f259b48f0355a844acd74",        {"MP5K",        3365}},
{"5cf4e3f3d7f00c06595bc7f0",        {"Aggressor",        23912}},
{"5c17664f2e2216398b5a7e3c",        {"CMRD",        37109}},
{"5b800e9286f7747a8b04f3ff",        {"HEX blk",        15640}},
{"5b099a9d5acfc47a8607efe7",        {"SA58 4Rail",        7780}},
{"5beec3e30db8340019619424",        {"RPK-16",        7012}},
{"5648b4534bdc2d3d1c8b4580",        {"B10М+B19",        19764}},
{"57cff947245977638e6f2a19",        {"MOE AKM",        20736}},
{"5d123102d7ad1a004e475fe5",        {"AR15 URX 3 8\"",        11815}},
{"5d00ede1d7ad1a0940739a76",        {"SWS N6 10.5\"",        10738}},
{"5d122e7bd7ad1a07102d6d7f",        {"URX 3.1 10.75\"",        16358}},
{"5a957c3fa2750c00137fa5f7",        {"XRSU47SU",        34043}},
{"5a9d6d34a2750c00141e07da",        {"TRAX 2",        9919}},
{"5648ae314bdc2d3d1c8b457f",        {"CAA RS47",        11741}},
{"5c78f2492e221600114c9f04",        {"AR15 SAI QD 14.5\"",        36548}},
{"5c9a25172e2216000f20314e",        {"RIS II 12.25 FDE",        20125}},
{"5c5db5f22e2216000e5e47e8",        {"MPX Midwest 4.5\"",        5644}},
{"5c48a14f2e2216152006edd7",        {"MDR",        71111}},
{"5df25d3bfd6b4e6e2276dc9a",        {"T-5000",        6500}},
{"5888976c24597754281f93f5",        {"DVL-10 М2",        15975}},
{"5a788068c5856700137e4c8f",        {"M870 MOE",        59300}},
{"5b2cfa535acfc432ff4db7a0",        {"MK10 RL",        17326}},
{"5c59529a2e221602b177d160",        {"MPX OEM 14\"",        12878}},
{"5a329052c4a28200741e22d3",        {"RSASS",        16337}},
{"5d010d1cd7ad1a59283b1ce7",        {"MP5 HX-5",        14057}},
{"5c6d5d8b2e221644fc630b39",        {"VYPR 10\"",        15922}},
{"5a9d56c8a2750c0032157146",        {"TRAX 1",        10279}},
{"588b56d02459771481110ae2",        {"RIS II 9.5 blk.",        13779}},
{"5d15ce51d7ad1a1eff619092",        {"Goliaf",        6982}},
{"5c6c2c9c2e2216000f2002e4",        {"416A5 TROY 13\"",        11218}},
{"5b7bee755acfc400196d5383",        {"SA58 CASV FAS",        8025}},
{"5b7bedd75acfc43d825283f9",        {"FAL CASV",        13525}},
{"5827272a24597748c74bdeea",        {"MTU002 L",        12270}},
{"595cfa8b86f77427437e845b",        {"LVOA-C",        18851}},
{"5c6d11152e2216000f2003e7",        {"416A5 CRUX 15\"",        26034}},
{"5c6d11072e2216000e69d2e4",        {"416A5 Midwest 13.5\"",        8338}},
{"595cf16b86f77427440c32e2",        {"LVOA-S",        13857}},
{"5c9a26332e2216001219ea70",        {"RIS II FSP 9.5 FDE",        53308}},
{"5c9a07572e221644f31c4b32",        {"Zhukov-U",        14742}},
{"5dfcd0e547101c39625f66f9",        {"SAG MK1",        15912}},
{"5c78f26f2e221601da3581d1",        {"MOE SL",        12683}},
{"59fb375986f7741b681b81a6",        {"UFM",        10772}},
{"5c78f2612e221600114c9f0d",        {"AR15 SAI QD 10\"",        14706}},
{"5d00ef6dd7ad1a0940739b16",        {"SWS N6 Split",        14937}},
{"5d4405f0a4b9361e6a4e6bd9",        {"Ion Lite",        16280}},
{"55d45f484bdc2d972f8b456d",        {"MP133 rails",        17703}},
{"5d2c829448f0353a5c7d6674",        {"CAF wood",        11469}},
{"5c6d10e82e221601da357b07",        {"416A5 MRS 14\"",        13636}},
{"5c78f2792e221600106f4683",        {"MOE SL",        10874}},
{"5bb20dfcd4351e00334c9e24",        {"416A5 4Rail ext.",        7325}},
{"5bb20df1d4351e00347787d5",        {"416A5 4Rail",        5030}},
{"5a9548c9159bd400133e97b3",        {"TL-99",        10076}},
{"57ffa9f4245977728561e844",        {"B-11",        6078}},
{"5d1b198cd7ad1a604869ad72",        {"AKM-L",        6418}},
{"5cde7afdd7f00c000d36b89d",        {"MOD*X",        14941}},
{"58272b392459774b4c7b3ccd",        {"MTU002 S",        8410}},
{"5c617a5f2e2216000f1e81b3",        {"B-10",        9798}},
{"5c6d10fa2e221600106f3f23",        {"416A5 Midwest 9\"",        8000}},
{"5d19cd96d7ad1a4a992c9f52",        {"MP5 Tri-Rail",        16434}},
{"5bb20de5d4351e0035629e59",        {"416A5 4Rail",        5436}},
{"5b7bebc85acfc43bca706666",        {"SA58 M-LOK",        5484}},
{"5cdaa99dd7f00c002412d0b2",        {"ASh-12",        6830}},
{"5c471c6c2e221602b66cd9ae",        {"SVDS",        12407}},
{"5c5db6302e2216000e5e47f0",        {"MPX Midwest 10.5\"",        7800}},
{"55d459824bdc2d892f8b4573",        {"KAC RIS",        7889}},
{"5b7be2345acfc400196d524a",        {"SA58 KeyMod",        7284}},
{"5894a42086f77426d2590762",        {"MPX GEN1",        4707}},
{"5c0e2f5cd174af02a012cfc9",        {"ADAR wood",        9211}},
{"5926f34786f77469195bfe92",        {"MP5SD HG",        16249}},
{"5b7d671b5acfc43d82528ddd",        {"FAL Belgian",        6441}},
{"5c5db5fc2e2216000f1b2842",        {"MPX Midwest 6.5\"",        7034}},
{"576169e62459773c69055191",        {"Sb.7-1",        5533}},
{"5ae30db85acfc408fb139a05",        {"M4",        7628}},
{"5cbda392ae92155f3c17c39f",        {"AK100",        6937}},
{"5a788031c585673f2b5c1c79",        {"PR870",        5114}},
{"5648b1504bdc2d9d488b4584",        {"6P20 Sb.9",        12493}},
{"59d64f2f86f77417193ef8b3",        {"6P1 Sb.6-1",        13802}},
{"59e898ee86f77427614bd225",        {"VPO209",        3333}},
{"59e6284f86f77440d569536f",        {"VPO136",        9780}},
{"5648b0744bdc2d363b8b4578",        {"6P20 Sb.6",        9833}},
{"57dc32dc245977596d4ef3d3",        {"6P26 Sb.6",        8000}},
{"5926c36d86f77467a92a8629",        {"MP5WT",        6033}},
{"5a788089c5856700142fdd9c",        {"Speedfeed",        2492}},
{"5b7bed205acfc400161d08cc",        {"FAL",        6625}},
{"55d45d3f4bdc2d972f8b456c",        {"MP133 beech",        12062}},
{"56deed6ed2720b4c698b4583",        {"МP153 Poly",        19875}},
{"5d00e0cbd7ad1a6c6566a42d",        {"AR15 Viper",        11399}},
{"57cffd8224597763b03fc609",        {"MOE AKM",        10529}},
{"57cffddc24597763133760c6",        {"MOE AKM",        13666}},
{"57cffe0024597763b03fc60b",        {"MOE AKM",        10151}},
{"57cffe20245977632f391a9d",        {"MOE AKM",        10797}},
{"5c9a1c3a2e2216000e69fb6a",        {"Zhukov-U",        10751}},
{"5c9a1c422e221600106f69f0",        {"Zhukov-U",        11959}},
{"5dcbe9431e1f4616d354987e",        {"MDR 308 16\"",        26646}},
{"5d3eb5b6a4b9361eab311902",        {"5-7 barrel",        17750}},
{"5d3eb59ea4b9361c284bb4b2",        {"5-7 thr.",        4200}},
{"5c48a2852e221602b21d5923",        {"MDR 556 406mm",        25448}},
{"5df256570dee1b22f862e9c4",        {"T-5000M 660mm",        17672}},
{"5a6b5ed88dc32e000c52ec86",        {"G SAI",        14482}},
{"5d440b93a4b9364276578d4b",        {"AR-15 18\"",        30190}},
{"5dfa397fb11454561e39246c",        {"SR-25 20\"",        40300}},
{"5a6b5b8a8dc32e001207faf3",        {"G AW",        10639}},
{"5c6d85e02e22165df16b81f4",        {"416A5 10.6\"",        12743}},
{"5bb20da5d4351e0035629dbf",        {"416A5 16.5\"",        18161}},
{"5a787f7ac5856700177af660",        {"M870 508mm",        30041}},
{"5b3baf8f5acfc40dc5296692",        {"TT 116mm gild",        6422}},
{"5a6b5e468dc32e001207faf5",        {"G DD thr.",        11663}},
{"5cc701aae4a949000e1ea45c",        {"P90 10.5\"",        40000}},
{"5bb20dadd4351e00367faeff",        {"416A5 20\"",        30414}},
{"5c5db5852e2216003a0fe71a",        {"MPX 4.5\"",        3800}},
{"5d440b9fa4b93601354d480c",        {"AR-15 20\"",        41519}},
{"55d35ee94bdc2d61338b4568",        {"AR-15 260mm",        59807}},
{"587de4282459771bca0ec90b",        {"P226 thr.",        21741}},
{"5b7be1125acfc4001876c0e5",        {"SA58 16\"",        19151}},
{"5d2703038abbc3105103d94c",        {"M700 20\"",        22800}},
{"5cc701d7e4a94900100ac4e7",        {"P90 16\"",        22300}},
{"5d2702e88abbc31ed91efc44",        {"M700 26\"",        25900}},
{"5beec1bd0db834001e6006f3",        {"RPK-16 15\"",        8963}},
{"5b099a765acfc47a8607efe3",        {"SA58 11\"",        15833}},
{"5888956924597752983e182d",        {"DVL10 660mm",        250000}},
{"5c471cb32e221602b177afaa",        {"SVDS 22\"",        35689}},
{"5a34fae7c4a2826c6e06d760",        {"AR-10 22\"",        26620}},
{"5bb20d92d4351e00853263eb",        {"416A5 11\"",        15560}},
{"5beec2820db834001b095426",        {"RPK-16 22\"",        33066}},
{"5a34f7f1c4a2826c6e06d75d",        {"AR-10 18\"",        21902}},
{"5888945a2459774bf43ba385",        {"DVL10 500mm",        22590}},
{"5c5db5b82e2216003a0fe71d",        {"MPX 10.5\"",        8174}},
{"5bb20d9cd4351e00334c9d8a",        {"416A5 14.5\"",        21866}},
{"5b7be1265acfc400161d0798",        {"SA58 21\"",        31566}},
{"5addbac75acfc400194dbc56",        {"M1A 22\"",        54802}},
{"5df917564a9f347bc92edca3",        {"SR-25 16\"",        21697}},
{"5bfebc250db834001a6694e1",        {"M700 26\"",        15989}},
{"5c5db5c62e22160012542255",        {"MPX 14\"",        43868}},
{"5ae09bff5acfc4001562219d",        {"Mosin 730mm",        48510}},
{"5a6b60158dc32e000a31138b",        {"G17 comp",        5098}},
{"5a787fadc5856700155a6ca1",        {"M870 660mm",        14215}},
{"5bfd4cd60db834001c38f095",        {"Mosin 220mm",        19917}},
{"55d3632e4bdc2d972f8b4569",        {"AR-15 370mm",        34972}},
{"5bfebc320db8340019668d79",        {"M700 20\"",        22037}},
{"5c5db5962e2216000e5e46eb",        {"MPX 6.5\"",        5174}},
{"5a787fdfc5856700142fdd9a",        {"M870 325mm",        9250}},
{"5a787f25c5856700186c4ab9",        {"M870 355mm",        11969}},
{"5aaf9d53e5b5b00015042a52",        {"M1A 16\"",        11473}},
{"588200af24597742fa221dfb",        {"MP153 610mm",        90000}},
{"5c0e2f94d174af029f650d56",        {"AR-15 406mm",        18353}},
{"571a279b24597720b4066566",        {"TT 121mm thr.",        11833}},
{"55d4491a4bdc2d882f8b456e",        {"MP133 510mm",        17420}},
{"560835c74bdc2dc8488b456f",        {"MP133 510mm rib",        21111}},
{"560836b64bdc2d57468b4567",        {"MP133 540mm rib",        4200}},
{"5608379a4bdc2d26448b4569",        {"MP133 750mm rib",        7680}},
{"5a6b5f868dc32e000a311389",        {"G17",        2980}},
{"5608373c4bdc2dc8488b4570",        {"MP133 710mm",        6123}},
{"5bfd4cc90db834001d23e846",        {"Mosin 200mm",        2100}},
{"560836484bdc2d20478b456e",        {"MP133 540mm",        3900}},
{"55d449444bdc2d962f8b456d",        {"MP133 610mm rib",        5103}},
{"58aeaaa886f7744fc1560f81",        {"MPXSD 165mm",        10097}},
{"588200c224597743990da9ed",        {"MP153 660mm",        7179}},
{"5bfd4cbe0db834001b73449f",        {"Mosin 514mm",        6914}},
{"560836fb4bdc2d773f8b4569",        {"МP133 660mm",        5005}},
{"56d5a1f7d2720bb3418b456a",        {"P226 112mm",        2000}},
{"588200cf2459774414733d55",        {"MP153 710mm",        7481}},
{"560837824bdc2d57468b4568",        {"MP133 750mm",        7062}},
{"560837544bdc2de22e8b456e",        {"MP133 710mm rib",        6958}},
{"560837154bdc2da74d8b4568",        {"MP133 660mm rib",        5501}},
{"55d448594bdc2d8c2f8b4569",        {"MP133 610mm",        4902}},
{"56deec93d2720bec348b4568",        {"MP153 750mm",        8218}},
{"5a787ebcc5856700142fdd98",        {"M870 508mm FS",        16695}},
{"5de65547883dde217541644b",        {"VPO-215 23\"",        50000}},
{"5894a2c386f77427140b8342",        {"MPX 203mm",        85000}},
{"571a26d524597720680fbe8a",        {"TT 116mm",        12000}},
{"5b1fa9ea5acfc40018633c0a",        {"G18C comp",        11785}},
{"5cadc1c6ae9215000f2775a4",        {"M9A3 thr.",        1660}},
{"5df35ea9c41b2312ea3334d8",        {"Orsis long",        3437}},
{"5df35e970b92095fd441e4d2",        {"T-5000M",        6922}},
{"59c63b4486f7747afb151c1c",        {"SD TRR",        3284}},
{"5addbfbb5acfc400194dbcf7",        {"M8",        123824}},
{"5a32aa0cc4a28232996e405f",        {"RM50",        5372}},
{"5dff8db859400025ea5150d4",        {"SVD Low",        20789}},
{"5addbfef5acfc400185c2857",        {"UTG 4p",        134568}},
{"5a27bad7c4a282000b15184b",        {"SR-1MP 4x",        12362}},
{"5926dad986f7741f82604363",        {"MFI mount",        75660}},
{"5c90c3622e221601da359851",        {"B-13V",        9565}},
{"5a37ca54c4a282000d72296a",        {"JP 30mm",        29411}},
{"5c61a40d2e2216001403158d",        {"B-13",        9742}},
{"5a33bab6c4a28200741e22f8",        {"RM35",        13705}},
{"593d1fa786f7746da62d61ac",        {"SKS SOCOM",        11929}},
{"5a1ead28fcdbcb001912fa9f",        {"DLOC-IRD",        55310}},
{"59db7eed86f77461f8380365",        {"TA51",        22460}},
{"5b2389515acfc4771e1be0c0",        {"AR-PEPR 30mm",        31890}},
{"59eb7ebe86f7740b373438ce",        {"6P29M",        43986}},
{"5a7b4900e899ef197b331a2a",        {"UM3",        14574}},
{"5aa66a9be5b5b0214e506e89",        {"NF 34mm",        155986}},
{"5a7ad55551dfba0015068f42",        {"G TS mount",        10430}},
{"5b800ed086f7747baf6e2f9e",        {"AK HEX",        9596}},
{"5a9fc7e6a2750c0032157184",        {"B-3",        13915}},
{"57a3459f245977764a01f703",        {"B-3",        28689}},
{"5addc00b5acfc4001669f144",        {"M14 CASV-14",        7777}},
{"587e08ee245977446b4410cf",        {"OPSKS DT",        6510}},
{"58d39d3d86f77445bb794ae7",        {"AMM",        4398}},
{"5df35eb2b11454561e3923e2",        {"Orsis med.",        3526}},
{"5d024f5cd7ad1a04a067e91a",        {"Patriot K+W",        4781}},
{"591ee00d86f774592f7b841e",        {"Kobra",        6255}},
{"5a789261c5856700186c65d3",        {"MT Clamp",        5444}},
{"5c471c2d2e22164bef5d077f",        {"SVDS LB",        9180}},
{"5c86592b2e2216000e69e77c",        {"KH/F 34mm",        292500}},
{"5a7ad4af51dfba0013379717",        {"G AT base",        8325}},
{"5a27b3d0c4a282000d721ec1",        {"SR-1MP mount",        16691}},
{"5c7d560b2e22160bc12c6139",        {"SS",        7315}},
{"57acb6222459771ec34b5cb0",        {"043-02",        8756}},
{"5addbfd15acfc40015621bde",        {"M14 MSM",        7264}},
{"5bc5a372d4351e44f824d17f",        {"Mosin MNG",        3649}},
{"5b3a08b25acfc4001754880c",        {"P226 Bridge",        7712}},
{"5b31163c5acfc400153b71cb",        {"ROMEO",        4178}},
{"5c7d55f52e221644f31bff6a",        {"LRP",        8154}},
{"5b4736a986f774040571e998",        {"QARS 3.2\"",        19249}},
{"5addbffe5acfc4001714dfac",        {"M14 DCSB",        5377}},
{"5beecbb80db834001d2c465e",        {"RPK-16 rail",        7727}},
{"59e0bed186f774156f04ce84",        {"6 CASV",        16416}},
{"5a78948ec5856700177b1124",        {"M870 XS",        7687}},
{"5addbfe15acfc4001a5fc58b",        {"M14 ARMS#18",        6451}},
{"55d48a634bdc2d8b2f8b456a",        {"SPRM",        120000}},
{"5c064c400db834001d23f468",        {"QD LT101",        5778}},
{"5aa66c72e5b5b00016327c93",        {"NF 34mm RIS",        6296}},
{"58d39b0386f77443380bf13c",        {"AMSH",        5355}},
{"5cde7b43d7f00c000d36b93e",        {"MOD*X rail mount",        14230}},
{"5b3b99265acfc4704b4a1afb",        {"NF 30mm",        24402}},
{"5a27b281c4a28200741e1e52",        {"SR-1MP 1x",        13351}},
{"5b4736b986f77405cb415c10",        {"QARS 4.2\"",        60898}},
{"5b30bc285acfc47a8608615d",        {"MK10 10\"",        22312}},
{"58d2664f86f7747fec5834f6",        {"DPCSM",        7018}},
{"5b3b6dc75acfc47a8773fb1e",        {"Armasight",        9075}},
{"5b7be47f5acfc400170e2dd2",        {"M-LOK 2.5\"",        5742}},
{"5bbdb811d4351e45020113c7",        {"Mosin 3Rail",        11585}},
{"5a33b2c9c4a282000c5a9511",        {"RM33",        10926}},
{"57ffb0062459777a045af529",        {"B-18",        6419}},
{"5a33b652c4a28232996e407c",        {"AC32062",        6185}},
{"5c61627a2e22160012542c55",        {"TOZ106 mount",        7550}},
{"5649a2464bdc2d91118b45a8",        {"MPR45",        10412}},
{"58a5c12e86f7745d585a2b9e",        {"MPX 4\"",        3785}},
{"57c69dd424597774c03b7bbc",        {"30mm Mount",        14364}},
{"5a9d6d13a2750c00164f6b03",        {"SI 6\"",        29232}},
{"5a966ec8a2750c00171b3f36",        {"B&T 3x",        24092}},
{"59e0be5d86f7742d48765bd2",        {"CASV 4\"",        5093}},
{"5c6162682e22160010261a2b",        {"TOZ106 DT",        5109}},
{"57d17e212459775a1179a0f5",        {"25mm ring",        4145}},
{"5bfe7fb30db8340018089fed",        {"133/153 12003",        5238}},
{"5d133067d7ad1a33013f95b4",        {"URX 3 3\"",        19602}},
{"59e0bdb186f774156f04ce82",        {"CASV 2\"",        9714}},
{"5b7be4895acfc400170e2dd5",        {"M-LOK 4.1\"",        24486}},
{"57ee59b42459771c7b045da5",        {"PP91 RIS",        4633}},
{"57ffaea724597779f52b3a4d",        {"B-12",        4502}},
{"55d48ebc4bdc2d8c2f8b456c",        {"Sprut",        4863}},
{"5d7b6bafa4b93652786f4c76",        {"5-7 RMR",        5840}},
{"5ab24ef9e5b5b00fe93c9209",        {"SOCOM16 upper",        6719}},
{"5d0a29ead7ad1a0026013f27",        {"1P59 mount",        7325}},
{"5cc7012ae4a949001252b43e",        {"EFFEN 90",        18355}},
{"5b7be46e5acfc400170e2dcf",        {"Vltor 5\"",        19055}},
{"5bfebc5e0db834001a6694e5",        {"M700 30mm",        8617}},
{"5b30bc165acfc40016387293",        {"MK10 3\"",        10115}},
{"5b800ebc86f774394e230a90",        {"HEX Med",        14594}},
{"5c0102b20db834001d23eebc",        {"RAHG 4\"",        4924}},
{"577d128124597739d65d0e56",        {"FFWB",        5892}},
{"5b7be4575acfc400161d0832",        {"Vltor 2\"",        9722}},
{"58a56f8d86f774651579314c",        {"MPX 2\"",        4706}},
{"5b7be4645acfc400170e2dcc",        {"Vltor 4\"",        6624}},
{"5b3f7bf05acfc433000ecf6b",        {"Kochetov",        3510}},
{"5cc70146e4a949000d73bf6b",        {"P90 side",        4927}},
{"5dff77c759400025ea5150cf",        {"UTG 25mm",        3305}},
{"5c0102aa0db834001b734ba1",        {"RAHG 2\"",        4745}},
{"5cdeaca5d7f00c00b61c4b70",        {"Pro700 mount",        3756}},
{"5bfebc530db834001d23eb65",        {"M700 Multi-slot",        8187}},
{"5a9d6d00a2750c5c985b5305",        {"SI 4\"",        10769}},
{"5cc7015ae4a949001152b4c6",        {"P90 top",        43288}},
{"5de8fbf2b74cd90030650c79",        {"MP9 bottom",        6714}},
{"5c1cdd302e221602b3137250",        {"Compact mount",        19710}},
{"5de6558e9f98ac2bc65950fc",        {"VPO215 rail",        3050}},
{"5b3f7c005acfc4704b4a1de8",        {"PU ring",        1298}},
{"5a9d6d21a2750c00137fa649",        {"TRAX Bridge",        7773}},
{"5d0a29fed7ad1a002769ad08",        {"1P69 mount",        9640}},
{"576a7c512459771e796e0e17",        {"B-8",        6055}},
{"5de8fc0b205ddc616a6bc51b",        {"MP9 side",        5755}},
{"5a7893c1c585673f2b5c374d",        {"MTU-028SG",        5403}},
{"5bfd36290db834001966869a",        {"Mosin sawn-off sniper",        54444}},
{"5df35e59c41b2312ea3334d5",        {"T-5000 body",        24420}},
{"5de910da8b6c4240ba2651b5",        {"MP9",        42683}},
{"5ab372a310e891001717f0d8",        {"S.A.S.S.",        25889}},
{"5b7d63de5acfc400170e2f8d",        {"SA58 SPR",        12879}},
{"5bcf0213d4351e0085327c17",        {"A1",        45000}},
{"5b0e794b5acfc47a877359b2",        {"AK Zhukov-S",        40579}},
{"58889d0c2459775bc215d981",        {"DVL-10",        39833}},
{"5926d40686f7740f152b6b7e",        {"MP5 A3",        15240}},
{"5bd704e7209c4d00d7167c31",        {"A2",        71666}},
{"5addbf175acfc408fb13965b",        {"M1A Archangel",        36333}},
{"5cde739cd7f00c0010373bd3",        {"MOD*X Gen.3",        19258}},
{"5bbde409d4351e003562b036",        {"Mosin pad",        12694}},
{"5947e98b86f774778f1448bc",        {"UBR GEN2",        13524}},
{"5b04473a5acfc40018632f70",        {"UAS AK",        13319}},
{"5cf13123d7f00c1085616a50",        {"Archangel M700",        14707}},
{"5a17fb9dfcdbcbcae6687291",        {"APB",        23677}},
{"5b7d63b75acfc400170e2f8a",        {"SA58/FAL PRS2",        10680}},
{"5df35ddddfc58d14537c2036",        {"T-5000M",        3150}},
{"5d25d0ac8abbc3054f3e61f7",        {"AICS M700",        20357}},
{"5d0236dad7ad1a0940739d29",        {"SKS UAS",        21439}},
{"5cdeac22d7f00c000f26168f",        {"Pro 700",        14198}},
{"56083a334bdc2dc8488b4571",        {"133/153",        6884}},
{"5926d3c686f77410de68ebc8",        {"MP5 A2",        47634}},
{"5c87a07c2e2216001219d4a2",        {"HK E1",        20983}},
{"5bae13bad4351e00320204af",        {"Archangel OPFOR PRS",        16755}},
{"5bfeb32b0db834001a6694d9",        {"Overmolded Ghillie",        14090}},
{"59ecc3dd86f7746dc827481c",        {"PT-3",        24999}},
{"5c471b5d2e221602b21d4e14",        {"SVDS",        7437}},
{"5d44069ca4b9361ebd26fc37",        {"PRS GEN3",        24124}},
{"5b222d405acfc400153af4fe",        {"PT-1",        14892}},
{"58ac1bf086f77420ed183f9f",        {"MPX Pipe",        19578}},
{"5d1c702ad7ad1a632267f429",        {"GLR-17",        37863}},
{"5649b2314bdc2d79388b4576",        {"МЕ4",        83223}},
{"5aaf8e43e5b5b00015693246",        {"SOCOM16",        14681}},
{"5cc700d4e4a949000f0f0f28",        {"P90 DI",        4150}},
{"5a9eb32da2750c00171b3f9c",        {"GLSHOCK",        29723}},
{"5947c73886f7747701588af5",        {"BUS",        10757}},
{"5d120a28d7ad1a1c8962e295",        {"ACE pad",        60389}},
{"5a78813bc5856700186c4abe",        {"M870 SGA",        127762}},
{"5d135e83d7ad1a21b83f42d8",        {"CTR",        20566}},
{"5addc7005acfc4001669f275",        {"M14ALCS",        17972}},
{"5b7d63cf5acfc4001876c8df",        {"SA58 folding",        9047}},
{"5c793fde2e221601da358614",        {"Viper Mod1",        14416}},
{"58d2912286f7744e27117493",        {"MOE RBP",        17723}},
{"5ab626e4d8ce87272e4c6e43",        {"6P21 Sb.5",        75479}},
{"56083be64bdc2d20478b456f",        {"133/153 plastic",        74035}},
{"5addc7ac5acfc400194dbd90",        {"M14ALCS",        15967}},
{"5b0800175acfc400153aebd4",        {"F93 PRO",        21714}},
{"5b7d64555acfc4001876c8e2",        {"SA58 BRS",        12072}},
{"59ecc28286f7746d7a68aa8c",        {"AKS74 PT",        19112}},
{"5d120a10d7ad1a4e1026ba85",        {"ACE SOCOM",        12140}},
{"5abcd472d8ce8700166032ae",        {"6P4N Sb.1-19",        1556}},
{"5bbdb870d4351e00367fb67d",        {"Mosin MonteCarlo",        20320}},
{"5b222d335acfc4771e1be099",        {"AKM/AK74 PT",        10109}},
{"5cde77a9d7f00c000f261009",        {"AB adpt.",        2602}},
{"5a33cae9c4a28232980eb086",        {"PRS GEN2",        10898}},
{"5cf518cfd7f00c065b422214",        {"AKTS AK",        26142}},
{"5b39f8db5acfc40016387a1b",        {"EMOD",        10473}},
{"5afd7ded5acfc40017541f5e",        {"TAPCO Intrafuse",        18491}},
{"5a0c59791526d8dba737bba7",        {"6G15U",        7648}},
{"5c793fb92e221644f31bfb64",        {"Advanced Tube",        103884}},
{"5a33ca0fc4a282000d72292f",        {"A2",        9786}},
{"5cf50fc5d7f00c056c53f83c",        {"AKTS AK74",        10901}},
{"5cdeac42d7f00c000d36ba73",        {"Pro 700",        4699}},
{"5cc700b9e4a949000f0f0f25",        {"P90",        25000}},
{"5c07c9660db834001a66b588",        {"MP5 EndCap",        15345}},
{"5d2f25bc48f03502573e5d85",        {"End Cap",        2500}},
{"5b099bf25acfc4001637e683",        {"SA58 adpt.",        12847}},
{"5beec8c20db834001d2c465c",        {"AK-12",        7299}},
{"5cc700cae4a949035e43ba72",        {"P90 butt",        5383}},
{"5bfe86df0db834001b734685",        {"GLR-16-S",        16441}},
{"56eabf3bd2720b75698b4569",        {"MOE",        21493}},
{"59ff3b6a86f77477562ff5ed",        {"6P4 Sb.1-19",        20660}},
{"5c5db6ee2e221600113fba54",        {"MPX MD CQB",        3750}},
{"591aef7986f774139d495f03",        {"M7A1PDW",        13736}},
{"5ac78eaf5acfc4001926317a",        {"74M/100 PT",        4772}},
{"5c5db6f82e2216003a0fe914",        {"MPX ULSS",        15215}},
{"5894a13e86f7742405482982",        {"MPX telestock",        44000}},
{"5ae30c9a5acfc408fb139a03",        {"SOPMOD",        6712}},
{"5c503af12e221602b177ca02",        {"VPO101",        10774}},
{"5bb20e58d4351e00320205d7",        {"Enhanced Tube",        11876}},
{"587e0531245977466077a0f7",        {"OP-SKS Wood",        22611}},
{"5bb20e70d4351e0035629f8f",        {"Slim Line",        7091}},
{"599851db86f77467372f0a18",        {"PP-19-01",        53851}},
{"5c99f3592e221644fc633070",        {"TOZ106 Mosin",        18851}},
{"5beec8b20db834001961942a",        {"RPK-16 tube",        16425}},
{"5cebec10d7f00c065703d185",        {"PS90",        3350}},
{"5bfd37c80db834001d23e842",        {"Mosin sniper carbine",        14000}},
{"5c0e2ff6d174af02a1659d4a",        {"ADAR wood",        10579}},
{"55d4ae6c4bdc2d8b2f8b456e",        {"M4SS",        4400}},
{"5ae35b315acfc4001714e8b0",        {"M870 LEO",        3923}},
{"5a7880d0c5856700142fdd9d",        {"M870 SPS",        10493}},
{"5b7d645e5acfc400170e2f90",        {"SA58 Hump",        7291}},
{"5a788169c5856700142fdd9e",        {"M870 Raptor",        8952}},
{"59d6514b86f774171a068a08",        {"6P1 Sb.5",        48888}},
{"5bfd384c0db834001a6691d3",        {"Mosin carbine",        9000}},
{"56083cba4bdc2de22e8b456f",        {"133/153 wood",        6574}},
{"59e89d0986f77427600d226e",        {"VPO209",        7895}},
{"5649b0fc4bdc2d17108b4588",        {"6P20 Sb.7",        14010}},
{"5ae096d95acfc400185c2c81",        {"Mosin stock",        25801}},
{"57ade1442459771557167e15",        {"Baskak",        6154}},
{"59e6227d86f77440d64f5dc2",        {"VPO136",        2100}},
{"574dad8024597745964bf05c",        {"56-A-231 Sb.5",        12667}},
{"578395e82459774a0e553c7b",        {"VSS Wood",        7063}},
{"57c450252459772d28133253",        {"VAL",        4969}},
{"5c0faeddd174af02a962601f",        {"ADAR",        4307}},
{"5ac50c185acfc400163398d4",        {"6P34 Sb.15",        5416}},
{"5bfe89510db834001808a127",        {"AGR-870 tube",        7638}},
{"5afd7e095acfc40017541f61",        {"SKS TAPCO",        9727}},
{"5bfd36ad0db834001c38ef66",        {"Mosin sawn-off",        15237}},
{"5de655be4a9f347bc92edb88",        {"VPO-215",        16786}},
{"57dc347d245977596754e7a1",        {"6P26 Sb.5",        6798}},
{"5adf23995acfc400185c2aeb",        {"MC 20-01",        2575}},
{"57616ca52459773c69055192",        {"SOK12 AK",        5383}},
{"5649b1c04bdc2d16268b457c",        {"6P20 Sb.5",        12503}},
{"5649be884bdc2d79388b4577",        {"Colt",        5311}},
{"5bfd35380db83400232fe5cc",        {"Mosin inf. stock",        19086}},
{"5a38ef1fc4a282000b1521f6",        {"TOZ106",        12000}},
{"5947eab886f77475961d96c5",        {"UBR GEN2",        13350}},
{"591af10186f774139d495f0e",        {"M7A1PDW",        20278}},
{"5888961624597754281f93f3",        {"Harris HBR",        13627}},
{"56ea8222d2720b69698b4567",        {"SV98 Bipod",        8509}},
{"5cadd919ae921500126a77f3",        {"M9A3 FS",        460}},
{"5aba62f8d8ce87001943946b",        {"APS FS",        5000}},
{"5cadd940ae9215051e1c2316",        {"M9A3 RS",        6969}},
{"5abcbb20d8ce87001773e258",        {"M14 RS",        10000}},
{"5dfa3d7ac41b2312ea33362a",        {"KAC RS",        11606}},
{"5d3eb4aba4b93650d64e497d",        {"5-7 RS",        19999}},
{"56ea7293d2720b8d4b8b45ba",        {"SM220-239",        3819}},
{"56d5a77ed2720b90418b4568",        {"P226 RS",        7333}},
{"5cadd954ae921500103bb3c2",        {"SM M9",        3600}},
{"5d3eb536a4b9363b1f22f8e2",        {"5-7 FS",        4250}},
{"5894a73486f77426d259076c",        {"MPX FS",        9865}},
{"5894a81786f77427140b8347",        {"MPX RS",        6666}},
{"5de8fb539f98ac2bc659513a",        {"MP9 RS",        15011}},
{"5926d2be86f774134d668e4e",        {"MP5 Drum RS",        9860}},
{"5a7d9122159bd4001438dbf4",        {"G SE RS",        10988}},
{"5c05295e0db834001a66acbb",        {"ACOG Bck-up",        2400}},
{"5aafa49ae5b5b00015042a58",        {".125 Blade",        9888}},
{"5c1780312e221602b66cc189",        {"KAC RS",        7332}},
{"5dfa3d950dee1b22f862eae0",        {"KAC FS",        10232}},
{"5ba26b17d4351e00367f9bdd",        {"MP7 FlipUp RS",        28330}},
{"5bb20e49d4351e3bac1212de",        {"416A5 FlipUp RS",        7366}},
{"5649d9a14bdc2d79388b4580",        {"TT01",        7801}},
{"5c17804b2e2216152006c02f",        {"KAC FS",        8814}},
{"5c503b1c2e221602b21d6e9d",        {"VPO101 RS",        314}},
{"5a71e0fb8dc32e00094b97f2",        {"G ZT RS",        2000}},
{"57838e1b2459774a256959b1",        {"VSS RS",        18422}},
{"5caf16a2ae92152ac412efbc",        {"ASh-12 FS",        5811}},
{"5ae30bad5acfc400185c2dc4",        {"CHandle",        10999}},
{"58272b842459774abc128d50",        {"CSS RSRM",        2400}},
{"5bc09a18d4351e003562b68e",        {"MBUS RS",        6830}},
{"5caf1691ae92152ac412efb9",        {"ASh-12 CH",        4992}},
{"5addba3e5acfc4001669f0ab",        {".062 Blade",        1628}},
{"5c07b36c0db834002a1259e9",        {"P226 TD FS",        1500}},
{"5a7d90eb159bd400165484f1",        {"G SE FS",        9250}},
{"5c07b3850db834002330045b",        {"P226 TD RS",        1400}},
{"5ac733a45acfc400192630e2",        {"6P44 Sb.1-30",        50000}},
{"56083e1b4bdc2dc8488b4572",        {"SV-98 RS",        23000}},
{"5ba26b01d4351e0085325a51",        {"MP7 FlipUp FS",        15555}},
{"5a0ed824fcdbcb0176308b0d",        {"AKMP RS",        470}},
{"5bc09a30d4351e00367fb7c8",        {"MBUS FS",        7025}},
{"57c44e7b2459772d28133248",        {"VAL RS",        5999}},
{"5a7d9104159bd400134c8c21",        {"G TFX FS",        5000}},
{"5a0f096dfcdbcb0176308b15",        {"AKMP FS",        8214}},
{"5a6f58f68dc32e000a311390",        {"Glock FS",        9333}},
{"5a7d912f159bd400165484f3",        {"G TFX RS",        6644}},
{"5c471b7e2e2216152006e46c",        {"SVDS RS",        2600}},
{"5ae099925acfc4001a5fc7b3",        {"Mosin RS",        1500}},
{"55d5f46a4bdc2d1b198b4567",        {"A2 RS",        4500}},
{"5beec9450db83400970084fd",        {"RPK16 RS base",        8000}},
{"5bf3f59f0db834001a6fa060",        {"RPK-16 RS",        9000}},
{"5bfd4c980db834001b73449d",        {"Mosin RS",        800}},
{"5ae099875acfc4001714e593",        {"Mosin FS",        4169}},
{"55d4af3a4bdc2d972f8b456f",        {"LPA2 FS",        8888}},
{"5c471ba12e221602b3137d76",        {"SVDS FS",        10788}},
{"5a0eb980fcdbcb001a3b00a6",        {"AKMB RS",        471}},
{"59e8977386f77415a553c453",        {"VPO209",        22222}},
{"57a9b9ce2459770ee926038d",        {"SOK12 RS",        17037}},
{"5b0bc22d5acfc47a8607f085",        {"SA58 Holland",        4436}},
{"5ac72e475acfc400180ae6fe",        {"6P20 Sb.2",        6503}},
{"5649b0544bdc2d1b2b8b458a",        {"6P20 Sb.2",        9999}},
{"56d5a661d2720bd8418b456b",        {"P226 FS",        3611}},
{"59d650cf86f7741b846413a4",        {"6P1 Sb.2-1",        8200}},
{"574db213245977459a2f3f5d",        {"SKS RS",        14884}},
{"5aba639ed8ce8700182ece67",        {"APB RS",        5000}},
{"5aba637ad8ce87001773e17f",        {"APS RS",        9999}},
{"5a71e0048dc32e000c52ecc8",        {"G ZT FS",        1300}},
{"5a6f5d528dc32e00094b97d9",        {"Glock RS",        604}},
{"599860e986f7743bb57573a6",        {"PP-19-01",        4333}},
{"5da743f586f7744014504f72",        {"USEC",        79118}},
{"5ac4c50d5acfc40019262e87",        {"K1S",        7250}},
{"5a16b672fcdbcb001912fa83",        {"FVisor",        14596}},
{"5e01f37686f774773c6f6c15",        {"EXFIL Tan",        23077}},
{"5e00cdd986f7747473332240",        {"EXFIL Blk.",        25708}},
{"5913651986f774432f15d132",        {"Shestyorka",        7105}},
{"593858c486f774253a24cb52",        {"Pump Back",        5128}},
{"57a349b2245977762b199ec7",        {"Pump Frnt",        3185}},
{"5b43271c5acfc432ff4dce65",        {"Bandana",        5780}},
{"5aa2b87de5b5b00016327c25",        {"BEAR",        3000}},
{"5b40e5e25acfc4001a599bea",        {"BEAR",        6193}},
{"5aa2ba46e5b5b000137b758d",        {"UXPRO",        7532}},
{"5b40e61f5acfc4001a599bec",        {"USEC",        30000}},
{"5aa2a7e8e5b5b00016327c16",        {"USEC",        17975}},
{"5df8a6a186f77412640e2e80",        {"Ball Red",        7000}},
{"5df8a72c86f77412640e2e83",        {"Ball Silver",        10000}},
{"5df8a77486f77412672a1e3f",        {"Ball Violet",        20000}},
{"5d1340bdd7ad1a0e8d245aab",        {"GEN M3",        10624}},
{"5d1340cad7ad1a0b0b249869",        {"GEN M3",        11062}},
{"5de653abf76fdc1ce94a5a2a",        {"VPO215",        4496}},
{"5c793fc42e221600114ca25d",        {"Advanced Tube",        101066}},
{"5c18b90d2e2216152142466b",        {"MBUS FS FDE",        7028}},
{"5c18b9192e2216398b5a8104",        {"MBUS RS FDE",        6306}},
{"5d124c1ad7ad1a12227c53a7",        {"KAC stopper",        5386}},
{"5d124c01d7ad1a115c7d59fb",        {"KAC short",        7184}},
{"5dfe14f30b92095fd441edaf",        {"ETMI-019",        5958}},
{"5b8403a086f7747ff856f4e2",        {"HEX Med",        10760}},
{"5d4aaa54a4b9365392071170",        {"AKM-L",        14874}},
{"5b80242286f77429445e0b47",        {"AK HEX",        23360}},
{"5d4aaa73a4b9365392071175",        {"AKM-L",        13807}},
{"5d4aab30a4b9365435358c55",        {"VS Combo",        22847}},
{"5b7be1ca5acfc400170e2d2f",        {"SA58 4Rail full",        11235}},
{"5a8036fb86f77407252ddc02",        {"Shoreline",        18207}},
{"574eb85c245977648157eec3",        {"Factory",        13863}},
{"5798a2832459774b53341029",        {"Customs",        25428}},
{"5900b89686f7744e704a8747",        {"Woods",        10380}},
{"5a80a29286f7742b25692012",        {"Resort",        8100}},
{"5be4038986f774527d3fae60",        {"Interchange",        9068}},
{"5b3f3af486f774679e752c1f",        {"Armband",        557}},
{"5b3f3b0186f774021a2afef7",        {"Armband",        547}},
{"5b3f3ade86f7746b6b790d8e",        {"Armband",        991}},
{"5b3f16c486f7747c327f55f7",        {"Armband",        2561}},
{"5b3f3b0e86f7746752107cda",        {"Armband",        535}},
{"5c0919b50db834001b7ce3b9",        {"Maska-1Shch",        35301}},
{"544fb5454bdc2df8738b456a",        {"MultiTool",        26851}},
{"5b4391a586f7745321235ab2",        {"Camera",        39305}},
{"5ac78a9b86f7741cca0bbd8d",        {"Jammer",        24037}},
{"5991b51486f77447b112d44f",        {"MS2000",        16889}},
{"5656eb674bdc2d35148b457c",        {"40mm",        9800}},
{"59148f8286f7741b951ea113",        {"WSafe",        6403}},
{"57372c21245977670937c6c2",        {"BT gs",        30481}},
{"57372d1b2459776862260581",        {"PP gs",        1000}},
{"57372deb245977685d4159b3",        {"PRS gs",        5224}},
{"57372f7d245977699b53e301",        {"US gs",        17667}},
{"573722e82459776104581c21",        {"BZhT gzh",        36900}},
{"5737250c2459776125652acc",        {"PBM gzh",        10105}},
{"5737256c2459776125652acd",        {"PstM gzh",        26333}},
{"573725b0245977612125bae2",        {"PPe gzh",        7000}},
{"573727c624597765cc785b5b",        {"Pst gzh",        12000}},
{"573728cc24597765cc785b5d",        {"SP7 gzh",        18500}},
{"573728f324597765e5728561",        {"SP8 gzh",        13999}},
{"5c11279ad174af029d64592b",        {"Warmageddon",        1200}},
{"5c1262a286f7743f8a69aab2",        {"PPBS gs 30",        40416}},
{"57372db0245977685d4159b2",        {"PP gs",        26000}},
{"57372e4a24597768553071c2",        {"PRS gs",        6356}},
{"57372ebf2459776862260582",        {"PS gs",        9800}},
{"5c1127d0d174af29be75cf68",        {"12/70 RIP",        2243}},
{"5649ed104bdc2d3d1c8b458b",        {"7.62x39 PS 30",        29375}},
{"560d75f54bdc2da74d8b4573",        {"SNB 7.62x54R 30",        28145}},
{"5c1260dc86f7746b106e8748",        {"BP gs 8",        7000}},
{"5c12619186f7743f871c8a32",        {"SPP 8",        9333}},
{"58d2946c86f7744e271174b5",        {"MOE FG",        14200}},
{"58d2946386f774496974c37e",        {"MOE FDE",        9537}},
{"58d2947e86f77447aa070d53",        {"MOE SG",        13864}},
{"58d2947686f774485c6a1ee5",        {"MOE OD",        10538}},
{"5e42c83786f7742a021fdf3c",        {"#21WS",        1089264}},
{"5e42c81886f7742a01529f57",        {"#11SR",        2177848}},
{"5739d41224597779c3645501",        {"Pst gzh",        2500}},
{"5447ac644bdc2d6c208b4567",        {"M855",        1650}},
{"5e2af55f86f7746d4159f07c",        {"Grenades",        319726}},
{"5e2af4d286f7746d4159f07a",        {"Aramid",        6957}},
{"5e2af4a786f7746d3f3c3400",        {"Ripstop",        10262}},
{"5e2af47786f7746d404f3aaa",        {"Fleece",        8343}},
{"5e2af41e86f774755a234b67",        {"Cordura",        9745}},
{"5e2af37686f774755a234b65",        {"SurvL",        13088}},
{"5e2af2bc86f7746d3f3c33fc",        {"HMatches",        8822}},
{"5e2af29386f7746d4159f077",        {"KEK",        16808}},
{"5e2af22086f7746d3f3c33fa",        {"Poxeram",        11848}},
{"5e2af00086f7746d3f3c33f7",        {"DCleaner",        18391}},
{"5e2af02c86f7746d420957d4",        {"Chlorine",        18354}},
{"5e2aef7986f7746d3f3c33f5",        {"Repellent",        7253}},
{"5e2aee0a86f774755a234b62",        {"Cyclon",        54562}},
{"5e2aedd986f7746d404f3aa4",        {"GreenBat",        24956}},
{"5e2af51086f7746d3f3c3402",        {"Fuze",        8265}},
{"5e32f56fcb6d5863cc5e5ee4",        {"VOG-17",        9636}},
{"5e340dcdcb6d5863cc5e5efb",        {"VOG-25",        15587}},
{"5e4abb5086f77406975c9342",        {"Slick",        232264}},
{"5e4abc6786f77406812bd572",        {"SFMP",        109270}},
{"5e4d34ca86f774264f758330",        {"Razor",        31793}},
{"5e4bfc1586f774264f7582d3",        {"TC 800",        36988}},
{"5e4ac41886f77406a511c9a8",        {"CPC MOD2",        200286}},
{"5e4abc1f86f774069619fbaa",        {"Bank Robber",        13000}},
{"5e4abfed86f77406a2713cf7",        {"Tarzan",        14734}},
{"5e54f79686f7744022011103",        {"Plague mask",        58013}},
{"5e569a132642e66b0b68015c",        {"DRG L-1",        5928}},
{"5e42c71586f7747f245e1343",        {"ULTRA med.",        2556597}},
{"5e54f62086f774219b0f1937",        {"Raven",        30240}},
{"5e54f76986f7740366043752",        {"Shroud",        26802}},
{"5696686a4bdc2da3298b456a",        {"USD",        127}},
{"569668774bdc2da2298b4568",        {"EUR",        148}},
{"5e54f6af86f7742199090bf3",        {"DrLupo's",        32741}},
{"5e71f6be86f77429f2683c44",        {"Rivals",        24000}},
{"5e71fad086f77422443d4604",        {"Rivals",        32000}},
{"5e71f70186f77429ee09f183",        {"Rivals",        25600}},
{"5ea03f7400685063ec28bfa8",        {"PPSh-41",        15475}},
{"5e81c3cbac2bb513793cdc75",        {"M1911A1",        9482}},
{"5ea02bb600685063ec28bfa1",        {"PPSh-41 10.6\"",        20000}},
{"5e81c519cb2b95385c177551",        {"1911A1 .45",        9785}},
{"5ea034eb5aad6446a939737b",        {"PPSh",        3907}},
{"5e81c4ca763d9f754677befa",        {"1911",        9262}},
{"5ea034f65aad6446a939737e",        {"PPSh drum",        28817}},
{"5ea03e5009aa976f2e7a514b",        {"PPSh-41",        10352}},
{"5e81edc13397a21db957f6a1",        {"1911A1 slide",        15986}},
{"5ea03e9400685063ec28bfa4",        {"PPSh-41",        2120}},
{"5e81c6bf763d9f754677beff",        {"1911A1",        18210}},
{"5e81c539cb2b95385c177553",        {"1911A1 SS",        10000}},
{"5e81c550763d9f754677befd",        {"1911A1 Ham.",        4747}},
{"5e81c6a2ac2bb513793cdc7f",        {"1911A1 Trig.",        450}},
{"5e81ee213397a21db957f6a6",        {"1911A1 FS",        502}},
{"5e81ee4dcb2b95385c177582",        {"1911A1 RS",        604}},
{"5e9dacf986f774054d6b89f4",        {"Defender-2",        180046}},
{"5ea05cf85ad9772e6624305d",        {"TK FAST MT",        13809}},
{"5ea058e01dbce517f324b3e2",        {"TK Heavy Trooper",        67776}},
{"5e9dcf5986f7746c417435b3",        {"Day Pack",        18860}},
{"5e9db13186f7742f845ee9d3",        {"LBCR",        33930}},
{"5c5db63a2e2216000f1b284a",        {"MPX Midwest 14\"",        9477}},
{"5e208b9842457a4a7a33d074",        {"DTKP",        29187}},
{"57372ac324597767001bc261",        {"BP gs",        1000}},
{"57372c89245977685d4159b1",        {"BT gs",        46667}},
{"5c1127bdd174af44217ab8b9",        {"RIP 20",        7000}},
{"5857a8b324597729ab0a0e7d",        {"Beta",        750000}},
{"5ede7b0c6d23e5473e6e8c66",        {"RB-RLSA",        75643}},
{"5ede7a8229445733cb4c18e2",        {"RB-PKPM mark.",        244750}},
{"5e81f423763d9f754677bf2e",        {"FMJ",        186}},
{"5ea2a8e200685063ec28c05a",        {"RIP",        481}},
{"5ea17bbc09aa976f2e7a51cd",        {"RC2",        28241}},
{"5e5699df2161e06ac158df6f",        {"XRS-DRG",        11860}},
{"5ea16acdfadf1d18c87b0784",        {"SMR MK16 9.5\"",        10950}},
{"5ea16ada09aa976f2e7a51be",        {"SMR MK16 13.5\"",        16025}},
{"5e56991336989c75ab4f03f6",        {"SVD MHG",        17280}},
{"5b363dea5acfc4771e1c5e7e",        {"12ga adpt.",        5485}},
{"5e569a2e56edd02abe09f280",        {"XD RGL",        8570}},
{"5ea16d4d5aad6446a939753d",        {"ACH",        12164}},
{"5d44334ba4b9362b346d1948",        {"Raptor Grey",        21169}},
{"5cbda9f4ae9215000e5b9bfc",        {"6P20 Sb.9 Plum",        10793}},
{"5d00f63bd7ad1a59283b1c1e",        {"AR15 Viper",        11178}},
{"5e2192a498a36665e8337386",        {"AK MG-47",        12590}},
{"5e217ba4c1434648c13568cd",        {"Kocherga",        13612}},
{"5d4406a8a4b9361e4f6eb8b7",        {"PRS GEN3",        19358}},
{"5cbdb1b0ae9215000d50e105",        {"6P20 Sb.7 Plum",        16969}},
{"5d135ecbd7ad1a21c176542e",        {"CTR",        17111}},
{"5b84038986f774774913b0c1",        {"HEX",        8337}},
{"5e569a0156edd02abe09f27d",        {"SVD mod. rail",        10917}},
{"5ea172e498dacb342978818e",        {"FH556RC",        13198}},
{"5e21ca18e4d47f0da15e77dd",        {"CNC War.",        1675}},
{"5ea18c84ecf1982c7712d9a2",        {"Bastion plate",        81997}},
{"5ea17ca01412a1425304d1c0",        {"Bastion",        58802}},
{"5e0090f7e9dc277128008b93",        {"MP9 Upper",        80000}},
{"5d124c0ed7ad1a10d168dd9b",        {"KAC long",        6643}},
{"5e81ebcd8e146c7080625e15",        {"FN40GL",        110000}},
{"5ed51652f6c34d2cc26336a1",        {"M.U.L.E.",        65841}},
{"5ed5166ad380ab312177c100",        {"Obdolbos",        39876}},
{"5ed515ece452db0eb56fc028",        {"P22",        31000}},
{"5ed515e03a40a50460332579",        {"L1",        22417}},
{"5ed515c8d380ab312177c0fa",        {"3-(b-TG)",        22023}},
{"5ed515f6915ec335206e4152",        {"AHF1-M",        21500}},
{"5ed5160a87bb8443d10680b5",        {"Meldonin",        40430}},
{"5efb0cabfb3e451d70735af5",        {"AP",        933}},
{"5efb0fc6aeb21837e749c801",        {"HS",        318}},
{"5efb0d4f4bc50b58e81710f3",        {"LM",        120}},
{"5f0596629e22f464da6bbdd9",        {"AP-M",        587}},
{"5ede474b0c226a66f5402622",        {"M381",        19440}},
{"5ede475b549eed7c6d5c18fb",        {"M386",        3777}},
{"5ede4739e0350d05467f73e8",        {"M406",        4351}},
{"5f0c892565703e5c461894e9",        {"M433",        6123}},
{"5ede47405b097655935d7d16",        {"M441",        20569}},
{"5ede475339ee016e8c534742",        {"M576",        1517}},
{"5efb0c1bd79ff02a1f5e68d9",        {"M993",        1677}},
{"5efb0da7a29a85116f6ea05f",        {"PBP gzh",        1331}},
{"5efb0e16aeb21837e749c7ff",        {"QuakeMaker",        433}},
{"5eff09cd30a7dc22fd1ddfed",        {"E110 San Tape",        431874}},
{"5efde6b4f5448336730dbd61",        {"Keycard",        151958}},
{"5e997f0b86f7741ac73993e2",        {"Sanitar bag",        28023}},
{"57372bd3245977670b7cd243",        {"BS gs",        24250}},
{"5857a8bc2459772bad15db29",        {"Gamma",        1850000}},
{"544a11ac4bdc2d470e8b456a",        {"Alpha",        360000}},
{"59db794186f77448bc595262",        {"Epsilon",        1100000}},
{"5c093ca986f7740a1867ab12",        {"Kappa",        4900000}},
{"5648b62b4bdc2d9d488b4585",        {"GP-34",        50900}},
{"5f5e45cc5021ce62144be7aa",        {"LK 3F",        9734}},
{"5f5e467b0bc58666c37e7821",        {"F5 Switchblade",        45358}},
{"5f5e46b96bdad616ad46d613",        {"F4 Terminator",        78319}},
{"5f5f41f56760b4138443b352",        {"Thunderbolt",        18688}},
{"5f2a9575926fd9352339381f",        {"RFB",        0}},
{"5f36a0e5fbf956000b716b65",        {"M45A1",        10576}},
{"5e870397991fd70db46995c8",        {"590A1",        17818}},
{"5e848cc2988a8701445df1e8",        {"KS-23M",        49640}},
{"5f4f9eb969cdc30ff33f09db",        {"Compass",        27874}},
{"5e8f3423fd7471236e6e3b64",        {"Kvass",        10698}},
{"5f5f41476bdad616ad46d631",        {"Korund-VM",        125139}},
{"5f60c74e3b85f6263c145586",        {"Rys-T",        198327}},
{"5f60b34a41e30a4ab12a6947",        {"Caiman",        91060}},
{"5d70e500a4b9364de70d38ce",        {"VOG-30",        980}},
{"5e85aa1a988a8701445df1f5",        {"Barrikada",        839}},
{"5e85a9a6eacf8c039e4e2ac1",        {"Shrap-10",        369}},
{"5f647f31b6238e5dd066e196",        {"Shrapnel-25",        1057}},
{"5e85a9f4add9fe03027d9bf1",        {"Zvezda",        20373}},
{"5e831507ea0a7c419c2f9bd9",        {"Esmarch",        1930}},
{"5e8488fa988a8701445df1e4",        {"Hemostat",        10703}},
{"5f63407e1b231926f2329f15",        {"R43 VPO101",        34668}},
{"5f60cd6cf2bcbb675b00dac6",        {"XCEL",        34979}},
{"5f60b85bbdb8e27dee3dc985",        {"Applique",        37371}},
{"5f60bf4558eff926626a60f2",        {"FAV",        20385}},
{"5f60c076f2bcbb675b00dac2",        {"Mandible",        40583}},
{"5f60c85b58eff926626a60f7",        {"Rys-T",        48464}},
{"5f6331e097199b7db2128dc2",        {"X47",        22546}},
{"55f84c3c4bdc2d5f408b4576",        {"RIS II 9.5 FDE",        15557}},
{"5efaf417aeb21837e749c7f2",        {"B-30+B-31S",        29603}},
{"5f3e7823ddc4f03b010e2045",        {"M45A1 slide",        100000}},
{"5f60e6403b85f6263c14558c",        {"Beret",        10375}},
{"5f60e7788adaa7100c3adb49",        {"Beret",        10644}},
{"5f60e784f2bcbb675b00dac7",        {"Beret",        8378}},
{"5dcbd6b46ec07c0c4347a564",        {"MDR Black",        40805}},
{"5eea21647547d6330471b3c9",        {"MOE M590",        9390}},
{"5e848d51e4dbc5266a4ec63b",        {"KS-23M",        5651}},
{"5f2aa47a200e2c0ee46efa71",        {"RFB",        9429}},
{"5f63418ef5750b524b45f116",        {"Bravo-18",        14286}},
{"5e87076ce2db31558c75a11d",        {"Speedfeed",        16311}},
{"5f6336bbda967c74a42e9932",        {"LCH-7 12.5\"",        27076}},
{"5f745ee30acaeb0d490d8c5b",        {"Veritas",        34129}},
{"5f6340d3ca442212f4047eb2",        {"TD",        21960}},
{"5f633f68f5750b524b45f112",        {"RRD-4C",        50424}},
{"5f633f791b231926f2329f13",        {"RRD-4C",        61674}},
{"5f2aa4559b44de6b1b4e68d1",        {"RFB",        6000}},
{"5ef61964ec7f42238c31e0c1",        {"AO MB",        7482}},
{"5f6339d53ada5942720e2dc3",        {"CRD 556",        11332}},
{"5f6372e2865db925d54f3869",        {"FF CQB 556",        10086}},
{"5d270b3c8abbc3105335cfb8",        {"M700 cap",        500}},
{"5f2aa43ba9b91d26f20ae6d2",        {"RFB spacer",        14968}},
{"5f2aa4464b50c14bcf07acdb",        {"RFB cap",        9333}},
{"5e8708d4ae379e67d22e0102",        {"590 GR FS",        13600}},
{"5e87114fe2db31558c75a120",        {"GR RS",        19999}},
{"5f3e78a7fbf956000b716b8e",        {"Lomount FS",        750}},
{"5f3e7897ddc4f03b010e204a",        {"Lomount RS",        10000}},
{"5ef3553c43cb350a955a7ccb",        {"Wilson Ext.",        4021}},
{"5ef35f46382a846010715a96",        {"HEX ham.",        12281}},
{"5ef35d2ac64c5d0dfc0571b0",        {"1911A1 ham.",        4369}},
{"5ef35bc243cb350a955a7ccd",        {"US Ham.",        14138}},
{"5ef32e4d1c1fd62aea6a150d",        {"TrikTrig",        10225}},
{"5f3e777688ca2d00ad199d25",        {"M45A1 SLock",        500}},
{"5f3e76d86cda304dcc634054",        {"M45A1 Ham.",        500}},
{"5f3e772a670e2a7b01739a52",        {"M45A1 Trig.",        550}},
{"5f633ff5c444ce7e3c30a006",        {"Avalanche",        32174}},
{"56deee15d2720bee328b4567",        {"МP153x4",        5000}},
{"5cbdaf89ae9215000e5b9c94",        {"6L23 Plum",        2752}},
{"5f647d9f8499b57dc40ddb93",        {"KS-23Mx3",        8481}},
{"59fafc9386f774067d462453",        {"AK30 FDE",        22440}},
{"5d1340b3d7ad1a0b52682ed7",        {"GEN M3",        8897}},
{"5e21a3c67e40bd02257a008a",        {"GEN M3",        18833}},
{"5e87080c81c4ed43e83cefda",        {"590A1x8",        24148}},
{"5f3e77b26cda304dcc634057",        {"M45A1",        5497}},
{"5cffa483d7ad1a049e54ef1c",        {"ammo belt",        1030}},
{"5ef3448ab37dfd6af863525c",        {"Mec-Gar",        18291}},
{"5eeb2ff5ea4f8b73c827350b",        {"M590 rail",        20915}},
{"5a398b75c4a282000a51a266",        {"PRA",        25976}},
{"5a398ab9c4a282000c5a9842",        {"SCRA",        26793}},
{"5f2aa49f9b44de6b1b4e68d4",        {"RFB scope mount",        9448}},
{"5ef5d994dfbc9f3c660ded95",        {"Weig-a-tinny",        2900}},
{"5ef369b08cef260c0642acaf",        {"TGM",        2300}},
{"5f2aa493cd375f14e15eea72",        {"RFB HG rail",        7944}},
{"5eea217fc64c5d0dfc05712a",        {"SGA M590",        9834}},
{"5e848dc4e4dbc5266a4ec63d",        {"KS-23M steel",        11700}},
{"5e848db4681bea2ada00daa9",        {"KS23 wood",        12749}},
{"5e87116b81c4ed43e83cefdd",        {"M590A1",        26049}},
{"5ef1ba28c64c5d0dfc0571a5",        {"MT Crosshair",        21067}},
{"5ef1b9f0c64c5d0dfc0571a1",        {"M590 LEO",        6292}},
{"5f63405df5750b524b45f114",        {"VPO101 SVD style",        24472}},
{"5e848d1c264f7c180b5e35a9",        {"KS23 510mm",        21211}},
{"5e848d2eea0a7c419c2f9bfd",        {"KS23 700mm",        14548}},
{"5f2aa46b878ef416f538b567",        {"RFB 18\"",        50581}},
{"5e87071478f43e51ca2de5e1",        {"M590 20\"",        45000}},
{"5f3e77f59103d430b93f94c1",        {"M1911A1 .45",        14916}},
{"5f3e7801153b8571434a924c",        {"1911A1 NM",        41389}},
{"545cdb794bdc2d3a198b456a",        {"6B43 6A",        324736}},
{"5d1b371186f774253763a656",        {"Fuel",        101305}},
{"5f6341043ada5942720e2dc5",        {"Scorpius",        20751}},
{"57c9a89124597704ee6faec1",        {"P226 FDE",        1247}},
{"5ef366938cef260c0642acad",        {"ALG#423",        2900}},
{"5e848d99865c0f329958c83b",        {"KS23M",        9720}},
{"5f3e778efcd9b651187d7201",        {"M45A1",        1200}},
{"5c0e655586f774045612eeb2",        {"Trooper",        82057}},
{"5d43021ca4b9362eab4b5e25",        {"TX-15 DML",        67569}},
{"5c07c60e0db834002330051f",        {"ADAR 2-15",        19503}},
{"5b0bbe4e5acfc40dc528a72d",        {"SA-58",        32716}},
{"5c488a752e221602b412af63",        {"MDR",        50585}},
{"5dcbd56fdbd3d91b3e5468d5",        {"MDR",        91753}},
{"5447a9cd4bdc2dbd208b4567",        {"M4A1",        62343}},
{"5f2a9575926fd9352339381f",        {"RFB",        44996}},
{"5fc3f2d5900b1d5091531e57",        {"Vector 9x19",        55791}},
{"5fb64bc92b1b027b1f50bcf2",        {"Vector .45ACP",        66579}},
{"5fc3e272f8b6a877a729eac5",        {"UMP 45",        25944}},
{"5fd4c4fa16cac650092f6771",        {"IDEA Rig",        9599}},
{"5fd4c5477a8d854fa0105061",        {"Security",        8443}},
{"5fd4c60f875c30179f5d04c2",        {"BSS-MK1",        24099}},
{"5fbcc1d9016cce60e8341ab3",        {"SIG MCX .300 BLK",        49625}},
{"5fc22d7c187fea44d52eda44",        {"Mk-18",        105123}},
{"5fbe3ffdf8b6a877a729ea82",        {"BCP FMJ",        214}},
{"5fd20ff893a8961fc660a954",        {"AP",        714}},
{"5fc382a9d724d907e2077dab",        {"AP",        9662}},
{"5fc275cf85fd526b824a571a",        {"FMJ",        3007}},
{"5fc382c1016cce60e8341b20",        {"UPZ",        511}},
{"5fc382b6d6fa9c00c571bbc3",        {"TAC-X",        598}},
{"5fd4c474dd870108a754b241",        {"Hexgrid",        209750}},
{"5fc4b9b17283c4046c5814d7",        {"Omega 45K",        25627}},
{"5fbe7618d6fa9c00c571bb6c",        {"SRD762",        54543}},
{"5fbe760793164a5b6278efc8",        {"SRD762-QD",        65512}},
{"5fc0fa957283c4046c58147e",        {"MCX RS",        3400}},
{"5fc64ea372b0dd78d51159dc",        {"Knife",        22625}},
{"5fca138c2a7b221b2852a5c6",        {"xTG-12",        39084}},
{"5fca13ca637ee0341a484f46",        {"SJ9 TGLabs",        500000}},
{"5fce0cf655375d18a253eff0",        {"RVG FDE",        28444}},
{"5fc0f9b5d724d907e2077d82",        {"MVF001 A3",        10210}},
{"5fc0f9cbd6fa9c00c571bb90",        {"SSVFK",        9315}},
{"5fbc210bf24b94483f726481",        {"MCX block",        37444}},
{"5fc2360f900b1d5091531e19",        {"Mk18 block",        82666}},
{"5fbcbcf593164a5b6278efb2",        {"3-pr 762",        8623}},
{"5fbcbd02900b1d5091531dd3",        {"Micro 762",        9153}},
{"5fb65424956329274326f316",        {"Vector .45",        7250}},
{"5fc23636016cce60e8341b05",        {"AC-858",        12192}},
{"5fbbc3324e8a554c40648348",        {"Vector 9x19",        5212}},
{"5fbcbd10ab884124df0cd563",        {"TPB 762",        58502}},
{"5fbc22ccf24b94483f726483",        {"T-LOK",        67778}},
{"5fbbc34106bde7524f03cbe9",        {"Vector cap",        3412}},
{"5fc4b992187fea44d52edaa9",        {"DT Omega",        8961}},
{"5fc4b97bab884124df0cd5e3",        {"Omega piston",        6375}},
{"5fb6548dd1409e5ca04b54f9",        {"Vector cap",        6500}},
{"5fc0fa362770a0045c59c677",        {"MCX FS",        8065}},
{"5fb6567747ce63734e3fa1dc",        {"Defiance FS",        10315}},
{"5fb6564947ce63734e3fa1da",        {"Defiance RS",        9640}},
{"5fbcc640016cce60e8341acc",        {"MCX",        20000}},
{"5fb651dc85f90547f674b6f4",        {"G30 MagEx",        38592}},
{"5fb651b52b1b027b1f50bcff",        {"Glock .45",        7445}},
{"5fc3e466187fea44d52eda90",        {"UMP 45",        14291}},
{"5fc23426900b1d5091531e15",        {"Mk-18",        11914}},
{"5fbb976df9986c4cff3fe5f2",        {"Vector Bottom",        5751}},
{"5fc53954f8b6a877a729eaeb",        {"UMP rail bott",        3312}},
{"5fce0f9b55375d18a253eff2",        {"Vector side",        4522}},
{"5fbb978207e8a97d1f0902d3",        {"Mk.5 Modular",        4474}},
{"5fc5396e900b1d5091531e72",        {"UMP side",        3612}},
{"5fc2369685fd526b824a5713",        {"Precision",        19176}},
{"5fc3e4ee7283c4046c5814af",        {"UMP",        6532}},
{"5fb655b748c711690e3a8d5a",        {"Vector NFA",        7286}},
{"5fb655a72b1b027b1f50bd06",        {"Vector PSA",        4806}},
{"5fce16961f152d4312622bc9",        {"DS150 FDE",        9559}},
{"5fbcc437d724d907e2077d5c",        {"MCX thin",        5571}},
{"5fbbaa86f9986c4cff3fe5f6",        {"DS150",        12697}},
{"5fb6558ad6f0b2136f2d7eb7",        {"Vector fold.",        6538}},
{"5fbcc429900b1d5091531dd7",        {"MCX telestock",        7128}},
{"5fbbfabed5cb881a7363194e",        {"MCX 171mm",        10189}},
{"5fbbfacda56d053a3543f799",        {"MCX 229mm",        15825}},
{"5fc23678ab884124df0cd590",        {"Mk-18 24\"",        68385}},
{"5fbbc366ca32ed67276c1557",        {"Vector 9x19 5\"",        10887}},
{"5fb653962b1b027b1f50bd03",        {"Vector .45 6\"",        22358}},
{"5fc3e4a27283c4046c5814ab",        {"UMP-45 8\"",        8536}},
{"5fb65363d1409e5ca04b54f5",        {"Vector .45 5\"",        8311}},
{"5fbbc383d5cb881a7363194a",        {"Vector 9x19 6\"",        13272}},
{"5fbc227aa56d053a3543f79e",        {"MCX 12\"",        12864}},
{"5fc235db2770a0045c59c683",        {"Mk-18 18\"",        25518}},
{"5fbc226eca32ed67276c155d",        {"MCX 8\"",        6078}},
{"5fbcbd6c187fea44d52eda14",        {"MCX",        9275}},
{"5fbcc3e4d6fa9c00c571bb58",        {"MCX GEN1",        40000}},
{"5fc278107283c4046c581489",        {"Mk-18 Upper",        47070}},
{"5fd8d28367cb5e077335170f",        {"Smoke",        27369}},
{"57372f5c24597769917c0131",        {"T gs",        1000}},
{"573724b42459776125652ac2",        {"P gzh",        1000}},
{"5737273924597765dd374461",        {"PSO gzh",        1000}},
{"5737266524597761006c6a8c",        {"PRS gs",        1000}},
{"5737280e24597765cc785b5c",        {"PSV",        1000}},
{"5737287724597765e1625ae2",        {"RG028 gzh",        1000}},
{"57372e73245977685d4159b4",        {"PS gs",        1000}},
{"5737260b24597761224311f2",        {"PPT gzh",        1000}},
{"5737300424597769942d5a01",        {"US gs",        1000}},
{"5737330a2459776af32363a1",        {"FMJ",        1000}},
{"5737339e2459776af261abeb",        {"HP",        1000}},
{"57372ee1245977685d4159b5",        {"T gs",        1000}},
{"573733c72459776b0b7b51b0",        {"SP",        1000}},
{"5737292724597765e5728562",        {"BP gs",        100000}},
{"57372b832459776701014e41",        {"BS gs",        1000}},
{"57372a7f24597766fe0de0c1",        {"BP gs",        43000}},
{"57372bad245977670b7cd242",        {"BS gs",        1000}},
{"57372f2824597769a270a191",        {"T gs",        1000}},
{"57372c56245977685e584582",        {"BT gs",        26600}},
{"57372e1924597768553071c1",        {"PRS gs",        10000}},
{"573726d824597765d96be361",        {"PS gs PPO",        1000}},
{"57372d4c245977685a3da2a1",        {"PP gs",        1000}},
{"57372e94245977685648d3e1",        {"PS gs",        1000}},
{"57372fc52459776998772ca1",        {"US gs",        1000}},
{"5f9949d869e2777a0e779ba5",        {"Rivals",        20000}},
{"5f99418230835532b445e954",        {"Rivals",        20000}},
{"5f994730c91ed922dd355de3",        {"Rivals",        20000}},
{"5449016a4bdc2d6f028b456f",        {"RUB",        0}},
{"5d1b36a186f7742523398433",        {"Fuel",        32250}},
{"5ab8e4ed86f7742d8e50c7fa",        {"MF-UN",        38274}},
{"5aa7e373e5b5b000137b76f0",        {"Altyn",        39024}},
{"5ab8e79e86f7742d8b372e78",        {"GZHEL-K",        109372}},
{"60391b0fb847c71012789415",        {"TP-200",        21651}},
{"60391a8b3364dc22b04d0ce5",        {"Thermite",        57133}},
{"60391afc25aff57af81f7085",        {"Ratchet",        79263}},
{"60337f5dce399e10262255d1",        {"STM9 MB",        3329}},
{"602a97060ddce744014caf6f",        {"PL15 supp.",        16961}},
{"6034d2d697633951dc245ea6",        {"G2 Gunslinger DE",        47215}},
{"6038d614d10cbf667352dd44",        {"Takedown",        31523}},
{"6034d103ca006d2dca39b3f0",        {"Takedown",        33819}},
{"603648ff5a45383c122086ac",        {"Azimut",        21764}},
{"6034d0230ca681766b6a0fb5",        {"CSA",        13731}},
{"6034cf5fffd42c541047f72e",        {"Umka",        15681}},
{"6040dd4ddcf9592f401632d2",        {"Azimut",        21715}},
{"602a9740da11d6478d5a06dc",        {"PL-15",        16991}},
{"60339954d62c9b14ed777c06",        {"STM-9",        20337}},
{"6038b4ca92ec1c3103795a0d",        {"Slick",        235371}},
{"6038b4b292ec1c3103795a0b",        {"Slick",        233528}},
{"6033fa48ffd42c541047f728",        {"M32",        17970}},
{"60098af40accd37ef2175f27",        {"CAT",        2175}},
{"60098ad7c2240c0fe85c570a",        {"AFAK",        24555}},
{"60098b1705871270cd5352a1",        {"EWR",        12333}},
{"601948682627df266209af05",        {"Taiga-1",        5988889}},
{"60363c0c92ec1c31037959f5",        {"GP-7",        8647}},
{"603618feffd42c541047f771",        {"Cap",        9534}},
{"603619720ca681766b6a0fc4",        {"Cap",        8758}},
{"6040de02647ad86262233012",        {"Cap",        23023}},
{"60361a7497633951dc245eb4",        {"Cap",        2668}},
{"60361b0b5a45383c122086a1",        {"Cap",        4347}},
{"60361b5a9a15b10d96792291",        {"Cap",        3704}},
{"603409c80ca681766b6a0fb2",        {"Condor",        17375}},
{"60194943740c5d77f6705eea",        {"SOST",        166}},
{"601949593ae8f707c4608daa",        {"SSA AP",        1057}},
{"601aa3d2b2bcb34913271e6d",        {"MAI AP",        1413}},
{"60228a76d62c9b14ed777a66",        {"PL15 FS",        800}},
{"60228a850ddce744014caf69",        {"PL15 FS ext.",        950}},
{"60229948cacb6b0506369e27",        {"PL15 RS",        900}},
{"602293f023506e50807090cb",        {"PL15 RS ext.",        950}},
{"602f85fd9b513876d4338d9c",        {"STM9 mwell",        8201}},
{"60338ff388382f4fab3fd2c8",        {"STM9 mwell G",        5976}},
{"6033749e88382f4fab3fd2c5",        {"MASP",        14267}},
{"602286df23506e50807090c6",        {"9x19 PL15",        7673}},
{"602e3f1254072b51b239f713",        {"STM Tube",        32444}},
{"602e620f9b513876d4338d9a",        {"GL-Core",        8267}},
{"602a95edda11d6478d5a06da",        {"PL-15 9x19",        7556}},
{"603372b4da11d6478d5a07ff",        {"STM-9 10.5\"",        7155}},
{"602a95fe4e02ce1eaa358729",        {"PL15 thr.",        20000}},
{"603372d154072b51b239f9e1",        {"STM-9 12\"",        13883}},
{"603372f153a60014f970616d",        {"STM-9 14\"",        18920}},
{"603373004e02ce1eaa358814",        {"STM-9 16\"",        30916}},
{"6034e3e20ddce744014cb878",        {"STM 12\"",        13928}},
{"6034e3d953a60014f970617b",        {"STM 15\"",        14956}},
{"6034e3cb0ddce744014cb870",        {"STM 9\"",        14232}},
{"602e71bd53a60014f9705bfa",        {"DLG123",        2794}},
{"60228924961b8d75ee233c32",        {"PL15 Slide",        3900}},
{"602e63fb6335467b0c5ac94d",        {"STM-9 Upper",        6545}},
{"59e6687d86f77411d949b251",        {"VPO-209",        0}},
{"587e02ff24597743df3deaeb",        {"OP-SKS",        0}},
{"574d967124597745970e7c94",        {"SKS",        0}},
{"59e6152586f77473dc057aa1",        {"VPO-136",        0}},
{"5c501a4d2e221602b412b540",        {"Vepr Hunter",        0}},
{"5ac66d015acfc400180ae6e4",        {"AK-102",        0}},
{"5644bd2b4bdc2d3b4c8b4572",        {"AK-74N",        0}},
{"5ab8e9fcd8ce870019439434",        {"AKS-74N",        0}},
{"5ac66d725acfc43b321d4b60",        {"AK-104",        0}},
{"5bb2475ed4351e00853264e3",        {"HK 416A5",        0}},
{"5fbcc1d9016cce60e8341ab3",        {"SIG MCX .300 BLK",        0}},
{"5ac66d9b5acfc4001633997a",        {"AK-105",        0}},
{"5cadfbf7ae92152ac412eeef",        {"ASh-12",        0}},
{"5ac66d2e5acfc43b321d4b53",        {"AK-103",        0}},
{"57dc2fa62459775949412633",        {"AKS-74U",        0}},
{"5839a40f24597726f856b511",        {"AKS-74UB",        0}},
{"5bf3e03b0db834001d2c4a9c",        {"AK-74",        0}},
{"59d6088586f774275f37482f",        {"AKM",        0}},
{"5a0ec13bfcdbcb00165aa685",        {"AKMN",        0}},
{"59ff346386f77477562ff5e2",        {"AKMS",        0}},
{"5ac66cb05acfc40198510a10",        {"AK-101",        0}},
{"57c44b372459772d2b39b8ce",        {"AS VAL",        0}},
{"5abcbc27d8ce8700182eceeb",        {"AKMSN",        0}},
{"583990e32459771419544dd2",        {"AKS-74UN",        0}},
{"5ac4cd105acfc40016339859",        {"AK-74M",        0}},
{"5bf3e0490db83400196199af",        {"AKS-74",        0}},
{"5bfd297f0db834001a669119",        {"Mosin Infantry",        0}},
{"5bfea6e90db834001b7347f3",        {"M700",        0}},
{"5ae08f0a5acfc408fb1398a1",        {"Mosin",        0}},
{"5de652c31b7e3716273428be",        {"VPO-215",        0}},
{"5df24cf80dee1b22f862e9bc",        {"T-5000M",        0}},
{"588892092459774ac91d4b11",        {"DVL-10",        0}},
{"55801eed4bdc2d89578b4588",        {"SV-98",        0}},
{"5beed0f50db834001c062b12",        {"RPK-16",        0}},
{"5df8ce05b11454561e39243b",        {"SR-25",        0}},
{"5c46fbd72e2216398b5a8c9c",        {"SVDS",        0}},
{"5aafa857e5b5b00018480968",        {"M1A",        0}},
{"5a367e5dc4a282000e49738f",        {"RSASS",        0}},
{"5fc22d7c187fea44d52eda44",        {"Mk-18",        0}},
{"57838ad32459774a17445cd2",        {"VSS Vintorez",        0}},
{"579204f224597773d619e051",        {"PM (t)",        0}},
{"56d59856d2720bd8418b456a",        {"P226R",        0}},
{"5abccb7dd8ce87001773e277",        {"APB",        0}},
{"5f36a0e5fbf956000b716b65",        {"M45A1",        0}},
{"5d3eb3b0a4b93615055e84d2",        {"FN 5-7",        0}},
{"5b3b713c5acfc4330140bd8d",        {"TT Gold",        0}},
{"5d67abc1a4b93614ec50137f",        {"FN 5-7 FDE",        0}},
{"5cadc190ae921500103bb3b6",        {"M9A3",        0}},
{"571a12c42459771f627b58a0",        {"TT",        0}},
{"56e0598dd2720bb5668b45a6",        {"PB",        0}},
{"5e81c3cbac2bb513793cdc75",        {"M1911A1",        0}},
{"5448bd6b4bdc2dfc2f8b4569",        {"PM",        0}},
{"5a17f98cfcdbcb0980087290",        {"APS",        0}},
{"602a9740da11d6478d5a06dc",        {"PL-15",        0}},
{"576a581d2459771e7b1bc4f1",        {"MP-443 Grach\"",        0}},
{"5b1fa9b25acfc40018633c01",        {"Glock 18C",        0}},
{"5a7ae0c351dfba0017554310",        {"Glock 17",        0}},
{"59f98b4986f7746f546d2cef",        {"SR-1MP",        0}},
{"5a38e6bac4a2826c6e06d79b",        {"TOZ-106",        0}},
{"5e870397991fd70db46995c8",        {"590A1",        0}},
{"5a7828548dc32e5a9c28b516",        {"M870 12ga",        0}},
{"56dee2bdd2720bc8328b4567",        {"MP-153",        0}},
{"54491c4f4bdc2db1078b4568",        {"MP-133",        0}},
{"5e848cc2988a8701445df1e8",        {"KS-23M",        0}},
{"576165642459773c7a400233",        {"Saiga 12ga v.10",        0}},
{"5e00903ae9dc277128008b87",        {"MP9",        0}},
{"59984ab886f7743e98271174",        {"PP-19-01",        0}},
{"5cc82d76e24e8d00134b4b83",        {"P90",        0}},
{"5bd70322209c4d00d7167b8f",        {"MP7A2",        0}},
{"5ba26383d4351e00334c93d9",        {"MP7A1",        0}},
{"5de7bd7bfd6b4e6e2276dc25",        {"MP9-N",        0}},
{"60339954d62c9b14ed777c06",        {"STM-9",        17916}},
{"57d14d2524597714373db789",        {"PP-91 Kedr",        0}},
{"5fc3e272f8b6a877a729eac5",        {"UMP 45",        0}},
{"5926bb2186f7744b1c6c6e60",        {"MP5",        0}},
{"58948c8e86f77409493f7266",        {"MPX",        0}},
{"57f3c6bd24597738e730fa2f",        {"PP-91-01 Kedr-B",        0}},
{"5d2f0d8048f0356c925bc3b0",        {"MP5K-N",        0}},
{"59f9cabd86f7743a10721f46",        {"Saiga-9",        0}},
{"5ea03f7400685063ec28bfa8",        {"PPSh-41",        0}},
{"5fb64bc92b1b027b1f50bcf2",        {"Vector .45ACP",        0}},
{"5fc3f2d5900b1d5091531e57",        {"Vector 9x19",        0}},
{"57f4c844245977379d5c14d1",        {"PP-9 Klin",        0}},
{"5e81ebcd8e146c7080625e15",        {"FN40GL",        0}},
{"5648b62b4bdc2d9d488b4585",        {"GP-34",        0}},
{"60b0f561c4449e4cb624c1d7",        {"Poison",        32290}},
{"6065dc8a132d4d12c81fd8e3",        {"CMMG block",        10006}},
{"609269c3b0e443224b421cc1",        {"ASR 556",        17947}},
{"6065c6e7132d4d12c81fd8e1",        {"SV Brake",        6404}},
{"607ffb988900dc2d9a55b6e4",        {"ProComp 762",        10014}},
{"60926df0132d4d12c81fd9df",        {"SAKER ASR 556",        37934}},
{"609b9e31506cf869cf3eaf41",        {"TargetRing",        9454}},
{"60a23797a37c940de7062d02",        {"ROMEO8T",        22642}},
{"609a63b6e2ff132951242d09",        {"Krechet",        14234}},
{"609bab8b455afd752b2e6138",        {"T12W",        45833}},
{"606f2696f2cb2e02a42aceb1",        {"Ultima Thermal",        25737}},
{"606f26752535c57a13424d22",        {"Ultima mount",        8248}},
{"60785c0d232e5a31c233d51c",        {"Ultima rbr.",        7983}},
{"606587bd6d0bd7580617bacc",        {"Mk47 Ambi",        6570}},
{"6076c87f232e5a31c233d50e",        {"МP155x6",        7777}},
{"609a4b4fe2ff132951242d04",        {"Arbalet VPO",        6107}},
{"60785ce5132d4d12c81fd918",        {"Ultima top",        66203}},
{"6086b5392535c57a13424d70",        {"CG",        4344}},
{"607ea812232e5a31c233d53c",        {"Ultima shrt.",        16489}},
{"606587d11246154cad35d635",        {"RipStock",        5471}},
{"606587e18900dc2d9a55b65f",        {"CMMG",        9445}},
{"607d5a891246154cad35d6aa",        {"MP155 walnut",        7825}},
{"606eef756d0bd7580617baf8",        {"Ultima",        32176}},
{"6087e2a5232e5a31c233d552",        {"OPFOR AA47",        37175}},
{"606f263a8900dc2d9a55b68d",        {"Ultima Large",        10827}},
{"606f262c6d0bd7580617bafa",        {"Ultima Med.",        8271}},
{"606ef0812535c57a13424d20",        {"Ultima Small",        10539}},
{"6076c1b9f2cb2e02a42acedc",        {"MP155 510mm",        12998}},
{"60658776f2cb2e02a42ace2b",        {"Mk47 254mm",        17416}},
{"6065878ac9cf8012264142fd",        {"Mk47 409mm",        206092}},
{"6086b5731246154cad35d6c7",        {"Type-340",        13492}},
{"6065881d1246154cad35d637",        {"MK3 RML15",        12512}},
{"6065880c132d4d12c81fd8da",        {"MK3 RML9",        9578}},
{"6087e0336d0bd7580617bb7a",        {"Wing&Skull",        27562}},
{"607d5aa50494a626335e12ed",        {"МP155 walnut",        13752}},
{"606ee5c81246154cad35d65e",        {"Ultima",        7090}},
{"6087e663132d4d12c81fd96b",        {"AGS-74",        33705}},
{"606eef46232e5a31c233d500",        {"Ultima",        7737}},
{"606587a88900dc2d9a55b659",        {"Mk47 Resolute",        10563}},
{"56e294cdd2720b603a8b4575",        {"Terraplane 85L",        100000000}},
{"60a2828e8689911a226117f9",        {"Pillbox",        19953}},
{"60a272cc93ef783291411d8e",        {"Drawbridge",        39899}},
{"5732ee6a24597719ae0c0281",        {"Waist bag",        15000}},
{"60a6220e953894617404b00a",        {"CR MK2 (R)",        30361}},
{"60a621c49c197e4e8c4455e6",        {"CR MK2 (A)",        22760}},
{"609e860ebd219504d8507525",        {"AVS MBAV",        210984}},
{"60a3c70cde5f453f634816a3",        {"Osprey MK4A (A)",        145680}},
{"60a3c68c37ea821725773ef5",        {"Osprey MK4A (P)",        172500}},
{"60b0f6c058e0b0481a09ad11",        {"WZ",        28146}},
{"606587252535c57a13424cfd",        {"Mk47",        105316}},
{"606dae0ab0e443224b421bb7",        {"MP-155",        20085}},
{"60b0f988c4449e4cb624c1da",        {"Evasion",        428142}},
{"609e8540d5c319764c2bc2e9",        {"THOR CV",        66230}},
{"60a283193cb70855c43a381d",        {"THOR IC",        275319}},
{"60a7ad3a0c5cb24b0134664a",        {"\"Gorilla\"",        139000}},
{"60a7ad2a2198820d95707a2e",        {"\"UBEY\"",        146875}},
{"60a7acf20c5cb24b01346648",        {"Cap",        29048}},
{"60bf74184a63fc79b60c57f6",        {"Bomber",        16882}},
{"60b52e5bc7d8103275739d67",        {"Chimera",        4046}},
{"60b0f93284c20f0feb453da7",        {"RatCola",        15023}},
{"6087e570b998180e9f76dc24",        {"Dead Blow",        45000}},
{"60b0f7057897d47c5b04ab94",        {"Loot Lord",        52281}},
{"606587252535c57a13424cfd",        {"Mk47",        0}},
{"606dae0ab0e443224b421bb7",        {"MP-155",        0}}
};


There's really not that many items in the game. Well there is, but only if you include weapons and attachments. It's very easy to just manually create filters for food, medicine, high value, etc. For weapons you can simple parse the first word in the game name to know if it's a weapon, same for other things (item, barter, weapon)

alexanderyy 19th July 2021 04:39 AM

Quote:

Originally Posted by bhehe6813 (Post 3186950)
There's really not that many items in the game. Well there is, but only if you include weapons and attachments. It's very easy to just manually create filters for food, medicine, high value, etc. For weapons you can simple parse the first word in the game name to know if it's a weapon, same for other things (item, barter, weapon)

Damn, I figured I might have to do some manual work :sadgery:

ecthirune 19th July 2021 08:22 AM

Quote:

Originally Posted by alexanderyy (Post 3186958)
Damn, I figured I might have to do some manual work :sadgery:

https://www.unknowncheats.me/forum/3...-post3996.html
https://www.unknowncheats.me/forum/3...-post3999.html

vasterasjontek 19th July 2021 08:31 AM

Quote:

Originally Posted by alexanderyy (Post 3186958)
Damn, I figured I might have to do some manual work :sadgery:

You got the categories name/hash?

Razchek 19th July 2021 08:51 AM

Quote:

Originally Posted by alexanderyy (Post 3186958)
Damn, I figured I might have to do some manual work ~

Here ya go: https://hastebin.com/raw/xunejalibo

ID, Category, Name & Shortname (0.12.11 items)

The keys are the item IDs, and the value for each of those are as follows:
Code:

public class ItemDetails
{
    public string Category { get; set; }
    public string ShortName { get; set; }
    public string Name { get; set; }
}

--
Quote:

Originally Posted by xzackcc (Post 3186734)
out of curiosity, has anyone looked into the map timer/time left thingy as well as getting the current map name?

the only class i found sits at the local game world, which contains the start and end unix timestamp (apparently in real-world time, unsure)

Not sure about the match timer, but I'll take a look at some point.
As for the map name: in online matches it gets set on the first string in ClientGameWorld (this is the gameWorld object you use to find players, loot, etc).

Code:

var mapId = Mem.Read<UInt64>(ClientGameWorld + 0x20); //EFT.ClientGameWorld->string_0x20 // Offset: 0x0020 (Type: String)
var mapIdStr = Mem.Read<UnityString>(mapId, length: 64); // UnityString is just mapId+0x14,  unicode

/*
ID                |    Name
-----------------------------------------
bigmap            |    Customs
factory4_day      |    Factory (day)
factory4_night    |    Factory (night)
RezervBase        |    Reserve
Shoreline        |    Shoreline
Interchange      |    Interchange
Woods            |    Woods
Laboratory        |    Labs
hideout          |    Hideout          // The gameWorld in your hideout will have the ID from your previous raid lol
*/


POFPE 19th July 2021 12:09 PM

So, BSG start to detect Bullet's Speed? It's time to make Full-Prediction Aimbot?

hollow 19th July 2021 01:23 PM

Quote:

Originally Posted by alexanderyy (Post 3186867)
How are people filtering items in categories like consumables, weapons, and such? I have been looking for a bit, but can't seem to find anything

there is a horribly easy way to filter for meds/food if you already use the tarkov market jsons:
https://i.imgur.com/hr45EA0.png

med items have medUseTime in props, food has foodUseTime.

RonaldWeezly 19th July 2021 05:45 PM

Anyone else have a weird issue with changing FOV at:
Code:

fpscamera + 0x30 ] + 0x18 ] + 0x158 (float)
The FOV changes fine but when crouching, it is reset and looks retarded as fuck as it flickers between write intervals.

Quote:

Originally Posted by montroisiemecon (Post 3185705)
This list will give you nothing offline. Try another one

There's 2 list of shots in local ballistic calculator, both seem to be shit.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

ecthirune 19th July 2021 10:43 PM

it's a shame to ask this stuff at my situation, but can sm1 guide me with dnspy to help me understand logic for loot-esp-in-corpse chain starts from lootlist?

Like, im trying to look on it with offsets, that i took from spoonfeeding post of offsets from respecter (with current offsets changes for official patch ofc), but im lost there on 2-3 step from gameworld in dnspy.

Since i never try to use dnspy, and always updated offsets with CE dump -> i get some headache with that stuff.

Shynd 20th July 2021 08:12 AM

Quote:

Originally Posted by alexanderyy (Post 3186867)
~snip~

Thanks for the share; I've been eyeing supporting tarkov-market with $5/mo for API access but haven't made the leap yet. Been counting on seeing updated items+prices lists here.

I converted the list to Json. Lemme just say I fucking hate regex, but I couldn't think of a better way to do the conversion as fast.

https://hastebin.com/raw/ilupabofef


Edit: Here's a json file with both prices and category: https://hastebin.com/niyatekimo.json



Editedit: I posted a much better version here: https://www.unknowncheats.me/forum/3...-post4612.html

POFPE 20th July 2021 12:40 PM

Can Anyone Share Updated Boss's ID or other way to sort player's type?
Looks like all ID is pushed...

RonaldWeezly 20th July 2021 01:30 PM

Quote:

Originally Posted by POFPE (Post 3188226)
Can Anyone Share Updated Boss's ID or other way to sort player's type?
Looks like all ID is pushed...

Code:

        bool IsScavBoss(uint64_t Base)
        {
                int32_t Role = NULL;
                if (Mem::ReadChain<int32_t>(Base, { Offsets::PROFILE, 0x28, 0x38, 0x10 }, &Role))
                {
                        return Role == 4 ||
                                  Role == 8 ||
                                  Role == 64 ||
                                  Role == 128 ||
                                  Role == 2048 ||
                                  Role == 131072 ||
                                  Role == 4194304;
                }

                return false;
        }


vasterasjontek 20th July 2021 04:21 PM

Does anyone know what offsets to change to be able to loot through walls?

Diglett 20th July 2021 06:00 PM

Quote:

Originally Posted by vasterasjontek (Post 3188451)
Does anyone know what offsets to change to be able to loot through walls?

https://www.unknowncheats.me/forum/3...-post4465.html

I think you could try this? Not sure though.

xzackcc 20th July 2021 06:17 PM

Deobfuscated Assembly-CSharp.dll for version 0.12.11.1.13323
https://www.unknowncheats.me/forum/d...=file&id=33930

Quote:

Originally Posted by vasterasjontek (Post 3188451)
Does anyone know what offsets to change to be able to loot through walls?

Code:

2331d634908 : EFTHardSettings
                        static fields
                                0 : \uE000 (type: EFTHardSettings)
                        fields
                                18 : DoorCurve (type: UnityEngine.AnimationCurve)
                                20 : UnsuitableStates (type: EPlayerState[])
                                28 : TinnitusSound (type: UnityEngine.AnimationCurve)
                                30 : TinnitusLowpas (type: UnityEngine.AnimationCurve)
                                38 : MainChannelLevel (type: UnityEngine.AnimationCurve)
                                40 : BleedingCenters (type: UnityEngine.Vector3[])
                                e8 : MAXIMUM_BODYPART_VELOCITY (type: System.Single)
                                ec : QuickFBBIK (type: System.Boolean)
                                f0 : HIT_FORCE (type: System.Single)
                                48 : JumpEndLevelCurve (type: UnityEngine.AnimationCurve)
                                50 : JumpEndSpeedCurve (type: UnityEngine.AnimationCurve)
                                f4 : JumpTimeDescendingForStateExit (type: System.Single)
                                f8 : STICKY_HANDS (type: System.Boolean)
                                fc : PICKUP_DELAY (type: System.Single)
                                58 : CURVA (type: UnityEngine.AnimationCurve)
                                100 : LOOT_RAYCAST_DISTANCE (type: System.Single) // <-- this
                                104 : DOOR_RAYCAST_DISTANCE (type: System.Single) // <-- this


Code:

2331d1ccdf8 : EFT.Player+FirearmController
                        static fields
                                0 : _preallocatedAmmoList (type: System.Collections.Generic.List<>)
                        fields
                                90 : \uE004 (type: System.Collections.Generic.List<>)
                                98 : \uE005 (type: System.Action)
                                a0 : \uE006 (type: System.Action<EFT.Player.FirearmController>)
                                a8 : \uE007 (type: UnityEngine.RaycastHit[])
                                b0 : \uE008 (type: System.Func<UnityEngine.RaycastHit,System.Boolean>)
                                b8 : \uE009 (type: System.Action)
                                138 : \uE00A (type: System.Boolean)
                                c0 : \uE00B (type: \uE50F)
                                c8 : \uE00C (type: \uE559)
                                139 : \uE00D (type: System.Boolean)
                                13a : \uE00E (type: System.Boolean)
                                13b : \uE00F (type: System.Boolean)
                                13c : \uE010 (type: System.Single)
                                140 : \uE011 (type: System.Boolean)
                                144 : \uE012 (type: System.Single)
                                148 : \uE013 (type: System.Int32)
                                d0 : \uE014 (type: WeaponSoundPlayer)
                                14c : _blindfire (type: System.Boolean)
                                14d : _isAiming (type: System.Boolean)
                                150 : _aimingSens (type: System.Single)
                                d8 : \uE001 (type: FirearmsAnimator)
                                e0 : BallisticsCalculator (type: \uE916)
                                e8 : Fireport (type: EFT.BifacialTransform)
                                f0 : GunBaseTransform (type: UnityEngine.Transform)
                                154 : WeaponLn (type: System.Single) //<-- this


bhehe6813 20th July 2021 07:05 PM

Quote:

Originally Posted by Shynd (Post 3188076)
Thanks for the share; I've been eyeing supporting tarkov-market with $5/mo for API access but haven't made the leap yet. Been counting on seeing updated items+prices lists here.

I converted the list to Json. Lemme just say I fucking hate regex, but I couldn't think of a better way to do the conversion as fast.

https://hastebin.com/raw/ilupabofef


Edit: Here's a json file with both prices and category: https://hastebin.com/niyatekimo.json

I pay the $5 for tarkov market and give my users constantly up to date prices for their items.

It's in c# and c# json is a bit cancerous, but it's very simple actually:

Code:

string address = "https://tarkov-market.com/api/v1/items/all?lang=en";
                string text = webClient.DownloadString(address);
                List<MainCon.MarketData> list = JsonConvert.DeserializeObject<List<MainCon.MarketData>>(text);

They have this endpoint (/api/v1/items/all) that includes this data:

// these have jsonproperty because the obfuscator is going to break the name, but it supports jsonproperty obfuscation/deobfuscation.
Code:

        public class MarketData
        {
            [JsonProperty("uid")]
            public string uid;

            [JsonProperty("name")]
            public string name;

            [JsonProperty("ShortName")]
            public string ShortName;

            [JsonProperty("price")]
            public int price;

            [JsonProperty("basePrice")]
            public int basePrice;

            [JsonProperty("avg24hPrice")]
            public int avg24hPrice;

            [JsonProperty("avg7daysPrice")]
            public int avg7daysPrice;

            [JsonProperty("traderName")]
            public string traderName;

            [JsonProperty("traderPrice")]
            public int traderPrice;

            [JsonProperty("traderPriceCur")]
            public string traderPriceCur;

            [JsonProperty("updated")]
            public string updated;

            [JsonProperty("slots")]
            public int slots;

            [JsonProperty("diff24h")]
            public float diff24h;

            [JsonProperty("diff7days")]
            public float diff7days;

            [JsonProperty("icon")]
            public string icon;

            [JsonProperty("link")]
            public string link;

            [JsonProperty("wikilink")]
            public string wikilink;

            [JsonProperty("img")]
            public string img;

            [JsonProperty("imgBig")]
            public string imgBig;

            [JsonProperty("bsgId")]
            public string bsgId;

            [JsonProperty("isFunctional")]
            public bool isFunctional;

            [JsonProperty("reference")]
            public string reference;
        }


Shynd 20th July 2021 07:13 PM

Quote:

Originally Posted by bhehe6813 (Post 3188628)
~snip~

I appreciate the code snippet. I've learned a great deal from your posts in particular as I read through this thread, so thank you for this and everything else.

Like I said, I plan to some day spend the $5 on an api key, but have not made that leap yet. Some day. Need to get the rest of my esp fleshed out (I keep starting over as I paint myself into a corner of bad practices) before I start throwing money at the wall.

Do you download the market data at a particular time? I cannot imagine it makes a huge difference to update the current prices for each new raid, but it would also be trivial to do so.

RaiseHardError 20th July 2021 07:24 PM

Anyone know what's causing this weird behavior in my w2s?

https://i.imgur.com/hAlMJd4.png

Entity Loop:
Code:

    D3DXMATRIX viewMatrix = GetMatrix();

    for (EFTPlayer& player : playerList)
    {
        if (player.IsLocalPlayer())
            continue;

        Vector headScreen;
        Vector head = player.GetHeadPosition();
        if (!WorldToScreen(head, headScreen, viewMatrix))
            continue;

        //20,20 being width height. 255,0,0 being the colors, 0 being filled (false), and 1 being thickness!
        Render::DrawRect(headScreen.x, headScreen.y, 20,20,255,0,0, 0,1);
    }

GetMatrix:
Code:

    uint64_t address = Globals::fpsCamera;

    address = Driver::Read<uint64_t>(address + 0x30);
    if(!address)
        return {};

    address = Driver::Read<uint64_t>(address + 0x18);
    if (!address)
        return {};

    D3DXMATRIX matrix = Driver::Read<D3DXMATRIX>(address + 0xD8);
    D3DXMATRIX transposed;
    D3DXMatrixTranspose(&transposed, &matrix);

    return transposed;

W2S
Code:


WorldToScreen(Vector& point, Vector& screen, D3DXMATRIX matrix)
{
    const Vector translation = Vector{matrix._41, matrix._42, matrix._43};
    const Vector up = Vector{matrix._21, matrix._22, matrix._23};
    const Vector right = Vector{matrix._11, matrix._12, matrix._13};
   
    const float w = (translation.DotProduct(point) + matrix._44) + FLT_EPSILON;

    const float x = right.DotProduct(point) + matrix._14;
    const float y = up.DotProduct(point) + matrix._24;

    if (w < 1.f)
        return false;
   
    screen.x = (1920 * 0.5f) * (1.f + x / fabsf(w));
    screen.y = (1080 * 0.5f) * (1.f - y / fabsf(w));

    return true
}

Any feedback appreciated! :flowers1:

momopubg 20th July 2021 07:47 PM

Quote:

Originally Posted by xzackcc (Post 3188575)
Deobfuscated Assembly-CSharp.dll for version 0.12.11.1.13323
https://www.unknowncheats.me/forum/d...=file&id=33930



Code:

2331d634908 : EFTHardSettings
                        static fields
                                0 : \uE000 (type: EFTHardSettings)
                        fields
                                18 : DoorCurve (type: UnityEngine.AnimationCurve)
                                20 : UnsuitableStates (type: EPlayerState[])
                                28 : TinnitusSound (type: UnityEngine.AnimationCurve)
                                30 : TinnitusLowpas (type: UnityEngine.AnimationCurve)
                                38 : MainChannelLevel (type: UnityEngine.AnimationCurve)
                                40 : BleedingCenters (type: UnityEngine.Vector3[])
                                e8 : MAXIMUM_BODYPART_VELOCITY (type: System.Single)
                                ec : QuickFBBIK (type: System.Boolean)
                                f0 : HIT_FORCE (type: System.Single)
                                48 : JumpEndLevelCurve (type: UnityEngine.AnimationCurve)
                                50 : JumpEndSpeedCurve (type: UnityEngine.AnimationCurve)
                                f4 : JumpTimeDescendingForStateExit (type: System.Single)
                                f8 : STICKY_HANDS (type: System.Boolean)
                                fc : PICKUP_DELAY (type: System.Single)
                                58 : CURVA (type: UnityEngine.AnimationCurve)
                                100 : LOOT_RAYCAST_DISTANCE (type: System.Single) // <-- this
                                104 : DOOR_RAYCAST_DISTANCE (type: System.Single) // <-- this


Code:

2331d1ccdf8 : EFT.Player+FirearmController
                        static fields
                                0 : _preallocatedAmmoList (type: System.Collections.Generic.List<>)
                        fields
                                90 : \uE004 (type: System.Collections.Generic.List<>)
                                98 : \uE005 (type: System.Action)
                                a0 : \uE006 (type: System.Action<EFT.Player.FirearmController>)
                                a8 : \uE007 (type: UnityEngine.RaycastHit[])
                                b0 : \uE008 (type: System.Func<UnityEngine.RaycastHit,System.Boolean>)
                                b8 : \uE009 (type: System.Action)
                                138 : \uE00A (type: System.Boolean)
                                c0 : \uE00B (type: \uE50F)
                                c8 : \uE00C (type: \uE559)
                                139 : \uE00D (type: System.Boolean)
                                13a : \uE00E (type: System.Boolean)
                                13b : \uE00F (type: System.Boolean)
                                13c : \uE010 (type: System.Single)
                                140 : \uE011 (type: System.Boolean)
                                144 : \uE012 (type: System.Single)
                                148 : \uE013 (type: System.Int32)
                                d0 : \uE014 (type: WeaponSoundPlayer)
                                14c : _blindfire (type: System.Boolean)
                                14d : _isAiming (type: System.Boolean)
                                150 : _aimingSens (type: System.Single)
                                d8 : \uE001 (type: FirearmsAnimator)
                                e0 : BallisticsCalculator (type: \uE916)
                                e8 : Fireport (type: EFT.BifacialTransform)
                                f0 : GunBaseTransform (type: UnityEngine.Transform)
                                154 : WeaponLn (type: System.Single) //<-- this



how do you refer to EFTHardSettings and thanks for the share!

Shynd 20th July 2021 08:32 PM

I found a way to access the tarkov-market api and formatted the output the way I wanted to use it. It includes bsgId as dictionary key, current price, 7day average price, trader price+name+currency, number of slots, and (my favorite) price-per-slot.

Here's the text files, updated on the dates shown:
2021.07.20: https://www.unknowncheats.me/forum/d...=file&id=34019
2021.07.26: https://www.unknowncheats.me/forum/d...=file&id=34018

I'll try to remember to update this post semi-regularly if I still have access to the api.

ecthirune 20th July 2021 08:34 PM

Quote:

Originally Posted by RaiseHardError (Post 3188658)
~snip

did you use getTransform func for headbone before send it into w2s?

RaiseHardError 20th July 2021 08:42 PM

Quote:

Originally Posted by ecthirune (Post 3188728)
did you use getTransform func for headbone before send it into w2s?

Yep. Every time I break point head position looks valid. Use this for my aimbot too and it works perfectly.

bhehe6813 20th July 2021 08:52 PM

Quote:

Originally Posted by momopubg (Post 3188681)
how do you refer to EFTHardSettings and thanks for the share!

1. Open Unispect, check "Include FieldTypes" and search for EFTHardSettings. You'll find there isn't anything:

https://i.imgur.com/fG4TvWq.png

This means it's harder to get. Open CheatEngine, enable mono, and open the .net info. Press Assembly-CSharp and type in EFTHardSettings. Click the class.

Press "Lookup Instances".

https://i.imgur.com/9xF8cfX.png

Not all these instances are good. Click through each instance, you should find only one that has the proper values for everything:

https://i.imgur.com/oQiklSc.png

Take that address and paste it into Reclass to verify it's actually hard settings. In reclass deref 0x0 twice, and then look at 0x48 for the Class Name. This is how you can reflect any Unity class.

https://i.imgur.com/cRpgXnI.png

So we know the address cheat engine found is valid. Let's find it ourselves now:

Take the known hard coded settings from dnspy and search for them as an array of bytes.

I chose CULLING_PLAYER_DISTANCE, PATRONS_MANIPULATIONS_VISIBLE_DISTANCE and FLYING_SHELLS_VISIBLE_DISTANCE:

https://i.imgur.com/AA2s7CO.png

Right click one of the fields in cheat engine and press "View memory". Copy the bytes (0x40-0x44, 0x44-0x48 and 0x48-0x4C) (each float is 4 bytes):

https://i.imgur.com/gDXJd1P.png

00 40 1C 46 00 00 20 41 00 00 C8 41

Take this array of bytes and search for it in cheat engine to make sure it's specific enough to avoid matching things you don't want. You should only find one for this example:

https://i.imgur.com/h8I2YLe.png

Congrats, you just made a signature.

Take your signature and calculate the offset:

We know the signature starts with the bytes for CULLING_PLAYER_DISTANCE and that it's offset is 0x2C0:

https://i.imgur.com/cMSXwxN.png

Signature scan with an offset of negative 0x2C0:

driver
Code:

NTSTATUS QueryVirtualMemory(HANDLE PID, PVOID address, PVOID user_buffer) {
        KAPC_STATE APC;
        MEMORY_BASIC_INFORMATION mbi = { 0 };

        __try {
                PEPROCESS TargetProcess;
                PsLookupProcessByProcessId(PID, &TargetProcess);

                if (!TargetProcess) {
                        return STATUS_ACCESS_DENIED;
                }

                int status;
                SIZE_T length = 0;

                KeStackAttachProcess(TargetProcess, &APC);

                __try {
                        status = ZwQueryVirtualMemory(ZwCurrentProcess(), address, MemoryBasicInformation, &mbi, sizeof(mbi), &length);
                __except (EXCEPTION_EXECUTE_HANDLER) {
                            KeUnstackDetachProcess(&APC);
                        return STATUS_ACCESS_DENIED;
                }

                KeUnstackDetachProcess(&APC);

                RtlCopyMemory(user_buffer, &mbi, length);

                return STATUS_SUCCESS;

        } __except(EXCEPTION_EXECUTE_HANDLER) {
                return STATUS_ACCESS_DENIED;
        }
}

userland
Code:


List<Region> Regions;

        public void DumpRegions()
        {
            var previousQuery = QueryVirtualMemory((IntPtr)0x1000000000);
            bool shouldBreak = false;

            var regions = new List<Region>();
            while (!shouldBreak)
            {
                var nextQueryPtr = (IntPtr)((ulong)previousQuery.BaseAddress + (ulong)previousQuery.RegionSize);
                if ((ulong)nextQueryPtr == 0 || (ulong)nextQueryPtr > 0x7FFFFFFFFFFFFFFF)
                {
                    shouldBreak = true;
                }
                previousQuery = QueryVirtualMemory(nextQueryPtr);
                if (previousQuery.Protect == Win32.AllocationProtectEnum.PAGE_EXECUTE_READWRITE)
                {
                    var memory = M.Read(previousQuery.BaseAddress, (int)previousQuery.RegionSize);
                    var region = new Region()
                    {
                        BaseAddress = previousQuery.BaseAddress,
                        Data = memory
                    };
                    regions.Add(region);
                }
            }
            this.Regions = regions;
        }


// copy pasted sig scanner slightly adapted
        private bool MaskCheck(int nOffset, byte[] btPattern, string strMask, byte[] dumpedSection)
        {
            // Loop the pattern and compare to the mask and dump.
            for (int x = 0; x < btPattern.Length; x++)
            {
                // If the mask char is a wildcard, just continue.
                if (strMask[x] == '?')
                    continue;

                // If the mask char is not a wildcard, ensure a match is made in the pattern.
                if ((strMask[x] == 'x') && (btPattern[x] != dumpedSection[nOffset + x]))
                    return false;
            }

            // The loop was successful so we found the pattern.
            return true;
        }

        public IntPtr FindPattern(byte[] btPattern, string strMask, int nOffset)
        {
            try
            {
                // Dump the memory region if we have not dumped it yet.
                foreach (var region in Regions)
                {
                    var dumpedSection = region.Data;
                    // Ensure the mask and pattern lengths match.
                    if (strMask.Length != btPattern.Length)
                        return IntPtr.Zero;

                    // Loop the region and look for the pattern.
                    for (int x = 0; x < dumpedSection.Length; x++)
                    {
                        if (MaskCheck(x, btPattern, strMask, dumpedSection))
                        {
                            // The pattern was found, return it.
                            return region.BaseAddress + (x + nOffset);
                        }
                    }
                }
                // Pattern was not found.
                return IntPtr.Zero;
            }
            catch (Exception)
            {
                return IntPtr.Zero;
            }
        }

In this case I would call:

Code:

FindPattern(new byte[]{00, 40, 1C, 46, 00, 00, 20, 41, 00, 00, C8, 41}, "xxxxxxxxxxxx", -0x2C)
And I'll end up with the ptr of EFTHardSettings. Now you should be good to find any other class in the game, though you may have to get more creative with picking a signature.

Quote:

Originally Posted by xXBradXx (Post 3185360)
Player -> PlayerProfile (0x458) -> PlayerInfo (0x28) -> side int (0x50)
1 for USEC 2 for bear and 4 for scav

for more about what they are you can also check the role value which is
PlayerInfo -> Settings (0x38) -> role int (0x10)
they made this a bit flag for some reason so to get the regular number from this get the base 2 log of this value and you'll get which bit is set. once u got that these are the values



note: it also just occurred to me that the side values are all powers of two and is actually also a bit flag for no reason

Or just designate your enum as a bitfield using the flags attribute as well....

c# (literally 1:1 to the game using flags attribute)
Code:

      [Flags]
        public enum WildSpawnType
        {
                // Token: 0x04005A98 RID: 23192
                marksman = 1,
        }

c++

Code:

        DEFINE_ENUM_FLAG_OPERATORS(WildSpawnType); //macro available only on windows
Alternatively if you don't want to use DEFINE_ENUM_FLAG_OPERATORS for C++ only (no c):

Code:

template<class T> inline T operator~ (T a) { return (T)~(int)a; }
template<class T> inline T operator| (T a, T b) { return (T)((int)a | (int)b); }
template<class T> inline T operator& (T a, T b) { return (T)((int)a & (int)b); }
template<class T> inline T operator^ (T a, T b) { return (T)((int)a ^ (int)b); }
template<class T> inline T& operator|= (T& a, T b) { return (T&)((int&)a |= (int)b); }
template<class T> inline T& operator&= (T& a, T b) { return (T&)((int&)a &= (int)b); }
template<class T> inline T& operator^= (T& a, T b) { return (T&)((int&)a ^= (int)b); }

Using it is simple...

Code:

if (role & WildSpawnType.BossTagilla == WildSpawnType.BossTagilla) {
  player is boss tagilla
}

You do the same thing for EPhysicalCondition unless you're a smooth brainer who writes 0 to it and removes your painkiller and healing buffs:

Code:

            Classes.EPhysicalCondition ephysicalCondition = localPlayer.MovementContext.EPhysicalCondition;
            if ((ephysicalCondition & Classes.EPhysicalCondition.Tremor) == Classes.EPhysicalCondition.Tremor)
                ephysicalCondition &= ~Classes.EPhysicalCondition.Tremor;
            if ((ephysicalCondition & Classes.EPhysicalCondition.RightArmDamaged) == Classes.EPhysicalCondition.RightArmDamaged)
                ephysicalCondition &= ~Classes.EPhysicalCondition.RightArmDamaged;
            if ((ephysicalCondition & Classes.EPhysicalCondition.RightLegDamaged) == Classes.EPhysicalCondition.RightLegDamaged)
                ephysicalCondition &= ~Classes.EPhysicalCondition.RightLegDamaged;
            if ((ephysicalCondition & Classes.EPhysicalCondition.LeftArmDamaged) == Classes.EPhysicalCondition.LeftArmDamaged)
                ephysicalCondition &= ~Classes.EPhysicalCondition.LeftArmDamaged;
            if ((ephysicalCondition & Classes.EPhysicalCondition.LeftLegDamaged) == Classes.EPhysicalCondition.LeftLegDamaged)
                ephysicalCondition &= ~Classes.EPhysicalCondition.LeftLegDamaged;

Quote:

Originally Posted by RonaldWeezly (Post 3176030)
anyone got any idea how i'd locate class EFTHardSettings in mem?

Answered.

hollow 20th July 2021 09:40 PM

Quote:

Originally Posted by bhehe6813 (Post 3188742)
...

checking mask is completely redundant and inefficient in this case, especially considering you're scanning all regions

Quote:

Originally Posted by bhehe6813 (Post 3188742)
Code:

            Classes.EPhysicalCondition ephysicalCondition = localPlayer.MovementContext.EPhysicalCondition;
            if ((ephysicalCondition & Classes.EPhysicalCondition.Tremor) == Classes.EPhysicalCondition.Tremor)
                ephysicalCondition &= ~Classes.EPhysicalCondition.Tremor;
            if ((ephysicalCondition & Classes.EPhysicalCondition.RightArmDamaged) == Classes.EPhysicalCondition.RightArmDamaged)
                ephysicalCondition &= ~Classes.EPhysicalCondition.RightArmDamaged;
            if ((ephysicalCondition & Classes.EPhysicalCondition.RightLegDamaged) == Classes.EPhysicalCondition.RightLegDamaged)
                ephysicalCondition &= ~Classes.EPhysicalCondition.RightLegDamaged;
            if ((ephysicalCondition & Classes.EPhysicalCondition.LeftArmDamaged) == Classes.EPhysicalCondition.LeftArmDamaged)
                ephysicalCondition &= ~Classes.EPhysicalCondition.LeftArmDamaged;
            if ((ephysicalCondition & Classes.EPhysicalCondition.LeftLegDamaged) == Classes.EPhysicalCondition.LeftLegDamaged)
                ephysicalCondition &= ~Classes.EPhysicalCondition.LeftLegDamaged;


bro what in the flying fuck are you doing
Code:

ephysicalCondition &= ~(Classes.EPhysicalCondition.LeftLegDamaged | Classes.EPhysicalCondition.RightLegDamaged | Classes.EPhysicalCondition.LeftArmDamaged | Classes.EPhysicalCondition.RightArmDamaged | Classes.EPhysicalCondition.Tremor);

xXBradXx 20th July 2021 09:48 PM

Quote:

Originally Posted by bhehe6813 (Post 3188742)
yep

my cheat isn't written in C# or C++ so neither of those macros are applicable to me and i'm not using an enum either so i can just have an array of the names and use the number read from the game's memory as the index

bhehe6813 20th July 2021 11:12 PM

Quote:

Originally Posted by hollow (Post 3188789)
checking mask is completely redundant and inefficient in this case, especially considering you're scanning all regions

Obviously... I made a note "copy pasted pattern scanner". It's also not scanning "all regions" but rather only RWX.

Regardless, silly to nitpick on this considering it's ran once or perhaps once everytime you enter the menu and is only an example.


Quote:

ephysicalCondition &= ~(Classes.EPhysicalCondition.LeftLegDamaged | Classes.EPhysicalCondition.RightLegDamaged | Classes.EPhysicalCondition.LeftArmDamaged | Classes.EPhysicalCondition.RightArmDamaged | Classes.EPhysicalCondition.Tremor);
Yeah, I wrote it like a retard. Lol.

Quote:

Originally Posted by hollow (Post 3176367)
easiest way to find EFTHardSettings instance would be to sigscan for its fields:
https://i.imgur.com/WpHzzXz.png

which would be 66 66 a6 3f 00 00 80 3f 9a 99 19 3e - 0x100

obviously would break if they decide to change these values (or if they change mid game, shouldn't happen though?)

Just saw that you posted this, which is the same as what I posted above, +rep on answering it first (didn't see your post).

Quote:

Originally Posted by ZeusLord (Post 3177604)
mono_compile_method should give you the ptr to the jit'd code but make sure you are attaching to the mono root domain before calling mono_compile_method. You just pass it the MonoMethod to mono_compile_method and it works atleast that works fine for me I had some issues before with it and it was me not attaching first so give that a shot.

Alternatively for external, just sig scan like the first 8-10 bytes of the function.

abandoncaptian 21st July 2021 03:11 AM

I'm trying to make an External Item and Player ESP that will only read data with no writing.

I've read MANY forums and watched many videos on external and internal.

First question, What's the safest way to make and test this type of cheat. Can I load Tarkov without battle eye and play offline mode to make and test my cheats in, cause SP-Tarkov and EmuTarkov are both out of date.

Second anyone willing to let me talk to them and ask questions as I learn my way around this. I've been programming and making software since I was 12, and I'm wanting to add to my knowledge by learning this aspect of making cheats for games.

Any feedback and advice would help.

ecthirune 21st July 2021 06:46 AM

Quote:

Originally Posted by abandoncaptian (Post 3189106)
I'm trying to make an External Item and Player ESP that will only read data with no writing.

I've read MANY forums and watched many videos on external and internal.

First question, What's the safest way to make and test this type of cheat. Can I load Tarkov without battle eye and play offline mode to make and test my cheats in, cause SP-Tarkov and EmuTarkov are both out of date.

Second anyone willing to let me talk to them and ask questions as I learn my way around this. I've been programming and making software since I was 12, and I'm wanting to add to my knowledge by learning this aspect of making cheats for games.

Any feedback and advice would help.

I bet you didn't read properly answers for same questions, that ppl asking over and over and over.
No, you can't play official offline without B/E. But you can dump offsets without b/e.
And why do you care about "outdated state" emuls, if there only offsets changed and nothing more? For "only reading" software there's no difference between nonofficial and official release.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

POFPE 21st July 2021 12:28 PM

Anyone Can let me Know how can I parse Item's ID that inside of corpse's Backpack, pocket, rigt?
I can get Corpse's Ptr. I saw some post about to get Primary Weapon's slot but I am not really sure how can I get Item Id that inside of corpse's inventtory
s's.

yurchik 21st July 2021 02:03 PM

Quote:

Originally Posted by xzackcc (Post 3188575)
Deobfuscated Assembly-CSharp.dll for version 0.12.11.1.13323
https://www.unknowncheats.me/forum/d...=file&id=33930



Code:

2331d634908 : EFTHardSettings
                        static fields
                                0 : \uE000 (type: EFTHardSettings)
                        fields
                                18 : DoorCurve (type: UnityEngine.AnimationCurve)
                                20 : UnsuitableStates (type: EPlayerState[])
                                28 : TinnitusSound (type: UnityEngine.AnimationCurve)
                                30 : TinnitusLowpas (type: UnityEngine.AnimationCurve)
                                38 : MainChannelLevel (type: UnityEngine.AnimationCurve)
                                40 : BleedingCenters (type: UnityEngine.Vector3[])
                                e8 : MAXIMUM_BODYPART_VELOCITY (type: System.Single)
                                ec : QuickFBBIK (type: System.Boolean)
                                f0 : HIT_FORCE (type: System.Single)
                                48 : JumpEndLevelCurve (type: UnityEngine.AnimationCurve)
                                50 : JumpEndSpeedCurve (type: UnityEngine.AnimationCurve)
                                f4 : JumpTimeDescendingForStateExit (type: System.Single)
                                f8 : STICKY_HANDS (type: System.Boolean)
                                fc : PICKUP_DELAY (type: System.Single)
                                58 : CURVA (type: UnityEngine.AnimationCurve)
                                100 : LOOT_RAYCAST_DISTANCE (type: System.Single) // <-- this
                                104 : DOOR_RAYCAST_DISTANCE (type: System.Single) // <-- this


Code:

2331d1ccdf8 : EFT.Player+FirearmController
                        static fields
                                0 : _preallocatedAmmoList (type: System.Collections.Generic.List<>)
                        fields
                                90 : \uE004 (type: System.Collections.Generic.List<>)
                                98 : \uE005 (type: System.Action)
                                a0 : \uE006 (type: System.Action<EFT.Player.FirearmController>)
                                a8 : \uE007 (type: UnityEngine.RaycastHit[])
                                b0 : \uE008 (type: System.Func<UnityEngine.RaycastHit,System.Boolean>)
                                b8 : \uE009 (type: System.Action)
                                138 : \uE00A (type: System.Boolean)
                                c0 : \uE00B (type: \uE50F)
                                c8 : \uE00C (type: \uE559)
                                139 : \uE00D (type: System.Boolean)
                                13a : \uE00E (type: System.Boolean)
                                13b : \uE00F (type: System.Boolean)
                                13c : \uE010 (type: System.Single)
                                140 : \uE011 (type: System.Boolean)
                                144 : \uE012 (type: System.Single)
                                148 : \uE013 (type: System.Int32)
                                d0 : \uE014 (type: WeaponSoundPlayer)
                                14c : _blindfire (type: System.Boolean)
                                14d : _isAiming (type: System.Boolean)
                                150 : _aimingSens (type: System.Single)
                                d8 : \uE001 (type: FirearmsAnimator)
                                e0 : BallisticsCalculator (type: \uE916)
                                e8 : Fireport (type: EFT.BifacialTransform)
                                f0 : GunBaseTransform (type: UnityEngine.Transform)
                                154 : WeaponLn (type: System.Single) //<-- this


set lootdist to any value offline works well except changing WeaponLn to any value makes no difference. where is the raycast start pos? its not fpscamera pos thats for sure.

how can i get the loot/search menu option to come up when ray intersects other materials externally?

hollow 21st July 2021 03:21 PM

Quote:

Originally Posted by yurchik (Post 3189542)
how can i get the loot/search menu option to come up when ray intersects other materials externally?

you can't force it to appear without ray actually hitting the item externally.

for the internal n words
uE08F() is InteractionsChangedHandler, which gets the available interactions, which in turn is used for that menu:
https://i.imgur.com/pJxBntR.png
https://i.imgur.com/BMtVVnX.png

so, if you're internal, set Player.InteractableObject to the object and call InteractionsChangedHandler()

fusionpak 21st July 2021 03:41 PM

Quote:

Originally Posted by RaiseHardError (Post 3188658)
Anyone know what's causing this weird behavior in my w2s?

https://i.imgur.com/hAlMJd4.png

Entity Loop:
Code:

    D3DXMATRIX viewMatrix = GetMatrix();

    for (EFTPlayer& player : playerList)
    {
        if (player.IsLocalPlayer())
            continue;

        Vector headScreen;
        Vector head = player.GetHeadPosition();
        if (!WorldToScreen(head, headScreen, viewMatrix))
            continue;

        //20,20 being width height. 255,0,0 being the colors, 0 being filled (false), and 1 being thickness!
        Render::DrawRect(headScreen.x, headScreen.y, 20,20,255,0,0, 0,1);
    }

GetMatrix:
Code:

    uint64_t address = Globals::fpsCamera;

    address = Driver::Read&lt;uint64_t&gt;(address + 0x30);
    if(!address)
        return {};

    address = Driver::Read&lt;uint64_t&gt;(address + 0x18);
    if (!address)
        return {};

    D3DXMATRIX matrix = Driver::Read&lt;D3DXMATRIX&gt;(address + 0xD8);
    D3DXMATRIX transposed;
    D3DXMatrixTranspose(&transposed, &matrix);

    return transposed;

W2S
Code:


WorldToScreen(Vector& point, Vector& screen, D3DXMATRIX matrix)
{
    const Vector translation = Vector{matrix._41, matrix._42, matrix._43};
    const Vector up = Vector{matrix._21, matrix._22, matrix._23};
    const Vector right = Vector{matrix._11, matrix._12, matrix._13};
   
    const float w = (translation.DotProduct(point) + matrix._44) + FLT_EPSILON;

    const float x = right.DotProduct(point) + matrix._14;
    const float y = up.DotProduct(point) + matrix._24;

    if (w &lt; 1.f)
        return false;
   
    screen.x = (1920 * 0.5f) * (1.f + x / fabsf(w));
    screen.y = (1080 * 0.5f) * (1.f - y / fabsf(w));

    return true
}

Any feedback appreciated! :flowers1:


check to make sure your vector class is x,y,z and not x,z,y. same thing happened to me when i was first starting and that was the fix for it (ymmv)


Sent from my iPhone using Tapatalk

drakonia 21st July 2021 04:34 PM

Quote:

Originally Posted by xzackcc (Post 3188575)
Deobfuscated Assembly-CSharp.dll for version 0.12.11.1.13323
https://www.unknowncheats.me/forum/d...=file&id=33930

 Moderator note  Approved for analysis only!

File Approved
  • SHA256: FD55FC0223465D4B442B912BF7E4F3DB313F7B23A95DD70B7775BE903311E9EE - Assembly-CSharp-clean_[unknowncheats.me]_.dll
Interested in how we analyze files? Click here to find out.

Thanks for sharing

Shynd 21st July 2021 08:13 PM

Loot inside containers...
 
I'm trying to display loot that is inside a container, and I'm running in to some issues. I appreciate the help.

I am getting containers just fine through the loot list. Reading [item + 0x108] for item owner, making sure it is non-zero to verify that the item is a container (is also non-zero for corpses, but those can more-or-less be treated like containers, no? Can also verify LootSide (0x140) or PlayerBody (0x128) to separate out corpses).

At that point is where I am confusing myself. It seems to me that the following should work, but it doesn't:
Code:

item+0x108]+0x98]+0x68]
//item+ownerclass]+EFT.InventoryLogic.Item]+Grids]

What am I missing? Right now, I can display the location of loose items and of the containers themselves, but accessing the list of items inside the container is eluding me.

Thanks for your time.

ecthirune 21st July 2021 09:19 PM

Quote:

Originally Posted by Shynd (Post 3190064)
Code:

item+0x108]+0x98]+0x68]
//item+ownerclass]+EFT.InventoryLogic.Item]+Grids]

What am I missing? Right now, I can display the location of loose items and of the containers themselves, but accessing the list of items inside the container is eluding me.

Thanks for your time.

1) i don't remember actual names of offsets/classes, so they written in in that way: "i feel this should be named like that". Don't blame for that, and if you able to recover logic way trough dnspy - i will be happy if you will drop me actual names. Since im still don't understand dnspy+eft ;/

3) if you will finish same stuff for corpse - do me a favor, share with me it.

Code:

if (m_pItemOwner != 0)
{
  bufferItemContainer = driver.ReadVirtualMemory<ULONG64>(pid, m_pItemOwner + 0x98, sizeof(ULONG64));
  gridDictAddress = read_chain(pid, bufferItemContainer, { 0x68, 0x20, 0x40, 0x10 });

  maxCount = driver.ReadVirtualMemory<int>(pid, gridDictAddress + 0x40, sizeof(int)); // count increased when items added, but there's no way to see decreasing counter when item was taken out, unfortunately.
    if (maxCount != 0 && maxCount <60) // <60 used just in case. Mostly !=0 check is enough.
    {
      m_pEntries = driver.ReadVirtualMemory<ULONG64>(pid, gridDictAddress + 0x18, sizeof(ULONG64)); // i bet this is actual grid, and somewhere before we can read amount of grids (for backpacks);
        for (auto c = 0; c < maxCount; c++)
          {
            iEntInside = driver.ReadVirtualMemory<ULONG64>(pid, m_pEntries + 0x28 + c * 0x18, sizeof(ULONG64));
            if (iEntInside == 0)
            continue;
            m_pTemplateInside = driver.ReadVirtualMemory<ULONG64>(pid, iEntInside + 0x38, sizeof(ULONG64));  // template of item inside
            iEntInsidePidPtr = read_chain(pid, iEntInside, { 0x38, 0x50 }); // pointers to Id
            itemInsideId=readString(iEntInsidePidPtr +0x14, pid, 48);  // bsgId of item
          }
      }
}


tolessthan350gt 21st July 2021 09:22 PM

Quote:

Originally Posted by ecthirune (Post 3190137)
3) if you will finish same stuff for corpse - do me a favor, share with me it.

Code:

struct equipment_t {
        struct slot_t {
                OFFSET( item( ), uintptr_t, 0x38 )

                std::wstring name( ) {
                        const auto _template = utils::globals::driver.read<uintptr_t>( this->item( ) + 0x38 );
                        if ( !_template )
                                return { };

                        const auto name = utils::globals::driver.read<uintptr_t>( _template + 0x50 );
                        if ( !name )
                                return { };

                        return utils::globals::driver.read_unicode( name + 0x14, 128 );
                }
        };

        OFFSET( slot( ), uintptr_t, 0x78 )

        static std::vector<std::pair<std::string, int>> get_inventory_items( const uintptr_t slot_param, const bool is_corpse = false ) {
                if ( !slot_param )
                        return { };

                const auto size = utils::globals::driver.read<int>( slot_param + 0x18 );
                std::vector<std::pair<std::string, int>> inventory;
                for ( auto i = 0; i < size; i++ ) {
                        const auto slot = utils::globals::driver.read<slot_t*>( slot_param + 0x20 + i * 0x8 );
                        if ( !slot )
                                continue;

                        const auto map_pos = utils::globals::items.find( utils::wide_to_multibyte( slot->name( ) ) );
                        if ( map_pos == utils::globals::items.end( ) )
                                continue;

                        auto [item_name, item_price] = map_pos->second;
                        if ( const auto price_use = is_corpse ? utils::settings::visuals_other_corpse_price : utils::settings::visuals_other_inventory_price; item_price < price_use )
                                continue;

                        inventory.emplace_back( std::make_pair( item_name, item_price ) );
                }

                return inventory;
        }
};

std::vector<std::pair<std::string, int>> corpse_inventory( ) {
        const auto a = utils::globals::driver.read<uintptr_t>( reinterpret_cast<uintptr_t>( this ) + 0x50 );
        if ( !a )
                return { };

        return equipment_t::get_inventory_items( utils::globals::driver.read<uintptr_t>( a + 0x78 ), true );
}


abandoncaptian 21st July 2021 09:56 PM

Quote:

Originally Posted by ecthirune (Post 3189214)
I bet you didn't read properly answers for same questions, that ppl asking over and over and over.
No, you can't play official offline without B/E. But you can dump offsets without b/e.
And why do you care about "outdated state" emuls, if there only offsets changed and nothing more? For "only reading" software there's no difference between nonofficial and official release.

ok then my next question is, with both emuls being out of date, how am I supposed to use them if I only have 0.12.11 downloaded.

ecthirune 21st July 2021 09:57 PM

Quote:

Originally Posted by tolessthan350gt (Post 3190141)
~snip

This looks like modern-high-skilled-pro code style. I definitely will look on it tomorrow and will try to adapt this for my 3month experience-in-coding stupid brain.
:flowers1:

gnxx4 21st July 2021 10:05 PM

Quote:

Originally Posted by tolessthan350gt (Post 3190141)
Code:

struct equipment_t {
        struct slot_t {
                OFFSET( item( ), uintptr_t, 0x38 )

                std::wstring name( ) {
                        const auto _template = utils::globals::driver.read<uintptr_t>( this->item( ) + 0x38 );
                        if ( !_template )
                                return { };

                        const auto name = utils::globals::driver.read<uintptr_t>( _template + 0x50 );
                        if ( !name )
                                return { };

                        return utils::globals::driver.read_unicode( name + 0x14, 128 );
                }
        };

        OFFSET( slot( ), uintptr_t, 0x78 )

        static std::vector<std::pair<std::string, int>> get_inventory_items( const uintptr_t slot_param, const bool is_corpse = false ) {
                if ( !slot_param )
                        return { };

                const auto size = utils::globals::driver.read<int>( slot_param + 0x18 );
                std::vector<std::pair<std::string, int>> inventory;
                for ( auto i = 0; i < size; i++ ) {
                        const auto slot = utils::globals::driver.read<slot_t*>( slot_param + 0x20 + i * 0x8 );
                        if ( !slot )
                                continue;

                        const auto map_pos = utils::globals::items.find( utils::wide_to_multibyte( slot->name( ) ) );
                        if ( map_pos == utils::globals::items.end( ) )
                                continue;

                        auto [item_name, item_price] = map_pos->second;
                        if ( const auto price_use = is_corpse ? utils::settings::visuals_other_corpse_price : utils::settings::visuals_other_inventory_price; item_price < price_use )
                                continue;

                        inventory.emplace_back( std::make_pair( item_name, item_price ) );
                }

                return inventory;
        }
};

std::vector<std::pair<std::string, int>> corpse_inventory( ) {
        const auto a = utils::globals::driver.read<uintptr_t>( reinterpret_cast<uintptr_t>( this ) + 0x50 );
        if ( !a )
                return { };

        return equipment_t::get_inventory_items( utils::globals::driver.read<uintptr_t>( a + 0x78 ), true );
}


Is there a reason you use auto so much? isn't this considered bad practice? :nervous:

RaiseHardError 21st July 2021 10:12 PM

Quote:

Originally Posted by fusionpak (Post 3189648)
check to make sure your vector class is x,y,z and not x,z,y. same thing happened to me when i was first starting and that was the fix for it (ymmv)


Sent from my iPhone using Tapatalk

Issue was actually very similar. I was messing with bitmaps for my rendering and I had a flag to rotate pixels. Hardcoded that flag in the draw function, It resulted in everything being rotated, which I assume is similar behavior to which you are mentioning.

Shynd 22nd July 2021 12:21 AM

Quote:

Originally Posted by abandoncaptian (Post 3190177)
ok then my next question is, with both emuls being out of date, how am I supposed to use them if I only have 0.12.11 downloaded.

There's a bleeding edge version of spt-aki that works fine with the newest version, at least for getting in a raid and displaying things on an esp. Isn't great if you want all the latest shit like scav karma or correct items sold from vendors (or no crashes) but it works just fine to load a raid and test your program. I've used the A6 version for the past few days without much issue. https://mods.sp-tarkov.com/files/fil...edge/#versions

Word of warning: you may have to reset your game settings by deleting /users/Documents/Escape From Tarkov/ to get retail working again. I had to, anyway. Make a backup if you don't want to lose your settings.

hollow 22nd July 2021 03:18 AM

how do you guys get the head and other hitboxes for aimbot?
the head bone’s transform is horrible for this as it’s in the very back of the model’s head, and when the unfortunate victim is running it’s even worse - simply unhittable.

i am currently just extrapolating the bone pos in the view direction, but that just seems to be ghetto as fuck, wondering if there’s a better solution.

pinefin 22nd July 2021 03:47 AM

Quote:

Originally Posted by Shynd (Post 3190316)
There's a bleeding edge version of spt-aki that works fine with the newest version, at least for getting in a raid and displaying things on an esp. Isn't great if you want all the latest shit like scav karma or correct items sold from vendors (or no crashes) but it works just fine to load a raid and test your program. I've used the A6 version for the past few days without much issue. https://mods.sp-tarkov.com/files/fil...edge/#versions

Word of warning: you may have to reset your game settings by deleting /users/Documents/Escape From Tarkov/ to get retail working again. I had to, anyway. Make a backup if you don't want to lose your settings.

they have scav karma built in already

24jared24 22nd July 2021 04:39 AM

Quote:

Originally Posted by hollow (Post 3190423)
how do you guys get the head and other hitboxes for aimbot?
the head bone�s transform is horrible for this as it�s in the very back of the model�s head, and when the unfortunate victim is running it�s even worse - simply unhittable.

i am currently just extrapolating the bone pos in the view direction, but that just seems to be ghetto as fuck, wondering if there�s a better solution.

I use neck bone with no problems. Not hard to make it hit headshots or even 50/50 thorax and head if you wanna look more legit.

ecthirune 22nd July 2021 06:21 AM

Quote:

Originally Posted by hollow (Post 3190423)
how do you guys get the head and other hitboxes for aimbot?
the head bone’s transform is horrible for this as it’s in the very back of the model’s head, and when the unfortunate victim is running it’s even worse - simply unhittable.

i am currently just extrapolating the bone pos in the view direction, but that just seems to be ghetto as fuck, wondering if there’s a better solution.

I'm not using aimbot, but draw skeleton position being "delayed" only if:
a) I have timeout-delay on function that collecting/calculating current bone position ( I set up 40ms cooldown on it just i n case to not overload readings)
b) draw delays on some reasons(bad coding logic in building my software, I should remove calculations from it)
c) I got hit into helmet and skeleton being draw in wrong positions due to pain/ricochet effects.(something to viewmatrix mb? Dunno)

So I bet you need to look on a) or b) in your software, I believe you can get 100% accuracy

JudischerHund 22nd July 2021 06:39 AM

Quote:

Originally Posted by gnxx4 (Post 3190186)
Is there a reason you use auto so much? isn't this considered bad practice? :nervous:

Why would it be a bad practise?

POFPE 22nd July 2021 07:27 AM

can anyone let me know the chain that how to get Player's Primary Weapon ID?

ecthirune 22nd July 2021 09:34 AM

Quote:

Originally Posted by tolessthan350gt (Post 3190141)
Code:

std::vector<std::pair<std::string, int>> corpse_inventory( ) {
        const auto a = utils::globals::driver.read<uintptr_t>( reinterpret_cast<uintptr_t>( this ) + 0x50 );
        if ( !a )
                return { };

        return equipment_t::get_inventory_items( utils::globals::driver.read<uintptr_t>( a + 0x78 ), true );
}


Okay, i adapted all your snippet and... have nothing in results.
probably i missed what exactly ( this ) in your code.
i bet this = is EFT_interactive_Lootable.
Code:

ULONG64 EFT_interactive_LootItem = driver.ReadVirtualMemory<ULONG64>(pid, adress + 0x10, sizeof(ULONG64));
ULONG64 EFT_interactive_Lootable = driver.ReadVirtualMemory<ULONG64>(pid, EFT_interactive_LootItem + 0x28, sizeof(ULONG64));
ULONG64 object_Item = driver.ReadVirtualMemory<ULONG64>(pid, EFT_interactive_Lootable + 0x50, sizeof(ULONG64));

// checking corpse or not corpse here

// we got corpse.

auto Equipment_Corpse = driver.ReadVirtualMemory<ULONG64>(pid, object_Item + 0x78, sizeof(ULONG64));
auto EFT_inventory_logic_grid = driver.ReadVirtualMemory<ULONG64>(pid, Equipment_Corpse + 0x18, sizeof(ULONG64));
for (int q = 0; q < EFT_inventory_logic_grid; q++)
{
        auto current_grid = driver.ReadVirtualMemory<ULONG64>(pid, EFT_inventory_logic_grid + 0x20 + q * 0x8, sizeof(ULONG64));
        auto _template = driver.ReadVirtualMemory<ULONG64>(pid, current_grid + 0x38, sizeof(ULONG64));
        auto _name = driver.ReadVirtualMemory<ULONG64>(pid, _template + 0x50, sizeof(ULONG64));  // this pointer is null on each EFT_inventory_logic_grid cycle, on almost each corpse.
}

upd:
found mistep in my code.

Code:

auto EFT_inventory_logic_grid = driver.ReadVirtualMemory<int>(pid, Equipment_Corpse + 0x18, sizeof(int));  // should be int
for (int q = 0; q < EFT_inventory_logic_grid; q++)
{
        auto current_grid = driver.ReadVirtualMemory<ULONG64>(pid, Equipment_Corpse + 0x20 + q * 0x8, sizeof(ULONG64));  // cycle goin in equipment_corpse, starts from 0x20, each EFT_inventory_logic_grid*0x8
        auto _template = driver.ReadVirtualMemory<ULONG64>(pid, current_grid + 0x38, sizeof(ULONG64));
        auto _name = driver.ReadVirtualMemory<ULONG64>(pid, _template + 0x50, sizeof(ULONG64)); 
}

On emulator i can see some weird stuff in 0x10](name): 67967f2d22f8ff5fb67548d5 or de0de00fae26ba0d7a922dc1.0
And can't access 0x50 at all, i bet it's emulator issue.
Anyway ty for help, dropped rep already.
}


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

gnxx4 22nd July 2021 03:16 PM

Quote:

Originally Posted by JudischerHund (Post 3190551)
Why would it be a bad practise?

readability?

WhatIsPrintf 22nd July 2021 08:24 PM

Quote:

Originally Posted by JudischerHund (Post 3184223)
Code:

Item List ] Item Entry + 0x10 (Item Profile) ] 0x30 (Item Info)

does someone know the actual class names for the lootlist chain
ive tried backtracking to find classes with the offsets but not sure if its correct ones

+0x10] ???
+0x28] EFT.Interactive.LootItem
+0x50] EFT.InventoryLogic.Item
+0x38] _template (type: EFT.InventoryLogic.ItemTemplate

tolessthan350gt 22nd July 2021 09:27 PM

Quote:

Originally Posted by ecthirune (Post 3190641)
Okay, i adapted all your snippet and... have nothing in results.
probably i missed what exactly ( this ) in your code.
i bet this = is EFT_interactive_Lootable.
Code:

ULONG64 EFT_interactive_LootItem = driver.ReadVirtualMemory<ULONG64>(pid, adress + 0x10, sizeof(ULONG64));
ULONG64 EFT_interactive_Lootable = driver.ReadVirtualMemory<ULONG64>(pid, EFT_interactive_LootItem + 0x28, sizeof(ULONG64));
ULONG64 object_Item = driver.ReadVirtualMemory<ULONG64>(pid, EFT_interactive_Lootable + 0x50, sizeof(ULONG64));

// checking corpse or not corpse here

// we got corpse.

auto Equipment_Corpse = driver.ReadVirtualMemory<ULONG64>(pid, object_Item + 0x78, sizeof(ULONG64));
auto EFT_inventory_logic_grid = driver.ReadVirtualMemory<ULONG64>(pid, Equipment_Corpse + 0x18, sizeof(ULONG64));
for (int q = 0; q < EFT_inventory_logic_grid; q++)
{
        auto current_grid = driver.ReadVirtualMemory<ULONG64>(pid, EFT_inventory_logic_grid + 0x20 + q * 0x8, sizeof(ULONG64));
        auto _template = driver.ReadVirtualMemory<ULONG64>(pid, current_grid + 0x38, sizeof(ULONG64));
        auto _name = driver.ReadVirtualMemory<ULONG64>(pid, _template + 0x50, sizeof(ULONG64));  // this pointer is null on each EFT_inventory_logic_grid cycle, on almost each corpse.
}

upd:
found mistep in my code.

Code:

auto EFT_inventory_logic_grid = driver.ReadVirtualMemory<int>(pid, Equipment_Corpse + 0x18, sizeof(int));  // should be int
for (int q = 0; q < EFT_inventory_logic_grid; q++)
{
        auto current_grid = driver.ReadVirtualMemory<ULONG64>(pid, Equipment_Corpse + 0x20 + q * 0x8, sizeof(ULONG64));  // cycle goin in equipment_corpse, starts from 0x20, each EFT_inventory_logic_grid*0x8
        auto _template = driver.ReadVirtualMemory<ULONG64>(pid, current_grid + 0x38, sizeof(ULONG64));
        auto _name = driver.ReadVirtualMemory<ULONG64>(pid, _template + 0x50, sizeof(ULONG64)); 
}

On emulator i can see some weird stuff in 0x10](name): 67967f2d22f8ff5fb67548d5 or de0de00fae26ba0d7a922dc1.0
And can't access 0x50 at all, i bet it's emulator issue.
Anyway ty for help, dropped rep already.
}

if you have container esp already working then "this" is the same, you just have to check that the name of the loot is "55d7217a4bdc2d86028b456d"

ecthirune 22nd July 2021 09:59 PM

Quote:

Originally Posted by tolessthan350gt (Post 3191410)
if you have container esp already working then "this" is the same, you just have to check that the name of the loot is "55d7217a4bdc2d86028b456d"

ye, i have container esp working, but this not looking same, as for me.
In container im goin trough itemOwner, and another pointers.

But i think i ask incorrect question before.
It's good to know, ofc, what items are on corpse and in pockets, but i was interested more in "what exactly that items have inside".
I mean - read grids inside rig/backpack.

So i, finally, managed to get all 16 slots (and backtracked it with reclass+unispect, not blindy rewrite function) on corpse and can grab itemId/name of item in Slot, but still can't get into backpack.
Anyway your snippet helps a lot. :flowers1:

Razchek 23rd July 2021 01:09 AM

Here is how I get corpse loot, including all child items.
I've changed it a bit for formatting and display on this forum, so if there are any typos - my apologies. I removed dogtag info and gun's ammo to reduce clutter.
Because of this I'm also using a different formatter to display on screen, so don't mind the weird looking child item categories lol.

Please add the appropriate error checking, and possibly a depth counter to the 'GetItemsInGrid' method so you don't go too deep/stackoverflow.

Quote:

Originally Posted by ecthirune (Post 3191437)
~ It's good to know, ofc, what items are on corpse and in pockets, but i was interested more in "what exactly that items have inside".
I mean - read grids inside rig/backpack. ~

Take a look at 'GetItemsInGrid()'

Results: https://i.imgur.com/NJgQAcY.png

CorpseLootThread
Code:

private static void CorpseLootThread()
{
        while (true)
        {
                Thread.Sleep(1000);

                if (!IsInGame) continue;

                foreach (var corpse in corpseBag)
                {
                        // 0x10 = (Unity::Component)m_CachedPtr, 0x28 = m_MonoReference
                        var interactiveClass = Mem.ReadChain(corpse.Address, 0x10, 0x28);
                        if (interactiveClass == 0) continue;

                        var itemOwner = Mem.Read<UInt64>(interactiveClass + 0x48);    // EFT.Interactive.ObservedCorpse->ItemOwner // Offset: 0x0048 (Type: -.GClass194A)
                        var rootItem = Mem.Read<UInt64>(itemOwner + 0x98);            // -.GClass194A->item_0x98 // Offset: 0x0098 (Type: EFT.InventoryLogic.Item) [as GClass1919]

                        // Get loot slots inside the corpse
                        var slots = Mem.Read<UInt64>(rootItem + 0x70);                // -.GClass1919->Slots // Offset: 0x0070 (Type: EFT.InventoryLogic.Slot[])
                        var slotsArray = new MemArray<ulong>(slots);

                        var corpseLootList = new List<CorpseLoot>(slotsArray.Count);

                        // Slot iteration
                        foreach (var slot in slotsArray.Data)
                        {
                                var containedItem = Mem.Read<UInt64>(slot + 0x38);        // EFT.InventoryLogic.Slot->containedItem_BackingField // Offset: 0x0038 (Type: EFT.InventoryLogic.Item)
                                if (containedItem == 0)
                                        continue;

                                var slotId = Mem.Read<UInt64>(slot + 0x10);                // EFT.InventoryLogic.Slot->Id // Offset: 0x0010 (Type: String)
                                var slotIdName = Mem.ReadStringW(slotId + 0x14, 128);

                                var itemTemplate = Mem.Read<UInt64>(containedItem + 0x38); // -.GClassXXXX->_template // Offset: 0x0038 (Type: EFT.InventoryLogic.ItemTemplate)

                                // Use 0x58 (_name) if you don't have an item db set up. Adjust code accordingly.
                                var itemIdPtr = Mem.Read<UInt64>(itemTemplate + 0x50);    // EFT.InventoryLogic.ItemTemplate->_id // Offset: 0x0050 (Type: String)
                                var itemIdStr = Mem.ReadStringW(itemIdPtr + 0x14, 128);

                                // Your item DB
                                if (!FleaMarketData.ContainsKey(itemIdStr))
                                        continue;

                                var itemDetails = FleaMarketData[itemIdStr];
                                List<Entity> children = null;

                                switch (slotIdName)
                                {
                                        // Check slots
                                        case "Pockets":
                                                {
                                                        var gridsArrayPtr = _ioMem.ReadUInt64(containedItem + 0x68);        // -.GClass1677->Grids // Offset: 0x0068 (Type: -.GClass1497[])
                                                        children = GetItemsInGrid(gridsArrayPtr);
                                                        if (children.Count == 0) continue;
                                                        break;                                                              // Skip if the pockets are empty
                                                }
                                        case "TacticalVest":
                                        case "Backpack":
                                                {
                                                        var gridsArrayPtr = _ioMem.ReadUInt64(containedItem + 0x68);        // ^
                                                        children = GetItemsInGrid(gridsArrayPtr);
                                                        break;
                                                }

                                        case "Scabbard":
                                                // If we can't loot it, don't add it
                                                var isUnlootable = (bool) Mem.Read<byte>(itemTemplate + 0xF1);            // EFT.InventoryLogic.ItemTemplate->Unlootable // Offset: 0x00F1 (Type: Boolean)
                                                if(isUnlootable) continue;
                                                break;

                                        case "SecuredContainer":
                                                // Can add to the 'Check slots' section if you are curious lol
                                                continue;
                                }

                                corpseLootList.Add(new CorpseLoot
                                {
                                        SlotName = slotIdName,
                                        ItemDetails = itemDetails,
                                        Children = children,
                                });

                        }

                        corpse.Loot = corpseLootList;
                }
        }
}

GetItemsInGrid()
MemList/MemArray
Referenced Classes

bhehe6813 23rd July 2021 02:35 AM

Quote:

Originally Posted by Razchek (Post 3191582)
Code:

public class MemArray<T>
{
        public ulong Address { get; }
        public int Count { get; }
        public T[] Data { get; }

        public MemArray(ulong address)
        {
                var type = typeof(T);

                Address = address;
                Count = Mem.Read<Int32>(address + 0x18);
                var arrayBase = address + 0x20;
                var tSize = (uint)Marshal.SizeOf(type);

                // Rudimentary sanity check
                if (Count > 4096 || Count < 0)
                        Count = 0;

                var retArray = new T[Count];

                for (uint i = 0; i < Count; i++)
                {
                        retArray[i] = (T)Mem.Read(type, arrayBase + i * tSize);
                }

                Data = retArray;
        }
}

public class MemList<T>
{
        public ulong Address { get; }

        public int Count { get; }

        public List<T> Data { get; }

        public MemList(ulong address)
        {
                var type = typeof(T);

                Address = address;
                Count = InterIOMem.Instance.ReadInt32(address + 0x18);

                if (Count > 4096 || Count < 0)
                        Count = 0;

                var arrayBase = InterIOMem.Instance.ReadUInt64(address + 0x10) + 0x20;

                var tSize = (uint)Marshal.SizeOf(type);

                var retList = new List<T>(Count);

                for (uint i = 0; i < Count; i++)
                {
                        retList.Add((T)InterIOMem.Instance.Read(type, arrayBase + i * tSize));
                }

                Data = retList;
        }
}


You picked a very unoptomized way too do that. You don't need to read 500 times. You can read once to build your list...

This = bad

Code:

                        retList.Add((T)InterIOMem.Instance.Read(type, arrayBase + i * tSize));
You know how many there are and you know the size. So just read it all at once.

InterIOMem.Instance.Read(count * 0x8, arrayBase) -> every ptr in the list. Either then iterate the data by chunking every 0x8 or build your list (retList) after that...

Here's my implementation:

Code:

var itemPtrData = M.Read(list.listBase + 0x20, Math.Min(20000, list.itemCount * 0x8));
var itemPtrs = new List<IntPtr>();
                for (int i = 0x0; i < itemPtrData.Length; i += 0x8)
                {
                    var ptrBuffer = new byte[8];
                    if (i + 0x8 > itemPtrData.Length)
                        continue;
                    Array.Copy(itemPtrData, i, ptrBuffer, 0, 0x8);
                    IntPtr itemPtr = MemoryManager.GetStructure<IntPtr>(ptrBuffer);
                    itemPtrs.Add(M.Read<IntPtr>(itemPtr));
                }

This is a version closer to your version where you populate a list with read objects of type T:

Code:

                var itemPtrs = new List<LootableItem>();
                for (int i = 0x0; i < itemPtrData.Length; i += 0x8)
                {
                    var ptrBuffer = new byte[8];
                    if (i + 0x8 > itemPtrData.Length)
                        continue;
                    Array.Copy(itemPtrData, i, ptrBuffer, 0, 0x8);
                    IntPtr itemPtr = MemoryManager.GetStructure<IntPtr>(ptrBuffer);
                    if (itemPtr == IntPtr.Zero) continue;
                    var lootableItem = M.Read<LootableItem>(itemPtr);
                    if (lootableItem.pItemInfo != IntPtr.Zero)
                        itemPtrs.Add(lootableItem);
                }

It looks like you're c# as well, so to convert 8 bytes in an array to a PTR you can just do this without involving marshalling using unsafe "almost native" code like you would in c/cpp, this is the logic of my GetStructure function:

Code:

        public static unsafe T GetStructure<T>(byte[] bytes) where T : unmanaged //where bytes would be 8 ptr related bytes from the example above)
        {
            fixed (byte* p = bytes)
            {
                T structure = *(T*)p;
                return structure;
            }
        }

Take a map like Reserve for instance with around 1100 items in LootList, you're reading memory 1000+ times to get the PTR of each item and then around 4-6 more times per PTR depending on what kind of item it is. That's 4000-6000 separate memory reads to build your loot list.

My full logic is 1 read for all the PTRs and then a max of 3 reads for each PTR when processing. That's at most ~3000 reads, however I run them parallel after I build my PTR list.

Also, since you're using C#, why is your read function written so oddly, here's some wrappers for you so you don't have to include your type in each call like that, replace Read and WriteMem with your equivalent.

Code:

        // read a type T
        public T Read<T>(IntPtr address) where T : unmanaged
        {
            var size = Marshal.SizeOf(typeof(T));
            var data = Read(address, size);
            try
            {
                var res = GetStructure<T>(data);
                return res;
            } catch
            {

            }
            return default(T);
        }
        // write type T data as type T so you can write one type while providing data for another (for instance write int32 value of 0x4 as int64 would be M.Write<Int64> (0x4, address))
        public void Write<T>(T input, IntPtr address)
        {
            var size = Marshal.SizeOf(input);
            var arr = new byte[size];

            var ptr = Marshal.AllocHGlobal(size);
            Marshal.StructureToPtr(input, ptr, true);
            Marshal.Copy(ptr, arr, 0, size);
            Marshal.FreeHGlobal(ptr);
            WriteMem(arr, address);
        }

Also, take a look at using Parallel.ForEach to process the ptr list:

https://docs.microsoft.com/en-us/dot...l-foreach-loop

It's very very very simple to use.

Here's an example if you want to break the parallel foreach (not shown on the msoft docs)


Code:

Parallel.ForEach((myList) => (listItem, state) {
  // break all of the parallel.foreach as soon as possible
  state.Stop();
 // break all future iterations, but allow existing to continue (what you'll likely want to use to avoid driver bsods writing to RO memory)
  state.Break();
});

Warning though, never use a thread safe collection like ConcurrentBag or ConcurrentDictionary. They are slow and have a memory leak intentionally written in them if you don't dispose of them. They aren't meant to be used as a cache. ConcurrentBag keeps a map of each thread regardless if that thread exists any longer. When you do something like Parallel.ForEach on 1000 items, you'll add 2000+ thread links to the concurrentbag. Do this 10 times a minute for example and now you have 20,000 non GC'd objects. Use locks instead.

Also, regarding loot, you should be caching more. Existing items unless looted remain the same in LootList.

You can cache the following:

1. Id
2. Name
3. Location

I create a map from the id PTR to the ID. For location I create a map from the root Item PTR to the Vector3 location. Clear these caches when you detect you're in the menu to avoid a mem leak.

Code:

            public static Dictionary<IntPtr, string> PtrToIdCache = new Dictionary<IntPtr, string>();
            public string Id
            {
                get
                {
                    lock (Classes.ItemTemplate.PtrToIdCache) // lock the cache since we're running on multiple threads
                    {
                        if (Classes.ItemTemplate.PtrToIdCache.ContainsKey(this.pId))
                            return Classes.ItemTemplate.PtrToIdCache[this.pId];
                        int nLength = M.Read<int>(this.pId + 16) * 8;
                        if (nLength > 200)
                            return "";
                        string str = M.ReadUnicodeString(this.pId + 20, nLength);
                        Classes.ItemTemplate.PtrToIdCache.Add(this.pId, str);
                        return str;
                    }
                }
            }


Shynd 23rd July 2021 03:27 AM

Quote:

Originally Posted by bhehe6813 (Post 3191631)
~snip~

Couple quick notes:
  • You're already compiling with /unsafe, so you should be using unsafe sizeof(T) to get the size of your unmanaged type anywhere you can instead of Marshal.SizeOf(typeof(T)).
  • var ptrBuffer = new byte[8]; inside of a for loop is bad, allocate the memory just once outside the for loop and use it inside the for loop.
  • Theoretically it would be fasted to use fixed (byte* b = &itemPtrData[i]) and then dereferencing into IntPtr or whatever instead of Array.Copy.. like you said, 3000+ times iterating over the code on a map like Reserve, every little bit helps.

Very minor things, almost nit picky, but I imagine every bit helps. I personally really like the shared code, definitely going to help me get loot working the way I want it to. Cheers!


Edit to add: there's a better way to get Unity strings as well, cuts reads in half:
Code:

                private const int StringSizeOffset = 0x10;
                private const int StringDataOffset = 0x14;
                private const int MaxLength = 0x100;

                [StructLayout(LayoutKind.Explicit)]
                public unsafe struct UnityString
                {
                        [FieldOffset(StringSizeOffset)]
                        public int Size;

                        [FieldOffset(StringDataOffset)]
                        public fixed byte Data[MaxLength];
                }

                public unsafe static string GetUnityString(Memory Driver, ulong Address)
                {
                        if (Driver?.IsInitialized() != true || IsValidPointer(Address) == false)
                                return String.Empty;

                        var UString = Driver.Read<UnityString>(Address);

                        if (UString.Size > 0 && UString.Size < (MaxLength / sizeof(ushort)))
                        {
                                return Encoding.Unicode.GetString(&UString.Data[0], UString.Size * sizeof(ushort));
                        }
                        else
                        {
                                return String.Empty;
                        }
                }


bhehe6813 23rd July 2021 03:56 AM

Quote:

Originally Posted by Shynd (Post 3191671)
Couple quick notes:
  • You're already compiling with /unsafe, so you should be using unsafe sizeof(T) to get the size of your unmanaged type anywhere you can instead of Marshal.SizeOf(typeof(T)).
  • var ptrBuffer = new byte[8]; inside of a for loop is bad, allocate the memory just once outside the for loop and use it inside the for loop.
  • Theoretically it would be fasted to use fixed (byte* b = &itemPtrData[i]) and then dereferencing into IntPtr or whatever instead of Array.Copy.. like you said, 3000+ times iterating over the code on a map like Reserve, every little bit helps.

Very minor things, almost nit picky, but I imagine every bit helps. I personally really like the shared code, definitely going to help me get loot working the way I want it to. Cheers!

Thanks, good stuff.

Razchek 23rd July 2021 04:00 AM

Quote:

Originally Posted by bhehe6813 (Post 3191631)
~

The MemList/MemArray are dated pieces of code hence the differences you see between those two. Originally the implementation was quickly written for MemDictionary a few years ago when I started with Unity stuff, and then adapted to MemList/MemArray. I just never got around to updating them, I have a bad habit of forgetting about code that works.
But your point still stands that I should collect the entire 'list' in one read. I should have updated them before using them as examples on this forum lol.
I'll do that now so next time I post something here, it'll keep you happy too haha.

The generic type casted 'Read<T>' that I do use is only used for managed types. I want to try to avoid marshalling wherever possible. And also when you do see the occasional ReadUInt64 slip in, it's just from dated code that I haven't updated. For most of my project, I explicitly write out how I want to handle each list/array/dictionary - as I often won't iterate the entire collection and waste reads.

There seems to be a few assumptions based on that post, which is fine. But please do remember that I've purposefully reduced the code to make it as simple as possible. I'm not trying to teach people how to code after all. If someone wants to improve upon what I've posted, by all means! I'm all for learning, no matter where I am on the programming level. The matter still stands though, I should update those two classes hahaha.

Regarding cache, I purposefully excluded it from the post to reduce post clutter. I have a 'CacheStore' which handles many different synchronous caches in my project.

Also, I'm not aware of an GC issues with the concurrent collections. I've profiled managed and unmanaged memory and there is definitely no memory leak in .NET 5.
But since you've said that, I'll definitely take another look. You seem convinced on that, so I must have overlooked something. I will admit that I was just looking at consistency and performance and did not dive deeper during the profiling.

Regarding the choice of using thread-safe collections instead of parallels with a mutex: it's been faster in all of my benchmarking tests - and that's purely because I'm not waiting on locks when iterating.
If a piece of loot or some AI appears one frame later, I'm okay with that. I cap the render at 175 frames per second anyway.

Quote:

Originally Posted by Shynd (Post 3191671)
~

The UnityString implementation is almost identical to how I handle it as well, I wanted to keep trimming stuff away from the already lengthy post I had made lol. You might see in some of my previous posts that I use a generic read with 'UnityString' as the type. I don't think I've shared it previously though, so nice share. <3

bhehe6813 23rd July 2021 04:03 AM

Quote:

Originally Posted by Razchek (Post 3191690)
There seems to be a few assumptions based on that post, which is fine. But please do remember that I've purposefully reduced the code to make it as simple as possible. I'm not trying to teach people how to code after all. If someone wants to improve upon what I've posted, by all means! I'm all for learning, no matter where I am on the programming level. The matter still stands though, I should update those two classes hahaha.

No worries, and no harm intended by me. I made assumptions but left it generic enough that it could help another reader as well.


Quote:

Also, I'm not aware of an GC issues with the concurrent collections. I've profiled managed and unmanaged memory and there is definitely no memory leak in .NET 5.
I use 4.8 which is .NET. You're using 5 which is actually core 3.1 + some changes. It might handle them differently. The major issue was me is that I create short-lived threads. Regardless, you don't profile this by looking for a memory leak.

You profile it by using the .NET object allocation section in the profiler for VS. Here's the list within concurrent bag that can grow infinetly and is never GC'd:

ThreadLocalList, read about it here:

exerpt: ConcurrentBag, at its core, operates as a linked list of linked lists (hint on why this causes an issue when you have 80,000 links)

https://www.red-gate.com/simple-talk...concurrentbag/

Not sure if it actually exists in your .net version though. But yeah with parallel foreach, I'll create about 1000 threads give or take, which is 1000 new entries into ThreadLocalList.

So what happened in my code is when inserting to an existing concurrentbag, the insert would take an ungodly amount of time.

Razchek 23rd July 2021 04:08 AM

Quote:

Originally Posted by bhehe6813 (Post 3191691)
No worries, and no harm intended by me. I made assumptions but left it generic enough that it could help another reader as well.

I use 4.8 which is .NET. You're using 5 which is actually core 3.1 + some changes. It might handle them differently. The major issue was me is that I create short-lived threads. Regardless, you don't profile this by looking for a memory leak.

You profile it by using the .NET object allocation section in the profiler for VS. Here's the list within concurrent bag that can grow infinetly and is never GC'd:

ThreadLocalList, read about it here:

exerpt: ConcurrentBag, at its core, operates as a linked list of linked lists (hint on why this causes an issue when you have 80,000 links)

https://www.red-gate.com/simple-talk...concurrentbag/

Not sure if it actually exists in your .net version though. But yeah with parallel foreach, I'll create about 1000 threads give or take, which is 1000 new entries into ThreadLocalList.

Thank you! I'll take a look. <3

bhehe6813 23rd July 2021 04:10 AM

Quote:

Originally Posted by Razchek (Post 3191696)
Thank you! I'll take a look. <3

Some discussions on it:

https://stackoverflow.com/questions/...implementation

https://stackoverflow.com/questions/...of-memory-leak

https://stackoverflow.com/questions/...-concurrentbag

It's not a leak per-say, but more of an uncontrolled object creation growth where the objects are very tiny memory wise. This might be entirely different in 5.0, I'm betting it likely is.

Also, lock should outperform any concurrent class, but might not in real world examples. In benchmarks it almost always will though if written properly. You may have written a benchmark showing the concurrent collection to be more efficient, but likely you tested with a consistent execution time of each thread. In reality, threads shouldn't be competing on the lock so often as each one is processing a different item, which takes a different amount of time depending on each item. If you benchmark something like lock { test.Add(test) } vs. Bag.Add(test), the concurrent collection will win every time as you'll be competing for the lock which wouldn't happen in your real code as often. For an accurate benchmark of time to insert or take from a bag vs using a lock, you should iterate something random like (for i = 0; i < rand(20,30); i++) before calling add/take, then measure the time it takes to add/take rather than the thread execution time. There's times / cases for both and it's almost always dependent on how your code operates to determine if you should or not. For my case, locks work fine. For you, maybe not.

Quote:

Originally Posted by Razchek (Post 3191696)
Thank you! I'll take a look. <3

With your 5.0 projects, does visual studio force you into hitting "publish"? I can't get single exe (rather than the bullshit dll shit) generation unless I "publish". My users from Asia also complain about the download size (50-60MB) compared to .net 4.8 2-3mb.

Razchek 23rd July 2021 04:26 AM

Quote:

Originally Posted by bhehe6813 (Post 3191699)
https://stackoverflow.com/questions/...implementation

https://stackoverflow.com/questions/...of-memory-leak

It's not a leak per-say, but more of an uncontrolled object creation growth where the objects are very tiny memory wise.

Ah! I can see the potential issue.
All of my threads are long running, so I don't necessarily notice this growth I believe.
At first glimpse, with Parallel for[each] I can definitely see how this would cause an issue.

I have 16 different threads that run for the entire app session.
No short lived threads except for pop-up flying damage numbers, which doesn't access the bags.

It was around .NET Framework 4.5 where I made to switch from locks to concurrent collections after benchmarking between parallel loops w/mutex and threads which accessed bags.

I'll take a look at the ThreadLocalList in the profiler and re-evaluate if necessary. Thanks for the links to help me understand it better. Either way I've got some learning to do. :D

bhehe6813 23rd July 2021 04:30 AM

Quote:

Originally Posted by Razchek (Post 3191706)
Ah! I can see the potential issue.
All of my threads are long running, so I don't necessarily notice this growth I believe.
At first glimpse, with Parallel for[each] I can definitely see how this would cause an issue.

I have 16 different threads that run for the entire app session.
No short lived threads except for pop-up flying damage numbers, which doesn't access the bags.

It was around .NET Framework 4.5 where I made to switch from locks to concurrent collections after benchmarking between parallel loops w/mutex and threads which accessed bags.

I'll take a look at the ThreadLocalList in the profiler and re-evaluate if necessary. Thanks for the links to help me understand it better. Either way I've got some learning to do. :D

See my question above, I edited my poost.

Also, I'm surprised you can have 16 threads running the entire time. I start to have issues with threads competing against each other after 5-6 or so.

I create the core threads like this:

Code:

                        var update= new(new ThreadStart(World.Update))
                        {
                                Priority = ThreadPriority.Normal
                        };
                        var keybinds = new(new ThreadStart(Keybind.KeybindLoop))
                        {
                                Priority = ThreadPriority.BelowNormal
                        };

ThreadStart isn't needed, but this is ILSpy'd from an old debug build I have lol so it's a bit funky.

Shynd 23rd July 2021 04:38 AM

God, I've been doing this since like .NET 1.1 when object thisLock= new object(); and lock (thisLock) {...} was the standard practice, and I still use it. It makes me feel like I have more control..? But if I want total control why am I using C#? :lmao:

Either way I have no performance issues that I care about or that I notice.

Razchek 23rd July 2021 04:38 AM

Quote:

Originally Posted by bhehe6813 (Post 3191708)
See my question above, I edited my poost.

Also, I'm surprised you can have 16 threads running the entire time. I start to have issues with threads competing against each other after 5-6 or so.

I create the core threads like this:

Code:

                        var update= new(new ThreadStart(World.Update))
                        {
                                Priority = ThreadPriority.Normal
                        };
                        var keybinds = new(new ThreadStart(Keybind.KeybindLoop))
                        {
                                Priority = ThreadPriority.BelowNormal
                        };


That's essentially synonymous with the way I initialize my threads. Afaik the difference is just syntactical. The majority of my threads that don't require native clean-ups have the IsBackground property set to true.
Code:

new Thread(SomeMethod){ IsBackground = true, Priority = Normal/High/etc }.Start();
Quote:

Originally Posted by bhehe6813 (Post 3191699)
With your 5.0 projects, does visual studio force you into hitting "publish"? I can't get single exe (rather than the bullshit dll shit) generation unless I "publish". My users from Asia also complain about the download size (50-60MB) compared to .net 4.8 2-3mb.

Not at all, at least in VS2019. I can just hit Build and then navigate to: [bin\[Debug|Release]\net5.0-windows\] for the .exe and any other files

Quote:

Originally Posted by Shynd (Post 3191712)
God, I've been doing this since like .NET 1.1 when object thisLock= new object(); and lock (thisLock) {...} was the standard practice, and I still use it. It makes me feel like I have more control..? But if I want total control why am I using C#? :lmao:

Either way I have no performance issues that I care about or that I notice.

I have some sort of stigma from trying to move away from coding practices I learned when I used to primarily code with C++.
Maybe I'm being adventurous (and more likely, stupid haha).
I really enjoy C# over C++ these days. Looks way more pretty, and performance difference in a lot of cases are negligible (or so I keep telling myself).

bhehe6813 23rd July 2021 04:48 AM

Quote:

Originally Posted by Shynd (Post 3191712)
God, I've been doing this since like .NET 1.1 when object thisLock= new object(); and lock (thisLock) {...} was the standard practice, and I still use it. It makes me feel like I have more control..? But if I want total control why am I using C#? :lmao:

Either way I have no performance issues that I care about or that I notice.

That's because the thread scheduling is black magic and works extremely fucking well, so even when you have multiple threads all trying to get a lock, it processes them insanely fast.

Shynd 23rd July 2021 04:49 AM

Quote:

Originally Posted by Razchek (Post 3191713)
I have some sort of stigma from trying to move away from coding practices I learned when I used to primarily code with C++.
Maybe I'm being adventurous (and more likely, stupid haha).
I really enjoy C# over C++ these days. Looks way more pretty, and performance difference in a lot of cases are negligible (or so I keep telling myself).

I vastly prefer C# as well. I'm currently tied to SharpDX for my overlay and don't really want to reinvent the wheel, otherwise I'd be jumping ship to .NET Core just to play with new toys (and SIMD-accelerated Numerics). I just know if I try to port my codebase to a new renderer I'll spend days and days going "why the fuck did I do it THAT way!?" and re-writing it even for code that works.

bhehe6813 23rd July 2021 04:49 AM

Quote:

Originally Posted by Shynd (Post 3191726)
I vastly prefer C# as well. I'm currently tied to SharpDX for my overlay and don't really want to reinvent the wheel, otherwise I'd be jumping ship to .NET Core just to play with new toys (and SIMD-accelerated Numerics). I just know if I try to port my codebase to a new renderer I'll spend days and days going "why the fuck did I do it THAT way!?" and re-writing it even for code that works.

SharpDX is in .net core now, and .net 5.0. My two newer cheats both use 5.0. MSoft has a tool you can try running that converts .net 4.8 and prior to 5.0 and updates the nuget packages as well. Didn't work well for me though.

Shynd 23rd July 2021 04:51 AM

Quote:

Originally Posted by bhehe6813 (Post 3191727)
SharpDX is in .net core now, and .net 5.0. My two newer cheats both use 5.0.

..shit. You probably just ruined my social life :)


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

bhehe6813 23rd July 2021 04:54 AM

Quote:

Originally Posted by Shynd (Post 3191731)
..shit. You probably just ruined my social life :)

Correction, you can use it in 5.0, core 3 and lower, but not core 3.1. 5.0 should have most of 3.1's stuff though.

beepboop5 23rd July 2021 08:27 AM

Quote:

Originally Posted by hollow (Post 3190423)
how do you guys get the head and other hitboxes for aimbot?
the head bone�s transform is horrible for this as it�s in the very back of the model�s head, and when the unfortunate victim is running it�s even worse - simply unhittable.

i am currently just extrapolating the bone pos in the view direction, but that just seems to be ghetto as fuck, wondering if there�s a better solution.

Make p aimbot prediction.

vasterasjontek 23rd July 2021 01:32 PM

Does anyone know how to do "no sway" without the mask offset?

bhehe6813 23rd July 2021 07:35 PM

Quote:

Originally Posted by vasterasjontek (Post 3192107)
Does anyone know how to do "no sway" without the mask offset?

Take a look at the class? It's pretty easy to figure this one out:

https://i.imgur.com/R8dD0o0.png

Pretty sure you can also cancel sway with the breatheffector.

Quote:

Originally Posted by hollow (Post 3190423)
how do you guys get the head and other hitboxes for aimbot?
the head bone’s transform is horrible for this as it’s in the very back of the model’s head, and when the unfortunate victim is running it’s even worse - simply unhittable.

i am currently just extrapolating the bone pos in the view direction, but that just seems to be ghetto as fuck, wondering if there’s a better solution.

I got you:

Use their neck bone, it's at the front of their model. You'll still get "headshots" most of the time. boneArray + 0x440.


Code:

        public static Vector3 GetAngle(Vector3 origin, Vector3 destination) // origin = your fireport position, destination = their neck mesh position
        {
            var delta = origin - destination;
            var length = delta.Length();

            return new Vector3((float)-Math.Atan2(delta.X, -delta.Z) * 57.29578f, (float)Math.Sin(delta.Y / (double)length) * 57.29578f, 0.0f);
        }

Also just calculate their velocity?

Keep an instance of their previous position. My shit runs fast so I take an average velocity over 5 instances. You can also just do it the game does it for bullets, which is just a comparison between last position and current position, but I find this unrealiable due to how fast my loop is executing:

Code:

Actor.ActorMovementHistory[playerPtr].Add(neckBonePos); // add position to list

if (history.Count > 1) {
  return currentPosition - history[history.Count - 2];
}


bhehe6813 25th July 2021 03:56 AM

New fence loyalty, here's what it's like in assemblyc#:

Code:

        public void KillEnemy(Player killedPlayer)
        {
                if (this.Player.Profile.Info.Side == EPlayerSide.Savage && killedPlayer.Profile.Info.Side == EPlayerSide.Savage)
                {
                        float standingForKill = killedPlayer.Profile.Info.Settings.StandingForKill;
                        \uE3FF.FenceLoyaltyLevel fenceLoyalty = this.Player.Profile.FenceInfo.FenceLoyalty;
                        if (fenceLoyalty.IsMaxLevel && this.\uE001(killedPlayer.Profile.Info.Settings.Role))
                        {
                                float standingForKill2 = this.Player.Profile.Info.Settings.StandingForKill;
                                float killedTargetCoef = standingForKill + (standingForKill2 - fenceLoyalty.StandingRequired);
                                this.LoyaltySettings.KillAsSavage(killedTargetCoef);
                        }
                        else if (!killedPlayer.AIData.IsAI && killedPlayer.AIData.CanBeFreeKilled)
                        {
                                this.LoyaltySettings.KillAsSavage(killedPlayer.Profile.Info.Settings.AggressorBonus);
                        }
                        else
                        {
                                if (!this.LoyaltySettings.CanKillForFree(killedPlayer.Id))
                                {
                                        bool hostileScavs = this.Player.Profile.FenceInfo.FenceLoyalty.HostileScavs;
                                        if (!this.Player.Profile.FenceInfo.FenceLoyalty.HostileScavs)
                                        {
                                                this.LoyaltySettings.KillAsSavage(standingForKill);
                                        }
                                }
                                this.CanBeFreeKilled = true;
                        }
                }
                this.\uE008++;
                if (this.IsAxe)
                {
                        if (this.\uE008 > \uE1A8.Core.AXE_MAN_KILLS_END)
                        {
                                this.IsAxe = false;
                        }
                }
        }

bool player->AIData.CanBeFreeKilled

xXBradXx 25th July 2021 10:38 AM

Quote:

Originally Posted by bhehe6813 (Post 3194170)
bool player->AIData.CanBeFreeKilled

i believe to get this struct it's player + 0x478
then this is how the struct looks (from unispect)

one of those bools is gonna be CanBeFreeKilled not sure which yet, not tested.
also looks like the hash set in there contains the IDs of player scavs who have shot you too

hollow 25th July 2021 12:48 PM

Quote:

Originally Posted by xXBradXx (Post 3194405)
one of those bools is gonna be CanBeFreeKilled not sure which yet, not tested.

right click getter/setter in dnspy, select analyze->uses - it’ll show you the backing field.

xXBradXx 25th July 2021 01:31 PM

Quote:

Originally Posted by hollow (Post 3194491)
right click getter/setter in dnspy, select analyze->uses - it�ll show you the backing field.

https://i.imgur.com/flSOQwb.png
is what i see, not sure how that helps.
did i click the wrong thing?

hst 25th July 2021 04:11 PM

Quote:

Originally Posted by xXBradXx (Post 3194542)
https://i.imgur.com/flSOQwb.png
is what i see, not sure how that helps.
did i click the wrong thing?

\uE180.\uE00F is the backing field

xXBradXx 26th July 2021 05:55 AM

Quote:

Originally Posted by hst (Post 3194707)
\uE180.\uE00F is the backing field

still not sure how that helps determine the offset for where that bool is in memory

bhehe6813 26th July 2021 06:00 AM

Quote:

Originally Posted by xXBradXx (Post 3194405)
i believe to get this struct it's player + 0x478
then this is how the struct looks (from unispect)

one of those bools is gonna be CanBeFreeKilled not sure which yet, not tested.
also looks like the hash set in there contains the IDs of player scavs who have shot you too

It's because you're looking at dnSpy which names unprintable characters \uXXX while Unispect (what I think you're using) renames them type_0xOffset and GClassXXXX. I left offsets off my post because they're easy to find.

If you want it to line up either deobfuscate the assembly and then use dnspy, or just use cheat engines .net browser which names them the same as dnspy. It works the same as unispect although I use both since unispect has better searching. The value you want is player -> 0x478 (ai data) -> 0x9C (called "boolean_0x9C" in your dump, called "\uE00F" in cheat engine and dnspy) is CanBeFreeKilled.

I tested this online and did not see any players with it, so I'm not sure if it works, or if all the player scavs in my game were friendly. If it doesn't work then the way to determine it is how the game does it-- I think it uses some hash list of players killed in the players profile and checks to see if any players killed are savage playerside and did not have the canbefreekilled value.

xXBradXx 26th July 2021 01:57 PM

Quote:

Originally Posted by bhehe6813 (Post 3195310)
It's because you're looking at dnSpy which names unprintable characters \uXXX while Unispect (what I think you're using) renames them type_0xOffset and GClassXXXX. I left offsets off my post because they're easy to find.

If you want it to line up either deobfuscate the assembly and then use dnspy, or just use cheat engines .net browser which names them the same as dnspy. It works the same as unispect although I use both since unispect has better searching. The value you want is player -> 0x478 (ai data) -> 0x9C (called "boolean_0x9C" in your dump, called "\uE00F" in cheat engine and dnspy) is CanBeFreeKilled.

I tested this online and did not see any players with it, so I'm not sure if it works, or if all the player scavs in my game were friendly. If it doesn't work then the way to determine it is how the game does it-- I think it uses some hash list of players killed in the players profile and checks to see if any players killed are savage playerside and did not have the canbefreekilled value.

ah ok, the way i have been getting offsets if i've been using dnspy is just find the same struct in unispect and go from there, if there's something like this where it's just a bunch of unnamed things like "bool_<offset>" i just check each one. though i've not been using dnspy much, just looking for stuff in unispect is often enough. im usually looking for something specific which can be easily searched for in unispect.

also on it not actually working i think it's gonna be the same for all of the scav karma related stuff. the rep for kill or whatever doesn't ever change either, i don't think any of those values are networked to the client. i don't expect the hash set is either, and i think that is specifically for scavs who have shot you but not killed you that allows you to retaliate.

sharkdev 27th July 2021 01:39 AM

Quote:

Originally Posted by alexanderyy (Post 3186867)
How are people filtering items in categories like consumables, weapons, and such? I have been looking for a bit, but can't seem to find anything

Haven't seen this posted in a while, here are the updated prices

Code:

std::unordered_map<std::string, std::pair<std::string, int>> EFT_ItemNames = {
{"590c621186f774138d11ea29",        {"Flash drive",        37335}},
{"590c392f86f77444754deb29",        {"SSD",        32989}},
{"5a1eaa87fcdbcb001865f75e",        {"REAP-IR",        309573}},
{"5c110624d174af029e69734c",        {"T-7",        15372000}},
{"5d1b33a686f7742523398398",        {"Superwater",        105175}},
{"5c0558060db834001b735271",        {"GPNVG-18",        119709}},
{"5b6d9ce188a4501afc1b2b25",        {"T H I C C",        6042014}},
{"5b7c710788a4506dec015957",        {"Lucky Scav",        966537}},
{"5c1d0c5f86f7744bb2683cf0",        {"Blue",        6042713}},
{"5c94bbff86f7747ee735c08f",        {"Access",        202656}},
{"59fb016586f7746d0d4b423a",        {"MCase",        396401}},
{"5c0126f40db834002a125382",        {"RedRebel",        3462490}},
{"5aafbde786f774389d0cbc0f",        {"Ammo",        145210}},
{"5c12613b86f7743bbe2c3f76",        {"Intelligence",        119590}},
{"59faff1d86f7746c51718c9c",        {"0.2BTC",        204537}},
{"590c60fc86f77412b13fddcf",        {"DocCase",        430483}},
{"5aafbcd986f7745e590fff23",        {"MedCase",        284525}},
{"59e3639286f7741777737013",        {"BLion",        370522}},
{"5c0a840b86f7742ffa4f2482",        {"T H I C C",        10969182}},
{"5ad5d7d286f77450166e0a89",        {"KIBA outer",        408437}},
{"5d1b376e86f774252519444e",        {"Moonshine",        147207}},
{"57347ca924597744596b4e71",        {"GPU",        310057}},
{"59fafd4b86f7745ca07e1232",        {"Key tool",        637728}},
{"5a13ef0686f7746e5a411744",        {"W219 San",        128637}},
{"59e35cbb86f7741778269d83",        {"Hose",        42594}},
{"5d235bb686f77443f4331278",        {"S I C C",        750000}},
{"5c127c4486f7745625356c13",        {"MagCase",        310078}},
{"5c1d0d6d86f7744bb2683e1f",        {"Yellow",        61646}},
{"5448ba0b4bdc2d02308b456c",        {"Factory",        64475}},
{"5c1e495a86f7743109743dfb",        {"Violet",        2966841}},
{"5a13f35286f77413ef1436b0",        {"E226 San",        84217}},
{"5733279d245977289b77ec24",        {"Car batt.",        122457}},
{"5d1b2f3f86f774252167a52c",        {"FP-100",        101619}},
{"5d03794386f77420415576f5",        {"Tank battery",        761361}},
{"5c1d0f4986f7744bb01837fa",        {"Black",        4244444}},
{"5c0530ee86f774697952d952",        {"LEDX",        427617}},
{"5c1d0dc586f7744baf2e7b79",        {"Green",        146000}},
{"5c1d0efb86f7744baf2e7b7b",        {"Red",        35006944}},
{"5da5cdcd86f774529238fb9b",        {"RB-RH",        91117}},
{"5d9f1fa686f774726974a992",        {"RB-ST",        836035}},
{"5d95d6fa86f77424484aa5e9",        {"RB-PSP2",        80846}},
{"5d947d3886f774447b415893",        {"RB-SMP",        459266}},
{"5d947d4e86f774447b415895",        {"RB-KSM",        258061}},
{"5d8e0db586f7744450412a42",        {"RB-KORL",        123821}},
{"5d80cd1a86f77402aa362f42",        {"RB-ORB3",        162322}},
{"5d80cb8786f774405611c7d9",        {"RB-PP",        45314}},
{"5d80cb3886f77440556dbf09",        {"RB-PSP1",        107975}},
{"5d80cab086f77440535be201",        {"RB-MP22 key",        690437}},
{"5d80ca9086f774403a401e40",        {"RB-MP21",        64347}},
{"5d80cbd886f77470855c26c2",        {"RB-MP13",        54835}},
{"5d80c93086f7744036212b41",        {"RB-MP11",        67963}},
{"5d80c88d86f77440556dbf07",        {"RB-AM",        202315}},
{"5d80c6c586f77440351beef1",        {"RB-OB",        199632}},
{"5d80c62a86f7744036212b3f",        {"RB-VO mark.",        70259}},
{"5d80c60f86f77440373c4ece",        {"RB-BK mark.",        74374}},
{"5ad5db3786f7743568421cce",        {"EMC",        227384}},
{"5d8e0e0e86f774321140eb56",        {"RB-KPRL",        807777}},
{"5a0eed4386f77405112912aa",        {"E314 San",        35803}},
{"5a0eecf686f7740350630097",        {"E313 San",        74301}},
{"5a145d4786f7744cbb6f4a12",        {"E306 San",        91729}},
{"5a0ee4b586f7743698200d22",        {"E206 San",        51340}},
{"5a144bdb86f7741d374bbde0",        {"E205 San",        63325}},
{"5a0ea64786f7741707720468",        {"E107 San",        68387}},
{"5a145d7b86f7744cbb6f4a13",        {"E308 San",        72705}},
{"5a13f46386f7741dd7384b04",        {"W306 San",        232629}},
{"5a13ef7e86f7741290491063",        {"W301 San",        289719}},
{"5a1452ee86f7746f33111763",        {"W222 San",        67258}},
{"5a0ee37f86f774023657a86f",        {"W221 San",        58863}},
{"5a0ee34586f774023b6ee092",        {"W220 San",        177231}},
{"5d80c95986f77440351beef3",        {"RB-MP12",        100792}},
{"5d80c78786f774403a401e3e",        {"RB-AK",        96524}},
{"5937ee6486f77408994ba448",        {"Machinery",        7541}},
{"5d80ccdd86f77474f7575e02",        {"RB-ORB2",        87321}},
{"5ad7247386f7747487619dc3",        {"Goshan reg.",        92927}},
{"5d80cb5686f77440545d1286",        {"RB-PS81",        66016}},
{"5a0ee76686f7743698200d5c",        {"E216 San",        64822}},
{"5da46e3886f774653b7a83fe",        {"RB-RS",        103874}},
{"5d80c6fc86f774403a401e3c",        {"RB-TB",        137564}},
{"593962ca86f774068014d9af",        {"Unk. key",        10490}},
{"5d80c8f586f77440373c4ed0",        {"RB-OP",        382427}},
{"5a0eee1486f77402aa773226",        {"E328 San",        85447}},
{"5d8e3ecc86f774414c78d05e",        {"RB-GN",        144889}},
{"5a0ee30786f774023b6ee08f",        {"W216 San",        477041}},
{"5d80ccac86f77470841ff452",        {"RB-ORB1",        471069}},
{"5780cf7f2459777de4559322",        {"Dorm mark.",        607805}},
{"5a13f24186f77410e57c5626",        {"E222 San",        82963}},
{"5c1f79a086f7746ed066fb8f",        {"TGL ASR",        63013}},
{"5d95d6be86f77424444eb3a7",        {"RB-PS82",        388044}},
{"5a0f08bc86f77478f33b84c2",        {"Safe",        73898}},
{"5d08d21286f774736e7c94c3",        {"SSK",        112142}},
{"5c1e2d1f86f77431e9280bee",        {"TGL WT",        90654}},
{"5938504186f7740991483f30",        {"Dorm 203",        11410}},
{"593aa4be86f77457f56379f8",        {"Dorm 303",        18333}},
{"5a13eebd86f7746fd639aa93",        {"W218 San",        80171}},
{"5913915886f774123603c392",        {"Checkpoint",        64875}},
{"5780d0532459777a5108b9a2",        {"Director's",        7850}},
{"5938144586f77473c2087145",        {"Bunk key",        10450}},
{"5913611c86f77479e0084092",        {"Cabin key",        7840}},
{"5d80c66d86f774405611c7d6",        {"RB-AO",        48166}},
{"5a0ea79b86f7741d4a35298e",        {"San util.",        56376}},
{"5a0dc45586f7742f6b0b73e3",        {"W104 San",        102135}},
{"5c1e2a1e86f77431ea0ea84c",        {"TGL MO",        82476}},
{"5a0dc95c86f77452440fc675",        {"W112 San",        80249}},
{"59136a4486f774447a1ed172",        {"GDesk",        8496}},
{"5780cf942459777df90dcb72",        {"Dorm 214",        27200}},
{"59387a4986f77401cc236e62",        {"Dorm 114",        11174}},
{"5780cfa52459777dfb276eb1",        {"Dorm 220",        20194}},
{"591383f186f7744a4c5edcf3",        {"Dorm 104",        10989}},
{"5938603e86f77435642354f4",        {"Dorm 206",        6323}},
{"5d1b2ffd86f77425243e8d17",        {"NIXXOR",        23321}},
{"5d40419286f774318526545f",        {"MScissors",        13771}},
{"5c1267ee86f77416ec610f72",        {"Prokill",        76920}},
{"5c12620d86f7743f8b198b72",        {"Tetriz",        79742}},
{"5bc9b9ecd4351e3bac122519",        {"BeardOil",        34781}},
{"59faf7ca86f7740dbe19f6c2",        {"Roler",        66928}},
{"5bc9be8fd4351e00334cae6e",        {"42nd",        22692}},
{"5af0561e86f7745f5f3ad6ac",        {"Powerbank",        25605}},
{"5af0534a86f7743b6f354284",        {"Ophthalmoscope",        69402}},
{"590a373286f774287540368b",        {"DFuel",        56172}},
{"59faf98186f774067b6be103",        {"Alkali",        13045}},
{"59fafb5d86f774067a6f2084",        {"Propane",        16762}},
{"5b4335ba86f7744d2837a264",        {"Bloodset",        15114}},
{"590c35a486f774273531c822",        {"Shus",        34747}},
{"59e358a886f7741776641ac3",        {"Clin",        8666}},
{"590a391c86f774385a33c404",        {"Magnet",        19018}},
{"5c13cd2486f774072c757944",        {"Soap",        8020}},
{"5734758f24597738025ee253",        {"GoldChain",        26815}},
{"573474f924597738002c6174",        {"Chainlet",        5892}},
{"5bc9bdb8d4351e003562b8a1",        {"Badge",        37089}},
{"590c2b4386f77425357b6123",        {"Pliers",        6807}},
{"590c311186f77424d1667482",        {"Wrench",        12906}},
{"590c2d8786f774245b1f03f3",        {"Scdr.",        5777}},
{"577e1c9d2459773cd707c525",        {"Paper",        10921}},
{"57347cd0245977445a2d6ff1",        {"T-Plug",        4633}},
{"5909e99886f7740c983b9984",        {"USB-A",        4053}},
{"57347c93245977448d35f6e3",        {"Toothpaste",        4219}},
{"590c2c9c86f774245b1f03f2",        {"MTape",        2321}},
{"57347c1124597737fb1379e3",        {"Duct tape",        4203}},
{"59e36c6f86f774176c10a2a7",        {"PCord",        19121}},
{"57347baf24597738002c6178",        {"RAM",        8055}},
{"573477e124597737dd42e191",        {"CPU",        8410}},
{"5734779624597737e04bf329",        {"CPU Fan",        26098}},
{"56742c324bdc2d150f8b456d",        {"GPhone",        15601}},
{"590a3d9c86f774385926e510",        {"UV Lamp",        9192}},
{"5672cb304bdc2dc2088b456a",        {"D Batt.",        6870}},
{"5672cb124bdc2d1a0f8b4568",        {"AA Batt.",        5005}},
{"5c1265fc86f7743f896a21c2",        {"GPX",        19874}},
{"5c06782b86f77426df5407d2",        {"Caps",        8684}},
{"590a3efd86f77437d351a25b",        {"GasAn",        14132}},
{"59e3647686f774176a362507",        {"WClock",        39537}},
{"59e3658a86f7741776641ac4",        {"Cat",        29581}},
{"5734770f24597738025ee254",        {"Strike",        3984}},
{"590a3cd386f77436f20848cb",        {"ES Lamp",        11400}},
{"56742c2e4bdc2d95058b456d",        {"Zibbo",        9232}},
{"57347c5b245977448d35f6e1",        {"Bolts",        14896}},
{"57347c77245977448d35f6e2",        {"Screw nut",        7811}},
{"5d1b371186f774253763a656",        {"Fuel",        108222}},
{"5c12688486f77426843c7d32",        {"Paracord",        86277}},
{"59f32c3b86f77472a31742f0",        {"USEC",        600}},
{"59f32bb586f774757e1e8442",        {"BEAR",        600}},
{"590c31c586f774245e3141b2",        {"Nails",        7448}},
{"5addaffe86f77470b455f900",        {"KIBA inner",        178323}},
{"5ad5d64486f774079b080af8",        {"Pharmacy",        56055}},
{"5ad5d49886f77455f9731921",        {"Power cabin",        11500}},
{"5ad5d20586f77449be26d877",        {"OLI util.",        27447}},
{"5ad5ccd186f774446d5706e9",        {"OLI office",        21215}},
{"5a0eec9686f77402ac5c39f2",        {"E310 San",        96444}},
{"5a0eebed86f77461230ddb3d",        {"W325 San",        55468}},
{"5a0eeb1a86f774688b70aa5c",        {"W303 San",        64711}},
{"5c0e842486f77443a74d2976",        {"Maska-1Shch",        54788}},
{"5aa7e373e5b5b000137b76f0",        {"Altyn",        51736}},
{"5b46238386f7741a693bcf9c",        {"Kiver FS",        26685}},
{"5d40425986f7743185265461",        {"Nippers",        3838}},
{"5a0eeb8e86f77461257ed71a",        {"W309 San",        50260}},
{"5c10c8fd86f7743d7d706df3",        {"Adrenaline",        14738}},
{"5c0e531d86f7747fa23f4d42",        {"SJ6 TGLabs",        39904}},
{"5d02778e86f774203e7dedbe",        {"CMS",        17439}},
{"5751a89d24597722aa0e8db0",        {"GoldenStar",        59155}},
{"5755383e24597772cb798966",        {"Vaseline",        23277}},
{"590c657e86f77412b013051d",        {"Grizzly",        20886}},
{"5a13ee1986f774794d4c14cd",        {"W323 San",        46223}},
{"590c678286f77426c9660122",        {"IFAK",        13623}},
{"544fb45d4bdc2dee738b4568",        {"Salewa",        19034}},
{"590c661e86f7741e566b646a",        {"Car",        7271}},
{"544fb3f34bdc2d03748b456a",        {"Morphine",        10498}},
{"590c695186f7741e566b64a2",        {"Augmentin",        9298}},
{"5d40407c86f774318526545a",        {"Vodka",        16339}},
{"5bc9b156d4351e00367fbce9",        {"Mayo",        12816}},
{"5751496424597720a27126da",        {"Hot Rod",        9512}},
{"57514643245977207f2c2d09",        {"TarCola",        7372}},
{"5751435d24597720a27126d1",        {"MaxNRG",        9722}},
{"5d1b317c86f7742523398392",        {"Hand drill",        37208}},
{"5d403f9186f7743cac3f229b",        {"Whiskey",        31361}},
{"57513fcc24597720a31c09a6",        {"Vita",        7637}},
{"57513f07245977207e26a311",        {"Aple",        5693}},
{"5734795124597738002c6176",        {"Tape",        9392}},
{"575062b524597720a31c09a1",        {"Green Ice",        3687}},
{"544fb62a4bdc2dfb738b4568",        {"Pineapple",        6465}},
{"5448fee04bdc2dbc018b4567",        {"Water",        12837}},
{"5c0e533786f7747fa23f4d47",        {"Zagustin",        17387}},
{"590c5f0d86f77413997acfab",        {"MRE",        16262}},
{"57347d8724597744596b4e76",        {"Squash",        9468}},
{"57347d692459774491567cf1",        {"Peas",        9479}},
{"5c052f6886f7746b1e3db148",        {"SG-C10",        109627}},
{"5a0ea69f86f7741cd5406619",        {"E108 San",        47875}},
{"57347d5f245977448b40fa81",        {"Humpback",        5218}},
{"5751487e245977207e26a315",        {"Emelya",        2999}},
{"59e3577886f774176a362503",        {"Sugar",        18960}},
{"544fb6cc4bdc2d34748b456e",        {"Slickers",        7191}},
{"590c37d286f77443be3d7827",        {"SAS",        36507}},
{"57505f6224597709a92585a9",        {"Alyonka",        13796}},
{"5448ff904bdc2d6f028b456e",        {"Crackers",        12932}},
{"5c093e3486f77430cb02e593",        {"Dogtags",        420272}},
{"5783c43d2459774bbe137486",        {"Wallet",        7726}},
{"5c093db286f7740a1b2617e3",        {"Holodilnick",        489736}},
{"5d6d3829a4b9361bc8618943",        {"LShZ-2DTM",        44011}},
{"59fb023c86f7746d0d4b423c",        {"WCase",        3016667}},
{"590a358486f77429692b2790",        {"RBattery",        10547}},
{"590c651286f7741e566b6461",        {"SDiary",        27985}},
{"590c645c86f77412b01304d9",        {"Diary",        25866}},
{"5d1b313086f77425227d1678",        {"Relay",        19104}},
{"5d4042a986f7743185265463",        {"L&F scdr.",        8884}},
{"567143bf4bdc2d1a0f8b4567",        {"PCase",        17083}},
{"5d1c774f86f7746d6620f8db",        {"Helix",        9096}},
{"5ad7217186f7746744498875",        {"OLI reg.",        50088}},
{"5734773724597737fd047c14",        {"Cond. milk",        15529}},
{"591afe0186f77431bd616a11",        {"ZB-014",        15012}},
{"5bc9c377d4351e3bac12251b",        {"Firesteel",        39204}},
{"5af0484c86f7740f02001f7f",        {"Majaica",        17501}},
{"5d235a5986f77443f6329bc6",        {"Skull",        70759}},
{"5a0f006986f7741ffd2fe484",        {"Safe",        46166}},
{"5d1b309586f77425227d1676",        {"BrokenLCD",        9293}},
{"5bc9c049d4351e44f824d360",        {"Book",        38711}},
{"5bc9b720d4351e450201234b",        {"1GPhone",        27925}},
{"591382d986f774465a6413a7",        {"Dorm 105",        4536}},
{"590c595c86f7747884343ad7",        {"Filter",        12908}},
{"57347d3d245977448f7b7f61",        {"Croutons",        16726}},
{"59e361e886f774176c10a2a5",        {"H2O2",        9153}},
{"590de71386f774347051a052",        {"Teapot",        29200}},
{"5af04b6486f774195a3ebb49",        {"Elite",        11622}},
{"5c052e6986f7746b207bc3c9",        {"Defibrillator",        141883}},
{"59e35ef086f7741777737012",        {"Screws",        3396}},
{"5d1b39a386f774252339976f",        {"Tube",        11776}},
{"5bc9b355d4351e6d1509862a",        {"#FireKlean",        149093}},
{"5d02797c86f774203f38e30a",        {"Surv12",        28083}},
{"57513f9324597720a7128161",        {"Grand",        7069}},
{"590c346786f77423e50ed342",        {"Xeno",        19811}},
{"5c0e531286f7747fa54205c2",        {"SJ1 TGLabs",        22455}},
{"591ae8f986f77406f854be45",        {"Yotota",        7400}},
{"5d4041f086f7743cac3f22a7",        {"Ortodontox",        3510}},
{"57347da92459774491567cf5",        {"Tushonka",        8085}},
{"57347d9c245977448b40fa85",        {"Herring",        11225}},
{"57347b8b24597737dd42e192",        {"Matches",        5122}},
{"57347d7224597744596b4e72",        {"Tushonka",        7463}},
{"5c05308086f7746b2101e90b",        {"Virtex",        323616}},
{"5780cf692459777de4559321",        {"Dorm 315",        6776}},
{"5ca2113f86f7740b2547e1d2",        {"Vulkan-5",        32943}},
{"5d6fc78386f77449d825f9dc",        {"GPowder",        46196}},
{"5780d0652459777df90dcb74",        {"G. Office",        8340}},
{"573476d324597737da2adc13",        {"Malboro",        6268}},
{"590c5bbd86f774785762df04",        {"WD-40",        7342}},
{"5b43575a86f77424f443fe62",        {"FCond",        40840}},
{"573475fb24597737fb1379e1",        {"Apollon",        7620}},
{"5a0eedb386f77403506300be",        {"E322 San",        47443}},
{"59136e1e86f774432f15d133",        {"Dorm 110",        21800}},
{"57347c2e24597744902c94a1",        {"PSU",        37736}},
{"5d1b3a5d86f774252167ba22",        {"Meds",        6827}},
{"5bc9bc53d4351e00367fbcee",        {"Rooster",        56988}},
{"5aa7e3abe5b5b000171d064d",        {"ZSh-1-2M",        19919}},
{"5d03775b86f774203e7e0c4b",        {"AESA",        304540}},
{"5ad7242b86f7740a6a3abd43",        {"IDEA reg.",        49863}},
{"5ad5cfbd86f7742c825d6104",        {"OLI Log.",        395736}},
{"5c0fa877d174af02a012e1cf",        {"Aquamari",        14239}},
{"5a0ee72c86f77436955d3435",        {"E213 San",        39520}},
{"590a386e86f77429692b27ab",        {"HDD",        14299}},
{"590a3b0486f7743954552bdb",        {"PCB",        13116}},
{"590c5a7286f7747884343aea",        {"Kite",        9716}},
{"59e35de086f7741778269d84",        {"EDrill",        17888}},
{"590c5c9f86f77477c91c36e7",        {"WD-40",        15802}},
{"5d40412b86f7743cb332ac3a",        {"Shampoo",        11116}},
{"59148c8a86f774197930e983",        {"Dorm 204",        9281}},
{"5d03784a86f774203e7e0c4d",        {"MGT",        37590}},
{"5d1b36a186f7742523398433",        {"Fuel",        100764}},
{"590de7e986f7741b096e5f32",        {"Vase",        42688}},
{"5a0ee62286f774369454a7ac",        {"E209 San",        52180}},
{"575146b724597720a27126d5",        {"Milk",        16737}},
{"590c5d4b86f774784e1b9c45",        {"Iskra",        9761}},
{"5d1b304286f774253763a528",        {"LCD",        23760}},
{"5d1c819a86f774771b0acd6c",        {"WParts",        18939}},
{"5d0377ce86f774186372f689",        {"Iridium",        53754}},
{"59e3596386f774176c10a2a2",        {"PAID",        13727}},
{"5c052fb986f7746b2101e909",        {"RFIDR",        141551}},
{"590c639286f774151567fa95",        {"Manual",        8139}},
{"5d8e15b686f774445103b190",        {"HEPS",        76499}},
{"5d1b392c86f77425243e98fe",        {"Bulb",        5479}},
{"59136f6f86f774447a1ed173",        {"Car key",        5533}},
{"57347d90245977448f7b7f65",        {"Oatflakes",        12221}},
{"5a144dfd86f77445cb5a0982",        {"W203 San",        30166}},
{"5a0ec6d286f7742c0b518fb5",        {"W205 San",        64750}},
{"590a3c0a86f774385a33c450",        {"SPlug",        13349}},
{"590c2e1186f77425357b6124",        {"TSet",        34854}},
{"573476f124597737e04bf328",        {"Wilston",        5192}},
{"573478bc24597738002c6175",        {"Horse",        9297}},
{"5c0e534186f7747fa1419867",        {"eTG-c",        32958}},
{"5938994586f774523a425196",        {"Dorm 103",        4039}},
{"59e3556c86f7741776641ac2",        {"Bleach",        10613}},
{"5914578086f774123569ffa4",        {"Dorm 108",        4404}},
{"5bc9c29cd4351e003562b8a3",        {"Sprats",        7291}},
{"5673de654bdc2d180f8b456d",        {"Saury",        5361}},
{"5672c92d4bdc2d180f8b4567",        {"Dorm 118",        4154}},
{"5af0548586f7743a532b7e99",        {"Ibuprofen",        32941}},
{"5780cf9e2459777df90dcb73",        {"Dorm 218",        5047}},
{"5780cda02459777b272ede61",        {"Dorm 306",        3913}},
{"5780d07a2459777de4559324",        {"Cabin key",        5486}},
{"5672cb724bdc2dc2088b456b",        {"GMcount",        10406}},
{"5c05300686f7746dce784e5d",        {"VPX",        155575}},
{"5913877a86f774432f15d444",        {"GStorage",        17520}},
{"59e366c186f7741778269d85",        {"PGlass",        6129}},
{"5a145ebb86f77458f1796f05",        {"E316 San",        22555}},
{"5d0375ff86f774186372f685",        {"MCable",        30017}},
{"5a0f0f5886f7741c4e32a472",        {"Safe",        66877}},
{"5c06779c86f77426e00dd782",        {"Wires",        9978}},
{"5a0f075686f7745bcc42ee12",        {"Safe",        18623}},
{"59e3606886f77417674759a5",        {"NaCl",        26592}},
{"5d0379a886f77420407aa271",        {"OFZ",        62142}},
{"5a0f045e86f7745b0f0d0e42",        {"Safe",        32986}},
{"5a0eb6ac86f7743124037a28",        {"Cottage",        444853}},
{"5780cf722459777a5108b9a1",        {"Dorm 308",        2574}},
{"5d6fc87386f77449db3db94e",        {"GPowder",        35166}},
{"5a0f068686f7745b0d4ea242",        {"Safe",        67367}},
{"5a0eb38b86f774153b320eb0",        {"SMW",        11114}},
{"5c13cef886f774072e618e82",        {"TP",        5193}},
{"5734781f24597737e04bf32a",        {"DVD",        11321}},
{"5a0eff2986f7741fd654e684",        {"W321 San safe",        26104}},
{"5a16b7e1fcdbcb00165aa6c9",        {"FAST",        147375}},
{"5d1b2fa286f77425227d1674",        {"EMotor",        38560}},
{"5a0ec70e86f7742c0b518fba",        {"W207 San",        50875}},
{"5d1b385e86f774252167b98a",        {"Filter",        30925}},
{"59e35abd86f7741778269d82",        {"Sodium",        27823}},
{"5d235b4d86f7742e017bc88a",        {"GP",        25493}},
{"56742c284bdc2d98058b456d",        {"Crickent",        4172}},
{"5c0e530286f7747fa1419862",        {"Propital",        13321}},
{"5d1b3f2d86f774253763b735",        {"Syringe",        12460}},
{"5d0376a486f7747d8050965c",        {"MCB",        82722}},
{"5d1b31ce86f7742523398394",        {"RPliers",        2783}},
{"5d0378d486f77420421a5ff4",        {"PFilter",        69963}},
{"5d1b327086f7742525194449",        {"PGauge",        48370}},
{"5d1b32c186f774252167a530",        {"Therm.",        28518}},
{"5c0517910db83400232ffee5",        {"PS320 1/6x",        41737}},
{"571a28e524597720b4066567",        {"TT supp.",        9184}},
{"57838c962459774a1651ec63",        {"VSS suppressor",        21474}},
{"5a34fe59c4a282000b1521a2",        {"SDN-6",        38097}},
{"5b363dd25acfc4001a598fd2",        {"Salvo 12",        46928}},
{"5c4eecc32e221602b412b440",        {"SV98 supp.",        35199}},
{"5c6165902e22160010261b28",        {"SRD 9",        35721}},
{"5c7e8fab2e22165df16b889b",        {"Illusion 9",        18262}},
{"5caf187cae92157c28402e43",        {"ASh-12",        20390}},
{"5cebec00d7f00c065c53522a",        {"Attentuator",        35024}},
{"5cff9e84d7ad1a049e54ed55",        {"WAVE QD",        41697}},
{"5d3ef698a4b9361182109872",        {"SFN-57",        21451}},
{"5de8f2d5b74cd90030650c72",        {"MP9",        36543}},
{"5dfa3d2b0dee1b22f862eade",        {"PRS QDC",        108444}},
{"5e01ea19e9dc277128008c0b",        {"R43 7.62x54R",        33420}},
{"564caa3d4bdc2d17108b458e",        {"TGP-A",        29947}},
{"5a9fbb84a2750c00137fa685",        {"R43 5.56",        52491}},
{"57da93632459771cb65bf83f",        {"NT-4 blk.",        28030}},
{"57f3c8cc2459773ec4480328",        {"PP9101 supp.",        10183}},
{"5a33a8ebc4a282000c5a950d",        {"Alpha 9",        19821}},
{"593d493f86f7745e6b2ceb22",        {"AK-74 Hexagon",        25238}},
{"5ba26ae8d4351e00367f9bdb",        {"Rotex 2",        47069}},
{"57ffb0e42459777d047111c5",        {"PBS-4",        18986}},
{"5a9fbacda2750c00141e080f",        {"R43 7.62x39",        35634}},
{"5a0d63621526d8dba31fe3bf",        {"PBS-1",        36349}},
{"56e05b06d2720bb2668b4586",        {"PB supp.",        7768}},
{"5d2dc3e548f035404a1a4798",        {"Compact 2x32",        30697}},
{"59db7e1086f77448be30ddf3",        {"TA11D",        21357}},
{"57adff4f24597737f373b6e6",        {"BRAVO4",        43785}},
{"5c1cdd512e22161b267d91ae",        {"Prism 2.5x",        21048}},
{"544a3a774bdc2d3a388b4567",        {"HAMR",        33058}},
{"57aca93d2459771f2c7e26db",        {"SpecterDR",        34494}},
{"57c5ac0824597754771e88a9",        {"3-24x42 FFP",        24538}},
{"5a37cb10c4a282329a73b4e7",        {"6.5-20x50",        33824}},
{"5b3f7c1c5acfc40dc5296b1d",        {"PU 3.5x",        10488}},
{"5b2388675acfc4771e1be0be",        {"TAC30",        31921}},
{"5c82343a2e221644f31c0611",        {"PSO-1M2",        13794}},
{"5cf638cbd7f00c06595bc936",        {"USP-1",        8398}},
{"5d0a3a58d7ad1a669c15ca14",        {"1P59",        12193}},
{"5dfe6104585a0c3e995c7b82",        {"ADO P4",        28481}},
{"5dff772da3651922b360bf91",        {"Pilad 4x32",        13542}},
{"57235b6f24597759bf5a30f1",        {"PVS-14",        50840}},
{"5c066e3a0db834001b7353f0",        {"N-15",        40839}},
{"5c0696830db834001d23f5da",        {"PNV-10T",        30611}},
{"5b3b6e495acfc4330140bd88",        {"Vulcan MG 3.5x",        26561}},
{"5c052a900db834001a66acbd",        {"TA01NSN",        20889}},
{"5cebec38d7f00c00110a652a",        {"P90 Ring",        11282}},
{"584924ec24597768f12ae244",        {"XPS3-2",        22267}},
{"59f9d81586f7744c7506ee62",        {"UH-1",        29240}},
{"558022b54bdc2dac148b458d",        {"EXPS3",        51370}},
{"5a9fb739a2750c003215717f",        {"R43 9x19",        13704}},
{"5b30b0dc5acfc400153b7124",        {"HS401G5",        8322}},
{"58491f3324597764bc48fa02",        {"XPS3-0",        27910}},
{"5a27b6bec4a282000e496f78",        {"SR-1MP",        17121}},
{"584984812459776a704a82a6",        {"P1x42",        8993}},
{"570fd6c2d2720bc6458b457f",        {"EOT 553",        19828}},
{"591c4efa86f7741030027726",        {"EKP-8-18",        14542}},
{"5c7d55de2e221644f31bff68",        {"COMP M4",        16051}},
{"5d2da1e948f035477b1ce2ba",        {"SRS-02",        16822}},
{"5ab8ee7786f7742d8f33f0b9",        {"VKBO bag",        11094}},
{"5ab8f04f86f774585f4237d8",        {"Sling",        3433}},
{"5aa2ba19e5b5b00014028f4e",        {"Fleece",        5055}},
{"5c82342f2e221644f31c060e",        {"PSO-1",        14968}},
{"5ab8f20c86f7745cdb629fb2",        {"Shmaska",        8369}},
{"5a43957686f7742a2c2f11b0",        {"Hat",        500}},
{"5c0d2727d174af02a012cf58",        {"PSh-97",        18418}},
{"5b4329075acfc400153b78ff",        {"Pompon",        7364}},
{"5b4327aa5acfc400175496e0",        {"Panama",        1673}},
{"5bd073c986f7747f627e796c",        {"Kotton",        14319}},
{"5aa2b9ede5b5b000137b758b",        {"Cowboy",        11488}},
{"5aa2b89be5b5b0001569311f",        {"EMERCOM",        3772}},
{"5a43943586f77416ad2f06e2",        {"Hat",        500}},
{"572b7fa124597762b472f9d2",        {"Beanie",        1666}},
{"5d96141523f0ea1b7f2aacab",        {"Door Kicker",        9444}},
{"5bd06f5d86f77427101ad47c",        {"Mask",        15025}},
{"5b4325355acfc40019478126",        {"Shemagh",        4869}},
{"5b432f3d5acfc4704b4a1dfb",        {"Momex",        4620}},
{"59e770f986f7742cbe3164ef",        {"Army",        2551}},
{"5bd0716d86f774171822ef4b",        {"Mask",        6542}},
{"5bd071d786f7747e707b93a3",        {"Mask",        9085}},
{"5b432c305acfc40019478128",        {"GP-5",        25220}},
{"5ab8f4ff86f77431c60d91ba",        {"Ghost",        9106}},
{"5c1a1e3f2e221602b66cc4c2",        {"Beard",        7500}},
{"5ab8f39486f7745cd93a1cca",        {"CF",        5656}},
{"572b7f1624597762ae139822",        {"Balaclava",        3232}},
{"5c0e746986f7741453628fe5",        {"TV-110",        130094}},
{"544a5caa4bdc2d1a388b4568",        {"AVS",        121373}},
{"5ab8dced86f774646209ec87",        {"ANA M2",        69466}},
{"5c0e722886f7740458316a57",        {"ANA M1",        102149}},
{"5c0e446786f7742013381639",        {"6B5-15",        45588}},
{"5b44cad286f77402a54ae7e5",        {"TacTec",        194009}},
{"5ab8dab586f77441cd04f2a2",        {"MK3 TV-104",        27368}},
{"5b3b99475acfc432ff4dcbee",        {"1-6x24",        45730}},
{"5df8a42886f77412640e2e75",        {"MPPV",        48487}},
{"5b44c8ea86f7742d1627baf1",        {"Commando",        22636}},
{"5a32aa8bc4a2826c6e06d737",        {"RMR",        25772}},
{"5c0e6a1586f77404597b4965",        {"Belt combo",        34209}},
{"572b7adb24597762ae139821",        {"Scav Vest",        21264}},
{"5c165d832e2216398b5a7e36",        {"Tactical Sport",        22750}},
{"5b432b965acfc47a8774094e",        {"GSSh-01",        12823}},
{"5645bcc04bdc2d363b8b4572",        {"ComTac2",        27678}},
{"5aa2ba71e5b5b000137b758f",        {"Sordin",        27503}},
{"5a16b9fffcdbcb0176308b34",        {"RAC",        28358}},
{"5aa7e4a4e5b5b000137b76f2",        {"ZSh-1-2M",        38166}},
{"5a7c4850e899ef00150be885",        {"6B47",        36439}},
{"57c44dd02459772d2e0ae249",        {"VAL suppressor",        36749}},
{"5a7ad74e51dfba0015068f45",        {"G FD917",        24000}},
{"593d490386f7745ee97a1555",        {"Hexagon SKS",        36055}},
{"5aa2b8d7e5b5b00014028f4a",        {"Police",        3008}},
{"592c2d1a86f7746dbe2af32a",        {"Alpha",        36945}},
{"59e763f286f7742ee57895da",        {"Pilgrim",        40366}},
{"59e7708286f7742cbd762753",        {"Ushanka",        14806}},
{"572b7d8524597762b472f9d1",        {"Cap",        3775}},
{"5b44d22286f774172b0c9de8",        {"Kirasa-N",        46030}},
{"5d5d85c586f774279a21cbdb",        {"D3CRX",        27157}},
{"5c06c6a80db834001b735491",        {"SSh-68",        20762}},
{"5d5d8ca986f7742798716522",        {"MRig",        9814}},
{"57486e672459770abd687134",        {"OKP-7 Dove",        15553}},
{"5df8a58286f77412631087ed",        {"Tank helmet",        7828}},
{"57dbb57e2459774673234890",        {"NT-4 FDE",        29699}},
{"56ea70acd2720b844b8b4594",        {"FF 4-16",        31479}},
{"5ca20abf86f77418567a43f2",        {"Triton",        19426}},
{"5a9fbb74a2750c0032157181",        {"R43 .366TKM",        19364}},
{"5c0e9f2c86f77432297fe0a3",        {"Commando",        24030}},
{"59ef13ca86f77445fd0e2483",        {"Pumpkin",        10000}},
{"5c17a7ed2e2216152142459c",        {"AirFrame Tan",        80339}},
{"5bd073a586f7747e6f135799",        {"Mustache",        13135}},
{"59fb257e86f7742981561852",        {"DTK-4M",        27947}},
{"5ca21c6986f77479963115a7",        {"Redut-T5",        188296}},
{"5ac8d6885acfc400180ae7b0",        {"FAST MT Tan",        74354}},
{"55d614004bdc2d86028b4568",        {"556-MONSTER",        26597}},
{"5a32a064c4a28200741e22de",        {"Osprey 9",        22190}},
{"545cdb794bdc2d3a198b456a",        {"6B43 6A",        313305}},
{"5abcc328d8ce8700194394f3",        {"APB supp.",        5611}},
{"5e00c1ad86f774747333222c",        {"EXFIL Black",        144111}},
{"5b86a0e586f7745b600ccb23",        {"Bramit",        32952}},
{"58aeac1b86f77457c419f475",        {"MPX-SD",        12033}},
{"58d268fc86f774111273f8c2",        {"DP",        20419}},
{"5947db3f86f77447880cf76f",        {"EKP-8-02",        9997}},
{"5c0e3eb886f7742015526062",        {"6B5-16",        64975}},
{"5c0e874186f7745dc7616606",        {"Maska-1Shch (Killa)",        80079}},
{"5d5d87f786f77427997cfaef",        {"A18",        109500}},
{"59bfc5c886f7743bf6794e62",        {"Vityaz-SN supp.",        11666}},
{"5929a2a086f7744f4b234d43",        {"6sh112",        14766}},
{"5b432b2f5acfc4771e1c6622",        {"Shattered",        18991}},
{"5b40e3f35acfc40016388218",        {"ACHHC",        39093}},
{"572b7fa524597762b747ce82",        {"Half-mask",        7611}},
{"55d6190f4bdc2d87028b4567",        {"556-MINI",        88594}},
{"5926d33d86f77410de68ebc0",        {"MP5SD supp.",        71701}},
{"5b40e1525acfc4771e1c6611",        {"ULACH",        62213}},
{"57ae0171245977343c27bfcf",        {"PK-06",        10708}},
{"5aa66be6e5b5b0214e506e97",        {"ATACR 7-35x56",        62437}},
{"5a7c74b3e899ef0014332c29",        {"NSPU-M",        14518}},
{"5d5d646386f7742797261fd9",        {"6B3TM-01M",        49790}},
{"5b432b6c5acfc4001a599bf0",        {"DSkull",        5037}},
{"5d44064fa4b9361e4f6eb8b5",        {"Ultra 5",        37142}},
{"5a16bb52fcdbcb001a3b00dc",        {"SLock",        13237}},
{"5c0e53c886f7747fa54205c7",        {"6B13 DFL",        59090}},
{"58d399e486f77442e0016fe7",        {"T-1",        18811}},
{"5c7955c22e221644f31bfd5e",        {"ONE",        29251}},
{"593d489686f7745c6255d58a",        {"AKM Hexagon",        35070}},
{"570fd721d2720bc5458b4596",        {"MRS",        13459}},
{"59e7715586f7742ee5789605",        {"Respirator",        7630}},
{"5c0e625a86f7742d77340f62",        {"Zhuk-6a",        183541}},
{"5df8a4d786f77412672a1e3b",        {"6Sh118",        189965}},
{"56e33680d2720be2748b4576",        {"T-Bag",        4048}},
{"5c0505e00db834001b735073",        {"PK-120",        10976}},
{"5ab8e79e86f7742d8b372e78",        {"GZHEL-K",        122889}},
{"5d6d3716a4b9361bc8618872",        {"LShZ-2DTM",        65764}},
{"59e7711e86f7746cae05fbe1",        {"Kolpak",        7888}},
{"5aa7e454e5b5b0214e506fa2",        {"ZSh-1-2M",        58089}},
{"5b4329f05acfc47a86086aa1",        {"Ronin",        100504}},
{"5b44d0de86f774503d30cba8",        {"Gen4 HMK",        109756}},
{"5d5d940f86f7742797262046",        {"Mechanism",        86666}},
{"5d1b5e94d7ad1a2b865a96b0",        {"FLIR RS-32",        426110}},
{"59e7643b86f7742cbf2c109a",        {"TV-106 + TV-109",        10263}},
{"5e01ef6886f77445f643baa4",        {"EXFIL Tan",        82109}},
{"5aa7d193e5b5b000171d063f",        {"Sfera-S",        45726}},
{"56e335e4d2720b6c058b456d",        {"ScavBP",        17711}},
{"5d5e9c74a4b9364855191c40",        {"TC-2002",        32319}},
{"5aa7e276e5b5b000171d0647",        {"Altyn",        103107}},
{"576fd4ec2459777f0b518431",        {"PSO 1M2-1",        11263}},
{"5b4326435acfc433000ed01d",        {"Mask",        5912}},
{"5d0a3e8cd7ad1a6f6a3d35bd",        {"1P69",        13568}},
{"5b3116595acfc40019476364",        {"ROMEO4",        11346}},
{"59bffbb386f77435b379b9c2",        {"Hybrid 46",        40185}},
{"5648a7494bdc2d9d488b4583",        {"PACA",        38429}},
{"59c0ec5b86f77435b128bfca",        {"Hexagon 12K",        25262}},
{"544a5cde4bdc2d39388b456b",        {"MBSS",        11518}},
{"545cdae64bdc2d39198b4568",        {"Tri-Zip",        53689}},
{"59e7635f86f7742cbf2c1095",        {"3M",        18833}},
{"5ab8e4ed86f7742d8e50c7fa",        {"MF-UN",        44690}},
{"5c0a2cec0db834001b7ce47d",        {"HHS-1 Tan",        38839}},
{"5648a69d4bdc2ded0b8b457b",        {"BlackRock",        34340}},
{"5c0e5edb86f77461f55ed1f7",        {"Zhuk-3",        36987}},
{"5c0e774286f77468413cc5b2",        {"Blackjack 50",        105236}},
{"5c0e5bab86f77461f55ed1f3",        {"6B23-1",        46776}},
{"5c0e655586f774045612eeb2",        {"Trooper",        87279}},
{"5c0e51be86f774598e797894",        {"6B13 FL",        70862}},
{"5c0e57ba86f7747fa141986d",        {"6B23-2 (MF)",        69427}},
{"5ca2151486f774244a3b8d30",        {"Redut-M",        97588}},
{"5c0e541586f7747fa54205c9",        {"6B13M Tan",        191175}},
{"5b44cf1486f77431723e3d05",        {"Gen4 Assault",        124746}},
{"5ab8ebf186f7742d8b372e80",        {"Attack 2",        73723}},
{"5b44cd8b86f774503d30cba2",        {"Gen4 Full",        122820}},
{"5c0e805e86f774683f3dd637",        {"Paratus",        70107}},
{"5b44c6ae86f7742d1627baea",        {"Beta2",        45740}},
{"56e33634d2720bd8058b456b",        {"Duffle",        12876}},
{"5ca20d5986f774331e7c9602",        {"Berkut",        21774}},
{"5aa7cfc0e5b5b00015693143",        {"6B47 DFL",        29247}},
{"5c066ef40db834001966a595",        {"NVG strap",        36361}},
{"5aa7d03ae5b5b00016327db5",        {"UNTAR",        23924}},
{"5b40e4035acfc47a87740943",        {"ACHHC",        45379}},
{"5645bc214bdc2d363b8b4571",        {"Kiver-M",        18921}},
{"5b432d215acfc4771e1c6624",        {"LZSh",        30319}},
{"5d5e7d28a4b936645d161203",        {"TC-2001",        31441}},
{"577d141e24597739c5255e01",        {"FF3",        18336}},
{"5c08f87c0db8340019124324",        {"ShPM",        9715}},
{"5ca20ee186f774799474abc2",        {"Vulkan-5",        164030}},
{"5d63d33b86f7746ea9275524",        {"F scdr.",        6754}},
{"5ab8f85d86f7745cd93a1cf5",        {"Shemagh",        21091}},
{"57ac965c24597706be5f975c",        {"SpecterDR",        37962}},
{"5a154d5cfcdbcb001a3b00da",        {"FAST MT",        84015}},
{"5b40e2bc5acfc40016388216",        {"ULACH",        52596}},
{"5c05293e0db83400232fff80",        {"TA01NSN",        22968}},
{"570fd79bd2720bc7458b4583",        {"OKP-7",        8809}},
{"5df8a2ca86f7740bfe6df777",        {"6B2",        19548}},
{"5c07dd120db834001c39092d",        {"HHS-1",        32940}},
{"59fb042886f7746c5005a7b2",        {"ICase",        1229994}},
{"5c091a4e0db834001d5addc8",        {"Maska-1Shch",        78053}},
{"5af0454c86f7746bf20992e8",        {"Alu splint",        11171}},
{"5ac66cb05acfc40198510a10",        {"AK-101",        35677}},
{"5ac66d015acfc400180ae6e4",        {"AK-102",        78445}},
{"5ac66d2e5acfc43b321d4b53",        {"AK-103",        36504}},
{"5ac66d725acfc43b321d4b60",        {"AK-104",        26037}},
{"5ac66d9b5acfc4001633997a",        {"AK-105",        21793}},
{"5bf3e03b0db834001d2c4a9c",        {"AK-74",        15881}},
{"5ac4cd105acfc40016339859",        {"AK-74M",        14547}},
{"5644bd2b4bdc2d3b4c8b4572",        {"AK-74N",        28593}},
{"59d6088586f774275f37482f",        {"AKM",        40963}},
{"5a0ec13bfcdbcb00165aa685",        {"AKMN",        58373}},
{"59ff346386f77477562ff5e2",        {"AKMS",        27465}},
{"5abcbc27d8ce8700182eceeb",        {"AKMSN",        33822}},
{"5bf3e0490db83400196199af",        {"AKS-74",        14641}},
{"5ab8e9fcd8ce870019439434",        {"AKS-74N",        34495}},
{"57c44b372459772d2b39b8ce",        {"AS VAL",        65140}},
{"5cadfbf7ae92152ac412eeef",        {"ASh-12",        55219}},
{"5447a9cd4bdc2dbd208b4567",        {"M4A1",        0}},
{"5b0bbe4e5acfc40dc528a72d",        {"SA-58",        0}},
{"5c488a752e221602b412af63",        {"MDR",        47041}},
{"5bb2475ed4351e00853264e3",        {"HK 416A5",        45168}},
{"57dc2fa62459775949412633",        {"AKS-74U",        22054}},
{"5839a40f24597726f856b511",        {"AKS-74UB",        26049}},
{"583990e32459771419544dd2",        {"AKS-74UN",        28519}},
{"5dcbd56fdbd3d91b3e5468d5",        {"MDR",        0}},
{"5c07c60e0db834002330051f",        {"ADAR 2-15",        9833}},
{"5d43021ca4b9362eab4b5e25",        {"TX-15 DML",        30628}},
{"574d967124597745970e7c94",        {"SKS",        11602}},
{"587e02ff24597743df3deaeb",        {"OP-SKS",        19390}},
{"59e6687d86f77411d949b251",        {"VPO-209",        25849}},
{"5c501a4d2e221602b412b540",        {"Vepr Hunter",        22542}},
{"59e6152586f77473dc057aa1",        {"VPO-136",        11034}},
{"588892092459774ac91d4b11",        {"DVL-10",        132852}},
{"5bfd297f0db834001a669119",        {"Mosin Infantry",        40004}},
{"5ae08f0a5acfc408fb1398a1",        {"Mosin",        45725}},
{"5df24cf80dee1b22f862e9bc",        {"T-5000M",        53757}},
{"5bfea6e90db834001b7347f3",        {"M700",        31375}},
{"55801eed4bdc2d89578b4588",        {"SV-98",        37458}},
{"5de652c31b7e3716273428be",        {"VPO-215",        17294}},
{"5beed0f50db834001c062b12",        {"RPK-16",        41522}},
{"5df8ce05b11454561e39243b",        {"SR-25",        61137}},
{"5a367e5dc4a282000e49738f",        {"RSASS",        461838}},
{"57838ad32459774a17445cd2",        {"VSS Vintorez",        37847}},
{"5aafa857e5b5b00018480968",        {"M1A",        59596}},
{"5c46fbd72e2216398b5a8c9c",        {"SVDS",        79486}},
{"5bffdc370db834001d23eca8",        {"6Kh5",        19272}},
{"5bc9c1e2d4351e00367fbcf0",        {"Axe",        63876}},
{"57e26fc7245977162a14b800",        {"A-2607",        3747}},
{"57e26ea924597715ca604a09",        {"A-2607",        3179}},
{"5c012ffc0db834001d23f03f",        {"Camper",        56738}},
{"5bffe7930db834001b734a39",        {"SCA",        450000}},
{"54491bb74bdc2d09088b4567",        {"ER BAYONET",        10895}},
{"5c07df7f0db834001b73588a",        {"Crowbar",        10693}},
{"57cd379a24597778e7682ecf",        {"KATT",        16800}},
{"5bffdd7e0db834001b734a1a",        {"M-2",        1570000}},
{"5bead2e00db834001c062938",        {"MPL-50",        3560}},
{"5c010e350db83400232feec7",        {"SP-8",        53277}},
{"59f98b4986f7746f546d2cef",        {"SR-1MP",        17151}},
{"5cadc190ae921500103bb3b6",        {"M9A3",        12016}},
{"5d3eb3b0a4b93615055e84d2",        {"FN 5-7",        29141}},
{"5a7ae0c351dfba0017554310",        {"Glock 17",        13810}},
{"5b1fa9b25acfc40018633c01",        {"Glock 18C",        16379}},
{"56d59856d2720bd8418b456a",        {"P226R",        9346}},
{"56e0598dd2720bb5668b45a6",        {"PB",        14035}},
{"5448bd6b4bdc2dfc2f8b4569",        {"PM",        6061}},
{"579204f224597773d619e051",        {"PM (t)",        8906}},
{"5abccb7dd8ce87001773e277",        {"APB",        17226}},
{"5a17f98cfcdbcb0980087290",        {"APS",        11600}},
{"5b3b713c5acfc4330140bd8d",        {"TT Gold",        26508}},
{"576a581d2459771e7b1bc4f1",        {"MP-443 \"Grach\"",        9844}},
{"571a12c42459771f627b58a0",        {"TT",        8431}},
{"5d67abc1a4b93614ec50137f",        {"FN 5-7 FDE",        28666}},
{"54491c4f4bdc2db1078b4568",        {"MP-133",        14449}},
{"56dee2bdd2720bc8328b4567",        {"MP-153",        25363}},
{"5a7828548dc32e5a9c28b516",        {"M870 12ga",        25035}},
{"576165642459773c7a400233",        {"Saiga 12ga v.10",        16697}},
{"5a38e6bac4a2826c6e06d79b",        {"TOZ-106",        10761}},
{"5e00903ae9dc277128008b87",        {"MP9",        20509}},
{"5cc82d76e24e8d00134b4b83",        {"P90",        57074}},
{"5926bb2186f7744b1c6c6e60",        {"MP5",        25112}},
{"5d2f0d8048f0356c925bc3b0",        {"MP5K-N",        14544}},
{"5ba26383d4351e00334c93d9",        {"MP7A1",        38625}},
{"5bd70322209c4d00d7167b8f",        {"MP7A2",        39045}},
{"57f4c844245977379d5c14d1",        {"PP-9 Klin",        13184}},
{"57d14d2524597714373db789",        {"PP-91 Kedr",        11346}},
{"57f3c6bd24597738e730fa2f",        {"PP-91-01 Kedr-B",        24235}},
{"59f9cabd86f7743a10721f46",        {"Saiga-9",        9328}},
{"58948c8e86f77409493f7266",        {"MPX",        41930}},
{"59984ab886f7743e98271174",        {"PP-19-01",        20179}},
{"5de7bd7bfd6b4e6e2276dc25",        {"MP9-N",        17869}},
{"5710c24ad2720bc3458b45a3",        {"F-1",        8566}},
{"58d3db5386f77426186285a0",        {"M67",        22034}},
{"5a2a57cfc4a2826c6e06d44a",        {"RDG-2B",        5828}},
{"5448be9a4bdc2dfd2f8b456a",        {"RGD-5",        9386}},
{"5a0c27731526d80618476ac4",        {"Zarya",        7839}},
{"59e690b686f7746c9f75e848",        {"M995",        1082}},
{"5c0d688c86f77413ae3407b2",        {"BP gs",        688}},
{"5ba26835d4351e0035628ff5",        {"AP SX",        865}},
{"5c0d5e4486f77478390952fe",        {"PPBS gs",        833}},
{"56dff026d2720bb8668b4567",        {"BS gs",        901}},
{"59e0d99486f7744a32234762",        {"BP gzh",        1201}},
{"5a6086ea4f39f99cd479502f",        {"M61",        2014}},
{"5c0d668f86f7747ccb7f13b2",        {"SPP gs",        522}},
{"5e023d48186a883be655e551",        {"BS",        1024}},
{"5c0d56a986f774449d5de529",        {"RIP",        410}},
{"5c925fa22e221601da359b7b",        {"AP 6.3",        859}},
{"59e6906286f7746c9f75e847",        {"M856A1",        683}},
{"57a0e5022459774d1673f889",        {"SP6",        344}},
{"5a608bf24f39f98ffc77720e",        {"M62",        893}},
{"54527ac44bdc2d36668b4567",        {"M855A1",        1079}},
{"59e77a2386f7742ee578960a",        {"PS",        820}},
{"56dff061d2720bb5668b4567",        {"BT gs",        686}},
{"5c0d5ae286f7741e46554302",        {"Warmageddon",        79}},
{"5e023d34e8a400319a28ed44",        {"BT",        867}},
{"5cc80f67e4a949035e43bbba",        {"SB193",        1067}},
{"5c0d591486f7744c505b416f",        {"RIP",        158}},
{"5cadf6eeae921500134b2799",        {"PS12B",        863}},
{"56dfef82d2720bbd668b4567",        {"BP gs",        471}},
{"5a3c16fe86f77452b62de32a",        {"Luger CCI",        274}},
{"5cc80f79e4a949033c7343b2",        {"SS198LF",        278}},
{"5ba26844d4351e00334c9475",        {"Subsonic SX",        525}},
{"5ba2678ad4351e44f824b344",        {"FMJ SX",        670}},
{"560d61e84bdc2da74d8b4571",        {"SNB",        766}},
{"5e023e88277cce2b522ff2b1",        {"Ultra Nosler",        267}},
{"5cc80f53e4a949000e1ea4f8",        {"L191",        756}},
{"5a26ac0ec4a28200741e1e18",        {"BT gzh",        865}},
{"5cc86832d7f00c000d3a6e6c",        {"R37.F",        110}},
{"54527a984bdc2d4e668b4567",        {"M855",        259}},
{"5cc80f38e4a949001152b560",        {"SS190",        1213}},
{"5a26ac06c4a282000c5a90a8",        {"PE gzh",        257}},
{"5cc80f8fe4a949033b0224a2",        {"SS197SR",        309}},
{"58dd3ad986f77403051cba8f",        {"M80",        606}},
{"5cadf6ddae9215051e1c23b2",        {"PS12",        449}},
{"5cc86840d7f00c002412c56c",        {"R37.X",        211}},
{"5e023cf8186a883be655e54f",        {"T-46M",        411}},
{"59e6918f86f7746c9f75e849",        {"RRLP",        57}},
{"59e4d24686f7741776641ac7",        {"US gzh",        350}},
{"57372140245977611f70ee91",        {"SP7 gzh",        308}},
{"56dff2ced2720bb4668b4567",        {"PP gs",        144}},
{"5a26abfac4a28232980eabff",        {"P gzh",        169}},
{"57371aab2459775a77142f22",        {"PstM gzh",        6053}},
{"59e68f6f86f7746c9f75e846",        {"M856",        130}},
{"57a0dfb82459774d3078b56c",        {"SP5",        190}},
{"5a269f97c4a282000b151807",        {"PS gzh",        573}},
{"5887431f2459777e1612938f",        {"LPS",        419}},
{"5d6e68a8a4b9360b6c0d54e2",        {"AP-20",        1323}},
{"5ba26812d4351e003201fef1",        {"Action SX",        102}},
{"5e023e53d4353e3302577c4c",        {"FMJ",        124}},
{"59e6920f86f77411d82aa167",        {"FMJ",        75}},
{"5e023e6e34d52a55c3304f71",        {"SP",        112}},
{"5656d7c34bdc2d9d198b4587",        {"PS gzh",        92}},
{"56dff421d2720b5f5a8b4567",        {"SP",        45}},
{"5cadf6e5ae921500113bb973",        {"PS12A",        176}},
{"573719df2459775a626ccbc2",        {"PBM gzh",        370}},
{"59e6927d86f77411da468256",        {"HP",        47}},
{"59e4d3d286f774176a36250a",        {"HP",        651}},
{"56dff3afd2720bba668b4567",        {"PS gs",        78}},
{"5737207f24597760ff7b25f2",        {"PSV",        85}},
{"573720e02459776143012541",        {"RG028 gzh",        111}},
{"573602322459776445391df1",        {"LRNPC",        68}},
{"573603562459776430731618",        {"Pst gzh",        70}},
{"5737218f245977612125ba51",        {"SP8 gzh",        166}},
{"5d6e68b3a4b9361bca7e50b5",        {"CSP",        497}},
{"5d6e6a5fa4b93614ec501745",        {"Devastator",        285}},
{"573603c924597764442bd9cb",        {"PT gzh",        63}},
{"59e6658b86f77411d949b250",        {"Geksa",        235}},
{"5c3df7d588a4501f290594e5",        {"T gzh",        44}},
{"573718ba2459775a75491131",        {"BZhT gzh",        266}},
{"56d59d3ad2720bdb418b4577",        {"Pst gzh",        71}},
{"5d6e68d1a4b93622fe60e845",        {"SFormance",        362}},
{"5736026a245977644601dc61",        {"P gl",        85}},
{"59e4cf5286f7741778269d8a",        {"T-45M1",        72}},
{"5d6e68c4a4b9361b93413f79",        {"0.5",        989}},
{"59e655cb86f77411dc52a77b",        {"Eko",        85}},
{"56dff4ecd2720b5f5a8b4568",        {"US gs",        56}},
{"573601b42459776410737435",        {"LRN",        71}},
{"57371b192459775a9f58a5e0",        {"PPe gzh",        7329}},
{"57371f8d24597761006c6a81",        {"PSO gzh",        37}},
{"5735ff5c245977640e39ba7e",        {"FMJ43",        68}},
{"56dff0bed2720bb0668b4567",        {"FMJ",        43}},
{"5735fdcd2459776445391d61",        {"AKBS",        49}},
{"58864a4f2459770fcc257101",        {"PSO gzh",        51}},
{"5737201124597760fc4431f1",        {"Pst gzh",        105}},
{"57371e4124597760ff7b25f1",        {"PPT gzh",        455}},
{"5d6e6a05a4b93618084f58d0",        {"Slug",        186}},
{"56dff216d2720bbd668b4568",        {"HP",        78}},
{"5d6e68e6a4b9361c140bcfe0",        {"FTX",        364}},
{"57371eb62459776125652ac1",        {"PRS gs",        39}},
{"5d6e6911a4b9361bd5780d52",        {"Flechette",        444}},
{"5d6e6806a4b936088465b17e",        {"Magnum",        126}},
{"56dff4a2d2720bbd668b456a",        {"T gs",        35}},
{"59e6542b86f77411dc52a77a",        {"FMJ",        70}},
{"5d6e689ca4b9361bc8618956",        {"Poleva-6u",        419}},
{"57371f2b24597761224311f1",        {"PS gs PPO",        46}},
{"5d6e68dea4b9361bcc29e659",        {"DualSabot",        217}},
{"5d6e6869a4b9361c140bcfde",        {"Grizzly",        88}},
{"5d6e6a42a4b9364f07165f52",        {"Poleva-6u",        130}},
{"5d6e6a53a4b9361bd473feec",        {"Poleva-3",        53}},
{"56dff338d2720bbd668b4569",        {"PRS gs",        34}},
{"5d6e6891a4b9361bd473feea",        {"Poleva-3",        111}},
{"5d6e67fba4b9361bc73bc779",        {"Express",        73}},
{"5d6e69c7a4b9360b6c0d54e4",        {"7.3mm",        38}},
{"5d6e6772a4b936088465b17c",        {"5.25mm",        35}},
{"58820d1224597753c90aeb13",        {"Slug",        41}},
{"5d6e69b9a4b9361bc8618958",        {"6.2mm",        312}},
{"560d5e524bdc2d25448b4571",        {"7mm",        29}},
{"5d6e695fa4b936359b35d852",        {"5.6mm",        25}},
{"573719762459775a626ccbc1",        {"P gzh",        21}},
{"5a38ebd9c4a282000d722a5b",        {"7.5mm",        26}},
{"5cfe8010d7ad1a59283b14c6",        {"X-47 762",        30132}},
{"5bae13ded4351e44f824bf38",        {"AA762R 02",        16361}},
{"59c1383d86f774290a37e0ca",        {"PMAG D60",        43765}},
{"5a9e81fba2750c00164f6b11",        {"SR3M.130",        44364}},
{"5c6592372e221600133e47d7",        {"MAG5-100",        20889}},
{"5a351711c4a282000b1521a4",        {"X-5 MP5",        23741}},
{"544a37c44bdc2d25388b4567",        {"MAG5-60",        57879}},
{"5c5db6742e2216000f1b2852",        {"MPX drum",        24012}},
{"5c5970672e221602b21d7855",        {"SKS AALVX",        11629}},
{"5caf1109ae9215753c44119f",        {"ASh-12",        22154}},
{"55d482194bdc2d1d4e8b456b",        {"6L31",        21644}},
{"55d485be4bdc2d962f8b456f",        {"PM drum",        20818}},
{"5d3eb5eca4b9363b1f22f8e4",        {"5-7",        10043}},
{"5addccf45acfc400185c2989",        {"X-14 762",        16682}},
{"5b7bef9c5acfc43d102852ec",        {"X-FAL 762",        14632}},
{"5cf8f3b0d7f00c00217872ef",        {"Powermag",        23951}},
{"5ba26586d4351e44f824b340",        {"MP7",        55310}},
{"5cc70093e4a949033c734312",        {"P90",        18941}},
{"5c88f24b2e22160bc12c69a6",        {"SVD",        18892}},
{"5df8f535bb49d91fb446d6b0",        {"KAC 762",        9550}},
{"5d25af8f8abbc3055079fec5",        {"AA-70",        15223}},
{"5c6175362e221600133e3b94",        {"AK-A-16",        45154}},
{"5de8e8dafd6b4e6e2276dc32",        {"MP9",        10875}},
{"5c503ad32e2216398b5aada2",        {"VPO101",        9403}},
{"5888988e24597752fe43a6fa",        {"DVL-10",        6295}},
{"5bed625c0db834001c062946",        {"RPK-16 drum",        18869}},
{"5de8ea8ffd6b4e6e2276dc35",        {"MP9",        14200}},
{"5ba264f6d4351e0034777d52",        {"MP7",        6785}},
{"5a7882dcc5856700177af662",        {"M870x4",        19099}},
{"5d2f213448f0355009199284",        {"MP5",        9996}},
{"5cf12a15d7f00c05464b293f",        {"AA-70",        15624}},
{"5addcce35acfc4001a5fc635",        {"M14",        18486}},
{"559ba5b34bdc2d1f1a8b4582",        {"SV-98 poly",        4677}},
{"5c920e902e221644f31c3c99",        {"P226",        11083}},
{"5cbdc23eae9215001136a407",        {"Molot drum",        18927}},
{"5c471c442e221602b542a6f8",        {"SVD",        5537}},
{"5c6d42cb2e2216000e69d7d1",        {"HK poly",        10177}},
{"5a718f958dc32e00094b97e7",        {"G SGMT",        11580}},
{"5caf1041ae92157c28402e3f",        {"ASh-12",        13569}},
{"5a3501acc4a282000d72293a",        {"PMAG 762",        22984}},
{"5d25a6a48abbc306c62e6310",        {"M700 AICS",        11377}},
{"5c0548ae0db834001966a3c2",        {"C-10 AK",        9605}},
{"57838f9f2459774a150289a0",        {"6L25",        16857}},
{"5de8eac42a78646d96665d91",        {"MP9",        25230}},
{"5ba2657ed4351e0035628ff2",        {"MP7",        38478}},
{"5a718b548dc32e000d46d262",        {"Glock 9x19",        1757}},
{"5448c1d04bdc2dff2f8b4569",        {"GEN M3",        3534}},
{"5d25a4a98abbc30b917421a4",        {"AICS",        5563}},
{"5ce69cbad7f00c00b61c5098",        {"PMAG .308 AC",        6853}},
{"5c5db6552e2216001026119d",        {"MPX",        3941}},
{"587df583245977373c4f1129",        {"SKS-A5",        7982}},
{"5bfea7ad0db834001c38f1ee",        {"Wyatt",        10422}},
{"5c5db6652e221600113fba51",        {"MPX pad",        16186}},
{"5d25a7b88abbc3054f3e60bc",        {"PMAG .308 AC",        12634}},
{"5d25a6538abbc306c62e630d",        {"AICS",        13092}},
{"5b7bef5d5acfc43bca7067a3",        {"SA58/FAL",        15163}},
{"5c6d46132e221601da357d56",        {"Battlemag",        13370}},
{"56deeefcd2720bc8328b4568",        {"МP153x8",        2122}},
{"5b7d37845acfc400170e2f87",        {"L1A1 762",        20044}},
{"56d59948d2720bb7418b4582",        {"P226",        10222}},
{"57838f0b2459774a256959b2",        {"6L24",        3897}},
{"5df25b6c0b92095fd441e4cf",        {"T-5000M",        50807}},
{"5aaa5dfee5b5b000140293d3",        {"GEN M3",        9593}},
{"5926c3b286f774640d189b6b",        {"MP5",        4987}},
{"5a718da68dc32e000d46d264",        {"GL9",        14725}},
{"5de8eaadbbaf010b10528a6d",        {"MP9",        16565}},
{"5cadc2e0ae9215051e1c21e7",        {"M9A3",        12323}},
{"5c0672ed0db834001b7353f3",        {"SG-919",        16974}},
{"5df8f541c41b2312ea3335e3",        {"KAC 762",        19997}},
{"5ae0973a5acfc4001562206c",        {"Mosin",        4468}},
{"59fafc5086f7740dbe19f6c3",        {"AK30",        19492}},
{"5a7ad2e851dfba0016153692",        {"Big Stick",        6073}},
{"544a378f4bdc2d30388b4567",        {"GEN M3",        10673}},
{"5c05413a0db834001c390617",        {"HK Steel",        9675}},
{"59d625f086f774661516605d",        {"AK55",        3536}},
{"55802d5f4bdc2dac148b458e",        {"GEN M3",        13745}},
{"57d1519e24597714373db79d",        {"PP91",        13194}},
{"587df3a12459772c28142567",        {"SKS int.",        5987}},
{"5bfeaa0f0db834001b734927",        {"Wyatt",        21805}},
{"5aaa5e60e5b5b000140293d6",        {"GEN M3",        2183}},
{"59d6272486f77466146386ff",        {"GEN M3",        18942}},
{"5aaf8a0be5b5b00015693243",        {"M1A",        7326}},
{"5b7c2d1d5acfc43d1028532a",        {"SA58/FAL MMW",        6204}},
{"576a5ed62459771e9c2096cb",        {"MP-443",        3485}},
{"5c6d450c2e221600114c997d",        {"PM Gen.2",        9286}},
{"59f99a7d86f7745b134aa97b",        {"SR1-MP",        4226}},
{"5c6161fb2e221600113fbde5",        {"Sb.3x5",        7926}},
{"5c503ac82e221602b21d6e9a",        {"VPO101",        4207}},
{"5b7bef1e5acfc43d82528402",        {"SA58/FAL",        2620}},
{"5aaa4194e5b5b055d06310a5",        {"GEN M3",        6531}},
{"5bed61680db834001d2c45ab",        {"AK-12",        10462}},
{"5894a05586f774094708ef75",        {"MPX",        3301}},
{"599860ac86f77436b225ed1a",        {"PP-19-01",        5937}},
{"5a78830bc5856700137e4c90",        {"M870x7",        36851}},
{"55d481904bdc2d8c2f8b456a",        {"6L26",        6951}},
{"5a966f51a2750c00156aacf6",        {"SAI-02",        9575}},
{"5b1fb3e15acfc4001637f068",        {"6P2 bak.",        6011}},
{"57d14e1724597714010c3f4b",        {"PP91",        1867}},
{"5ac66bea5acfc43b321d4aec",        {"AK-103",        5327}},
{"5a38ed75c4a28232996e40c6",        {"Sb.3x4",        1381}},
{"564ca9df4bdc2d35148b4569",        {"6L18",        8201}},
{"5a78832ec5856700155a6ca3",        {"M870x10",        33200}},
{"5a01c29586f77474660c694c",        {"6L10",        3134}},
{"571a29dc2459771fb2755a6a",        {"tt-105",        3964}},
{"5ac66c5d5acfc4001718d314",        {"6L29",        3096}},
{"5448c12b4bdc2d02308b456f",        {"PM",        6268}},
{"5c0673fb0db8340023300271",        {"SG-919",        2086}},
{"5a17fb03fcdbcbcae668728f",        {"APS",        1468}},
{"5b099ac65acfc400186331e1",        {"SA58/FAL",        4522}},
{"564ca99c4bdc2d16268b4589",        {"6L20",        2718}},
{"5882163e24597758206fee8c",        {"МP153x5",        902}},
{"55d4837c4bdc2d1d4e8b456c",        {"Saiga 545",        3504}},
{"59e5f5a486f7746c530b3ce2",        {"6P2 Sb-11",        9284}},
{"57616a9e2459773c7a400234",        {"Sb.5",        2923}},
{"55d485804bdc2d8c2f8b456b",        {"MP-133x8",        14742}},
{"55d484b44bdc2d1d4e8b456d",        {"MP-133x6",        4140}},
{"55d4887d4bdc2d962f8b4570",        {"STANAG",        6718}},
{"55d480c04bdc2d1d4e8b456a",        {"6L23",        4625}},
{"59e5d83b86f7745aed03d262",        {"AK ribbed",        1045}},
{"5882163824597757561aa922",        {"МP153x6",        1221}},
{"5882163224597757561aa920",        {"МP153x7",        1663}},
{"5a0060fc86f7745793204432",        {"AKMS al.",        11447}},
{"5998529a86f774647f44f421",        {"Sb.7",        1809}},
{"5a38ee51c4a282000c5a955c",        {"20-01 Sb.3x2",        725}},
{"5b1fd4e35acfc40018633c39",        {"AK al.",        5999}},
{"5c06595c0db834001a66af6c",        {"LA-5B/PEQ",        12167}},
{"5c5952732e2216398b5abda2",        {"Perst-3",        12125}},
{"544909bb4bdc2d6f028b4577",        {"AN/PEQ-15",        18066}},
{"5d2369418abbc306c62e0c80",        {"DBAL-PL",        27300}},
{"5b07dd285acfc4001754240d",        {"LAS/TAC 2",        26129}},
{"5b3a337e5acfc4704b4a19a0",        {"Klesch-2U",        18157}},
{"5a5f1ce64f39f90b401987bc",        {"2IRS",        14193}},
{"5a7b483fe899ef0016170d15",        {"XC1",        13166}},
{"5a800961159bd4315e3a1657",        {"GTL 21",        13387}},
{"5d10b49bd7ad1a1a560708b0",        {"AN/PEQ-2",        9703}},
{"57fd23e32459772d0805bcf1",        {"LS321",        17240}},
{"5c079ed60db834001a66b372",        {"TT Precision",        6572}},
{"560d657b4bdc2da74d8b4572",        {"Klesch",        10312}},
{"56def37dd2720bec348b456a",        {"X400",        10677}},
{"5cc9c20cd7f00c001336c65d",        {"TBL",        12949}},
{"59d790f486f77403cb06aec6",        {"XHP35",        5465}},
{"57d17c5e2459775a5c57d17d",        {"WF501B",        4284}},
{"5755356824597772cb798962",        {"AI-2",        2999}},
{"544fb37f4bdc2dee738b4567",        {"Painkillers",        5845}},
{"544fb25a4bdc2dfb738b4567",        {"Bandage",        1894}},
{"544fb3364bdc2d34748b456a",        {"Splint",        2527}},
{"5751a25924597722c463c472",        {"Bandage",        2228}},
{"5c1cd46f2e22164bef5cfedb",        {"B-25U RK-1",        46766}},
{"5c1bc5af2e221602b412949b",        {"RK-2",        12670}},
{"5b057b4f5acfc4771e1bd3e9",        {"SE-5",        31444}},
{"5de8fbad2fbe23140d3ee9c4",        {"MP9 VFG",        13611}},
{"5c1bc5612e221602b5429350",        {"RK-1",        50331}},
{"59f8a37386f7747af3328f06",        {"Shift",        92869}},
{"5a7dbfc1159bd40016548fde",        {"CQR",        16439}},
{"5c791e872e2216001219c40a",        {"SI Cobra",        20296}},
{"57cffb66245977632f391a99",        {"AFG M-LOK",        46638}},
{"5c1bc7432e221602b412949d",        {"RK-5",        21526}},
{"5c1bc7752e221602b1779b34",        {"RK-6",        9637}},
{"588226dd24597767ad33f789",        {"AFG FDE",        11533}},
{"588226e62459776e3e094af7",        {"AFG FG",        10198}},
{"588226ef24597767af46e39c",        {"AFG OD",        28472}},
{"588226d124597767ad33f787",        {"AFG blk.",        13543}},
{"5c1bc4812e22164bef5cfde7",        {"RK-0",        18625}},
{"59fc48e086f77463b1118392",        {"RVG blk.",        22642}},
{"5c1bc5fb2e221602b1779b32",        {"RK-4",        11511}},
{"5c7fc87d2e221644f31c0298",        {"GF MOD.3",        7229}},
{"5cf4fb76d7f00c065703d3ac",        {"Pillau",        5856}},
{"5c87ca002e221600114cb150",        {"KAC VG",        10145}},
{"558032614bdc2de7118b4585",        {"BGV-MK46K",        6341}},
{"58c157be86f77403c74b2bb6",        {"BGV-MK46K FDE",        5559}},
{"58c157c886f774032749fb06",        {"BGV-MK46K SG",        6116}},
{"591af28e86f77414a27a9e1d",        {"UVG",        14077}},
{"5cda9bcfd7f00c0c0b53e900",        {"ASh-12",        24181}},
{"5df36948bb49d91fb446d5ad",        {"T-5000 pad",        1850}},
{"57cffcd624597763133760c5",        {"AFG M-LOK",        40294}},
{"57cffcdd24597763f5110006",        {"AFG M-LOK",        7984}},
{"57cffce524597763b31685d8",        {"AFG M-LOK",        62344}},
{"5a33e75ac4a2826c6e06d759",        {"CQR",        21698}},
{"5d025cc1d7ad1a53845279ef",        {"Ergo",        43278}},
{"5df38a5fb74cd90030650cb6",        {"T-5000",        4479}},
{"5b3cadf35acfc400194776a0",        {"TT grips",        14159}},
{"56e05a6ed2720bd0748b4567",        {"PB bakelite",        9000}},
{"59db3a1d86f77429e05b4e92",        {"GRAL-S",        55278}},
{"5cf54404d7f00c108840b2ef",        {"AK MG-47",        12035}},
{"5b30ac585acfc433000eb79c",        {"MOE AK",        84346}},
{"5c6bf4aa2e2216001219b0ae",        {"US Palm AK",        25887}},
{"5bffef760db8340019668fe4",        {"P226 CL",        8300}},
{"55802f5d4bdc2dac148b458f",        {"AR15 MOE",        31207}},
{"5d15cf3bd7ad1a67e71518b2",        {"MOE FDE",        19454}},
{"5c6d7b3d2e221600114c9b7d",        {"HK V2",        10284}},
{"5bb20e0ed4351e3bac1212dc",        {"Battle Grip",        10619}},
{"5649ae4a4bdc2d1b2b8b4588",        {"RК-3",        22240}},
{"5d023784d7ad1a049d4aa7f2",        {"SKS AG-58",        7616}},
{"5bffcf7a0db83400232fea79",        {"TT-206",        6135}},
{"5bbde41ed4351e003562b038",        {"Mosin",        17243}},
{"5b07db875acfc40dc528a5f6",        {"TD120001",        179798}},
{"5c079ec50db834001966a706",        {"TT RazorArms",        7426}},
{"59db3b0886f77429d72fb895",        {"Stark AR RG",        23449}},
{"59db3acc86f7742a2c4ab912",        {"Stark AR RG",        29739}},
{"5cc9bcaed7f00c011c04e179",        {"HG15",        21424}},
{"5947fa2486f77425b47c1a9b",        {"SAW",        10827}},
{"5947f92f86f77427344a76b1",        {"SAW",        15232}},
{"5b7d679f5acfc4001a5c4024",        {"SA58 AG-FAL",        11916}},
{"5b099b965acfc400186331e6",        {"SA58 SAW",        5679}},
{"5a69a2ed8dc32e000d46d1f1",        {"R43 VAL",        118766}},
{"57c55efc2459772d2c6271e7",        {"OMRG Blk.",        28868}},
{"57af48872459771f0b2ebf11",        {"OMRG FDE",        31348}},
{"57c55f092459772d291a8463",        {"OMRG GE",        20764}},
{"57c55f112459772d28133310",        {"OMRG GG",        23725}},
{"57c55f172459772d27602381",        {"OMRG OD",        20977}},
{"5b39ffbd5acfc47a8773fb06",        {"P226 Hogue",        6316}},
{"5c471be12e221602b66cd9ac",        {"SVDS",        6617}},
{"5cf50850d7f00c056e24104c",        {"AK EPG",        10430}},
{"5cf508bfd7f00c056e24104e",        {"AK EPG",        7918}},
{"57d152ec245977144076ccdf",        {"PP91",        5462}},
{"5bb20e18d4351e00320205d5",        {"Battle Grip",        11940}},
{"55d4b9964bdc2d1d4e8b456e",        {"A2",        4029}},
{"5c48a2c22e221602b313fb6c",        {"MDR",        15516}},
{"5dcbd6dddbd3d91b3e5468de",        {"MDR Black",        13340}},
{"5bffec120db834001c38f5fa",        {"P226 Axelson",        9109}},
{"5a339805c4a2826c6e06d73d",        {"MIAD FDE",        9087}},
{"5addc7db5acfc4001669f279",        {"M14ALCS",        7005}},
{"5bfe86a20db834001d23e8f7",        {"AGR-870",        7010}},
{"5afd7e445acfc4001637e35a",        {"SKS SAW",        5007}},
{"5cdeac5cd7f00c000f261694",        {"Pro700",        5160}},
{"5beec8ea0db834001a6f9dbf",        {"AK-12",        13864}},
{"5a7b4960e899ef197b331a2d",        {"G Pach TRG",        7898}},
{"571659bb2459771fb2755a12",        {"ECS FDE",        3177}},
{"5c00076d0db834001d23ee1f",        {"P226 Elite Wooden",        7140}},
{"5a0071d486f77404e23a12b2",        {"AKM wood",        18222}},
{"57c44fa82459772d2d75e415",        {"VAL",        10143}},
{"571a282c2459771fb2755a69",        {"TT grips",        5057}},
{"56d5a2bbd2720bb8418b456a",        {"P226 Black",        22278}},
{"5c0006470db834001a6697fe",        {"P226 Scorpion",        2450}},
{"5894a51286f77426d13baf02",        {"MPX",        6739}},
{"5a17fc70fcdbcb0176308b3d",        {"APS Bak.",        9200}},
{"5c0684e50db834002a12585a",        {"Hogue-like",        4684}},
{"5b7d678a5acfc4001a5c4022",        {"SA58",        2980}},
{"5998517986f7746017232f7e",        {"PP-19-01",        5457}},
{"59e62cc886f77440d40b52a1",        {"AKM bak.",        7000}},
{"5649ad3f4bdc2df8348b4585",        {"6P4 Sb.8V",        8000}},
{"576a63cd2459771e796e0e11",        {"MP443",        3685}},
{"5649ade84bdc2d1b2b8b4587",        {"6P1 Sb.8",        4555}},
{"5a38eecdc4a282329a73b512",        {"TOZ106",        7225}},
{"59e6318286f77444dd62c4cc",        {"Molot bak.",        6085}},
{"57e3dba62459770f0c32322b",        {"6P4 Sb.9",        5009}},
{"5cadc431ae921500113bb8d5",        {"M9A3 PGrip",        8263}},
{"5c1a1cc52e221602b3136e3d",        {"M Frame",        7913}},
{"5aa2b923e5b5b000137b7589",        {"RGlasses",        13229}},
{"5d5fca1ea4b93635fd598c07",        {"Crossbow",        8339}},
{"59e770b986f7742cbd762754",        {"AFGlass",        9592}},
{"5c0d32fcd174af02a1659c75",        {"Proximity",        5854}},
{"5d6d2ef3a4b93618084f58bd",        {"Aviator",        6339}},
{"5d6d2e22a4b9361bd5780d05",        {"Gascan",        5208}},
{"5b432be65acfc433000ed01f",        {"6B34",        3179}},
{"5aa2b9aee5b5b00015693121",        {"RayBench",        13176}},
{"5aa2b986e5b5b00014028f4c",        {"Dundukk",        2597}},
{"557ff21e4bdc2d89578b4586",        {"TGlasses",        1253}},
{"5a16b8a9fcdbcb00165aa6ca",        {"TATM",        15665}},
{"5a16b93dfcdbcbcae6687261",        {"DDT",        9944}},
{"5c11046cd174af02a012e42b",        {"W-PVS7",        6588}},
{"5c0695860db834001b735461",        {"10T adapter",        20616}},
{"5c0e66e2d174af02a96252f4",        {"SLAAP",        57378}},
{"5d6d3be5a4b9361bc73bc763",        {"Aventail",        20912}},
{"5e00cfa786f77469dc6e5685",        {"TW Ears",        35677}},
{"5a16badafcdbcb001865f72d",        {"SArmor",        23489}},
{"5c178a942e22164bef5ceca3",        {"Chops",        29325}},
{"5c1793902e221602b21d3de2",        {"CP Ears",        22302}},
{"5a16ba61fcdbcb098008728a",        {"Mandible",        13651}},
{"5e01f31d86f77465cf261343",        {"TW Ears",        29753}},
{"5d6d3943a4b9360dbc46d0cc",        {"Cover",        7336}},
{"5d2f261548f03576f500e7b7",        {"MP5K Upper",        6711}},
{"5c07a8770db8340023300450",        {"Gen.3 upper",        27849}},
{"59bfe68886f7746004266202",        {"MUR-1S Upper",        45176}},
{"5a71e4f48dc32e001207fb26",        {"G ZT Spartan",        17714}},
{"5d2c772c48f0355d95672c25",        {"Dog Leg Rail",        30747}},
{"5cadc55cae921500103bb3be",        {"M9A3",        3685}},
{"5a7afa25e899ef00135e31b0",        {"PS9",        14122}},
{"5a71e22f8dc32e00094b97f4",        {"G ZT HEX",        14199}},
{"5d2c770c48f0354b4a07c100",        {"PDC",        34832}},
{"5de8e67c4a9f347bc92edbd7",        {"MP9-N Upper",        27500}},
{"5bffe7c50db834001d23ece1",        {"P226 Axelson",        11018}},
{"5bb20d53d4351e4502010a69",        {"416A5 Upper",        8260}},
{"5c503d0a2e221602b542b7ef",        {"VPO101",        12000}},
{"5d4405aaa4b9361e6a4e6bd3",        {"TX15 LW Upper",        37450}},
{"5649af884bdc2d1b2b8b4589",        {"B-33",        40687}},
{"5b099bb25acfc400186331e8",        {"SA58 ED",        19862}},
{"5beec91a0db834001961942d",        {"RPK-16",        7785}},
{"5926f2e086f7745aae644231",        {"MP5SD upper",        17859}},
{"5839a7742459773cf9693481",        {"AKS-74UB",        36198}},
{"5a6f5f078dc32e00094b97dd",        {"G ViperCut",        8937}},
{"5cc70102e4a949035e43ba74",        {"P90 Upper",        6629}},
{"5a9685b1a2750c0032157104",        {"G MotoCut",        9017}},
{"5a7033908dc32e000a311392",        {"G AW C",        9981}},
{"5a702d198dc32e000b452fc3",        {"G AW",        8366}},
{"5c010a700db834001d23ef5d",        {"P226 EmpScorp",        9639}},
{"5d2c76ed48f03532f2136169",        {"Bastion",        6438}},
{"5894a5b586f77426d2590767",        {"MPX GEN1",        15130}},
{"5c471bd12e221602b4129c3a",        {"SVDS",        9068}},
{"5c0e2f26d174af02a9625114",        {"ADAR Upper",        9088}},
{"5cc700ede4a949033c734315",        {"EFFEN 90",        27048}},
{"55d355e64bdc2d962f8b4569",        {"M4A1 Upper",        7085}},
{"5c0009510db834001966907f",        {"P226 Stainless Elite",        6016}},
{"5c0125fc0db834001a669aa3",        {"P226 Legion",        5276}},
{"5926c0df86f77462f647f764",        {"MP5 Upper",        6714}},
{"5dfce88fe9dc277128008b2e",        {"SVDS CDC",        33333}},
{"5df8e4080b92095fd441e594",        {"SR-25 Upper",        4774}},
{"56d5a407d2720bb3418b456b",        {"P226 Slide",        3563}},
{"5a6f5e048dc32e00094b97da",        {"Glock",        6008}},
{"59985a6c86f77414ec448d17",        {"Vityaz-SN",        3202}},
{"5cf7acfcd7f00c1084477cf2",        {"PS90 Upper",        7761}},
{"578395402459774a256959b5",        {"VSS",        19912}},
{"57c44f4f2459772d2c627113",        {"VAL",        20667}},
{"5b7d6c105acfc40015109a5f",        {"FAL",        2603}},
{"5ac50da15acfc4001718d287",        {"6P34 0-1",        29999}},
{"59e6449086f7746c9f75e822",        {"Molot",        10358}},
{"5649af094bdc2df8348b4586",        {"6P1 0-1",        8187}},
{"57dc334d245977597164366f",        {"6P26 Sb.7",        5762}},
{"59d6507c86f7741b846413a2",        {"6P1 0-1",        8750}},
{"57616c112459773cce774d66",        {"Sb.0-2",        9999}},
{"59985a8086f77414ec448d1a",        {"PP-19-01",        3428}},
{"5b1faa0f5acfc40dc528aeb5",        {"G18C",        6537}},
{"5d3eb44aa4b93650d64e4979",        {"5-7",        9784}},
{"58949edd86f77409483e16a9",        {"MPX 2x",        13602}},
{"5de922d4b11454561e39239f",        {"MP9 CH",        650}},
{"5b2240bf5acfc40dc528af69",        {"Raptor",        19000}},
{"5cc6ea78e4a949000e1ea3c1",        {"P90",        29141}},
{"5df8e053bb49d91fb446d6a6",        {"SR-25",        22405}},
{"55d44fd14bdc2d962f8b456e",        {"AR-15",        2500}},
{"5926c32286f774616e42de99",        {"MP5 CH",        7565}},
{"56ea7165d2720b6e518b4583",        {"BOTL",        14104}},
{"5df8e085bb49d91fb446d6a8",        {"SR-25 Ambi",        10000}},
{"5bb20dbcd4351e44f824c04e",        {"Ext. Latch",        10770}},
{"5c0faf68d174af02a96260b8",        {"ADAR",        9148}},
{"5c5db6b32e221600102611a0",        {"MPX SCH",        15848}},
{"5cc6ea85e4a949000e1ea3c3",        {"TheHandler",        16600}},
{"5648ac824bdc2ded0b8b457d",        {"RP-1",        3212}},
{"58949fac86f77409483e16aa",        {"MPX 1x",        24407}},
{"5d2f2d5748f03572ec0c0139",        {"MP5K CH",        20067}},
{"5c471c842e221615214259b5",        {"SVDS",        17727}},
{"59e649f986f77411d949b246",        {"Molot GTube",        33752}},
{"5d00ec68d7ad1a04a067e5be",        {"GS-5B",        59071}},
{"5b237e425acfc4771e1be0b6",        {"TROY Combo",        17660}},
{"5cf656f2d7f00c06585fb6eb",        {"VS Combo",        20858}},
{"5a34fbadc4a28200741e230a",        {"JPGS6",        9408}},
{"5dfa3d45dfc58d14537c20b0",        {"SR25",        11250}},
{"5a01ad4786f77450561fda02",        {"VDM CS",        2904}},
{"56ea8d2fd2720b7c698b4570",        {"RGBlock",        10354}},
{"56eabcd4d2720b66698b4574",        {"MK12",        6144}},
{"59ccd11386f77428f24a488f",        {"PP-19-01 GTube",        11215}},
{"59d36a0086f7747e673f3946",        {"AKS74U GTube",        8333}},
{"5bb20dcad4351e3bac1212da",        {"416A5",        9876}},
{"59d64ec286f774171d1e0a42",        {"6P1 Sb.1-2",        8610}},
{"59c6633186f7740cf0493bb9",        {"AK74 GTube",        7363}},
{"5ae30e795acfc408fb139a0b",        {"M4 FS",        13838}},
{"5c5039be2e221602b177c9ff",        {"VPO101",        31952}},
{"59ccfdba86f7747f2109a587",        {"M1-B",        4798}},
{"5dfa3cd1b33c0951220c079b",        {"KAC QDC",        9934}},
{"5c78f2882e22165df16b832e",        {"JailBrake",        8558}},
{"5cdd7693d7f00c0010373aa5",        {"M11",        8210}},
{"5d026791d7ad1a04a067ea63",        {"RED 762",        18986}},
{"5dcbe965e4ed22586443a79d",        {"MDR .308",        8006}},
{"5cdd7685d7f00c000f260ed2",        {"SHREWD 762",        8679}},
{"5c878ebb2e2216001219d48a",        {"DGNAK47B",        31664}},
{"5addbb825acfc408fb139400",        {"M14 JP",        5929}},
{"5bc5a35cd4351e450201232f",        {"Mosin WM",        9157}},
{"5c878e9d2e2216000f201903",        {"DGN762B",        31515}},
{"5cf6937cd7f00c056c53fb39",        {"ST6012 556",        15443}},
{"5998597786f77414ea6da093",        {"PP-19-01",        6192}},
{"5d1f819086f7744b355c219b",        {"WAVE 762",        11853}},
{"5cf78720d7f00c06595bc93e",        {"BMD 762",        11373}},
{"5c7951452e221644f31bfd5c",        {"Antidote",        18463}},
{"5bbdb8bdd4351e4502011460",        {"Atlas 7 762",        12978}},
{"5d02676dd7ad1a049e54f6dc",        {"Vette 556",        12873}},
{"5a7b32a2e899ef00135e345a",        {"G G4",        9821}},
{"5a7c147ce899ef00150bd8b8",        {"VP-09 556",        6420}},
{"5943eeeb86f77412d6384f6b",        {"PWS CQB 74",        22363}},
{"5943ee5a86f77413872d25ec",        {"PWS CQB",        9414}},
{"5a7ad0c451dfba0013379712",        {"G CC 4P",        4769}},
{"5d443f8fa4b93678dd4a01aa",        {"30CB",        21180}},
{"5d02677ad7ad1a04a15c0f95",        {"Vette 762",        8787}},
{"5c07c5ed0db834001b73571c",        {"MP5 Noveske",        14026}},
{"5a70366c8dc32e001207fb06",        {"G DD FH",        3957}},
{"59fb137a86f7740adb646af1",        {"Monster Claw",        21837}},
{"5addbb945acfc4001a5fc44e",        {"M14 GoodIron",        7791}},
{"5c4ee3d62e2216152006f302",        {"SV98 Mk.2.0",        8027}},
{"5b3a16655acfc40016387a2a",        {"Annihilator",        76911}},
{"5bc5a351d4351e003477a414",        {"Mosin TPP",        8457}},
{"5b7d693d5acfc43bca706a3d",        {"X3 762",        8897}},
{"5cff9e5ed7ad1a09407397d4",        {"WAVE 556",        11557}},
{"5cf6935bd7f00c06585fb791",        {"MPX CBrake",        11612}},
{"5c7fb51d2e2216001219ce11",        {"AR15 SF3P",        9531}},
{"56ea8180d2720bf2698b456a",        {"QDC 556",        10189}},
{"5b099b7d5acfc400186331e4",        {"SA58 3-pr.",        2954}},
{"5ac72e945acfc43f3b691116",        {"6P44 0-20",        22369}},
{"5ac72e725acfc400180ae701",        {"6P44 0-20",        24999}},
{"5d440625a4b9361eec4ae6c5",        {"223CB",        10677}},
{"5cc9b815d7f00c000e2579d6",        {"TROY Claymore",        5602}},
{"5ac72e895acfc43b321d4bd5",        {"6P46 0-20",        9166}},
{"5c7e5f112e221600106f4ede",        {"51T 556",        12720}},
{"5addbbb25acfc40015621bd9",        {"Phantom 762",        5541}},
{"5bbdb83fd4351e44f824c44b",        {"Mosin Tanker",        5029}},
{"58889c7324597754281f9439",        {"DVL-10 MD",        11811}},
{"5beec3420db834001b095429",        {"RPK-16",        2894}},
{"5cc9ad73d7f00c000e2579d4",        {"SRVV",        24458}},
{"5cc9a96cd7f00c011c04e04a",        {"AK74 SRVV",        26934}},
{"5caf17c9ae92150b30006be1",        {"ASh-12",        5727}},
{"5addbba15acfc400185c2854",        {"M14 Vortex",        3855}},
{"5c4eec9b2e2216398b5aaba2",        {"SV98 thr.",        24345}},
{"5c6beec32e221601da3578f2",        {"P226 TJC",        4033}},
{"5649ab884bdc2ded0b8b457f",        {"DTK-1",        7999}},
{"5df35e7f2a78646d96665dd4",        {"T-5000M",        8702}},
{"5a34fd2bc4a282329a73b4c5",        {"51T 762",        14809}},
{"5c48a2a42e221602b66d1e07",        {"MDR 5.56",        7258}},
{"5c6d710d2e22165df16b81e7",        {"WarComp 556",        30000}},
{"5ac72e7d5acfc40016339a02",        {"AK-103",        5260}},
{"5a7037338dc32e000d46d257",        {"G 3Port",        5480}},
{"5addbb6e5acfc408fb1393fd",        {"NM",        5914}},
{"5888996c24597754281f9419",        {"DVL-10 М2",        7901}},
{"5bffd7ed0db834001d23ebf9",        {"DTK-TT",        3888}},
{"5ac72e615acfc43f67248aa0",        {"AK-101",        600}},
{"5ba26acdd4351e003562908e",        {"MP7A1",        7750}},
{"5a9ea27ca2750c00137fa672",        {"Dynacomp AK",        6402}},
{"5a705e128dc32e000d46d258",        {"G AW",        3662}},
{"56ea6fafd2720b844b8b4593",        {"KX3 556",        5807}},
{"59e61eb386f77440d64f5daf",        {"VPO136",        23056}},
{"5a7ad1fb51dfba0013379715",        {"LWD-COMP9",        4175}},
{"5cc82796e24e8d000f5859a8",        {"P90",        5311}},
{"5b7d68af5acfc400170e30c3",        {"SA58 Austrian",        5809}},
{"5c471bfc2e221602b21d4e17",        {"SVDS",        11024}},
{"5c0fafb6d174af02a96260ba",        {"ADAR",        13529}},
{"560e620e4bdc2d724b8b456b",        {"SV-98 MD",        6242}},
{"544a38634bdc2d58388b4568",        {"USGI A2",        4555}},
{"5a0abb6e1526d8000a025282",        {"TT AK",        4497}},
{"5ac7655e5acfc40016339a19",        {"6P20 0-20",        9891}},
{"58949dea86f77409483e16a8",        {"MPX A2",        6176}},
{"5a0d716f1526d8000d26b1e2",        {"AKML",        6832}},
{"5649aa744bdc2ded0b8b457e",        {"6P20 0-20",        9000}},
{"57dc324a24597759501edc20",        {"6P26 0-20",        4599}},
{"59e8a00d86f7742ad93b569c",        {"VPO209 thr.",        2000}},
{"59d64fc686f774171b243fe2",        {"6P1 0-14",        5816}},
{"5998598e86f7740b3f498a86",        {"Saiga-9",        4222}},
{"5aafa1c2e5b5b00015042a56",        {"SOCOM16 M1A",        4652}},
{"5ab3afb2d8ce87001660304d",        {"SOCOM16 thr.",        43888}},
{"5a1eacb3fcdbcb09800872be",        {"REAP-IR cup",        22275}},
{"5d123b70d7ad1a0ee35e0754",        {"KAC long",        8537}},
{"56083eab4bdc2d26448b456a",        {"SV-98 HR",        9687}},
{"5d123b7dd7ad1a004f01b262",        {"KAC stopper",        6766}},
{"5d123a3cd7ad1a004e476058",        {"KAC short",        8196}},
{"5b3cbc235acfc4001863ac44",        {"Vulcan MG cup",        7762}},
{"5c4eecde2e221602b3140418",        {"SV-98 HS",        7952}},
{"5d0b5cd3d7ad1a3fe32ad263",        {"1P59 cup",        4563}},
{"57f3a5ae2459772b0e0bf19e",        {"PSO eyecup",        7558}},
{"5cf639aad7f00c065703d455",        {"USP-1 cup",        3063}},
{"5bfe86bd0db83400232fe959",        {"AGR-870 cap",        6273}},
{"5ba36f85d4351e0085325c81",        {"NSPU-M cup",        1580}},
{"5a71e1868dc32e00094b97f3",        {"G ZT cap",        6579}},
{"591c4e1186f77410354b316e",        {"Kobra",        3225}},
{"5cf78496d7f00c065703d6ca",        {"BMD A3",        14444}},
{"57f3c7e024597738ea4ba286",        {"PP9101 thr.",        6817}},
{"5a6b585a8dc32e5a9c28b4f1",        {"G AW thr.",        3947}},
{"5de8f237bbaf010b10528a70",        {"MP9 mount",        4350}},
{"5c7954d52e221600106f4cc7",        {"ONE mount",        20958}},
{"560838c94bdc2d77798b4569",        {"RTC 12ga",        14597}},
{"59bffc1f86f77435b128b872",        {"DT Mount",        8562}},
{"5a6b592c8dc32e00094b97bf",        {"G DD thr.",        6856}},
{"5926e16e86f7742f5a0f7ecb",        {"3 Lug",        9270}},
{"5c0000c00db834001a6697fc",        {"MP5 3Lug",        11233}},
{"5cf79599d7f00c10875d9212",        {"TR thr.",        5352}},
{"5e01e9e273d8eb11426f5bc3",        {"SVDS Thr.",        36629}},
{"58272d7f2459774f6311ddfd",        {"GK-02",        8111}},
{"5c0111ab0db834001966914d",        {"Cylinder 12ga",        4901}},
{"5cf67a1bd7f00c06585fb6f3",        {"WT1052",        5412}},
{"5cf67cadd7f00c065a5abab7",        {"WT SKS",        13210}},
{"5b363e1b5acfc4771e1c5e80",        {"12ga thr.",        6857}},
{"5cf79389d7f00c10941a0c4d",        {"Mosin thr.",        1500}},
{"5de6556a205ddc616a6bc4f7",        {"VPO215 cap",        29999}},
{"5a6b59a08dc32e000b452fb7",        {"G SAI thr.",        6240}},
{"587de5ba2459771c0f1e8a58",        {"P226 thr. cap",        400}},
{"576167ab2459773cad038c43",        {"SOK-12 thr. tube",        14663}},
{"5d270ca28abbc31ee25ee821",        {"M700 cap",        600}},
{"5cadc390ae921500126a77f1",        {"M9A3 cap",        300}},
{"5df916dfbb49d91fb446d6b9",        {"URX 4 14.5\"",        18125}},
{"5d2f259b48f0355a844acd74",        {"MP5K",        3365}},
{"5cf4e3f3d7f00c06595bc7f0",        {"Aggressor",        23912}},
{"5c17664f2e2216398b5a7e3c",        {"CMRD",        37109}},
{"5b800e9286f7747a8b04f3ff",        {"HEX blk",        15640}},
{"5b099a9d5acfc47a8607efe7",        {"SA58 4Rail",        7780}},
{"5beec3e30db8340019619424",        {"RPK-16",        7012}},
{"5648b4534bdc2d3d1c8b4580",        {"B10М+B19",        19764}},
{"57cff947245977638e6f2a19",        {"MOE AKM",        20736}},
{"5d123102d7ad1a004e475fe5",        {"AR15 URX 3 8\"",        11815}},
{"5d00ede1d7ad1a0940739a76",        {"SWS N6 10.5\"",        10738}},
{"5d122e7bd7ad1a07102d6d7f",        {"URX 3.1 10.75\"",        16358}},
{"5a957c3fa2750c00137fa5f7",        {"XRSU47SU",        34043}},
{"5a9d6d34a2750c00141e07da",        {"TRAX 2",        9919}},
{"5648ae314bdc2d3d1c8b457f",        {"CAA RS47",        11741}},
{"5c78f2492e221600114c9f04",        {"AR15 SAI QD 14.5\"",        36548}},
{"5c9a25172e2216000f20314e",        {"RIS II 12.25 FDE",        20125}},
{"5c5db5f22e2216000e5e47e8",        {"MPX Midwest 4.5\"",        5644}},
{"5c48a14f2e2216152006edd7",        {"MDR",        71111}},
{"5df25d3bfd6b4e6e2276dc9a",        {"T-5000",        6500}},
{"5888976c24597754281f93f5",        {"DVL-10 М2",        15975}},
{"5a788068c5856700137e4c8f",        {"M870 MOE",        59300}},
{"5b2cfa535acfc432ff4db7a0",        {"MK10 RL",        17326}},
{"5c59529a2e221602b177d160",        {"MPX OEM 14\"",        12878}},
{"5a329052c4a28200741e22d3",        {"RSASS",        16337}},
{"5d010d1cd7ad1a59283b1ce7",        {"MP5 HX-5",        14057}},
{"5c6d5d8b2e221644fc630b39",        {"VYPR 10\"",        15922}},
{"5a9d56c8a2750c0032157146",        {"TRAX 1",        10279}},
{"588b56d02459771481110ae2",        {"RIS II 9.5 blk.",        13779}},
{"5d15ce51d7ad1a1eff619092",        {"Goliaf",        6982}},
{"5c6c2c9c2e2216000f2002e4",        {"416A5 TROY 13\"",        11218}},
{"5b7bee755acfc400196d5383",        {"SA58 CASV FAS",        8025}},
{"5b7bedd75acfc43d825283f9",        {"FAL CASV",        13525}},
{"5827272a24597748c74bdeea",        {"MTU002 L",        12270}},
{"595cfa8b86f77427437e845b",        {"LVOA-C",        18851}},
{"5c6d11152e2216000f2003e7",        {"416A5 CRUX 15\"",        26034}},
{"5c6d11072e2216000e69d2e4",        {"416A5 Midwest 13.5\"",        8338}},
{"595cf16b86f77427440c32e2",        {"LVOA-S",        13857}},
{"5c9a26332e2216001219ea70",        {"RIS II FSP 9.5 FDE",        53308}},
{"5c9a07572e221644f31c4b32",        {"Zhukov-U",        14742}},
{"5dfcd0e547101c39625f66f9",        {"SAG MK1",        15912}},
{"5c78f26f2e221601da3581d1",        {"MOE SL",        12683}},
{"59fb375986f7741b681b81a6",        {"UFM",        10772}},
{"5c78f2612e221600114c9f0d",        {"AR15 SAI QD 10\"",        14706}},
{"5d00ef6dd7ad1a0940739b16",        {"SWS N6 Split",        14937}},
{"5d4405f0a4b9361e6a4e6bd9",        {"Ion Lite",        16280}},
{"55d45f484bdc2d972f8b456d",        {"MP133 rails",        17703}},
{"5d2c829448f0353a5c7d6674",        {"CAF wood",        11469}},
{"5c6d10e82e221601da357b07",        {"416A5 MRS 14\"",        13636}},
{"5c78f2792e221600106f4683",        {"MOE SL",        10874}},
{"5bb20dfcd4351e00334c9e24",        {"416A5 4Rail ext.",        7325}},
{"5bb20df1d4351e00347787d5",        {"416A5 4Rail",        5030}},
{"5a9548c9159bd400133e97b3",        {"TL-99",        10076}},
{"57ffa9f4245977728561e844",        {"B-11",        6078}},
{"5d1b198cd7ad1a604869ad72",        {"AKM-L",        6418}},
{"5cde7afdd7f00c000d36b89d",        {"MOD*X",        14941}},
{"58272b392459774b4c7b3ccd",        {"MTU002 S",        8410}},
{"5c617a5f2e2216000f1e81b3",        {"B-10",        9798}},
{"5c6d10fa2e221600106f3f23",        {"416A5 Midwest 9\"",        8000}},
{"5d19cd96d7ad1a4a992c9f52",        {"MP5 Tri-Rail",        16434}},
{"5bb20de5d4351e0035629e59",        {"416A5 4Rail",        5436}},
{"5b7bebc85acfc43bca706666",        {"SA58 M-LOK",        5484}},
{"5cdaa99dd7f00c002412d0b2",        {"ASh-12",        6830}},
{"5c471c6c2e221602b66cd9ae",        {"SVDS",        12407}},
{"5c5db6302e2216000e5e47f0",        {"MPX Midwest 10.5\"",        7800}},
{"55d459824bdc2d892f8b4573",        {"KAC RIS",        7889}},
{"5b7be2345acfc400196d524a",        {"SA58 KeyMod",        7284}},
{"5894a42086f77426d2590762",        {"MPX GEN1",        4707}},
{"5c0e2f5cd174af02a012cfc9",        {"ADAR wood",        9211}},
{"5926f34786f77469195bfe92",        {"MP5SD HG",        16249}},
{"5b7d671b5acfc43d82528ddd",        {"FAL Belgian",        6441}},
{"5c5db5fc2e2216000f1b2842",        {"MPX Midwest 6.5\"",        7034}},
{"576169e62459773c69055191",        {"Sb.7-1",        5533}},
{"5ae30db85acfc408fb139a05",        {"M4",        7628}},
{"5cbda392ae92155f3c17c39f",        {"AK100",        6937}},
{"5a788031c585673f2b5c1c79",        {"PR870",        5114}},
{"5648b1504bdc2d9d488b4584",        {"6P20 Sb.9",        12493}},
{"59d64f2f86f77417193ef8b3",        {"6P1 Sb.6-1",        13802}},
{"59e898ee86f77427614bd225",        {"VPO209",        3333}},
{"59e6284f86f77440d569536f",        {"VPO136",        9780}},
{"5648b0744bdc2d363b8b4578",        {"6P20 Sb.6",        9833}},
{"57dc32dc245977596d4ef3d3",        {"6P26 Sb.6",        8000}},
{"5926c36d86f77467a92a8629",        {"MP5WT",        6033}},
{"5a788089c5856700142fdd9c",        {"Speedfeed",        2492}},
{"5b7bed205acfc400161d08cc",        {"FAL",        6625}},
{"55d45d3f4bdc2d972f8b456c",        {"MP133 beech",        12062}},
{"56deed6ed2720b4c698b4583",        {"МP153 Poly",        19875}},
{"5d00e0cbd7ad1a6c6566a42d",        {"AR15 Viper",        11399}},
{"57cffd8224597763b03fc609",        {"MOE AKM",        10529}},
{"57cffddc24597763133760c6",        {"MOE AKM",        13666}},
{"57cffe0024597763b03fc60b",        {"MOE AKM",        10151}},
{"57cffe20245977632f391a9d",        {"MOE AKM",        10797}},
{"5c9a1c3a2e2216000e69fb6a",        {"Zhukov-U",        10751}},
{"5c9a1c422e221600106f69f0",        {"Zhukov-U",        11959}},
{"5dcbe9431e1f4616d354987e",        {"MDR 308 16\"",        26646}},
{"5d3eb5b6a4b9361eab311902",        {"5-7 barrel",        17750}},
{"5d3eb59ea4b9361c284bb4b2",        {"5-7 thr.",        4200}},
{"5c48a2852e221602b21d5923",        {"MDR 556 406mm",        25448}},
{"5df256570dee1b22f862e9c4",        {"T-5000M 660mm",        17672}},
{"5a6b5ed88dc32e000c52ec86",        {"G SAI",        14482}},
{"5d440b93a4b9364276578d4b",        {"AR-15 18\"",        30190}},
{"5dfa397fb11454561e39246c",        {"SR-25 20\"",        40300}},
{"5a6b5b8a8dc32e001207faf3",        {"G AW",        10639}},
{"5c6d85e02e22165df16b81f4",        {"416A5 10.6\"",        12743}},
{"5bb20da5d4351e0035629dbf",        {"416A5 16.5\"",        18161}},
{"5a787f7ac5856700177af660",        {"M870 508mm",        30041}},
{"5b3baf8f5acfc40dc5296692",        {"TT 116mm gild",        6422}},
{"5a6b5e468dc32e001207faf5",        {"G DD thr.",        11663}},
{"5cc701aae4a949000e1ea45c",        {"P90 10.5\"",        40000}},
{"5bb20dadd4351e00367faeff",        {"416A5 20\"",        30414}},
{"5c5db5852e2216003a0fe71a",        {"MPX 4.5\"",        3800}},
{"5d440b9fa4b93601354d480c",        {"AR-15 20\"",        41519}},
{"55d35ee94bdc2d61338b4568",        {"AR-15 260mm",        59807}},
{"587de4282459771bca0ec90b",        {"P226 thr.",        21741}},
{"5b7be1125acfc4001876c0e5",        {"SA58 16\"",        19151}},
{"5d2703038abbc3105103d94c",        {"M700 20\"",        22800}},
{"5cc701d7e4a94900100ac4e7",        {"P90 16\"",        22300}},
{"5d2702e88abbc31ed91efc44",        {"M700 26\"",        25900}},
{"5beec1bd0db834001e6006f3",        {"RPK-16 15\"",        8963}},
{"5b099a765acfc47a8607efe3",        {"SA58 11\"",        15833}},
{"5888956924597752983e182d",        {"DVL10 660mm",        250000}},
{"5c471cb32e221602b177afaa",        {"SVDS 22\"",        35689}},
{"5a34fae7c4a2826c6e06d760",        {"AR-10 22\"",        26620}},
{"5bb20d92d4351e00853263eb",        {"416A5 11\"",        15560}},
{"5beec2820db834001b095426",        {"RPK-16 22\"",        33066}},
{"5a34f7f1c4a2826c6e06d75d",        {"AR-10 18\"",        21902}},
{"5888945a2459774bf43ba385",        {"DVL10 500mm",        22590}},
{"5c5db5b82e2216003a0fe71d",        {"MPX 10.5\"",        8174}},
{"5bb20d9cd4351e00334c9d8a",        {"416A5 14.5\"",        21866}},
{"5b7be1265acfc400161d0798",        {"SA58 21\"",        31566}},
{"5addbac75acfc400194dbc56",        {"M1A 22\"",        54802}},
{"5df917564a9f347bc92edca3",        {"SR-25 16\"",        21697}},
{"5bfebc250db834001a6694e1",        {"M700 26\"",        15989}},
{"5c5db5c62e22160012542255",        {"MPX 14\"",        43868}},
{"5ae09bff5acfc4001562219d",        {"Mosin 730mm",        48510}},
{"5a6b60158dc32e000a31138b",        {"G17 comp",        5098}},
{"5a787fadc5856700155a6ca1",        {"M870 660mm",        14215}},
{"5bfd4cd60db834001c38f095",        {"Mosin 220mm",        19917}},
{"55d3632e4bdc2d972f8b4569",        {"AR-15 370mm",        34972}},
{"5bfebc320db8340019668d79",        {"M700 20\"",        22037}},
{"5c5db5962e2216000e5e46eb",        {"MPX 6.5\"",        5174}},
{"5a787fdfc5856700142fdd9a",        {"M870 325mm",        9250}},
{"5a787f25c5856700186c4ab9",        {"M870 355mm",        11969}},
{"5aaf9d53e5b5b00015042a52",        {"M1A 16\"",        11473}},
{"588200af24597742fa221dfb",        {"MP153 610mm",        90000}},
{"5c0e2f94d174af029f650d56",        {"AR-15 406mm",        18353}},
{"571a279b24597720b4066566",        {"TT 121mm thr.",        11833}},
{"55d4491a4bdc2d882f8b456e",        {"MP133 510mm",        17420}},
{"560835c74bdc2dc8488b456f",        {"MP133 510mm rib",        21111}},
{"560836b64bdc2d57468b4567",        {"MP133 540mm rib",        4200}},
{"5608379a4bdc2d26448b4569",        {"MP133 750mm rib",        7680}},
{"5a6b5f868dc32e000a311389",        {"G17",        2980}},
{"5608373c4bdc2dc8488b4570",        {"MP133 710mm",        6123}},
{"5bfd4cc90db834001d23e846",        {"Mosin 200mm",        2100}},
{"560836484bdc2d20478b456e",        {"MP133 540mm",        3900}},
{"55d449444bdc2d962f8b456d",        {"MP133 610mm rib",        5103}},
{"58aeaaa886f7744fc1560f81",        {"MPXSD 165mm",        10097}},
{"588200c224597743990da9ed",        {"MP153 660mm",        7179}},
{"5bfd4cbe0db834001b73449f",        {"Mosin 514mm",        6914}},
{"560836fb4bdc2d773f8b4569",        {"МP133 660mm",        5005}},
{"56d5a1f7d2720bb3418b456a",        {"P226 112mm",        2000}},
{"588200cf2459774414733d55",        {"MP153 710mm",        7481}},
{"560837824bdc2d57468b4568",        {"MP133 750mm",        7062}},
{"560837544bdc2de22e8b456e",        {"MP133 710mm rib",        6958}},
{"560837154bdc2da74d8b4568",        {"MP133 660mm rib",        5501}},
{"55d448594bdc2d8c2f8b4569",        {"MP133 610mm",        4902}},
{"56deec93d2720bec348b4568",        {"MP153 750mm",        8218}},
{"5a787ebcc5856700142fdd98",        {"M870 508mm FS",        16695}},
{"5de65547883dde217541644b",        {"VPO-215 23\"",        50000}},
{"5894a2c386f77427140b8342",        {"MPX 203mm",        85000}},
{"571a26d524597720680fbe8a",        {"TT 116mm",        12000}},
{"5b1fa9ea5acfc40018633c0a",        {"G18C comp",        11785}},
{"5cadc1c6ae9215000f2775a4",        {"M9A3 thr.",        1660}},
{"5df35ea9c41b2312ea3334d8",        {"Orsis long",        3437}},
{"5df35e970b92095fd441e4d2",        {"T-5000M",        6922}},
{"59c63b4486f7747afb151c1c",        {"SD TRR",        3284}},
{"5addbfbb5acfc400194dbcf7",        {"M8",        123824}},
{"5a32aa0cc4a28232996e405f",        {"RM50",        5372}},
{"5dff8db859400025ea5150d4",        {"SVD Low",        20789}},
{"5addbfef5acfc400185c2857",        {"UTG 4p",        134568}},
{"5a27bad7c4a282000b15184b",        {"SR-1MP 4x",        12362}},
{"5926dad986f7741f82604363",        {"MFI mount",        75660}},
{"5c90c3622e221601da359851",        {"B-13V",        9565}},
{"5a37ca54c4a282000d72296a",        {"JP 30mm",        29411}},
{"5c61a40d2e2216001403158d",        {"B-13",        9742}},
{"5a33bab6c4a28200741e22f8",        {"RM35",        13705}},
{"593d1fa786f7746da62d61ac",        {"SKS SOCOM",        11929}},
{"5a1ead28fcdbcb001912fa9f",        {"DLOC-IRD",        55310}},
{"59db7eed86f77461f8380365",        {"TA51",        22460}},
{"5b2389515acfc4771e1be0c0",        {"AR-PEPR 30mm",        31890}},
{"59eb7ebe86f7740b373438ce",        {"6P29M",        43986}},
{"5a7b4900e899ef197b331a2a",        {"UM3",        14574}},
{"5aa66a9be5b5b0214e506e89",        {"NF 34mm",        155986}},
{"5a7ad55551dfba0015068f42",        {"G TS mount",        10430}},
{"5b800ed086f7747baf6e2f9e",        {"AK HEX",        9596}},
{"5a9fc7e6a2750c0032157184",        {"B-3",        13915}},
{"57a3459f245977764a01f703",        {"B-3",        28689}},
{"5addc00b5acfc4001669f144",        {"M14 CASV-14",        7777}},
{"587e08ee245977446b4410cf",        {"OPSKS DT",        6510}},
{"58d39d3d86f77445bb794ae7",        {"AMM",        4398}},
{"5df35eb2b11454561e3923e2",        {"Orsis med.",        3526}},
{"5d024f5cd7ad1a04a067e91a",        {"Patriot K+W",        4781}},
{"591ee00d86f774592f7b841e",        {"Kobra",        6255}},
{"5a789261c5856700186c65d3",        {"MT Clamp",        5444}},
{"5c471c2d2e22164bef5d077f",        {"SVDS LB",        9180}},
{"5c86592b2e2216000e69e77c",        {"KH/F 34mm",        292500}},
{"5a7ad4af51dfba0013379717",        {"G AT base",        8325}},
{"5a27b3d0c4a282000d721ec1",        {"SR-1MP mount",        16691}},
{"5c7d560b2e22160bc12c6139",        {"SS",        7315}},
{"57acb6222459771ec34b5cb0",        {"043-02",        8756}},
{"5addbfd15acfc40015621bde",        {"M14 MSM",        7264}},
{"5bc5a372d4351e44f824d17f",        {"Mosin MNG",        3649}},
{"5b3a08b25acfc4001754880c",        {"P226 Bridge",        7712}},
{"5b31163c5acfc400153b71cb",        {"ROMEO",        4178}},
{"5c7d55f52e221644f31bff6a",        {"LRP",        8154}},
{"5b4736a986f774040571e998",        {"QARS 3.2\"",        19249}},
{"5addbffe5acfc4001714dfac",        {"M14 DCSB",        5377}},
{"5beecbb80db834001d2c465e",        {"RPK-16 rail",        7727}},
{"59e0bed186f774156f04ce84",        {"6 CASV",        16416}},
{"5a78948ec5856700177b1124",        {"M870 XS",        7687}},
{"5addbfe15acfc4001a5fc58b",        {"M14 ARMS#18",        6451}},
{"55d48a634bdc2d8b2f8b456a",        {"SPRM",        120000}},
{"5c064c400db834001d23f468",        {"QD LT101",        5778}},
{"5aa66c72e5b5b00016327c93",        {"NF 34mm RIS",        6296}},
{"58d39b0386f77443380bf13c",        {"AMSH",        5355}},
{"5cde7b43d7f00c000d36b93e",        {"MOD*X rail mount",        14230}},
{"5b3b99265acfc4704b4a1afb",        {"NF 30mm",        24402}},
{"5a27b281c4a28200741e1e52",        {"SR-1MP 1x",        13351}},
{"5b4736b986f77405cb415c10",        {"QARS 4.2\"",        60898}},
{"5b30bc285acfc47a8608615d",        {"MK10 10\"",        22312}},
{"58d2664f86f7747fec5834f6",        {"DPCSM",        7018}},
{"5b3b6dc75acfc47a8773fb1e",        {"Armasight",        9075}},
{"5b7be47f5acfc400170e2dd2",        {"M-LOK 2.5\"",        5742}},
{"5bbdb811d4351e45020113c7",        {"Mosin 3Rail",        11585}},
{"5a33b2c9c4a282000c5a9511",        {"RM33",        10926}},
{"57ffb0062459777a045af529",        {"B-18",        6419}},
{"5a33b652c4a28232996e407c",        {"AC32062",        6185}},
{"5c61627a2e22160012542c55",        {"TOZ106 mount",        7550}},
{"5649a2464bdc2d91118b45a8",        {"MPR45",        10412}},
{"58a5c12e86f7745d585a2b9e",        {"MPX 4\"",        3785}},
{"57c69dd424597774c03b7bbc",        {"30mm Mount",        14364}},
{"5a9d6d13a2750c00164f6b03",        {"SI 6\"",        29232}},
{"5a966ec8a2750c00171b3f36",        {"B&T 3x",        24092}},
{"59e0be5d86f7742d48765bd2",        {"CASV 4\"",        5093}},
{"5c6162682e22160010261a2b",        {"TOZ106 DT",        5109}},
{"57d17e212459775a1179a0f5",        {"25mm ring",        4145}},
{"5bfe7fb30db8340018089fed",        {"133/153 12003",        5238}},
{"5d133067d7ad1a33013f95b4",        {"URX 3 3\"",        19602}},
{"59e0bdb186f774156f04ce82",        {"CASV 2\"",        9714}},
{"5b7be4895acfc400170e2dd5",        {"M-LOK 4.1\"",        24486}},
{"57ee59b42459771c7b045da5",        {"PP91 RIS",        4633}},
{"57ffaea724597779f52b3a4d",        {"B-12",        4502}},
{"55d48ebc4bdc2d8c2f8b456c",        {"Sprut",        4863}},
{"5d7b6bafa4b93652786f4c76",        {"5-7 RMR",        5840}},
{"5ab24ef9e5b5b00fe93c9209",        {"SOCOM16 upper",        6719}},
{"5d0a29ead7ad1a0026013f27",        {"1P59 mount",        7325}},
{"5cc7012ae4a949001252b43e",        {"EFFEN 90",        18355}},
{"5b7be46e5acfc400170e2dcf",        {"Vltor 5\"",        19055}},
{"5bfebc5e0db834001a6694e5",        {"M700 30mm",        8617}},
{"5b30bc165acfc40016387293",        {"MK10 3\"",        10115}},
{"5b800ebc86f774394e230a90",        {"HEX Med",        14594}},
{"5c0102b20db834001d23eebc",        {"RAHG 4\"",        4924}},
{"577d128124597739d65d0e56",        {"FFWB",        5892}},
{"5b7be4575acfc400161d0832",        {"Vltor 2\"",        9722}},
{"58a56f8d86f774651579314c",        {"MPX 2\"",        4706}},
{"5b7be4645acfc400170e2dcc",        {"Vltor 4\"",        6624}},
{"5b3f7bf05acfc433000ecf6b",        {"Kochetov",        3510}},
{"5cc70146e4a949000d73bf6b",        {"P90 side",        4927}},
{"5dff77c759400025ea5150cf",        {"UTG 25mm",        3305}},
{"5c0102aa0db834001b734ba1",        {"RAHG 2\"",        4745}},
{"5cdeaca5d7f00c00b61c4b70",        {"Pro700 mount",        3756}},
{"5bfebc530db834001d23eb65",        {"M700 Multi-slot",        8187}},
{"5a9d6d00a2750c5c985b5305",        {"SI 4\"",        10769}},
{"5cc7015ae4a949001152b4c6",        {"P90 top",        43288}},
{"5de8fbf2b74cd90030650c79",        {"MP9 bottom",        6714}},
{"5c1cdd302e221602b3137250",        {"Compact mount",        19710}},
{"5de6558e9f98ac2bc65950fc",        {"VPO215 rail",        3050}},
{"5b3f7c005acfc4704b4a1de8",        {"PU ring",        1298}},
{"5a9d6d21a2750c00137fa649",        {"TRAX Bridge",        7773}},
{"5d0a29fed7ad1a002769ad08",        {"1P69 mount",        9640}},
{"576a7c512459771e796e0e17",        {"B-8",        6055}},
{"5de8fc0b205ddc616a6bc51b",        {"MP9 side",        5755}},
{"5a7893c1c585673f2b5c374d",        {"MTU-028SG",        5403}},
{"5bfd36290db834001966869a",        {"Mosin sawn-off sniper",        54444}},
{"5df35e59c41b2312ea3334d5",        {"T-5000 body",        24420}},
{"5de910da8b6c4240ba2651b5",        {"MP9",        42683}},
{"5ab372a310e891001717f0d8",        {"S.A.S.S.",        25889}},
{"5b7d63de5acfc400170e2f8d",        {"SA58 SPR",        12879}},
{"5bcf0213d4351e0085327c17",        {"A1",        45000}},
{"5b0e794b5acfc47a877359b2",        {"AK Zhukov-S",        40579}},
{"58889d0c2459775bc215d981",        {"DVL-10",        39833}},
{"5926d40686f7740f152b6b7e",        {"MP5 A3",        15240}},
{"5bd704e7209c4d00d7167c31",        {"A2",        71666}},
{"5addbf175acfc408fb13965b",        {"M1A Archangel",        36333}},
{"5cde739cd7f00c0010373bd3",        {"MOD*X Gen.3",        19258}},
{"5bbde409d4351e003562b036",        {"Mosin pad",        12694}},
{"5947e98b86f774778f1448bc",        {"UBR GEN2",        13524}},
{"5b04473a5acfc40018632f70",        {"UAS AK",        13319}},
{"5cf13123d7f00c1085616a50",        {"Archangel M700",        14707}},
{"5a17fb9dfcdbcbcae6687291",        {"APB",        23677}},
{"5b7d63b75acfc400170e2f8a",        {"SA58/FAL PRS2",        10680}},
{"5df35ddddfc58d14537c2036",        {"T-5000M",        3150}},
{"5d25d0ac8abbc3054f3e61f7",        {"AICS M700",        20357}},
{"5d0236dad7ad1a0940739d29",        {"SKS UAS",        21439}},
{"5cdeac22d7f00c000f26168f",        {"Pro 700",        14198}},
{"56083a334bdc2dc8488b4571",        {"133/153",        6884}},
{"5926d3c686f77410de68ebc8",        {"MP5 A2",        47634}},
{"5c87a07c2e2216001219d4a2",        {"HK E1",        20983}},
{"5bae13bad4351e00320204af",        {"Archangel OPFOR PRS",        16755}},
{"5bfeb32b0db834001a6694d9",        {"Overmolded Ghillie",        14090}},
{"59ecc3dd86f7746dc827481c",        {"PT-3",        24999}},
{"5c471b5d2e221602b21d4e14",        {"SVDS",        7437}},
{"5d44069ca4b9361ebd26fc37",        {"PRS GEN3",        24124}},
{"5b222d405acfc400153af4fe",        {"PT-1",        14892}},
{"58ac1bf086f77420ed183f9f",        {"MPX Pipe",        19578}},
{"5d1c702ad7ad1a632267f429",        {"GLR-17",        37863}},
{"5649b2314bdc2d79388b4576",        {"МЕ4",        83223}},
{"5aaf8e43e5b5b00015693246",        {"SOCOM16",        14681}},
{"5cc700d4e4a949000f0f0f28",        {"P90 DI",        4150}},
{"5a9eb32da2750c00171b3f9c",        {"GLSHOCK",        29723}},
{"5947c73886f7747701588af5",        {"BUS",        10757}},
{"5d120a28d7ad1a1c8962e295",        {"ACE pad",        60389}},
{"5a78813bc5856700186c4abe",        {"M870 SGA",        127762}},
{"5d135e83d7ad1a21b83f42d8",        {"CTR",        20566}},
{"5addc7005acfc4001669f275",        {"M14ALCS",        17972}},
{"5b7d63cf5acfc4001876c8df",        {"SA58 folding",        9047}},
{"5c793fde2e221601da358614",        {"Viper Mod1",        14416}},
{"58d2912286f7744e27117493",        {"MOE RBP",        17723}},
{"5ab626e4d8ce87272e4c6e43",        {"6P21 Sb.5",        75479}},
{"56083be64bdc2d20478b456f",        {"133/153 plastic",        74035}},
{"5addc7ac5acfc400194dbd90",        {"M14ALCS",        15967}},
{"5b0800175acfc400153aebd4",        {"F93 PRO",        21714}},
{"5b7d64555acfc4001876c8e2",        {"SA58 BRS",        12072}},
{"59ecc28286f7746d7a68aa8c",        {"AKS74 PT",        19112}},
{"5d120a10d7ad1a4e1026ba85",        {"ACE SOCOM",        12140}},
{"5abcd472d8ce8700166032ae",        {"6P4N Sb.1-19",        1556}},
{"5bbdb870d4351e00367fb67d",        {"Mosin MonteCarlo",        20320}},
{"5b222d335acfc4771e1be099",        {"AKM/AK74 PT",        10109}},
{"5cde77a9d7f00c000f261009",        {"AB adpt.",        2602}},
{"5a33cae9c4a28232980eb086",        {"PRS GEN2",        10898}},
{"5cf518cfd7f00c065b422214",        {"AKTS AK",        26142}},
{"5b39f8db5acfc40016387a1b",        {"EMOD",        10473}},
{"5afd7ded5acfc40017541f5e",        {"TAPCO Intrafuse",        18491}},
{"5a0c59791526d8dba737bba7",        {"6G15U",        7648}},
{"5c793fb92e221644f31bfb64",        {"Advanced Tube",        103884}},
{"5a33ca0fc4a282000d72292f",        {"A2",        9786}},
{"5cf50fc5d7f00c056c53f83c",        {"AKTS AK74",        10901}},
{"5cdeac42d7f00c000d36ba73",        {"Pro 700",        4699}},
{"5cc700b9e4a949000f0f0f25",        {"P90",        25000}},
{"5c07c9660db834001a66b588",        {"MP5 EndCap",        15345}},
{"5d2f25bc48f03502573e5d85",        {"End Cap",        2500}},
{"5b099bf25acfc4001637e683",        {"SA58 adpt.",        12847}},
{"5beec8c20db834001d2c465c",        {"AK-12",        7299}},
{"5cc700cae4a949035e43ba72",        {"P90 butt",        5383}},
{"5bfe86df0db834001b734685",        {"GLR-16-S",        16441}},
{"56eabf3bd2720b75698b4569",        {"MOE",        21493}},
{"59ff3b6a86f77477562ff5ed",        {"6P4 Sb.1-19",        20660}},
{"5c5db6ee2e221600113fba54",        {"MPX MD CQB",        3750}},
{"591aef7986f774139d495f03",        {"M7A1PDW",        13736}},
{"5ac78eaf5acfc4001926317a",        {"74M/100 PT",        4772}},
{"5c5db6f82e2216003a0fe914",        {"MPX ULSS",        15215}},
{"5894a13e86f7742405482982",        {"MPX telestock",        44000}},
{"5ae30c9a5acfc408fb139a03",        {"SOPMOD",        6712}},
{"5c503af12e221602b177ca02",        {"VPO101",        10774}},
{"5bb20e58d4351e00320205d7",        {"Enhanced Tube",        11876}},
{"587e0531245977466077a0f7",        {"OP-SKS Wood",        22611}},
{"5bb20e70d4351e0035629f8f",        {"Slim Line",        7091}},
{"599851db86f77467372f0a18",        {"PP-19-01",        53851}},
{"5c99f3592e221644fc633070",        {"TOZ106 Mosin",        18851}},
{"5beec8b20db834001961942a",        {"RPK-16 tube",        16425}},
{"5cebec10d7f00c065703d185",        {"PS90",        3350}},
{"5bfd37c80db834001d23e842",        {"Mosin sniper carbine",        14000}},
{"5c0e2ff6d174af02a1659d4a",        {"ADAR wood",        10579}},
{"55d4ae6c4bdc2d8b2f8b456e",        {"M4SS",        4400}},
{"5ae35b315acfc4001714e8b0",        {"M870 LEO",        3923}},
{"5a7880d0c5856700142fdd9d",        {"M870 SPS",        10493}},
{"5b7d645e5acfc400170e2f90",        {"SA58 Hump",        7291}},
{"5a788169c5856700142fdd9e",        {"M870 Raptor",        8952}},
{"59d6514b86f774171a068a08",        {"6P1 Sb.5",        48888}},
{"5bfd384c0db834001a6691d3",        {"Mosin carbine",        9000}},
{"56083cba4bdc2de22e8b456f",        {"133/153 wood",        6574}},
{"59e89d0986f77427600d226e",        {"VPO209",        7895}},
{"5649b0fc4bdc2d17108b4588",        {"6P20 Sb.7",        14010}},
{"5ae096d95acfc400185c2c81",        {"Mosin stock",        25801}},
{"57ade1442459771557167e15",        {"Baskak",        6154}},
{"59e6227d86f77440d64f5dc2",        {"VPO136",        2100}},
{"574dad8024597745964bf05c",        {"56-A-231 Sb.5",        12667}},
{"578395e82459774a0e553c7b",        {"VSS Wood",        7063}},
{"57c450252459772d28133253",        {"VAL",        4969}},
{"5c0faeddd174af02a962601f",        {"ADAR",        4307}},
{"5ac50c185acfc400163398d4",        {"6P34 Sb.15",        5416}},
{"5bfe89510db834001808a127",        {"AGR-870 tube",        7638}},
{"5afd7e095acfc40017541f61",        {"SKS TAPCO",        9727}},
{"5bfd36ad0db834001c38ef66",        {"Mosin sawn-off",        15237}},
{"5de655be4a9f347bc92edb88",        {"VPO-215",        16786}},
{"57dc347d245977596754e7a1",        {"6P26 Sb.5",        6798}},
{"5adf23995acfc400185c2aeb",        {"MC 20-01",        2575}},
{"57616ca52459773c69055192",        {"SOK12 AK",        5383}},
{"5649b1c04bdc2d16268b457c",        {"6P20 Sb.5",        12503}},
{"5649be884bdc2d79388b4577",        {"Colt",        5311}},
{"5bfd35380db83400232fe5cc",        {"Mosin inf. stock",        19086}},
{"5a38ef1fc4a282000b1521f6",        {"TOZ106",        12000}},
{"5947eab886f77475961d96c5",        {"UBR GEN2",        13350}},
{"591af10186f774139d495f0e",        {"M7A1PDW",        20278}},
{"5888961624597754281f93f3",        {"Harris HBR",        13627}},
{"56ea8222d2720b69698b4567",        {"SV98 Bipod",        8509}},
{"5cadd919ae921500126a77f3",        {"M9A3 FS",        460}},
{"5aba62f8d8ce87001943946b",        {"APS FS",        5000}},
{"5cadd940ae9215051e1c2316",        {"M9A3 RS",        6969}},
{"5abcbb20d8ce87001773e258",        {"M14 RS",        10000}},
{"5dfa3d7ac41b2312ea33362a",        {"KAC RS",        11606}},
{"5d3eb4aba4b93650d64e497d",        {"5-7 RS",        19999}},
{"56ea7293d2720b8d4b8b45ba",        {"SM220-239",        3819}},
{"56d5a77ed2720b90418b4568",        {"P226 RS",        7333}},
{"5cadd954ae921500103bb3c2",        {"SM M9",        3600}},
{"5d3eb536a4b9363b1f22f8e2",        {"5-7 FS",        4250}},
{"5894a73486f77426d259076c",        {"MPX FS",        9865}},
{"5894a81786f77427140b8347",        {"MPX RS",        6666}},
{"5de8fb539f98ac2bc659513a",        {"MP9 RS",        15011}},
{"5926d2be86f774134d668e4e",        {"MP5 Drum RS",        9860}},
{"5a7d9122159bd4001438dbf4",        {"G SE RS",        10988}},
{"5c05295e0db834001a66acbb",        {"ACOG Bck-up",        2400}},
{"5aafa49ae5b5b00015042a58",        {".125 Blade",        9888}},
{"5c1780312e221602b66cc189",        {"KAC RS",        7332}},
{"5dfa3d950dee1b22f862eae0",        {"KAC FS",        10232}},
{"5ba26b17d4351e00367f9bdd",        {"MP7 FlipUp RS",        28330}},
{"5bb20e49d4351e3bac1212de",        {"416A5 FlipUp RS",        7366}},
{"5649d9a14bdc2d79388b4580",        {"TT01",        7801}},
{"5c17804b2e2216152006c02f",        {"KAC FS",        8814}},
{"5c503b1c2e221602b21d6e9d",        {"VPO101 RS",        314}},
{"5a71e0fb8dc32e00094b97f2",        {"G ZT RS",        2000}},
{"57838e1b2459774a256959b1",        {"VSS RS",        18422}},
{"5caf16a2ae92152ac412efbc",        {"ASh-12 FS",        5811}},
{"5ae30bad5acfc400185c2dc4",        {"CHandle",        10999}},
{"58272b842459774abc128d50",        {"CSS RSRM",        2400}},
{"5bc09a18d4351e003562b68e",        {"MBUS RS",        6830}},
{"5caf1691ae92152ac412efb9",        {"ASh-12 CH",        4992}},
{"5addba3e5acfc4001669f0ab",        {".062 Blade",        1628}},
{"5c07b36c0db834002a1259e9",        {"P226 TD FS",        1500}},
{"5a7d90eb159bd400165484f1",        {"G SE FS",        9250}},
{"5c07b3850db834002330045b",        {"P226 TD RS",        1400}},
{"5ac733a45acfc400192630e2",        {"6P44 Sb.1-30",        50000}},
{"56083e1b4bdc2dc8488b4572",        {"SV-98 RS",        23000}},
{"5ba26b01d4351e0085325a51",        {"MP7 FlipUp FS",        15555}},
{"5a0ed824fcdbcb0176308b0d",        {"AKMP RS",        470}},
{"5bc09a30d4351e00367fb7c8",        {"MBUS FS",        7025}},
{"57c44e7b2459772d28133248",        {"VAL RS",        5999}},
{"5a7d9104159bd400134c8c21",        {"G TFX FS",        5000}},
{"5a0f096dfcdbcb0176308b15",        {"AKMP FS",        8214}},
{"5a6f58f68dc32e000a311390",        {"Glock FS",        9333}},
{"5a7d912f159bd400165484f3",        {"G TFX RS",        6644}},
{"5c471b7e2e2216152006e46c",        {"SVDS RS",        2600}},
{"5ae099925acfc4001a5fc7b3",        {"Mosin RS",        1500}},
{"55d5f46a4bdc2d1b198b4567",        {"A2 RS",        4500}},
{"5beec9450db83400970084fd",        {"RPK16 RS base",        8000}},
{"5bf3f59f0db834001a6fa060",        {"RPK-16 RS",        9000}},
{"5bfd4c980db834001b73449d",        {"Mosin RS",        800}},
{"5ae099875acfc4001714e593",        {"Mosin FS",        4169}},
{"55d4af3a4bdc2d972f8b456f",        {"LPA2 FS",        8888}},
{"5c471ba12e221602b3137d76",        {"SVDS FS",        10788}},
{"5a0eb980fcdbcb001a3b00a6",        {"AKMB RS",        471}},
{"59e8977386f77415a553c453",        {"VPO209",        22222}},
{"57a9b9ce2459770ee926038d",        {"SOK12 RS",        17037}},
{"5b0bc22d5acfc47a8607f085",        {"SA58 Holland",        4436}},
{"5ac72e475acfc400180ae6fe",        {"6P20 Sb.2",        6503}},
{"5649b0544bdc2d1b2b8b458a",        {"6P20 Sb.2",        9999}},
{"56d5a661d2720bd8418b456b",        {"P226 FS",        3611}},
{"59d650cf86f7741b846413a4",        {"6P1 Sb.2-1",        8200}},
{"574db213245977459a2f3f5d",        {"SKS RS",        14884}},
{"5aba639ed8ce8700182ece67",        {"APB RS",        5000}},
{"5aba637ad8ce87001773e17f",        {"APS RS",        9999}},
{"5a71e0048dc32e000c52ecc8",        {"G ZT FS",        1300}},
{"5a6f5d528dc32e00094b97d9",        {"Glock RS",        604}},
{"599860e986f7743bb57573a6",        {"PP-19-01",        4333}},
{"5da743f586f7744014504f72",        {"USEC",        79118}},
{"5ac4c50d5acfc40019262e87",        {"K1S",        7250}},
{"5a16b672fcdbcb001912fa83",        {"FVisor",        14596}},
{"5e01f37686f774773c6f6c15",        {"EXFIL Tan",        23077}},
{"5e00cdd986f7747473332240",        {"EXFIL Blk.",        25708}},
{"5913651986f774432f15d132",        {"Shestyorka",        7105}},
{"593858c486f774253a24cb52",        {"Pump Back",        5128}},
{"57a349b2245977762b199ec7",        {"Pump Frnt",        3185}},
{"5b43271c5acfc432ff4dce65",        {"Bandana",        5780}},
{"5aa2b87de5b5b00016327c25",        {"BEAR",        3000}},
{"5b40e5e25acfc4001a599bea",        {"BEAR",        6193}},
{"5aa2ba46e5b5b000137b758d",        {"UXPRO",        7532}},
{"5b40e61f5acfc4001a599bec",        {"USEC",        30000}},
{"5aa2a7e8e5b5b00016327c16",        {"USEC",        17975}},
{"5df8a6a186f77412640e2e80",        {"Ball Red",        7000}},
{"5df8a72c86f77412640e2e83",        {"Ball Silver",        10000}},
{"5df8a77486f77412672a1e3f",        {"Ball Violet",        20000}},
{"5d1340bdd7ad1a0e8d245aab",        {"GEN M3",        10624}},
{"5d1340cad7ad1a0b0b249869",        {"GEN M3",        11062}},
{"5de653abf76fdc1ce94a5a2a",        {"VPO215",        4496}},
{"5c793fc42e221600114ca25d",        {"Advanced Tube",        101066}},
{"5c18b90d2e2216152142466b",        {"MBUS FS FDE",        7028}},
{"5c18b9192e2216398b5a8104",        {"MBUS RS FDE",        6306}},
{"5d124c1ad7ad1a12227c53a7",        {"KAC stopper",        5386}},
{"5d124c01d7ad1a115c7d59fb",        {"KAC short",        7184}},
{"5dfe14f30b92095fd441edaf",        {"ETMI-019",        5958}},
{"5b8403a086f7747ff856f4e2",        {"HEX Med",        10760}},
{"5d4aaa54a4b9365392071170",        {"AKM-L",        14874}},
{"5b80242286f77429445e0b47",        {"AK HEX",        23360}},
{"5d4aaa73a4b9365392071175",        {"AKM-L",        13807}},
{"5d4aab30a4b9365435358c55",        {"VS Combo",        22847}},
{"5b7be1ca5acfc400170e2d2f",        {"SA58 4Rail full",        11235}},
{"5a8036fb86f77407252ddc02",        {"Shoreline",        18207}},
{"574eb85c245977648157eec3",        {"Factory",        13863}},
{"5798a2832459774b53341029",        {"Customs",        25428}},
{"5900b89686f7744e704a8747",        {"Woods",        10380}},
{"5a80a29286f7742b25692012",        {"Resort",        8100}},
{"5be4038986f774527d3fae60",        {"Interchange",        9068}},
{"5b3f3af486f774679e752c1f",        {"Armband",        557}},
{"5b3f3b0186f774021a2afef7",        {"Armband",        547}},
{"5b3f3ade86f7746b6b790d8e",        {"Armband",        991}},
{"5b3f16c486f7747c327f55f7",        {"Armband",        2561}},
{"5b3f3b0e86f7746752107cda",        {"Armband",        535}},
{"5c0919b50db834001b7ce3b9",        {"Maska-1Shch",        35301}},
{"544fb5454bdc2df8738b456a",        {"MultiTool",        26851}},
{"5b4391a586f7745321235ab2",        {"Camera",        39305}},
{"5ac78a9b86f7741cca0bbd8d",        {"Jammer",        24037}},
{"5991b51486f77447b112d44f",        {"MS2000",        16889}},
{"5656eb674bdc2d35148b457c",        {"40mm",        9800}},
{"59148f8286f7741b951ea113",        {"WSafe",        6403}},
{"57372c21245977670937c6c2",        {"BT gs",        30481}},
{"57372d1b2459776862260581",        {"PP gs",        1000}},
{"57372deb245977685d4159b3",        {"PRS gs",        5224}},
{"57372f7d245977699b53e301",        {"US gs",        17667}},
{"573722e82459776104581c21",        {"BZhT gzh",        36900}},
{"5737250c2459776125652acc",        {"PBM gzh",        10105}},
{"5737256c2459776125652acd",        {"PstM gzh",        26333}},
{"573725b0245977612125bae2",        {"PPe gzh",        7000}},
{"573727c624597765cc785b5b",        {"Pst gzh",        12000}},
{"573728cc24597765cc785b5d",        {"SP7 gzh",        18500}},
{"573728f324597765e5728561",        {"SP8 gzh",        13999}},
{"5c11279ad174af029d64592b",        {"Warmageddon",        1200}},
{"5c1262a286f7743f8a69aab2",        {"PPBS gs 30",        40416}},
{"57372db0245977685d4159b2",        {"PP gs",        26000}},
{"57372e4a24597768553071c2",        {"PRS gs",        6356}},
{"57372ebf2459776862260582",        {"PS gs",        9800}},
{"5c1127d0d174af29be75cf68",        {"12/70 RIP",        2243}},
{"5649ed104bdc2d3d1c8b458b",        {"7.62x39 PS 30",        29375}},
{"560d75f54bdc2da74d8b4573",        {"SNB 7.62x54R 30",        28145}},
{"5c1260dc86f7746b106e8748",        {"BP gs 8",        7000}},
{"5c12619186f7743f871c8a32",        {"SPP 8",        9333}},
{"58d2946c86f7744e271174b5",        {"MOE FG",        14200}},
{"58d2946386f774496974c37e",        {"MOE FDE",        9537}},
{"58d2947e86f77447aa070d53",        {"MOE SG",        13864}},
{"58d2947686f774485c6a1ee5",        {"MOE OD",        10538}},
{"5e42c83786f7742a021fdf3c",        {"#21WS",        1089264}},
{"5e42c81886f7742a01529f57",        {"#11SR",        2177848}},
{"5739d41224597779c3645501",        {"Pst gzh",        2500}},
{"5447ac644bdc2d6c208b4567",        {"M855",        1650}},
{"5e2af55f86f7746d4159f07c",        {"Grenades",        319726}},
{"5e2af4d286f7746d4159f07a",        {"Aramid",        6957}},
{"5e2af4a786f7746d3f3c3400",        {"Ripstop",        10262}},
{"5e2af47786f7746d404f3aaa",        {"Fleece",        8343}},
{"5e2af41e86f774755a234b67",        {"Cordura",        9745}},
{"5e2af37686f774755a234b65",        {"SurvL",        13088}},
{"5e2af2bc86f7746d3f3c33fc",        {"HMatches",        8822}},
{"5e2af29386f7746d4159f077",        {"KEK",        16808}},
{"5e2af22086f7746d3f3c33fa",        {"Poxeram",        11848}},
{"5e2af00086f7746d3f3c33f7",        {"DCleaner",        18391}},
{"5e2af02c86f7746d420957d4",        {"Chlorine",        18354}},
{"5e2aef7986f7746d3f3c33f5",        {"Repellent",        7253}},
{"5e2aee0a86f774755a234b62",        {"Cyclon",        54562}},
{"5e2aedd986f7746d404f3aa4",        {"GreenBat",        24956}},
{"5e2af51086f7746d3f3c3402",        {"Fuze",        8265}},
{"5e32f56fcb6d5863cc5e5ee4",        {"VOG-17",        9636}},
{"5e340dcdcb6d5863cc5e5efb",        {"VOG-25",        15587}},
{"5e4abb5086f77406975c9342",        {"Slick",        232264}},
{"5e4abc6786f77406812bd572",        {"SFMP",        109270}},
{"5e4d34ca86f774264f758330",        {"Razor",        31793}},
{"5e4bfc1586f774264f7582d3",        {"TC 800",        36988}},
{"5e4ac41886f77406a511c9a8",        {"CPC MOD2",        200286}},
{"5e4abc1f86f774069619fbaa",        {"Bank Robber",        13000}},
{"5e4abfed86f77406a2713cf7",        {"Tarzan",        14734}},
{"5e54f79686f7744022011103",        {"Plague mask",        58013}},
{"5e569a132642e66b0b68015c",        {"DRG L-1",        5928}},
{"5e42c71586f7747f245e1343",        {"ULTRA med.",        2556597}},
{"5e54f62086f774219b0f1937",        {"Raven",        30240}},
{"5e54f76986f7740366043752",        {"Shroud",        26802}},
{"5696686a4bdc2da3298b456a",        {"USD",        127}},
{"569668774bdc2da2298b4568",        {"EUR",        148}},
{"5e54f6af86f7742199090bf3",        {"DrLupo's",        32741}},
{"5e71f6be86f77429f2683c44",        {"Rivals",        24000}},
{"5e71fad086f77422443d4604",        {"Rivals",        32000}},
{"5e71f70186f77429ee09f183",        {"Rivals",        25600}},
{"5ea03f7400685063ec28bfa8",        {"PPSh-41",        15475}},
{"5e81c3cbac2bb513793cdc75",        {"M1911A1",        9482}},
{"5ea02bb600685063ec28bfa1",        {"PPSh-41 10.6\"",        20000}},
{"5e81c519cb2b95385c177551",        {"1911A1 .45",        9785}},
{"5ea034eb5aad6446a939737b",        {"PPSh",        3907}},
{"5e81c4ca763d9f754677befa",        {"1911",        9262}},
{"5ea034f65aad6446a939737e",        {"PPSh drum",        28817}},
{"5ea03e5009aa976f2e7a514b",        {"PPSh-41",        10352}},
{"5e81edc13397a21db957f6a1",        {"1911A1 slide",        15986}},
{"5ea03e9400685063ec28bfa4",        {"PPSh-41",        2120}},
{"5e81c6bf763d9f754677beff",        {"1911A1",        18210}},
{"5e81c539cb2b95385c177553",        {"1911A1 SS",        10000}},
{"5e81c550763d9f754677befd",        {"1911A1 Ham.",        4747}},
{"5e81c6a2ac2bb513793cdc7f",        {"1911A1 Trig.",        450}},
{"5e81ee213397a21db957f6a6",        {"1911A1 FS",        502}},
{"5e81ee4dcb2b95385c177582",        {"1911A1 RS",        604}},
{"5e9dacf986f774054d6b89f4",        {"Defender-2",        180046}},
{"5ea05cf85ad9772e6624305d",        {"TK FAST MT",        13809}},
{"5ea058e01dbce517f324b3e2",        {"TK Heavy Trooper",        67776}},
{"5e9dcf5986f7746c417435b3",        {"Day Pack",        18860}},
{"5e9db13186f7742f845ee9d3",        {"LBCR",        33930}},
{"5c5db63a2e2216000f1b284a",        {"MPX Midwest 14\"",        9477}},
{"5e208b9842457a4a7a33d074",        {"DTKP",        29187}},
{"57372ac324597767001bc261",        {"BP gs",        1000}},
{"57372c89245977685d4159b1",        {"BT gs",        46667}},
{"5c1127bdd174af44217ab8b9",        {"RIP 20",        7000}},
{"5857a8b324597729ab0a0e7d",        {"Beta",        750000}},
{"5ede7b0c6d23e5473e6e8c66",        {"RB-RLSA",        75643}},
{"5ede7a8229445733cb4c18e2",        {"RB-PKPM mark.",        244750}},
{"5e81f423763d9f754677bf2e",        {"FMJ",        186}},
{"5ea2a8e200685063ec28c05a",        {"RIP",        481}},
{"5ea17bbc09aa976f2e7a51cd",        {"RC2",        28241}},
{"5e5699df2161e06ac158df6f",        {"XRS-DRG",        11860}},
{"5ea16acdfadf1d18c87b0784",        {"SMR MK16 9.5\"",        10950}},
{"5ea16ada09aa976f2e7a51be",        {"SMR MK16 13.5\"",        16025}},
{"5e56991336989c75ab4f03f6",        {"SVD MHG",        17280}},
{"5b363dea5acfc4771e1c5e7e",        {"12ga adpt.",        5485}},
{"5e569a2e56edd02abe09f280",        {"XD RGL",        8570}},
{"5ea16d4d5aad6446a939753d",        {"ACH",        12164}},
{"5d44334ba4b9362b346d1948",        {"Raptor Grey",        21169}},
{"5cbda9f4ae9215000e5b9bfc",        {"6P20 Sb.9 Plum",        10793}},
{"5d00f63bd7ad1a59283b1c1e",        {"AR15 Viper",        11178}},
{"5e2192a498a36665e8337386",        {"AK MG-47",        12590}},
{"5e217ba4c1434648c13568cd",        {"Kocherga",        13612}},
{"5d4406a8a4b9361e4f6eb8b7",        {"PRS GEN3",        19358}},
{"5cbdb1b0ae9215000d50e105",        {"6P20 Sb.7 Plum",        16969}},
{"5d135ecbd7ad1a21c176542e",        {"CTR",        17111}},
{"5b84038986f774774913b0c1",        {"HEX",        8337}},
{"5e569a0156edd02abe09f27d",        {"SVD mod. rail",        10917}},
{"5ea172e498dacb342978818e",        {"FH556RC",        13198}},
{"5e21ca18e4d47f0da15e77dd",        {"CNC War.",        1675}},
{"5ea18c84ecf1982c7712d9a2",        {"Bastion plate",        81997}},
{"5ea17ca01412a1425304d1c0",        {"Bastion",        58802}},
{"5e0090f7e9dc277128008b93",        {"MP9 Upper",        80000}},
{"5d124c0ed7ad1a10d168dd9b",        {"KAC long",        6643}},
{"5e81ebcd8e146c7080625e15",        {"FN40GL",        110000}},
{"5ed51652f6c34d2cc26336a1",        {"M.U.L.E.",        65841}},
{"5ed5166ad380ab312177c100",        {"Obdolbos",        39876}},
{"5ed515ece452db0eb56fc028",        {"P22",        31000}},
{"5ed515e03a40a50460332579",        {"L1",        22417}},
{"5ed515c8d380ab312177c0fa",        {"3-(b-TG)",        22023}},
{"5ed515f6915ec335206e4152",        {"AHF1-M",        21500}},
{"5ed5160a87bb8443d10680b5",        {"Meldonin",        40430}},
{"5efb0cabfb3e451d70735af5",        {"AP",        933}},
{"5efb0fc6aeb21837e749c801",        {"HS",        318}},
{"5efb0d4f4bc50b58e81710f3",        {"LM",        120}},
{"5f0596629e22f464da6bbdd9",        {"AP-M",        587}},
{"5ede474b0c226a66f5402622",        {"M381",        19440}},
{"5ede475b549eed7c6d5c18fb",        {"M386",        3777}},
{"5ede4739e0350d05467f73e8",        {"M406",        4351}},
{"5f0c892565703e5c461894e9",        {"M433",        6123}},
{"5ede47405b097655935d7d16",        {"M441",        20569}},
{"5ede475339ee016e8c534742",        {"M576",        1517}},
{"5efb0c1bd79ff02a1f5e68d9",        {"M993",        1677}},
{"5efb0da7a29a85116f6ea05f",        {"PBP gzh",        1331}},
{"5efb0e16aeb21837e749c7ff",        {"QuakeMaker",        433}},
{"5eff09cd30a7dc22fd1ddfed",        {"E110 San Tape",        431874}},
{"5efde6b4f5448336730dbd61",        {"Keycard",        151958}},
{"5e997f0b86f7741ac73993e2",        {"Sanitar bag",        28023}},
{"57372bd3245977670b7cd243",        {"BS gs",        24250}},
{"5857a8bc2459772bad15db29",        {"Gamma",        1850000}},
{"544a11ac4bdc2d470e8b456a",        {"Alpha",        360000}},
{"59db794186f77448bc595262",        {"Epsilon",        1100000}},
{"5c093ca986f7740a1867ab12",        {"Kappa",        4900000}},
{"5648b62b4bdc2d9d488b4585",        {"GP-34",        50900}},
{"5f5e45cc5021ce62144be7aa",        {"LK 3F",        9734}},
{"5f5e467b0bc58666c37e7821",        {"F5 Switchblade",        45358}},
{"5f5e46b96bdad616ad46d613",        {"F4 Terminator",        78319}},
{"5f5f41f56760b4138443b352",        {"Thunderbolt",        18688}},
{"5f2a9575926fd9352339381f",        {"RFB",        0}},
{"5f36a0e5fbf956000b716b65",        {"M45A1",        10576}},
{"5e870397991fd70db46995c8",        {"590A1",        17818}},
{"5e848cc2988a8701445df1e8",        {"KS-23M",        49640}},
{"5f4f9eb969cdc30ff33f09db",        {"Compass",        27874}},
{"5e8f3423fd7471236e6e3b64",        {"Kvass",        10698}},
{"5f5f41476bdad616ad46d631",        {"Korund-VM",        125139}},
{"5f60c74e3b85f6263c145586",        {"Rys-T",        198327}},
{"5f60b34a41e30a4ab12a6947",        {"Caiman",        91060}},
{"5d70e500a4b9364de70d38ce",        {"VOG-30",        980}},
{"5e85aa1a988a8701445df1f5",        {"Barrikada",        839}},
{"5e85a9a6eacf8c039e4e2ac1",        {"Shrap-10",        369}},
{"5f647f31b6238e5dd066e196",        {"Shrapnel-25",        1057}},
{"5e85a9f4add9fe03027d9bf1",        {"Zvezda",        20373}},
{"5e831507ea0a7c419c2f9bd9",        {"Esmarch",        1930}},
{"5e8488fa988a8701445df1e4",        {"Hemostat",        10703}},
{"5f63407e1b231926f2329f15",        {"R43 VPO101",        34668}},
{"5f60cd6cf2bcbb675b00dac6",        {"XCEL",        34979}},
{"5f60b85bbdb8e27dee3dc985",        {"Applique",        37371}},
{"5f60bf4558eff926626a60f2",        {"FAV",        20385}},
{"5f60c076f2bcbb675b00dac2",        {"Mandible",        40583}},
{"5f60c85b58eff926626a60f7",        {"Rys-T",        48464}},
{"5f6331e097199b7db2128dc2",        {"X47",        22546}},
{"55f84c3c4bdc2d5f408b4576",        {"RIS II 9.5 FDE",        15557}},
{"5efaf417aeb21837e749c7f2",        {"B-30+B-31S",        29603}},
{"5f3e7823ddc4f03b010e2045",        {"M45A1 slide",        100000}},
{"5f60e6403b85f6263c14558c",        {"Beret",        10375}},
{"5f60e7788adaa7100c3adb49",        {"Beret",        10644}},
{"5f60e784f2bcbb675b00dac7",        {"Beret",        8378}},
{"5dcbd6b46ec07c0c4347a564",        {"MDR Black",        40805}},
{"5eea21647547d6330471b3c9",        {"MOE M590",        9390}},
{"5e848d51e4dbc5266a4ec63b",        {"KS-23M",        5651}},
{"5f2aa47a200e2c0ee46efa71",        {"RFB",        9429}},
{"5f63418ef5750b524b45f116",        {"Bravo-18",        14286}},
{"5e87076ce2db31558c75a11d",        {"Speedfeed",        16311}},
{"5f6336bbda967c74a42e9932",        {"LCH-7 12.5\"",        27076}},
{"5f745ee30acaeb0d490d8c5b",        {"Veritas",        34129}},
{"5f6340d3ca442212f4047eb2",        {"TD",        21960}},
{"5f633f68f5750b524b45f112",        {"RRD-4C",        50424}},
{"5f633f791b231926f2329f13",        {"RRD-4C",        61674}},
{"5f2aa4559b44de6b1b4e68d1",        {"RFB",        6000}},
{"5ef61964ec7f42238c31e0c1",        {"AO MB",        7482}},
{"5f6339d53ada5942720e2dc3",        {"CRD 556",        11332}},
{"5f6372e2865db925d54f3869",        {"FF CQB 556",        10086}},
{"5d270b3c8abbc3105335cfb8",        {"M700 cap",        500}},
{"5f2aa43ba9b91d26f20ae6d2",        {"RFB spacer",        14968}},
{"5f2aa4464b50c14bcf07acdb",        {"RFB cap",        9333}},
{"5e8708d4ae379e67d22e0102",        {"590 GR FS",        13600}},
{"5e87114fe2db31558c75a120",        {"GR RS",        19999}},
{"5f3e78a7fbf956000b716b8e",        {"Lomount FS",        750}},
{"5f3e7897ddc4f03b010e204a",        {"Lomount RS",        10000}},
{"5ef3553c43cb350a955a7ccb",        {"Wilson Ext.",        4021}},
{"5ef35f46382a846010715a96",        {"HEX ham.",        12281}},
{"5ef35d2ac64c5d0dfc0571b0",        {"1911A1 ham.",        4369}},
{"5ef35bc243cb350a955a7ccd",        {"US Ham.",        14138}},
{"5ef32e4d1c1fd62aea6a150d",        {"TrikTrig",        10225}},
{"5f3e777688ca2d00ad199d25",        {"M45A1 SLock",        500}},
{"5f3e76d86cda304dcc634054",        {"M45A1 Ham.",        500}},
{"5f3e772a670e2a7b01739a52",        {"M45A1 Trig.",        550}},
{"5f633ff5c444ce7e3c30a006",        {"Avalanche",        32174}},
{"56deee15d2720bee328b4567",        {"МP153x4",        5000}},
{"5cbdaf89ae9215000e5b9c94",        {"6L23 Plum",        2752}},
{"5f647d9f8499b57dc40ddb93",        {"KS-23Mx3",        8481}},
{"59fafc9386f774067d462453",        {"AK30 FDE",        22440}},
{"5d1340b3d7ad1a0b52682ed7",        {"GEN M3",        8897}},
{"5e21a3c67e40bd02257a008a",        {"GEN M3",        18833}},
{"5e87080c81c4ed43e83cefda",        {"590A1x8",        24148}},
{"5f3e77b26cda304dcc634057",        {"M45A1",        5497}},
{"5cffa483d7ad1a049e54ef1c",        {"ammo belt",        1030}},
{"5ef3448ab37dfd6af863525c",        {"Mec-Gar",        18291}},
{"5eeb2ff5ea4f8b73c827350b",        {"M590 rail",        20915}},
{"5a398b75c4a282000a51a266",        {"PRA",        25976}},
{"5a398ab9c4a282000c5a9842",        {"SCRA",        26793}},
{"5f2aa49f9b44de6b1b4e68d4",        {"RFB scope mount",        9448}},
{"5ef5d994dfbc9f3c660ded95",        {"Weig-a-tinny",        2900}},
{"5ef369b08cef260c0642acaf",        {"TGM",        2300}},
{"5f2aa493cd375f14e15eea72",        {"RFB HG rail",        7944}},
{"5eea217fc64c5d0dfc05712a",        {"SGA M590",        9834}},
{"5e848dc4e4dbc5266a4ec63d",        {"KS-23M steel",        11700}},
{"5e848db4681bea2ada00daa9",        {"KS23 wood",        12749}},
{"5e87116b81c4ed43e83cefdd",        {"M590A1",        26049}},
{"5ef1ba28c64c5d0dfc0571a5",        {"MT Crosshair",        21067}},
{"5ef1b9f0c64c5d0dfc0571a1",        {"M590 LEO",        6292}},
{"5f63405df5750b524b45f114",        {"VPO101 SVD style",        24472}},
{"5e848d1c264f7c180b5e35a9",        {"KS23 510mm",        21211}},
{"5e848d2eea0a7c419c2f9bfd",        {"KS23 700mm",        14548}},
{"5f2aa46b878ef416f538b567",        {"RFB 18\"",        50581}},
{"5e87071478f43e51ca2de5e1",        {"M590 20\"",        45000}},
{"5f3e77f59103d430b93f94c1",        {"M1911A1 .45",        14916}},
{"5f3e7801153b8571434a924c",        {"1911A1 NM",        41389}},
{"545cdb794bdc2d3a198b456a",        {"6B43 6A",        324736}},
{"5d1b371186f774253763a656",        {"Fuel",        101305}},
{"5f6341043ada5942720e2dc5",        {"Scorpius",        20751}},
{"57c9a89124597704ee6faec1",        {"P226 FDE",        1247}},
{"5ef366938cef260c0642acad",        {"ALG#423",        2900}},
{"5e848d99865c0f329958c83b",        {"KS23M",        9720}},
{"5f3e778efcd9b651187d7201",        {"M45A1",        1200}},
{"5c0e655586f774045612eeb2",        {"Trooper",        82057}},
{"5d43021ca4b9362eab4b5e25",        {"TX-15 DML",        67569}},
{"5c07c60e0db834002330051f",        {"ADAR 2-15",        19503}},
{"5b0bbe4e5acfc40dc528a72d",        {"SA-58",        32716}},
{"5c488a752e221602b412af63",        {"MDR",        50585}},
{"5dcbd56fdbd3d91b3e5468d5",        {"MDR",        91753}},
{"5447a9cd4bdc2dbd208b4567",        {"M4A1",        62343}},
{"5f2a9575926fd9352339381f",        {"RFB",        44996}},
{"5fc3f2d5900b1d5091531e57",        {"Vector 9x19",        55791}},
{"5fb64bc92b1b027b1f50bcf2",        {"Vector .45ACP",        66579}},
{"5fc3e272f8b6a877a729eac5",        {"UMP 45",        25944}},
{"5fd4c4fa16cac650092f6771",        {"IDEA Rig",        9599}},
{"5fd4c5477a8d854fa0105061",        {"Security",        8443}},
{"5fd4c60f875c30179f5d04c2",        {"BSS-MK1",        24099}},
{"5fbcc1d9016cce60e8341ab3",        {"SIG MCX .300 BLK",        49625}},
{"5fc22d7c187fea44d52eda44",        {"Mk-18",        105123}},
{"5fbe3ffdf8b6a877a729ea82",        {"BCP FMJ",        214}},
{"5fd20ff893a8961fc660a954",        {"AP",        714}},
{"5fc382a9d724d907e2077dab",        {"AP",        9662}},
{"5fc275cf85fd526b824a571a",        {"FMJ",        3007}},
{"5fc382c1016cce60e8341b20",        {"UPZ",        511}},
{"5fc382b6d6fa9c00c571bbc3",        {"TAC-X",        598}},
{"5fd4c474dd870108a754b241",        {"Hexgrid",        209750}},
{"5fc4b9b17283c4046c5814d7",        {"Omega 45K",        25627}},
{"5fbe7618d6fa9c00c571bb6c",        {"SRD762",        54543}},
{"5fbe760793164a5b6278efc8",        {"SRD762-QD",        65512}},
{"5fc0fa957283c4046c58147e",        {"MCX RS",        3400}},
{"5fc64ea372b0dd78d51159dc",        {"Knife",        22625}},
{"5fca138c2a7b221b2852a5c6",        {"xTG-12",        39084}},
{"5fca13ca637ee0341a484f46",        {"SJ9 TGLabs",        500000}},
{"5fce0cf655375d18a253eff0",        {"RVG FDE",        28444}},
{"5fc0f9b5d724d907e2077d82",        {"MVF001 A3",        10210}},
{"5fc0f9cbd6fa9c00c571bb90",        {"SSVFK",        9315}},
{"5fbc210bf24b94483f726481",        {"MCX block",        37444}},
{"5fc2360f900b1d5091531e19",        {"Mk18 block",        82666}},
{"5fbcbcf593164a5b6278efb2",        {"3-pr 762",        8623}},
{"5fbcbd02900b1d5091531dd3",        {"Micro 762",        9153}},
{"5fb65424956329274326f316",        {"Vector .45",        7250}},
{"5fc23636016cce60e8341b05",        {"AC-858",        12192}},
{"5fbbc3324e8a554c40648348",        {"Vector 9x19",        5212}},
{"5fbcbd10ab884124df0cd563",        {"TPB 762",        58502}},
{"5fbc22ccf24b94483f726483",        {"T-LOK",        67778}},
{"5fbbc34106bde7524f03cbe9",        {"Vector cap",        3412}},
{"5fc4b992187fea44d52edaa9",        {"DT Omega",        8961}},
{"5fc4b97bab884124df0cd5e3",        {"Omega piston",        6375}},
{"5fb6548dd1409e5ca04b54f9",        {"Vector cap",        6500}},
{"5fc0fa362770a0045c59c677",        {"MCX FS",        8065}},
{"5fb6567747ce63734e3fa1dc",        {"Defiance FS",        10315}},
{"5fb6564947ce63734e3fa1da",        {"Defiance RS",        9640}},
{"5fbcc640016cce60e8341acc",        {"MCX",        20000}},
{"5fb651dc85f90547f674b6f4",        {"G30 MagEx",        38592}},
{"5fb651b52b1b027b1f50bcff",        {"Glock .45",        7445}},
{"5fc3e466187fea44d52eda90",        {"UMP 45",        14291}},
{"5fc23426900b1d5091531e15",        {"Mk-18",        11914}},
{"5fbb976df9986c4cff3fe5f2",        {"Vector Bottom",        5751}},
{"5fc53954f8b6a877a729eaeb",        {"UMP rail bott",        3312}},
{"5fce0f9b55375d18a253eff2",        {"Vector side",        4522}},
{"5fbb978207e8a97d1f0902d3",        {"Mk.5 Modular",        4474}},
{"5fc5396e900b1d5091531e72",        {"UMP side",        3612}},
{"5fc2369685fd526b824a5713",        {"Precision",        19176}},
{"5fc3e4ee7283c4046c5814af",        {"UMP",        6532}},
{"5fb655b748c711690e3a8d5a",        {"Vector NFA",        7286}},
{"5fb655a72b1b027b1f50bd06",        {"Vector PSA",        4806}},
{"5fce16961f152d4312622bc9",        {"DS150 FDE",        9559}},
{"5fbcc437d724d907e2077d5c",        {"MCX thin",        5571}},
{"5fbbaa86f9986c4cff3fe5f6",        {"DS150",        12697}},
{"5fb6558ad6f0b2136f2d7eb7",        {"Vector fold.",        6538}},
{"5fbcc429900b1d5091531dd7",        {"MCX telestock",        7128}},
{"5fbbfabed5cb881a7363194e",        {"MCX 171mm",        10189}},
{"5fbbfacda56d053a3543f799",        {"MCX 229mm",        15825}},
{"5fc23678ab884124df0cd590",        {"Mk-18 24\"",        68385}},
{"5fbbc366ca32ed67276c1557",        {"Vector 9x19 5\"",        10887}},
{"5fb653962b1b027b1f50bd03",        {"Vector .45 6\"",        22358}},
{"5fc3e4a27283c4046c5814ab",        {"UMP-45 8\"",        8536}},
{"5fb65363d1409e5ca04b54f5",        {"Vector .45 5\"",        8311}},
{"5fbbc383d5cb881a7363194a",        {"Vector 9x19 6\"",        13272}},
{"5fbc227aa56d053a3543f79e",        {"MCX 12\"",        12864}},
{"5fc235db2770a0045c59c683",        {"Mk-18 18\"",        25518}},
{"5fbc226eca32ed67276c155d",        {"MCX 8\"",        6078}},
{"5fbcbd6c187fea44d52eda14",        {"MCX",        9275}},
{"5fbcc3e4d6fa9c00c571bb58",        {"MCX GEN1",        40000}},
{"5fc278107283c4046c581489",        {"Mk-18 Upper",        47070}},
{"5fd8d28367cb5e077335170f",        {"Smoke",        27369}},
{"57372f5c24597769917c0131",        {"T gs",        1000}},
{"573724b42459776125652ac2",        {"P gzh",        1000}},
{"5737273924597765dd374461",        {"PSO gzh",        1000}},
{"5737266524597761006c6a8c",        {"PRS gs",        1000}},
{"5737280e24597765cc785b5c",        {"PSV",        1000}},
{"5737287724597765e1625ae2",        {"RG028 gzh",        1000}},
{"57372e73245977685d4159b4",        {"PS gs",        1000}},
{"5737260b24597761224311f2",        {"PPT gzh",        1000}},
{"5737300424597769942d5a01",        {"US gs",        1000}},
{"5737330a2459776af32363a1",        {"FMJ",        1000}},
{"5737339e2459776af261abeb",        {"HP",        1000}},
{"57372ee1245977685d4159b5",        {"T gs",        1000}},
{"573733c72459776b0b7b51b0",        {"SP",        1000}},
{"5737292724597765e5728562",        {"BP gs",        100000}},
{"57372b832459776701014e41",        {"BS gs",        1000}},
{"57372a7f24597766fe0de0c1",        {"BP gs",        43000}},
{"57372bad245977670b7cd242",        {"BS gs",        1000}},
{"57372f2824597769a270a191",        {"T gs",        1000}},
{"57372c56245977685e584582",        {"BT gs",        26600}},
{"57372e1924597768553071c1",        {"PRS gs",        10000}},
{"573726d824597765d96be361",        {"PS gs PPO",        1000}},
{"57372d4c245977685a3da2a1",        {"PP gs",        1000}},
{"57372e94245977685648d3e1",        {"PS gs",        1000}},
{"57372fc52459776998772ca1",        {"US gs",        1000}},
{"5f9949d869e2777a0e779ba5",        {"Rivals",        20000}},
{"5f99418230835532b445e954",        {"Rivals",        20000}},
{"5f994730c91ed922dd355de3",        {"Rivals",        20000}},
{"5449016a4bdc2d6f028b456f",        {"RUB",        0}},
{"5d1b36a186f7742523398433",        {"Fuel",        32250}},
{"5ab8e4ed86f7742d8e50c7fa",        {"MF-UN",        38274}},
{"5aa7e373e5b5b000137b76f0",        {"Altyn",        39024}},
{"5ab8e79e86f7742d8b372e78",        {"GZHEL-K",        109372}},
{"60391b0fb847c71012789415",        {"TP-200",        21651}},
{"60391a8b3364dc22b04d0ce5",        {"Thermite",        57133}},
{"60391afc25aff57af81f7085",        {"Ratchet",        79263}},
{"60337f5dce399e10262255d1",        {"STM9 MB",        3329}},
{"602a97060ddce744014caf6f",        {"PL15 supp.",        16961}},
{"6034d2d697633951dc245ea6",        {"G2 Gunslinger DE",        47215}},
{"6038d614d10cbf667352dd44",        {"Takedown",        31523}},
{"6034d103ca006d2dca39b3f0",        {"Takedown",        33819}},
{"603648ff5a45383c122086ac",        {"Azimut",        21764}},
{"6034d0230ca681766b6a0fb5",        {"CSA",        13731}},
{"6034cf5fffd42c541047f72e",        {"Umka",        15681}},
{"6040dd4ddcf9592f401632d2",        {"Azimut",        21715}},
{"602a9740da11d6478d5a06dc",        {"PL-15",        16991}},
{"60339954d62c9b14ed777c06",        {"STM-9",        20337}},
{"6038b4ca92ec1c3103795a0d",        {"Slick",        235371}},
{"6038b4b292ec1c3103795a0b",        {"Slick",        233528}},
{"6033fa48ffd42c541047f728",        {"M32",        17970}},
{"60098af40accd37ef2175f27",        {"CAT",        2175}},
{"60098ad7c2240c0fe85c570a",        {"AFAK",        24555}},
{"60098b1705871270cd5352a1",        {"EWR",        12333}},
{"601948682627df266209af05",        {"Taiga-1",        5988889}},
{"60363c0c92ec1c31037959f5",        {"GP-7",        8647}},
{"603618feffd42c541047f771",        {"Cap",        9534}},
{"603619720ca681766b6a0fc4",        {"Cap",        8758}},
{"6040de02647ad86262233012",        {"Cap",        23023}},
{"60361a7497633951dc245eb4",        {"Cap",        2668}},
{"60361b0b5a45383c122086a1",        {"Cap",        4347}},
{"60361b5a9a15b10d96792291",        {"Cap",        3704}},
{"603409c80ca681766b6a0fb2",        {"Condor",        17375}},
{"60194943740c5d77f6705eea",        {"SOST",        166}},
{"601949593ae8f707c4608daa",        {"SSA AP",        1057}},
{"601aa3d2b2bcb34913271e6d",        {"MAI AP",        1413}},
{"60228a76d62c9b14ed777a66",        {"PL15 FS",        800}},
{"60228a850ddce744014caf69",        {"PL15 FS ext.",        950}},
{"60229948cacb6b0506369e27",        {"PL15 RS",        900}},
{"602293f023506e50807090cb",        {"PL15 RS ext.",        950}},
{"602f85fd9b513876d4338d9c",        {"STM9 mwell",        8201}},
{"60338ff388382f4fab3fd2c8",        {"STM9 mwell G",        5976}},
{"6033749e88382f4fab3fd2c5",        {"MASP",        14267}},
{"602286df23506e50807090c6",        {"9x19 PL15",        7673}},
{"602e3f1254072b51b239f713",        {"STM Tube",        32444}},
{"602e620f9b513876d4338d9a",        {"GL-Core",        8267}},
{"602a95edda11d6478d5a06da",        {"PL-15 9x19",        7556}},
{"603372b4da11d6478d5a07ff",        {"STM-9 10.5\"",        7155}},
{"602a95fe4e02ce1eaa358729",        {"PL15 thr.",        20000}},
{"603372d154072b51b239f9e1",        {"STM-9 12\"",        13883}},
{"603372f153a60014f970616d",        {"STM-9 14\"",        18920}},
{"603373004e02ce1eaa358814",        {"STM-9 16\"",        30916}},
{"6034e3e20ddce744014cb878",        {"STM 12\"",        13928}},
{"6034e3d953a60014f970617b",        {"STM 15\"",        14956}},
{"6034e3cb0ddce744014cb870",        {"STM 9\"",        14232}},
{"602e71bd53a60014f9705bfa",        {"DLG123",        2794}},
{"60228924961b8d75ee233c32",        {"PL15 Slide",        3900}},
{"602e63fb6335467b0c5ac94d",        {"STM-9 Upper",        6545}},
{"59e6687d86f77411d949b251",        {"VPO-209",        0}},
{"587e02ff24597743df3deaeb",        {"OP-SKS",        0}},
{"574d967124597745970e7c94",        {"SKS",        0}},
{"59e6152586f77473dc057aa1",        {"VPO-136",        0}},
{"5c501a4d2e221602b412b540",        {"Vepr Hunter",        0}},
{"5ac66d015acfc400180ae6e4",        {"AK-102",        0}},
{"5644bd2b4bdc2d3b4c8b4572",        {"AK-74N",        0}},
{"5ab8e9fcd8ce870019439434",        {"AKS-74N",        0}},
{"5ac66d725acfc43b321d4b60",        {"AK-104",        0}},
{"5bb2475ed4351e00853264e3",        {"HK 416A5",        0}},
{"5fbcc1d9016cce60e8341ab3",        {"SIG MCX .300 BLK",        0}},
{"5ac66d9b5acfc4001633997a",        {"AK-105",        0}},
{"5cadfbf7ae92152ac412eeef",        {"ASh-12",        0}},
{"5ac66d2e5acfc43b321d4b53",        {"AK-103",        0}},
{"57dc2fa62459775949412633",        {"AKS-74U",        0}},
{"5839a40f24597726f856b511",        {"AKS-74UB",        0}},
{"5bf3e03b0db834001d2c4a9c",        {"AK-74",        0}},
{"59d6088586f774275f37482f",        {"AKM",        0}},
{"5a0ec13bfcdbcb00165aa685",        {"AKMN",        0}},
{"59ff346386f77477562ff5e2",        {"AKMS",        0}},
{"5ac66cb05acfc40198510a10",        {"AK-101",        0}},
{"57c44b372459772d2b39b8ce",        {"AS VAL",        0}},
{"5abcbc27d8ce8700182eceeb",        {"AKMSN",        0}},
{"583990e32459771419544dd2",        {"AKS-74UN",        0}},
{"5ac4cd105acfc40016339859",        {"AK-74M",        0}},
{"5bf3e0490db83400196199af",        {"AKS-74",        0}},
{"5bfd297f0db834001a669119",        {"Mosin Infantry",        0}},
{"5bfea6e90db834001b7347f3",        {"M700",        0}},
{"5ae08f0a5acfc408fb1398a1",        {"Mosin",        0}},
{"5de652c31b7e3716273428be",        {"VPO-215",        0}},
{"5df24cf80dee1b22f862e9bc",        {"T-5000M",        0}},
{"588892092459774ac91d4b11",        {"DVL-10",        0}},
{"55801eed4bdc2d89578b4588",        {"SV-98",        0}},
{"5beed0f50db834001c062b12",        {"RPK-16",        0}},
{"5df8ce05b11454561e39243b",        {"SR-25",        0}},
{"5c46fbd72e2216398b5a8c9c",        {"SVDS",        0}},
{"5aafa857e5b5b00018480968",        {"M1A",        0}},
{"5a367e5dc4a282000e49738f",        {"RSASS",        0}},
{"5fc22d7c187fea44d52eda44",        {"Mk-18",        0}},
{"57838ad32459774a17445cd2",        {"VSS Vintorez",        0}},
{"579204f224597773d619e051",        {"PM (t)",        0}},
{"56d59856d2720bd8418b456a",        {"P226R",        0}},
{"5abccb7dd8ce87001773e277",        {"APB",        0}},
{"5f36a0e5fbf956000b716b65",        {"M45A1",        0}},
{"5d3eb3b0a4b93615055e84d2",        {"FN 5-7",        0}},
{"5b3b713c5acfc4330140bd8d",        {"TT Gold",        0}},
{"5d67abc1a4b93614ec50137f",        {"FN 5-7 FDE",        0}},
{"5cadc190ae921500103bb3b6",        {"M9A3",        0}},
{"571a12c42459771f627b58a0",        {"TT",        0}},
{"56e0598dd2720bb5668b45a6",        {"PB",        0}},
{"5e81c3cbac2bb513793cdc75",        {"M1911A1",        0}},
{"5448bd6b4bdc2dfc2f8b4569",        {"PM",        0}},
{"5a17f98cfcdbcb0980087290",        {"APS",        0}},
{"602a9740da11d6478d5a06dc",        {"PL-15",        0}},
{"576a581d2459771e7b1bc4f1",        {"MP-443 Grach\"",        0}},
{"5b1fa9b25acfc40018633c01",        {"Glock 18C",        0}},
{"5a7ae0c351dfba0017554310",        {"Glock 17",        0}},
{"59f98b4986f7746f546d2cef",        {"SR-1MP",        0}},
{"5a38e6bac4a2826c6e06d79b",        {"TOZ-106",        0}},
{"5e870397991fd70db46995c8",        {"590A1",        0}},
{"5a7828548dc32e5a9c28b516",        {"M870 12ga",        0}},
{"56dee2bdd2720bc8328b4567",        {"MP-153",        0}},
{"54491c4f4bdc2db1078b4568",        {"MP-133",        0}},
{"5e848cc2988a8701445df1e8",        {"KS-23M",        0}},
{"576165642459773c7a400233",        {"Saiga 12ga v.10",        0}},
{"5e00903ae9dc277128008b87",        {"MP9",        0}},
{"59984ab886f7743e98271174",        {"PP-19-01",        0}},
{"5cc82d76e24e8d00134b4b83",        {"P90",        0}},
{"5bd70322209c4d00d7167b8f",        {"MP7A2",        0}},
{"5ba26383d4351e00334c93d9",        {"MP7A1",        0}},
{"5de7bd7bfd6b4e6e2276dc25",        {"MP9-N",        0}},
{"60339954d62c9b14ed777c06",        {"STM-9",        17916}},
{"57d14d2524597714373db789",        {"PP-91 Kedr",        0}},
{"5fc3e272f8b6a877a729eac5",        {"UMP 45",        0}},
{"5926bb2186f7744b1c6c6e60",        {"MP5",        0}},
{"58948c8e86f77409493f7266",        {"MPX",        0}},
{"57f3c6bd24597738e730fa2f",        {"PP-91-01 Kedr-B",        0}},
{"5d2f0d8048f0356c925bc3b0",        {"MP5K-N",        0}},
{"59f9cabd86f7743a10721f46",        {"Saiga-9",        0}},
{"5ea03f7400685063ec28bfa8",        {"PPSh-41",        0}},
{"5fb64bc92b1b027b1f50bcf2",        {"Vector .45ACP",        0}},
{"5fc3f2d5900b1d5091531e57",        {"Vector 9x19",        0}},
{"57f4c844245977379d5c14d1",        {"PP-9 Klin",        0}},
{"5e81ebcd8e146c7080625e15",        {"FN40GL",        0}},
{"5648b62b4bdc2d9d488b4585",        {"GP-34",        0}},
{"60b0f561c4449e4cb624c1d7",        {"Poison",        32290}},
{"6065dc8a132d4d12c81fd8e3",        {"CMMG block",        10006}},
{"609269c3b0e443224b421cc1",        {"ASR 556",        17947}},
{"6065c6e7132d4d12c81fd8e1",        {"SV Brake",        6404}},
{"607ffb988900dc2d9a55b6e4",        {"ProComp 762",        10014}},
{"60926df0132d4d12c81fd9df",        {"SAKER ASR 556",        37934}},
{"609b9e31506cf869cf3eaf41",        {"TargetRing",        9454}},
{"60a23797a37c940de7062d02",        {"ROMEO8T",        22642}},
{"609a63b6e2ff132951242d09",        {"Krechet",        14234}},
{"609bab8b455afd752b2e6138",        {"T12W",        45833}},
{"606f2696f2cb2e02a42aceb1",        {"Ultima Thermal",        25737}},
{"606f26752535c57a13424d22",        {"Ultima mount",        8248}},
{"60785c0d232e5a31c233d51c",        {"Ultima rbr.",        7983}},
{"606587bd6d0bd7580617bacc",        {"Mk47 Ambi",        6570}},
{"6076c87f232e5a31c233d50e",        {"МP155x6",        7777}},
{"609a4b4fe2ff132951242d04",        {"Arbalet VPO",        6107}},
{"60785ce5132d4d12c81fd918",        {"Ultima top",        66203}},
{"6086b5392535c57a13424d70",        {"CG",        4344}},
{"607ea812232e5a31c233d53c",        {"Ultima shrt.",        16489}},
{"606587d11246154cad35d635",        {"RipStock",        5471}},
{"606587e18900dc2d9a55b65f",        {"CMMG",        9445}},
{"607d5a891246154cad35d6aa",        {"MP155 walnut",        7825}},
{"606eef756d0bd7580617baf8",        {"Ultima",        32176}},
{"6087e2a5232e5a31c233d552",        {"OPFOR AA47",        37175}},
{"606f263a8900dc2d9a55b68d",        {"Ultima Large",        10827}},
{"606f262c6d0bd7580617bafa",        {"Ultima Med.",        8271}},
{"606ef0812535c57a13424d20",        {"Ultima Small",        10539}},
{"6076c1b9f2cb2e02a42acedc",        {"MP155 510mm",        12998}},
{"60658776f2cb2e02a42ace2b",        {"Mk47 254mm",        17416}},
{"6065878ac9cf8012264142fd",        {"Mk47 409mm",        206092}},
{"6086b5731246154cad35d6c7",        {"Type-340",        13492}},
{"6065881d1246154cad35d637",        {"MK3 RML15",        12512}},
{"6065880c132d4d12c81fd8da",        {"MK3 RML9",        9578}},
{"6087e0336d0bd7580617bb7a",        {"Wing&Skull",        27562}},
{"607d5aa50494a626335e12ed",        {"МP155 walnut",        13752}},
{"606ee5c81246154cad35d65e",        {"Ultima",        7090}},
{"6087e663132d4d12c81fd96b",        {"AGS-74",        33705}},
{"606eef46232e5a31c233d500",        {"Ultima",        7737}},
{"606587a88900dc2d9a55b659",        {"Mk47 Resolute",        10563}},
{"56e294cdd2720b603a8b4575",        {"Terraplane 85L",        100000000}},
{"60a2828e8689911a226117f9",        {"Pillbox",        19953}},
{"60a272cc93ef783291411d8e",        {"Drawbridge",        39899}},
{"5732ee6a24597719ae0c0281",        {"Waist bag",        15000}},
{"60a6220e953894617404b00a",        {"CR MK2 (R)",        30361}},
{"60a621c49c197e4e8c4455e6",        {"CR MK2 (A)",        22760}},
{"609e860ebd219504d8507525",        {"AVS MBAV",        210984}},
{"60a3c70cde5f453f634816a3",        {"Osprey MK4A (A)",        145680}},
{"60a3c68c37ea821725773ef5",        {"Osprey MK4A (P)",        172500}},
{"60b0f6c058e0b0481a09ad11",        {"WZ",        28146}},
{"606587252535c57a13424cfd",        {"Mk47",        105316}},
{"606dae0ab0e443224b421bb7",        {"MP-155",        20085}},
{"60b0f988c4449e4cb624c1da",        {"Evasion",        428142}},
{"609e8540d5c319764c2bc2e9",        {"THOR CV",        66230}},
{"60a283193cb70855c43a381d",        {"THOR IC",        275319}},
{"60a7ad3a0c5cb24b0134664a",        {"\"Gorilla\"",        139000}},
{"60a7ad2a2198820d95707a2e",        {"\"UBEY\"",        146875}},
{"60a7acf20c5cb24b01346648",        {"Cap",        29048}},
{"60bf74184a63fc79b60c57f6",        {"Bomber",        16882}},
{"60b52e5bc7d8103275739d67",        {"Chimera",        4046}},
{"60b0f93284c20f0feb453da7",        {"RatCola",        15023}},
{"6087e570b998180e9f76dc24",        {"Dead Blow",        45000}},
{"60b0f7057897d47c5b04ab94",        {"Loot Lord",        52281}},
{"606587252535c57a13424cfd",        {"Mk47",        0}},
{"606dae0ab0e443224b421bb7",        {"MP-155",        0}}
};


how do you dump it from tarkov-market like that? or do you use a script or something to convert that into that format? thank you

tolessthan350gt 27th July 2021 01:56 AM

Quote:

Originally Posted by sharkdev (Post 3196161)
how do you dump it from tarkov-market like that? or do you use a script or something to convert that into that format? thank you

something quick i wrote to do that
Code:

#include <Windows.h>
#include <nlohmann/json.hh>
#include <fstream>
#include <iostream>

int main( ) {
        SetConsoleOutputCP( CP_UTF8 );
        SetConsoleCP( CP_UTF8 );

        std::ifstream ifs( "api_response.txt" );
        if ( !ifs.good( ) ) {
                printf( "invalid file! \n" );
                system( "pause" );
                return -1;
        }

        std::string response( ( std::istreambuf_iterator( ifs ) ), ( std::istreambuf_iterator<char>( ) ) );
        if ( response.empty( ) )
                return -1;

        if ( !nlohmann::json::accept( response ) ) {
                printf( "invalid json! \n" );
                system( "pause" );
                return -1;
        }

        std::unordered_map<std::string, std::pair<std::string, int>> rets;

        auto parsed_response = nlohmann::json::parse( response );
        for ( const auto& a : parsed_response.items( ) ) {
                rets.emplace( a.value( )["bsgId"].get<std::string>( ), std::make_pair( a.value( )["name"].get<std::string>( ), a.value( )["price"].get<int>( ) ) );
        }

        printf( "inline std::unordered_map<std::string, std::pair<std::string, int>> item_names = {\n" );
        for ( const auto& ret : rets ) {
                auto a = std::string( R"({")" ).append( ret.first ).append( R"(", {R"()" ).append( std::get<0>( ret.second ) ).append( ")\", " ).append( std::to_string( std::get<1>( ret.second ) ) ).append( "}}," );
                printf( "    %s\n", a.c_str( ) );
        }

        printf( "};\n" );

        system( "pause" );
        return 0;
}


sharkdev 27th July 2021 05:34 AM

Quote:

Originally Posted by tolessthan350gt (Post 3196172)
something quick i wrote to do that
Code:

...

ty works good!

anyone know full defination for new bosses/raiders? thats what i've collected so far (Raider not work):
Code:

                                                                                                                                        switch (RoleID)
                                                                                                                                        {
                                                                                                                                        case WildSpawnType::bossGluhar:
                                                                                                                                                Name = "Gluhar";
                                                                                                                                                break;
                                                                                                                                        case WildSpawnType::bossKilla:
                                                                                                                                                Name = "Killa";
                                                                                                                                                break;
                                                                                                                                        case WildSpawnType::bossKojaniy:
                                                                                                                                                Name = "Kojaniy";
                                                                                                                                                break;
                                                                                                                                        case WildSpawnType::bossSanitar:
                                                                                                                                                Name = "Sanitar";
                                                                                                                                                break;
                                                                                                                                        case WildSpawnType::bossTagilla:
                                                                                                                                                Name = "Tagilla";
                                                                                                                                                break;
                                                                                                                                        case WildSpawnType::followerSanitar:
                                                                                                                                        case WildSpawnType::followerGluharAssault:
                                                                                                                                        case WildSpawnType::followerGluharScout:
                                                                                                                                        case WildSpawnType::followerGluharSecurity:
                                                                                                                                        case WildSpawnType::followerGluharSnipe:
                                                                                                                                        case WildSpawnType::followerKojaniy:
                                                                                                                                        case WildSpawnType::followerBully:
                                                                                                                                        case WildSpawnType::sectantWarrior:
                                                                                                                                        case WildSpawnType::followerTagilla:
                                                                                                                                                Name = "Raider";
                                                                                                                                                break;
                                                                                                                                        case WildSpawnType::marksman:
                                                                                                                                                Name = "Marksman";
                                                                                                                                                break;
                                                                                                                                        case WildSpawnType::cursedAssault:
                                                                                                                                                Name = "Cultist";
                                                                                                                                                break;
                                                                                                                                        default:
                                                                                                                                                Name = "Scav";
                                                                                                                                                break;
                                                                                                                                        }

also sometimes on some maps (mainly factory) my extract esp does not work, transform or location is fucked and all draw on the same one spot, thats what i do:
Code:

                                                        auto ExitController = Read<uint64_t>(LocalGameWorld + 0x18);
                                                        if (ExitController)
                                                        {
                                                                // 20 : exfiltrationPoint_0 (type: EFT.Interactive.ExfiltrationPoint[])
                                                                // 28 : scavExfiltrationPoint_0 (type: EFT.Interactive.ScavExfiltrationPoint[])
                                                                auto offset = 0x20;

                                                                if (LocalPlayer()->SideId == EPlayerSideMask::Savage)
                                                                        offset = 0x28;

                                                                auto ExitPoint = Read<uint64_t>(ExitController + offset);
                                                                if (ExitPoint)
                                                                {
                                                                        auto ExitCount = Read<int>(ExitPoint + 0x18);
                                                                        uint64_t extract_buffer[256];
                                                                        ReadSize(ExitPoint + offsetof(ListInternal, firstEntry), extract_buffer, sizeof(uint64_t) * ExitCount);

                                                                        for (int i = 0; i < ExitCount; i++)
                                                                        {
                                                                                auto BasePointer = extract_buffer[i];
                                                                                if (BasePointer)
                                                                                {
                                                                                                auto ExtractTransform = ReadPtrChain(BasePointer, { 0x10, 0x30, 0x30, 0x8, 0x28 });
                                                                                                auto ExtractNamePtr = ReadPtrChain(BasePointer, { 0x58, 0x10 });
                                                                                                auto ExtractNameLength = Read<int32_t>(ExtractNamePtr + 0x10);
                                                                                                auto ExtractName = GetUnicodeString(ExtractNamePtr + 0x14, ExtractNameLength);
                                                                                                auto ExtractLocation = GetPosition(ExtractTransform);
                                                                                }
                                                                        }
                                                                }
                                                        }


Shynd 27th July 2021 03:50 PM

Quote:

Originally Posted by sharkdev (Post 3196268)
snip

As far as Role String goes, here's a C# snippet that can easily be ported to C++ and works 100% (as far as I can tell):
Code:

private string GetRoleString()
{
        switch (this.Role) //12.11
        {
                case EFTStructs.WildSpawnType.marksman:
                        return "Sniper";
                case EFTStructs.WildSpawnType.assault:
                        return "Assault";
                case EFTStructs.WildSpawnType.bossTest:
                        return "Boss Test";
                case EFTStructs.WildSpawnType.followerTest:
                        return "Test Goon";
                case EFTStructs.WildSpawnType.bossBully:
                        return "Reshala";
                case EFTStructs.WildSpawnType.followerBully:
                        return "Reshala Goon";
                case EFTStructs.WildSpawnType.bossKilla:
                        return "Killa";
                case EFTStructs.WildSpawnType.bossKojaniy:
                        return "Shturman";
                case EFTStructs.WildSpawnType.followerKojaniy:
                        return "Shturman Goon";
                case EFTStructs.WildSpawnType.pmcBot:
                        return "Raider";
                case EFTStructs.WildSpawnType.cursedAssault:
                        return "Cursed";
                case EFTStructs.WildSpawnType.bossGluhar:
                        return "Glukhar";
                case EFTStructs.WildSpawnType.followerGluharAssault:
                        return "Glukhar Assault";
                case EFTStructs.WildSpawnType.followerGluharSecurity:
                        return "Glukhar Security";
                case EFTStructs.WildSpawnType.followerGluharScout:
                        return "Glukhar Scout";
                case EFTStructs.WildSpawnType.followerGluharSnipe:
                        return "Glukhar Sniper";
                case EFTStructs.WildSpawnType.followerSanitar:
                        return "Sanitar Goon";
                case EFTStructs.WildSpawnType.bossSanitar:
                        return "Sanitar";
                case EFTStructs.WildSpawnType.test:
                        return "Test";
                case EFTStructs.WildSpawnType.assaultGroup:
                        return "Assault Group";
                case EFTStructs.WildSpawnType.sectantWarrior:
                        return "Cultist";
                case EFTStructs.WildSpawnType.sectantPriest:
                        return "Cultist Boss";
                case EFTStructs.WildSpawnType.bossTagilla:
                        return "Tagilla";
                case EFTStructs.WildSpawnType.followerTagilla:
                        return "Tagilla Goon";
                default:
                        return "Default";
        }
}


bhehe6813 28th July 2021 12:13 AM

Quote:

Originally Posted by Shynd (Post 3196635)
As far as Role String goes, here's a C# snippet that can easily be ported to C++ and works 100% (as far as I can tell):
Code:

private string GetRoleString()
{
        switch (this.Role) //12.11
        {
                case EFTStructs.WildSpawnType.marksman:
                        return "Sniper";
                case EFTStructs.WildSpawnType.assault:
                        return "Assault";
                case EFTStructs.WildSpawnType.bossTest:
                        return "Boss Test";
                case EFTStructs.WildSpawnType.followerTest:
                        return "Test Goon";
                case EFTStructs.WildSpawnType.bossBully:
                        return "Reshala";
                case EFTStructs.WildSpawnType.followerBully:
                        return "Reshala Goon";
                case EFTStructs.WildSpawnType.bossKilla:
                        return "Killa";
                case EFTStructs.WildSpawnType.bossKojaniy:
                        return "Shturman";
                case EFTStructs.WildSpawnType.followerKojaniy:
                        return "Shturman Goon";
                case EFTStructs.WildSpawnType.pmcBot:
                        return "Raider";
                case EFTStructs.WildSpawnType.cursedAssault:
                        return "Cursed";
                case EFTStructs.WildSpawnType.bossGluhar:
                        return "Glukhar";
                case EFTStructs.WildSpawnType.followerGluharAssault:
                        return "Glukhar Assault";
                case EFTStructs.WildSpawnType.followerGluharSecurity:
                        return "Glukhar Security";
                case EFTStructs.WildSpawnType.followerGluharScout:
                        return "Glukhar Scout";
                case EFTStructs.WildSpawnType.followerGluharSnipe:
                        return "Glukhar Sniper";
                case EFTStructs.WildSpawnType.followerSanitar:
                        return "Sanitar Goon";
                case EFTStructs.WildSpawnType.bossSanitar:
                        return "Sanitar";
                case EFTStructs.WildSpawnType.test:
                        return "Test";
                case EFTStructs.WildSpawnType.assaultGroup:
                        return "Assault Group";
                case EFTStructs.WildSpawnType.sectantWarrior:
                        return "Cultist";
                case EFTStructs.WildSpawnType.sectantPriest:
                        return "Cultist Boss";
                case EFTStructs.WildSpawnType.bossTagilla:
                        return "Tagilla";
                case EFTStructs.WildSpawnType.followerTagilla:
                        return "Tagilla Goon";
                default:
                        return "Default";
        }
}


Better way to do it is just include the bosses, and then you can determine followers by checking if HP is above 500. Player HP max is 440, so you'll only ever get the super HP followers. Makes it easier than having to do yet another switch/if later on in your code to do something special for bosses/followers. Alternatively just separate it tbh, my HP check is a bit retarded.

Code:

IsBoss()

IsFollower()


goldchain 28th July 2021 01:11 PM

Quote:

Originally Posted by Shynd (Post 3196635)
As far as Role String goes, here's a C# snippet that can easily be ported to C++ and works 100% (as far as I can tell):
Code:

private string GetRoleString()
{
        switch (this.Role) //12.11
        {
                case EFTStructs.WildSpawnType.marksman:
                        return "Sniper";
                case EFTStructs.WildSpawnType.assault:
                        return "Assault";
                case EFTStructs.WildSpawnType.bossTest:
                        return "Boss Test";
                case EFTStructs.WildSpawnType.followerTest:
                        return "Test Goon";
                case EFTStructs.WildSpawnType.bossBully:
                        return "Reshala";
                case EFTStructs.WildSpawnType.followerBully:
                        return "Reshala Goon";
                case EFTStructs.WildSpawnType.bossKilla:
                        return "Killa";
                case EFTStructs.WildSpawnType.bossKojaniy:
                        return "Shturman";
                case EFTStructs.WildSpawnType.followerKojaniy:
                        return "Shturman Goon";
                case EFTStructs.WildSpawnType.pmcBot:
                        return "Raider";
                case EFTStructs.WildSpawnType.cursedAssault:
                        return "Cursed";
                case EFTStructs.WildSpawnType.bossGluhar:
                        return "Glukhar";
                case EFTStructs.WildSpawnType.followerGluharAssault:
                        return "Glukhar Assault";
                case EFTStructs.WildSpawnType.followerGluharSecurity:
                        return "Glukhar Security";
                case EFTStructs.WildSpawnType.followerGluharScout:
                        return "Glukhar Scout";
                case EFTStructs.WildSpawnType.followerGluharSnipe:
                        return "Glukhar Sniper";
                case EFTStructs.WildSpawnType.followerSanitar:
                        return "Sanitar Goon";
                case EFTStructs.WildSpawnType.bossSanitar:
                        return "Sanitar";
                case EFTStructs.WildSpawnType.test:
                        return "Test";
                case EFTStructs.WildSpawnType.assaultGroup:
                        return "Assault Group";
                case EFTStructs.WildSpawnType.sectantWarrior:
                        return "Cultist";
                case EFTStructs.WildSpawnType.sectantPriest:
                        return "Cultist Boss";
                case EFTStructs.WildSpawnType.bossTagilla:
                        return "Tagilla";
                case EFTStructs.WildSpawnType.followerTagilla:
                        return "Tagilla Goon";
                default:
                        return "Default";
        }
}


Are you controlling the bots in the game with this code snippet?

https://i.imgur.com/N5nVhn4.png

afamos228 28th July 2021 01:29 PM

latest gom?

es3n1n 28th July 2021 02:28 PM

Quote:

Originally Posted by afamos228 (Post 3197551)
latest gom?

UnityPlayer.dll + 0x156C698

or sig("48 89 05 ?? ?? ?? ?? 48 83 C4 38 C3 48 C7 05 ?? ?? ?? ?? ?? ?? ?? ?? 48 83 C4 38 C3 CC CC CC CC CC 48").rel(3).deref()


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

hollow 28th July 2021 04:24 PM

Quote:

Originally Posted by afamos228 (Post 3197551)
latest gom?

unity_player + 0x156C698
sig it :)

afamos228 28th July 2021 06:15 PM

Quote:

Originally Posted by hollow (Post 3197691)
unity_player + 0x156C698
sig it :)

thx man

AhmedGH 29th July 2021 01:39 AM

I wonder if someone can help, from the previous wipe, what are the features that are now detected or closed? Can someone help us in that?

hollow 29th July 2021 01:46 AM

Quote:

Originally Posted by AhmedGH (Post 3198143)
I wonder if someone can help, from the previous wipe, what are the features that are now detected or closed? Can someone help us in that?

i am almost completely sure it�s just the bullet initial speed modification

POFPE 29th July 2021 02:48 AM

Quote:

Originally Posted by hollow (Post 3198148)
i am almost completely sure it�s just the bullet initial speed modification

Do they detect "fixed speed" as one value? Or is it more than a certain level of speed? For example, if i write a random value of between 5.f and 6. fevery ms in the speedfactor(like 5.132 5.623 ...) , I wonder if you can detect this as well.

Quote:

Originally Posted by hollow (Post 3198148)
i am almost completely sure it�s just the bullet initial speed modification

Do they detect "fixed speed" as one value? Or is it more than a certain level of speed? For example, if i write a random value of between 5.f and 6. fevery ms in the speedfactor(like 5.132 5.623 ...) , I wonder if you can detect this as well.

xzackcc 29th July 2021 02:50 AM

Quote:

Originally Posted by POFPE (Post 3198193)
Do they detect "fixed speed" as one value? Or is it more than a certain level of speed? For example, if i write a random value of between 5.f and 6. fevery ms in the speedfactor(like 5.132 5.623 ...) , I wonder if you can detect this as well.



Do they detect "fixed speed" as one value? Or is it more than a certain level of speed? For example, if i write a random value of between 5.f and 6. fevery ms in the speedfactor(like 5.132 5.623 ...) , I wonder if you can detect this as well.

I'd guess it is more like a "limit-check" on their side, someone posted the actual logic of the initial speed, speed factor and velocity (5-10 pages ago afaik). been playing with speedfactor for ages now with no ban at all.

hollow 29th July 2021 02:56 AM

Quote:

Originally Posted by xzackcc (Post 3198194)
I'd guess it is more like a "limit-check" on their side

even though they know the proper initial speed of everything they do THAT?
bsg never fails to disappoint i guess

xzackcc 29th July 2021 03:20 AM

Quote:

Originally Posted by hollow (Post 3198198)
even though they know the proper initial speed of everything they do THAT?
bsg never fails to disappoint i guess

they'd be able to detect it with some math ..

Code:

// how shotDirection is set
this._shotDirection = this.firearmController_0.Item.CalculateShotDirectionForIron(localPosition, this.firearmController_0.SpeedFactor);

// inside the function
public Vector3 CalculateShotDirectionForIron(Vector3 localPosition, float CachedSpeedFactor)
                {
                        AmmoTemplate defAmmoTemplate = this.Template.DefAmmoTemplate;
                        float num = defAmmoTemplate.InitialSpeed * CachedSpeedFactor; // <-- being the speed factor you set @ this.firearmController_0.SpeedFactor
                        float speedRetardation = defAmmoTemplate.SpeedRetardation;
                        float num2 = 0f;
                        float time = localPosition.z / num; // gets divided by local pos Z axis
                        GClass1966.CalculateStartVelocity(localPosition.y, 0f, out num2, time, speedRetardation); // used as "time"
                        num2 /= num;
                        float num3 = Mathf.Sqrt(1f - num2 * num2);
                        return new Vector3(0f, -num3, num2);
                }


// inside the velocity calculation
public static void CalculateStartVelocity(float currentPosition, float startPosition, out float startVelocity, float time, float speedRetardation)
        {
                float num = Physics.gravity.y * (1f + speedRetardation);
                float num2 = (currentPosition - startPosition) / time - 0.5f * num * time; // "black magic"
                startVelocity = num2 - num * time; // time (aka our speedfactor used again to scale the velocity
        }


AhmedGH 29th July 2021 03:44 AM

Quote:

Originally Posted by xzackcc (Post 3198194)
I'd guess it is more like a "limit-check" on their side, someone posted the actual logic of the initial speed, speed factor and velocity (5-10 pages ago afaik). been playing with speedfactor for ages now with no ban at all.

What value do you use for SpeedFactor of the bullet right now? 2.f ? 5.f? 10.f?

beepboop5 29th July 2021 09:37 AM

Quote:

Originally Posted by AhmedGH (Post 3198216)
What value do you use for SpeedFactor of the bullet right now? 2.f ? 5.f? 10.f?

Anything below 8.f is fine and will turn basically any weapon into a hitscan with 0 drop.

POFPE 29th July 2021 09:53 AM

AnyBody Know the chain of ShotList?
Code:

uint64_t ShotsList = memio->ReadChain(localPlayer.instance, {0x190, 0x80, 0xE0, 0x18});
I used this chain for Get shotlist(For always Penetrate). But shot list is push to handscontroller, Since I cant find it on firearmcontroller. Or Can anybody let me know to process always Penetrate other way without any damage absorption? I saw some Post about JIT code patching, but I dont have any exp on that.

goldchain 29th July 2021 12:02 PM

cleaned Assembly-CSharp.dll

https://www.unknowncheats.me/forum/d...=file&id=34044

pinefin 29th July 2021 02:32 PM

Quote:

Originally Posted by POFPE (Post 3198389)
AnyBody Know the chain of ShotList?
Code:

uint64_t ShotsList = memio->ReadChain(localPlayer.instance, {0x190, 0x80, 0xE0, 0x18});
I used this chain for Get shotlist(For always Penetrate). But shot list is push to handscontroller, Since I cant find it on firearmcontroller. Or Can anybody let me know to process always Penetrate other way without any damage absorption? I saw some Post about JIT code patching, but I dont have any exp on that.

merge both firearm controller and clientfirearmcontroller i believe

AhmedGH 29th July 2021 02:42 PM

Quote:

Originally Posted by beepboop5 (Post 3198379)
Anything below 8.f is fine and will turn basically any weapon into a hitscan with 0 drop.

Well isn't higher than 5.f is detectable?

Pheir 29th July 2021 03:32 PM

 Moderator note  APPROVED FOR ANALYSIS ONLY!

File Approved
  • SHA256: ec5c7d85c42142f4fb2937a13b7055f579bb13e1740dd45b6ef2fe1126b658ae - Assembly-CSharp-cleaned.dll
Interested in how we analyze files? Click here to find out.

goldchain 29th July 2021 04:54 PM

Quote:

Originally Posted by Pheir (Post 3198596)

thanks good job.

XzThabestzX 29th July 2021 07:44 PM

Quote:

Originally Posted by AhmedGH (Post 3198558)
Well isn't higher than 5.f is detectable?

Been using 3.f for about a week completely fine. I don't use it all the time though, i have a key to enable it for longer shots / situations i feel like i need the extra bullet speed.
Don't really see a difference compared to using anything higher to be completely honest.

bhehe6813 30th July 2021 01:47 AM

Me and all my customers used 1.9-2.1 randomized speedfactor and were all banned. Over 1.5 years no bans before this. 2 week UD after removing instant hit, just saying... If you're not getting banned with it, just wait, you'll probably get banned with it. It's likely some nonsense heuristics based on the initial speed the server gets.

XzThabestzX 30th July 2021 01:53 AM

Quote:

Originally Posted by bhehe6813 (Post 3199151)
Me and all my customers used 1.9-2.1 randomized speedfactor and were all banned. Over 1.5 years no bans before this. 2 week UD after removing instant hit, just saying... If you're not getting banned with it, just wait, you'll probably get banned with it. It's likely some nonsense heuristics based on the initial speed the server gets.

Just removed instant hit myself too after reading, thanks for sharing :flowers1:

hst 30th July 2021 02:08 AM

Quote:

Originally Posted by bhehe6813 (Post 3199151)
snip

True, anyone using instant hit/shoot through walls is likely to get banned now.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

hollow 30th July 2021 02:14 AM

code of the day award goes to bsg
https://streamable.com/9bnp0a

i genuinely don't know how i'm doing this. please don't ask.

also this happened, seemingly was in 2 locations at once:
https://i.imgur.com/lf2ynNO.jpg

POFPE 30th July 2021 02:27 AM

Quote:

Originally Posted by hst (Post 3199165)
True, anyone using instant hit/shoot through walls is likely to get banned now.

what about silent aim that edit ShotList?

hst 30th July 2021 03:00 AM

Quote:

Originally Posted by POFPE (Post 3199179)
what about silent aim that edit ShotList?

I'm not sure about silent aim, BSG logs head/fireport rotation to server so its possible they could check for difference between these and your shot trajectory. However I think it's unlikely.

bhehe6813 30th July 2021 04:11 AM

They can see the speed factor modification in the Shot packet. Look at how speedFactor is used, it's value is included in what is serialized. It's literally called speed in the Shot class (\ue74b) if you want to take a look.

Initial speed is the one from the ammo template, speed is speedfactor from the firearmcontroller.

Quote:

Originally Posted by hollow (Post 3199168)
code of the day award goes to bsg
https://streamable.com/9bnp0a

i genuinely don't know how i'm doing this. please don't ask.

also this happened, seemingly was in 2 locations at once:
https://i.imgur.com/lf2ynNO.jpg

Is that online?

hollow 30th July 2021 04:22 AM

Quote:

Originally Posted by bhehe6813 (Post 3199240)
Is that online?

yea//

bhehe6813 30th July 2021 05:24 AM

Quote:

Originally Posted by hollow (Post 3199248)
yea//

dank, wonder if colliding with the door happens to be why it allowed that teleport in the first place.

dennis0011 30th July 2021 11:15 AM

Quote:

Originally Posted by hst (Post 3199165)
True, anyone using instant hit/shoot through walls is likely to get banned now.

Me and my mates are fine whitout problems but we dosent use the way posted on here.

xzackcc 30th July 2021 02:18 PM

Quote:

Originally Posted by hollow (Post 3199168)
code of the day award goes to bsg
https://streamable.com/9bnp0a

i genuinely don't know how i'm doing this. please don't ask.

also this happened, seemingly was in 2 locations at once:
https://i.imgur.com/lf2ynNO.jpg

Your foot seems like you apply some sort of chams.
Did I miss something about the texture file replacement or is it detouring a texture pointer to get chams to work?

I wanted to get chams to work for a few months now but never messed around with textures (other than the scope's thermal vision) ...

AhmedGH 30th July 2021 02:33 PM

Quote:

Originally Posted by dennis0011 (Post 3199475)
Me and many others are fine whitout problems but we dosent use the way posted on here.

Is there any factor that change the speed of the bullet other than "Inital Speed" or "SpeedFactor"?

Maybe modifying it's speed after you shot while it still on the air? :thinking:

POFPE 30th July 2021 02:38 PM

Quote:

Originally Posted by AhmedGH (Post 3199646)
Is there any factor that change the speed of the bullet other than "Inital Speed" or "SpeedFactor"?

Maybe modifying it's speed after you shot while it still on the air? :thinking:

There is a way to change the speed in the shotlist, but this rate is eventually sent to the server, so you cannot bypass it if they are server-side Detection.

hollow 30th July 2021 03:05 PM

Quote:

Originally Posted by xzackcc (Post 3199625)
Your foot seems like you apply some sort of chams.
Did I miss something about the texture file replacement or is it detouring a texture pointer to get chams to work?

I wanted to get chams to work for a few months now but never messed around with textures (other than the scope's thermal vision) ...

look into this thread: Simplest External or Internal Chams

doesn't seem like anyone there has done it properly, but it is possible - do your own research :)

Quote:

Originally Posted by bhehe6813 (Post 3199287)
dank, wonder if colliding with the door happens to be why it allowed that teleport in the first place.

definitely something to do with the door's collider, but i'm still not sure as to what exactly causes their rubberbanding logic to fuck up

montroisiemecon 30th July 2021 03:10 PM

I call for bullshit. I'm still shooting lasers through walls and I'm fine

xzackcc 30th July 2021 04:18 PM

Quote:

Originally Posted by hollow (Post 3199677)
look into this thread: Simplest External or Internal Chams

doesn't seem like anyone there has done it properly, but it is possible - do your own research :)

(note: for some reason it didn't quote your post .. so here it is)
interesting - will take a look at it. :)


Quote:

Originally Posted by montroisiemecon (Post 3199684)
I call for bullshit. I'm still shooting lasers through walls and I'm fine

So, that was you who shot my body like 5 times through walls on interchange and loaded my head 4 times with bullets on labs elevator? .. thanks, lost 800k cuz there were 3 gpus and 2 defi's at the ultra store!

Code:

>:(

pinefin 31st July 2021 12:35 AM

Quote:

Originally Posted by xzackcc (Post 3199736)
So, that was you who shot my body like 5 times through walls on interchange and loaded my head 4 times with bullets on labs elevator? .. thanks, lost 800k cuz there were 3 gpus and 2 defi's at the ultra store!

Code:

&gt;:(


i almost gurantee it wasnt him, many p2c�s have good shoot through walls so it could be 1000�s of people that beamed you

Sent from my Oculus Rift S using Taptalk

POFPE 31st July 2021 09:17 AM

Player->weaponanim->firearm+(0x2f0 or 0x2f8) Can anyone tell me which of these two lists contains the value of a bullet that hasn't been fired?
I went to Player->Weaponim->firearm->ballisticCalculation->Shot (0x18) and modified values such as penetrate chance, but it doesn't seem to work after a few patches. My friend says Now I should go to player->weaponanim->firearm->list(0x2f0 or 0x2f8), but after testing both of them, they don't seem to work. Is there something I'm missing? and I also saw some genius hooking createshot using shellcode from the external. Is there anyone who can guide me to a pos on external hooking how this is possible? Thanks.
https://i.imgur.com/8UdZCPh.png
https://i.imgur.com/tIqCMht.png
Code:

uint64_t ShotsList = memio->ReadChain(localPlayer.instance, {0x190, 0x80, 0xE0, 0x18});

                        uint64_t list = memio->read<uint64_t>(ShotsList + 0x10);
                        uint32_t listSize = memio->read<uint32_t>(ShotsList + 0x18);
                       
                        for (int i = 0; i < listSize; i++)
                        {
                                uint64_t bullet = memio->read<uint64_t>(list + 0x20 + (i * 0x8));

                                uint64_t ballCalc = memio->read<uint64_t>(bullet + 0x30);

                                memio->write<float>(ballCalc + 0x38, 1.f);
                                memio->write<float>(ballCalc + 0x3C, 0.f);
                                memio->write<float>(ballCalc + 0x40, 0.f);
                                memio->write<float>(ballCalc + 0x44, 0.f);
                                memio->write<float>(ballCalc + 0x48, 0.f);
                                memio->write<float>(bullet + 0xB0, 1.f);
                                memio->write<float>(bullet + 0xB4, 1.f);
                                memio->write<float>(bullet + 0xB8, 0.f);
                                memio->write<float>(bullet + 0xBC, 0.f);

                        }

This code snippet is the always penetration code snippet used before the patch.

pinefin 31st July 2021 06:40 PM

hey. i apologize for asking this, but does anyone know how you call methods from Assembly-CSharp internally? or at least to get the address of the method from mono dump or dnspy?

thank you in advance

es3n1n 31st July 2021 07:18 PM

Quote:

Originally Posted by pinefin (Post 3200882)
hey. i apologize for asking this, but does anyone know how you call methods from Assembly-CSharp internally? or at least to get the address of the method from mono dump or dnspy?

thank you in advance


Cheat Engine, then sig it

or mono_compile_method from mono exports ( don�t call it under the battleye btw, they hook shit like this )

sharkdev 31st July 2021 09:21 PM

anyone know how to get container and content?

what i tried:
Code:

                                                        int countLoot = 0;
                                                        int countLootable = 0;
                                                        int countLootListObjects = 0;
                                                        auto lootList = Read<ULONG64>(LocalGameWorld + 0x60);
                                                        if (lootList)
                                                        {
                                                                auto lootListEntity = Read<ULONG64>(lootList + 0x10);
                                                                if (lootListEntity)
                                                                {
                                                                        countLootListObjects = Read<int>(lootList + 0x18);
                                                                                // read loot objects entity
                                                                                PVOID alloc = malloc(countLootListObjects * sizeof(ULONG64));
                                                                                ULONG64* lootObjectsEnitity = (ULONG64*)alloc;
                                                                                if (lootObjectsEnitity)
                                                                                {
                                                                                        ReadSize(lootListEntity + 0x20, lootObjectsEnitity, countLootListObjects * sizeof(ULONG64)); // 0x20 + 0x8*i
                                                                                        for (unsigned __int64 i = 0; i < countLootListObjects; i++)
                                                                                        {
                                                                                                auto unknownPtr = Read<ULONG64>(lootObjectsEnitity[i] + 0x10);
                                                                                                auto interactiveClass = Read<ULONG64>(unknownPtr + 0x28);
                                                                                                auto baseObject = Read<ULONG64>(interactiveClass + 0x10);
                                                                                                auto gameObject = Read<ULONG64>(baseObject + 0x30);
                                                                                                auto pGameObjectName = Read<ULONG64>(gameObject + 0x60);
                                                                                                char Name[64] = { 0 };
                                                                                                ReadSize(pGameObjectName, &Name, sizeof(Name));

                                                                                                if (IsLootableObject(Name))
                                                                                                {
                                                                                                        auto objectClass = Read<ULONG64>(gameObject + 0x30);
                                                                                                        auto pointerToTransform_1 = Read<ULONG64>(objectClass + 0x8);
                                                                                                        auto pointerToTransform_2 = Read<ULONG64>(pointerToTransform_1 + 0x28);
                                                                                                        auto Position = GetPosition(pointerToTransform_2);
                                                                                                        auto itemOwner = Read<ULONG64>(interactiveClass + 0x108);
                                                                                                        auto item = Read<ULONG64>(itemOwner + 0x90);
                                                                                                        auto itemTemplate = Read<ULONG64>(item + 0x0038);
                                                                                                        auto pItemNameStr = Read<ULONG64>(itemTemplate + 0x58);
       
                                                                                                        auto ContainerName = Name;
                                                                                                        auto grids = Read<ULONG64>(item + 0x68);

                                                                                                        // SHOW CONTAINER ITEMS
                                                                                                        auto temp = std::string(ContainerName);
                                                                                                        int gridsCount = 0;
                                                                                                                gridsCount = Read<int>(grids + 0x18);
                                                                                                                if (gridsCount > 0)
                                                                                                                {
                                                                                                                        auto grid = Read<ULONG64>(grids + 0x20);
                                                                                                                        auto gridDict = Read<ULONG64>((grid + 0x40));
                                                                                                                        auto dict = Read<ULONG64>((gridDict + 0x10));

                                                                                                                        int countItemsInContainer = 0;
                                                                                                                        countItemsInContainer = Read<int>(dict + 0x40);

                                                                                                                        if (countItemsInContainer > 0)
                                                                                                                        {
                                                                                                                                auto entries = Read<ULONG64>((dict + 0x18));

                                                                                                                                // SHOW CONTAINER ITEMS
                                                                                                                                for (int j = 0; j < countItemsInContainer; j++)
                                                                                                                                {
                                                                                                                                        auto itemInContainer = Read<ULONG64>((entries + 0x28 + 0x18 * (ULONG64)j));
                                                                                                                                        auto templateItemInContainer = Read<ULONG64>((itemInContainer + 0x0038));
                                                                                                                                        auto itemIdString = Read<ULONG64>((templateItemInContainer + 0x50));

                                                                                                                                        auto ItemHash = GetUnicodeString(itemIdString + 0x14, 64);
                                                                                                                                        if (ItemHash.empty() || ItemHash == "")
                                                                                                                                                continue;

                                                                                                                                        printf("ItemHash : %s \r\n", ItemHash.c_str());
                                                                                                                                }
                                                                                                                        }
                                                                                                                }
                                                                                                }

where IsLootableObject is
Code:

body, cap, Ammo_crate_Cap, Grenade_box_Door, Medical_Door, Toolbox_Door, card_file_box, cover_, lootable, scontainer_Blue_Barrel_Base_Cap, scontainer_wood_CAP, suitcase_plastic_lootable_open, weapon_box_cover
i have to say this code worked fine last season altough i am not sure what is changed in this season, maybe anyone can help ty :asskiss:

Quote:

Originally Posted by hollow (Post 3199168)
code of the day award goes to bsg
https://streamable.com/9bnp0a

i genuinely don't know how i'm doing this. please don't ask.

also this happened, seemingly was in 2 locations at once:
https://i.imgur.com/lf2ynNO.jpg

do you ever had problems with fucked up exfiltration transform on some maps so they would overlap?

hollow 31st July 2021 10:31 PM

Quote:

Originally Posted by sharkdev (Post 3201040)
do you ever had problems with fucked up exfiltration transform on some maps so they would overlap?

not sure how the post you quoted is related but no

ecthirune 31st July 2021 11:06 PM

Quote:

Originally Posted by sharkdev (Post 3201040)
anyone know how to get container and content?

Code:

auto itemOwner = Read<ULONG64>(interactiveClass + 0x108);
auto item = Read<ULONG64>(itemOwner + 0x90);

shifted to itemOwner+0x98;


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

bhehe6813 1st August 2021 12:34 AM

Quote:

Originally Posted by pinefin (Post 3200882)
hey. i apologize for asking this, but does anyone know how you call methods from Assembly-CSharp internally? or at least to get the address of the method from mono dump or dnspy?

thank you in advance

Read how I do it in previous posts but tldr:

Open dnspy, find the function you want

Open cheat engine, find the class you want and then right click the function and click JIT.

Make a signature based on something in this function.

-----------------------


Wait you said internal. My bad, in that case, you can see how cheat engine retrieves addresses of mono functions, I'm not too familiar with it. They talk directly to the mono dll though.

Quote:

Originally Posted by xzackcc (Post 3199736)
(note: for some reason it didn't quote your post .. so here it is)
interesting - will take a look at it. :)




So, that was you who shot my body like 5 times through walls on interchange and loaded my head 4 times with bullets on labs elevator? .. thanks, lost 800k cuz there were 3 gpus and 2 defi's at the ultra store!

Code:

>:(

Not sure why he doesn't want to post it, but you'll find there isn't a link from material -> shader, but there's another very trivial way to do it anyways just by modifying the material. I'll go do it for ya and post it here.

asmfreak 1st August 2021 03:03 AM

Quote:

Originally Posted by es3n1n (Post 3200924)
Cheat Engine, then sig it

or mono_compile_method from mono exports ( don�t call it under the battleye btw, they hook shit like this )

any proof or anyone else can back this up? as im using it no issues?

pinefin 1st August 2021 03:22 AM

Quote:

Originally Posted by es3n1n (Post 3200924)
Cheat Engine, then sig it

or mono_compile_method from mono exports ( don’t call it under the battleye btw, they hook shit like this )


so what youre saying is i cant call methods under be?

Quote:

Originally Posted by bhehe6813 (Post 3201173)
Read how I do it in previous posts but tldr:

Open dnspy, find the function you want

Open cheat engine, find the class you want and then right click the function and click JIT.

Make a signature based on something in this function.

-----------------------


Wait you said internal. My bad, in that case, you can see how cheat engine retrieves addresses of mono functions, I'm not too familiar with it. They talk directly to the mono dll though.



Not sure why he doesn't want to post it, but you'll find there isn't a link from material -&gt; shader, but there's another very trivial way to do it anyways just by modifying the material. I'll go do it for ya and post it here.


thank you, this helped

Quote:

Originally Posted by asmfreak (Post 3201336)
any proof or anyone else can back this up? as im using it no issues?


i assumed it was a little wrong but i dont know anything on the topic so [emoji848]

es3n1n 1st August 2021 06:51 AM

Quote:

Originally Posted by asmfreak (Post 3201336)
any proof or anyone else can back this up? as im using it no issues?

Sorry, my bad actually, I thought that they are checking that method too.

Battleye Oct 20 Update

POFPE 1st August 2021 08:47 AM

I want to make the isfowardshot IF statement case of CreateShot always false. In order to do this externally, I heard that i must do a JIT code patch. Is there anyone who can guide me to the literature or POC related to JIT CODE patch?

beepboop5 1st August 2021 09:14 AM

Quote:

Originally Posted by POFPE (Post 3201545)
I want to make the isfowardshot IF statement case of CreateShot always false. In order to do this externally, I heard that i must do a JIT code patch. Is there anyone who can guide me to the literature or POC related to JIT CODE patch?

Google what JIT Compilation is vs AOT Compilation and you will have your answer.

POFPE 1st August 2021 09:27 AM

Quote:

Originally Posted by beepboop5 (Post 3201566)
Google what JIT Compilation is vs AOT Compilation and you will have your answer.

I've already searched it several times. I know the definition of JIT Code. It seems to be a code that is compiled at runtime rather than precompiled code. Then, is this code on memory? If so, what's the best way to find this code phrase? (maybe sig?) It's hard to understand because I don't have a big brain.

es3n1n 1st August 2021 10:37 AM

Quote:

Originally Posted by POFPE (Post 3201576)
I've already searched it several times. I know the definition of JIT Code. It seems to be a code that is compiled at runtime rather than precompiled code. Then, is this code on memory? If so, what's the best way to find this code phrase? (maybe sig?) It's hard to understand because I don't have a big brain.


create a sig, then just iterate through ERW regions

beepboop5 1st August 2021 11:41 AM

Quote:

Originally Posted by POFPE (Post 3201576)
I've already searched it several times. I know the definition of JIT Code. It seems to be a code that is compiled at runtime rather than precompiled code. Then, is this code on memory? If so, what's the best way to find this code phrase? (maybe sig?) It's hard to understand because I don't have a big brain.

You dont need a big brain, just create a sig like the previous response said and patch the conditional/unconditional jump condition to the branch that executes the code if "isfowardshot" is true. (i.e if its just a cmp instruction then a je instruction, make sure the cmp always fails so it never jumps)

POFPE 1st August 2021 12:01 PM

Quote:

Originally Posted by beepboop5 (Post 3201675)
You dont need a big brain, just create a sig like the previous response said and patch the conditional/unconditional jump condition to the branch that executes the code if "isfowardshot" is true. (i.e if its just a cmp instruction then a je instruction, make sure the cmp always fails so it never jumps)

//nvm 2short

pinefin 1st August 2021 04:57 PM

hey also, another really shit question, is Assembly-CSharp.dll loaded as a module under a different name or is it something else.

apologies in advance i really hate asking really bad questions like this.

okay nvm after thinking abt this for a split second i actually found my answer. i should not have asked this.

montroisiemecon 2nd August 2021 03:34 AM

Quote:

Originally Posted by pinefin (Post 3201894)
hey also, another really shit question, is Assembly-CSharp.dll loaded as a module under a different name or is it something else.

apologies in advance i really hate asking really bad questions like this.

okay nvm after thinking abt this for a split second i actually found my answer. i should not have asked this.

so people can have the answer to this, if ever they read your post, Assembly CSharp is JIT compiled and unlike a standard library (kernel32, etc...) it will not appear in the usual assembly list.
However it has to be in some list in the mono dll

POFPE 2nd August 2021 03:47 AM

https://i.imgur.com/pcH1QqV.png
testeax,eax (check if Eax is 0) and skip if ZF is 1. I think if (this.isforwardhit) is here (not sure) I've patched all the jumping phrases like je and jne in Method_17 syntax with Jmp, but none of them seem like isforwardhit. Does anyone have any ideas about this? My brain is small, so correct me if anything is wrong at all.

montroisiemecon 2nd August 2021 04:00 AM

Quote:

Originally Posted by POFPE (Post 3202317)
~

Maybe you brain is not big, but you can understand things.
What is the offset of IsForwardHit for the class shot?

So most likely what you are looking for in assembly is something like mov register,[smth + 0xoffset] then test register,register je somwhere.

The piece of code you have here does effectively looks like a test of IsForwardHit. Overwrite the movzx eax, byte ptr [rsi + 0x134] by mov eax, 0

POFPE 2nd August 2021 04:14 AM

Quote:

Originally Posted by montroisiemecon (Post 3202328)
Maybe you brain is not big, but you can understand things.
What is the offset of IsForwardHit for the class shot?

So most likely what you are looking for in assembly is something like mov register,[smth + 0xoffset] then test register,register je somwhere.

The piece of code you have here does effectively looks like a test of IsForwardHit. Overwrite the movzx eax, byte ptr [rsi + 0x134] by mov eax, 0

I'm surprised you have such a good idea so quickly. Thank you for your contribution. However, this CE DUMP is being tested on an emulator with binary built 2 months ago. Here it is Gclass1933, but in the latest version of binary it has been pushed to Gclass1966. So, if I run escapefromtarkov.exe in the official version and look at Mono dissector as a cheat engine, you can see that all of the Gclass items are missing.(I think it's because it's not an in-raid) Can I sig it in an outdated binary and use the sig in the official version? Sorry for my bad english and understanding

Quote:

Originally Posted by montroisiemecon (Post 3202328)
Maybe you brain is not big, but you can understand things.
What is the offset of IsForwardHit for the class shot?

So most likely what you are looking for in assembly is something like mov register,[smth + 0xoffset] then test register,register je somwhere.

The piece of code you have here does effectively looks like a test of IsForwardHit. Overwrite the movzx eax, byte ptr [rsi + 0x134] by mov eax, 0

And one more thing, should the values of Ispenetrate and Deflect be fixed at 1 and 0 respectively? Or do you just skip the isforwardhit case statement and working charmly?

Sig of Movzx(Direct) : \x0f\xb6\x86\x00\x00\x00\x00\x85\xc0\x0f\x84\x00\x00\x00\x00\xf3\x0f\x10\x05 xxx????xxxx????xxxx
original byte : 0F B6 86 34 01 00 00
mov eax, 0 byte : B8 00 00 00 00 90 90
for someone to use

montroisiemecon 2nd August 2021 06:10 AM

Quote:

Originally Posted by POFPE (Post 3202334)
~

you should take the sigs from the latest version.
you also need to patch fragmentation and ricochet

POFPE 2nd August 2021 06:41 AM

Quote:

Originally Posted by montroisiemecon (Post 3202373)
you should take the sigs from the latest version.
you also need to patch fragmentation and ricochet

May I ask You how can I launch Tarkov without BE? Just execute escapefromtarkov.exe and Launch Mono dissector, Gclass not shown as i said before.
sig is :\x0f\xb6\x86\x00\x00\x00\x00\x85\xc0\x0f\x84\x00\x00\x00\x00\xf3\x0f\x10\x05 xxx????xxxx????xxxx doesnt it work on Official Version?



Quote:

Originally Posted by montroisiemecon (Post 3202373)
you should take the sigs from the latest version.
you also need to patch fragmentation and ricochet

Also, I don't know how to hold the scanning area when I do Patternscan. It is in random memory, not in a certain module such as Unityplayer.dll. I don't want to scanning from 0x0 to 0x7FFFFFFFFFF.

hollow 2nd August 2021 10:06 AM

Quote:

Originally Posted by POFPE (Post 3202389)
I don't want to scanning from 0x0 to 0x7FFFFFFFFFF.

very sad, you have to scan each rwx section

POFPE 2nd August 2021 10:36 AM

Quote:

Originally Posted by hollow (Post 3202528)
very sad, you have to scan each rwx section

Yeah I think this way(since on tarkov, there are less rwx section 10<) but.. i am external so I dont know How can I find the section is rw or r or rwx. I saw some virtualqueryEX, but It needs some Handle of game.

hollow 2nd August 2021 02:26 PM

Quote:

Originally Posted by POFPE (Post 3202547)
Yeah I think this way(since on tarkov, there are less rwx section 10<) but.. i am external so I dont know How can I find the section is rw or r or rwx. I saw some virtualqueryEX, but It needs some Handle of game.

stripped handles are more than enough for this


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

montroisiemecon 2nd August 2021 02:38 PM

Quote:

Originally Posted by POFPE (Post 3202547)
Yeah I think this way(since on tarkov, there are less rwx section 10<) but.. i am external so I dont know How can I find the section is rw or r or rwx. I saw some virtualqueryEX, but It needs some Handle of game.

I have a sigscan method in kernel I call from usermode

bhehe6813 2nd August 2021 02:54 PM

Quote:

Originally Posted by hollow (Post 3202760)
stripped handles are more than enough for this

Pretty sure BE strips PROCESS_VM_OPERATION

hollow 2nd August 2021 03:07 PM

Quote:

Originally Posted by bhehe6813 (Post 3202807)
Pretty sure BE strips PROCESS_VM_OPERATION

open process hacker and try to see game’s memory regions
VM_OP isn’t needed for VirtualQueryEx

https://docs.microsoft.com/en-us/win...virtualqueryex
Quote:

A handle to the process whose memory information is queried. The handle must have been opened with the PROCESS_QUERY_INFORMATION access right, which enables using the handle to read information from the process object.

abandoncaptian 2nd August 2021 03:20 PM

I'm working on trying to get a working external overlay, I have some info from a popular hack developer on how to accomplish this without being detected. If someone could reach out to me and help me make one with the info I was given, would be much appreciated.

pinefin 2nd August 2021 03:22 PM

Quote:

Originally Posted by hollow (Post 3202819)
open process hacker and try to see game’s memory regions
VM_OP isn’t needed for VirtualQueryEx

https://docs.microsoft.com/en-us/win...virtualqueryex

i know this probably isnt the right thread to ask this (even tho this question is for EFT), but do you think VirtualQuery would be fine for internal? or how else could i search memory pages?

Quote:

Originally Posted by abandoncaptian (Post 3202838)
I'm working on trying to get a working external overlay, I have some info from a popular hack developer on how to accomplish this without being detected. If someone could reach out to me and help me make one with the info I was given, would be much appreciated.

this isnt the right section for asking about overlays, you could get a lot more help in the Anti-Cheat Bypass subforum

abandoncaptian 2nd August 2021 03:25 PM

Quote:

Originally Posted by pinefin (Post 3202840)
this isnt the right section for asking about overlays, you could get a lot more help in the Anti-Cheat Bypass subforum

Yes but the info I was given is specifically for tarkov and how BE hasn't detected this method yet.

hollow 2nd August 2021 03:45 PM

Quote:

Originally Posted by pinefin (Post 3202840)
i know this probably isnt the right thread to ask this (even tho this question is for EFT), but do you think VirtualQuery would be fine for internal? or how else could i search memory pages?

certainly would be the easiest way, yes

although since you're internal i'd suspect you wouldn't need sigscanning at all and would use some mono function - i have no clue about mono, just speculating.

pinefin 2nd August 2021 03:54 PM

Quote:

Originally Posted by hollow (Post 3202870)
certainly would be the easiest way, yes

although since you're internal i'd suspect you wouldn't need sigscanning at all and would use some mono function - i have no clue about mono, just speculating.

hmmm, alright.

i'll have to look into the function,
would it be located in a module? if so which module?

maybe mono-2.0-bdwgc.dll?

hollow 2nd August 2021 04:07 PM

Quote:

Originally Posted by pinefin (Post 3202879)
hmmm, alright.

i'll have to look into the function,
would it be located in a module? if so which module?

maybe mono-2.0-bdwgc.dll?

as mentioned by @bhehe6813:
Quote:

Originally Posted by bhehe6813 (Post 3201173)
Wait you said internal. My bad, in that case, you can see how cheat engine retrieves addresses of mono functions, I'm not too familiar with it. They talk directly to the mono dll though.


pinefin 2nd August 2021 04:08 PM

Escape from Tarkov Reversal, Structs and Offsets
 
Quote:

Originally Posted by hollow (Post 3202892)
as mentioned by @bhehe6813:

okay thank, i actually didnt see that part of what he said.

anyways i'll look into it. thank you and bhehe6813

edit: been loking into this since 9:10AM. it is now 11:27AM and im only understanding a part of mono and how i can retrieve the mono classes. (i am going purely off of CheatEngine's way of doing things)
from what i see from CheatEngine (it is super super hard to understand cause they use WriteByte() and ReadByte() (not too confusing, but annoying to look at) to communicate with lua and everything except for the communication (which is done in c++)

i'll keep looking and report what i end up finding :)

edit2: i feel like im overcomplicating things

es3n1n 2nd August 2021 10:35 PM

Escape from Tarkov Reversal, Structs and Offsets
 
Quote:

Originally Posted by pinefin (Post 3202895)
okay thank, i actually didnt see that part of what he said.

anyways i'll look into it. thank you and bhehe6813

edit: been loking into this since 9:10AM. it is now 11:27AM and im only understanding a part of mono and how i can retrieve the mono classes. (i am going purely off of CheatEngine's way of doing things)
from what i see from CheatEngine (it is super super hard to understand cause they use WriteByte() and ReadByte() (not too confusing, but annoying to look at) to communicate with lua and everything except for the communication (which is done in c++)

i'll keep looking and report what i end up finding :)

edit2: i feel like im overcomplicating things


Code:

    const auto mono_handle = shared::crt::get_module( L"mono-2.0-bdwgc.dll" );

    const auto thread_attach = shared::crt::get_module_export<void( __cdecl* )( void* domain )>( mono_handle, "mono_thread_attach" );
    const auto get_root_domain = shared::crt::get_module_export<void* ( __cdecl* )( void )>( mono_handle, "mono_get_root_domain" );
    const auto assembly_open = shared::crt::get_module_export<void* ( __cdecl* )( void* domain, const char* name )>( mono_handle, "mono_domain_assembly_open" );
    const auto get_image = shared::crt::get_module_export<void* ( __cdecl* )( void* assembly )>( mono_handle, "mono_assembly_get_image" );
    const auto class_from_name = shared::crt::get_module_export<void* ( __cdecl* )( void* image, const char* name_space, const char* klass )>( mono_handle, "mono_class_from_name" );
    const auto class_get_method_from_name = shared::crt::get_module_export<void* ( __cdecl* )( void* image, const char* name, __int64 smth )>( mono_handle, "mono_class_get_method_from_name" );
    const auto compile_method = shared::crt::get_module_export<void* ( __cdecl* )( void* a1 )>( mono_handle, "mono_compile_method" );

    void* root_domain = get_root_domain( );
    thread_attach( root_domain );
    void* base_assembly = assembly_open( root_domain, "UnityEngine.CoreModule" );
    void* base_image = get_image( base_assembly );

    void* _class = class_from_name( base_image, "UnityEngine", "Classname" );
    void* method = class_get_method_from_name( _class, "func_name", 1 );
    void* jit_fn = compile_method( method );


upd: last param in class_get_method_from_name is a number of arguments
upd2: getting root domain like this isn�t legit tho, you can try to find and steal it from unity

POFPE 3rd August 2021 02:03 AM

Quote:

Originally Posted by hollow (Post 3202760)
stripped handles are more than enough for this

may i ask You what is "stripped handles"?
PS:
congratulations on becoming a member of the month.

bhehe6813 3rd August 2021 04:10 AM

Quote:

Originally Posted by POFPE (Post 3203440)
may i ask You what is "stripped handles"?
PS:
congratulations on becoming a member of the month.

He's referring to when you try and open a handle on a BE protected game, BE strips the handle of rights, so that it cannot do things like read and write memory. However, Hollow is correct in saying that you can query regions just fine with the stripped access rights that BE allows. What Hollow is basically saying is "You can do this from userland using a normal process", vs. other things that require elevated access.

POFPE 3rd August 2021 04:39 AM

Quote:

Originally Posted by bhehe6813 (Post 3203519)
He's referring to when you try and open a handle on a BE protected game, BE strips the handle of rights, so that it cannot do things like read and write memory. However, Hollow is correct in saying that you can query regions just fine with the stripped access rights that BE allows. What Hollow is basically saying is "You can do this from userland using a normal process", vs. other things that require elevated access.

nvm //2short
Ok. now i implement some amazing Patternscan with Someone's help(thx!)
So, Now I am going to patch some Ispenetrated and deflects, and Each function must be return 1 and 0(first is ispenetrated and other is deflect)
https://i.imgur.com/HktIOUx.png
So this is all asm of ispenetrated(push~ret)
And I wanna patch this function to
mov eax(rax),1(or 0)
ret
However, I am a beginner in ASM, so I don't know where I can start to patch it. Sub rsp,40 looks like the part that allocates stack space.(function prologue) and after that, I want to patch it to mov eax,1 ret. Can I do it like this way?

es3n1n 3rd August 2021 01:43 PM

Quote:

Originally Posted by POFPE (Post 3203535)
nvm //2short
Ok. now i implement some amazing Patternscan with Someone's help(thx!)
So, Now I am going to patch some Ispenetrated and deflects, and Each function must be return 1 and 0(first is ispenetrated and other is deflect)
https://i.imgur.com/HktIOUx.png
So this is all asm of ispenetrated(push~ret)
And I wanna patch this function to
mov eax(rax),1(or 0)
ret
However, I am a beginner in ASM, so I don't know where I can start to patch it. Sub rsp,40 looks like the part that allocates stack space.(function prologue) and after that, I want to patch it to mov eax,1 ret. Can I do it like this way?


push rbp
/* patched stuff */
ret

POFPE 3rd August 2021 01:57 PM

Quote:

Originally Posted by es3n1n (Post 3203781)
push rbp
/* patched stuff */
ret

push rbp
mov rax, 0
nop
.
.
.
ret?
It occur crash

es3n1n 3rd August 2021 01:58 PM

Quote:

Originally Posted by POFPE (Post 3203791)
push rbp
mov rax, 0
nop
.
.
.
ret?
It occur crash


push rbp
mov rax, 0
ret

POFPE 3rd August 2021 02:23 PM

Quote:

Originally Posted by es3n1n (Post 3203794)
push rbp
mov rax, 0
ret

make me crash :/
https://media.discordapp.net/attachm...246&height=701

es3n1n 3rd August 2021 02:30 PM

Quote:

Originally Posted by POFPE (Post 3203813)

well you can try like this
Code:

        push    rbp
        mov    rbp, rsp
        mov    rax, 0
        pop    rbp
        ret

Code:

\x55\x48\x89\xE5\xB8\x00\x00\x00\x00\x5D\xC3

POFPE 3rd August 2021 02:42 PM

Quote:

Originally Posted by es3n1n (Post 3203819)
well you can try like this
Code:

        push    rbp
        mov    rbp, rsp
        mov    rax, 0
        pop    rbp
        ret

Code:

\x55\x48\x89\xE5\xB8\x00\x00\x00\x00\x5D\xC3

Ok i will try this thanks for kind replying


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

RonaldWeezly 3rd August 2021 02:55 PM

Anyone found a way to hold vertical position and do that 'jesus walk' sort of thing? Method from last wipe is fixed afaik.

beepboop5 3rd August 2021 02:55 PM

Quote:

Originally Posted by POFPE (Post 3203836)
Ok i will try this thanks for kind replying

You are crashing because you push rbp onto the stack and then call ret (retn because of the 0xC3 opcode) which pops the return address off of the top of the stack and begins execution from it.

RonaldWeezly 3rd August 2021 02:56 PM

External vis checks would be cool. Anyone figured it with LODShapes?

beepboop5 3rd August 2021 03:11 PM

Quote:

Originally Posted by es3n1n (Post 3203819)
well you can try like this
Code:

        push    rbp
        mov    rbp, rsp
        mov    rax, 0
        pop    rbp
        ret

Code:

\x55\x48\x89\xE5\xB8\x00\x00\x00\x00\x5D\xC3

Do you have any idea what you are talking about lmao? you push rbp onto the stack, move the stack pointer into the register and then pop the value off of the stack back into rbp? this can just be simplified to "mov rax, 0" then "ret".

xXBradXx 3rd August 2021 05:46 PM

Quote:

Originally Posted by abandoncaptian (Post 3202838)
I'm working on trying to get a working external overlay, I have some info from a popular hack developer on how to accomplish this without being detected. If someone could reach out to me and help me make one with the info I was given, would be much appreciated.

nvidia overlay hijack is undetected

TrueWeedle 3rd August 2021 10:26 PM

I'm going internal for EFT and for my renderer I'm using Discord overlay. I've come across the issue where discord overlay doesn't open regardless if I'm injected. has anyone else come across this issue?

Sheld0r 3rd August 2021 11:53 PM

Quote:

Originally Posted by TrueWeedle (Post 3204202)
I'm going internal for EFT and for my renderer I'm using Discord overlay. I've come across the issue where discord overlay doesn't open regardless if I'm injected. has anyone else come across this issue?

BE fucks around with it

hollow 4th August 2021 12:00 AM

Quote:

Originally Posted by TrueWeedle (Post 3204202)
I'm going internal for EFT and for my renderer I'm using Discord overlay. I've come across the issue where discord overlay doesn't open regardless if I'm injected. has anyone else come across this issue?

but... can�t you use unity�s drawing functions if you�re internal? sure, it�s a bit worse, but horribly easy to use.

Quote:

Originally Posted by RonaldWeezly (Post 3203853)
Anyone found a way to hold vertical position and do that 'jesus walk' sort of thing? Method from last wipe is fixed afaik.

nothing is fixed

POFPE 4th August 2021 02:11 AM

Quote:

Originally Posted by montroisiemecon (Post 3202373)
you should take the sigs from the latest version.
you also need to patch fragmentation and ricochet

Ok. I patched is.forwardhit, ispenetrated(1) Deflect(0)
And I got some damage absorbed(300 damage shot and 400 absorbed)
Maybe Due to some Fragmentation and ricochet.
May I ask You Where U patch to edit those value?
I am looking on Some Method_0 But I am not rlly sure.

TrueWeedle 4th August 2021 04:11 AM

Quote:

Originally Posted by hollow (Post 3204308)
but... can’t you use unity’s drawing functions if you’re internal? sure, it’s a bit worse, but horribly easy to use.



nothing is fixed

yes, I could, but I have a vendetta against it.

Quote:

Originally Posted by Sheld0r (Post 3204305)
BE fucks around with it

interesting, do you or anyone else have any rendering methods I should try out? I've hooked present with MinHook and tried to render ImGui but for some reason its not working. maybe my code is the issue?

POFPE 4th August 2021 07:49 AM

Quote:

Originally Posted by montroisiemecon (Post 3202373)
you should take the sigs from the latest version.
you also need to patch fragmentation and ricochet

https://i.imgur.com/eAnWztc.png
movss [r13+0xB8],xmm5
movss [r13+0xBC],xmm5
Suppose 0xB8 and 0xBC are lycoceptchance and fragmentchance, respectively, so they are statements of method_0.
mov [r13+0xB8], 0
mov [r13+0xBC], 0
maybe this one right?
Code:

        this.RicochetChance = ricochetChance;
                this.FragmentationChance = fragmentationChance;

https://i.imgur.com/MkfK9zD.png

yurchik 4th August 2021 08:06 AM

Quote:

Originally Posted by POFPE (Post 3204675)
https://i.imgur.com/eAnWztc.png
movss [r13+0xB8],xmm5
movss [r13+0xBC],xmm5
Suppose 0xB8 and 0xBC are lycoceptchance and fragmentchance, respectively, so they are statements of method_0.
mov [r13+0xB8], 0
mov [r13+0xBC], 0
maybe this one right?
Code:

        this.RicochetChance = ricochetChance;
                this.FragmentationChance = fragmentationChance;

https://i.imgur.com/MkfK9zD.png

Somewhat off-topic but how come changing "[98] Direction : UnityEngine.Vector3" of the shot has no effect for me? I've tried modifying from 2 of these lists on live eft:

[Class] EFT.ClientFirearmController : FirearmController -> [E0] BallisticsCalculator : -.GInterface8A0C
[Class] EFT.Ballistics.BallisticsCalculator : MonoBehaviour, GInterface8A0C -> [18] Shots : System.Collections.Generic.List<GClass1BA4>
[Class] -.GClass1BA4 : Object -> [98] Direction : UnityEngine.Vector3

and the one at

[Class] EFT.ClientFirearmController : FirearmController -> [2F0] list_0x2F0 : System.Collections.Generic.List<GClass1BA4>
[Class] - .GClass1BA4 : Object ->[98] Direction : UnityEngine.Vector3

is that not the correct way to do silent aim externally? i do not prefer using the meme method at:

[Class] EFT.Animations.ProceduralWeaponAnimation -> [1DC] _shotDirection : UnityEngine.Vector3

xzackcc 4th August 2021 09:28 AM

Quote:

Originally Posted by yurchik (Post 3204685)
Somewhat off-topic but how come changing "[98] Direction : UnityEngine.Vector3" of the shot has no effect for me? I've tried modifying from 2 of these lists on live eft:

[Class] EFT.ClientFirearmController : FirearmController -> [E0] BallisticsCalculator : -.GInterface8A0C
[Class] EFT.Ballistics.BallisticsCalculator : MonoBehaviour, GInterface8A0C -> [18] Shots : System.Collections.Generic.List<GClass1BA4>
[Class] -.GClass1BA4 : Object -> [98] Direction : UnityEngine.Vector3

and the one at

[Class] EFT.ClientFirearmController : FirearmController -> [2F0] list_0x2F0 : System.Collections.Generic.List<GClass1BA4>
[Class] - .GClass1BA4 : Object ->[98] Direction : UnityEngine.Vector3

is that not the correct way to do silent aim externally? i do not prefer using the meme method at:

[Class] EFT.Animations.ProceduralWeaponAnimation -> [1DC] _shotDirection : UnityEngine.Vector3


_shotDirection is set at the function I posted here:
https://www.unknowncheats.me/forum/3...-post4688.html

other than that, check the refs of that class and the function to find ways of manipulating the direction.

POFPE 4th August 2021 10:05 AM

Does anyone using instanthit right now?

pinefin 5th August 2021 12:06 AM

Quote:

Originally Posted by es3n1n (Post 3203293)
Code:

    const auto mono_handle = shared::crt::get_module( L"mono-2.0-bdwgc.dll" );

    const auto thread_attach = shared::crt::get_module_export<void( __cdecl* )( void* domain )>( mono_handle, "mono_thread_attach" );
    const auto get_root_domain = shared::crt::get_module_export<void* ( __cdecl* )( void )>( mono_handle, "mono_get_root_domain" );
    const auto assembly_open = shared::crt::get_module_export<void* ( __cdecl* )( void* domain, const char* name )>( mono_handle, "mono_domain_assembly_open" );
    const auto get_image = shared::crt::get_module_export<void* ( __cdecl* )( void* assembly )>( mono_handle, "mono_assembly_get_image" );
    const auto class_from_name = shared::crt::get_module_export<void* ( __cdecl* )( void* image, const char* name_space, const char* klass )>( mono_handle, "mono_class_from_name" );
    const auto class_get_method_from_name = shared::crt::get_module_export<void* ( __cdecl* )( void* image, const char* name, __int64 smth )>( mono_handle, "mono_class_get_method_from_name" );
    const auto compile_method = shared::crt::get_module_export<void* ( __cdecl* )( void* a1 )>( mono_handle, "mono_compile_method" );

    void* root_domain = get_root_domain( );
    thread_attach( root_domain );
    void* base_assembly = assembly_open( root_domain, "UnityEngine.CoreModule" );
    void* base_image = get_image( base_assembly );

    void* _class = class_from_name( base_image, "UnityEngine", "Classname" );
    void* method = class_get_method_from_name( _class, "func_name", 1 );
    void* jit_fn = compile_method( method );


upd: last param in class_get_method_from_name is a number of arguments
upd2: getting root domain like this isn’t legit tho, you can try to find and steal it from unity

just reading this now, thank you for this

also is it any different calling it from something other then mono-internal?
do they have different calling conventions or anything?
do i have to pass the current class (that you're trying to access the function in) as the first parameter or something? (i found this function named "mono_runtime_invoke", could that maybe be what i need to use?)

es3n1n 5th August 2021 12:53 AM

Quote:

Originally Posted by pinefin (Post 3205604)
just reading this now, thank you for this

also is it any different calling it from something other then mono-internal?
do they have different calling conventions or anything?
do i have to pass the current class (that you're trying to access the function in) as the first parameter or something? (i found this function named "mono_runtime_invoke", could that maybe be what i need to use?)


don�t call mono_runtime_invoke, battleye hooks this shit. if you aren�t sure about how fn looks in jit, then you can dump region and load it in IDA lol

pinefin 5th August 2021 12:54 AM

Quote:

Originally Posted by es3n1n (Post 3205653)
don’t call mono_runtime_invoke, battleye hooks this shit. if you aren’t sure about how fn looks in jit, then you can dump region and load it in IDA lol

okay thank you for all your help https://cdn.upload.systems/uploads/Zno7879a.png

hollow 5th August 2021 06:20 AM

Quote:

Originally Posted by es3n1n (Post 3205653)
don�t call mono_runtime_invoke, battleye hooks this shit.

:thonking:
what exactly are the odds you call mono_runtime_invoke during the time they hook it

bhehe6813 5th August 2021 03:54 PM

Quote:

Originally Posted by hollow (Post 3205851)
:thonking:
what exactly are the odds you call mono_runtime_invoke during the time they hook it

Why wouldn't it be high? If they place the hook using one of their dlls it would be near instant, they're one of the first dlls loaded. If it's a hook that's streamed in then yeah you can probably dodge that.

hollow 5th August 2021 05:37 PM

Quote:

Originally Posted by bhehe6813 (Post 3206263)
Why wouldn't it be high? If they place the hook using one of their dlls it would be near instant, they're one of the first dlls loaded. If it's a hook that's streamed in then yeah you can probably dodge that.

Battleye Oct 20 Update
i very much doubt bastian isn't aware VEH hooks fuck performance up quite a bit

if you're paranoid just call it from the game's main thread :ok_think:


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

hollow 6th August 2021 01:00 PM

Quote:

Originally Posted by montroisiemecon (Post 3202311)
However it has to be in some list in the mono dll

sorry for replying to an old post but this, in fact, is correct

https://i.imgur.com/qisQg7k.png
in mono_image_close_except_pools

paste that from ida if you want to be sneaky in your internal cheat

pinefin 6th August 2021 01:41 PM

does anyone know how a System.Collections.Generic.IEnumerable<> is stored in the memory? and/or how to loop the contents of it?

virii72 6th August 2021 08:38 PM

Is Scav karma +/- for PMCs/Scavs (for if they have killed other scavs or bosses in raid) stored client side? Not looking for offsets, just a confirmation if anyone has done any work on this before I start digging in would be helpful.

6GbPNAUaFZV 6th August 2021 10:36 PM

Looking for Weapon bullet speed
 
if anyone knows where the bullet speed is located would be much appreciated

pinefin 7th August 2021 12:39 AM

Quote:

Originally Posted by 6GbPNAUaFZV (Post 3207715)
if anyone knows where the bullet speed is located would be much appreciated

people say its detected. if you really wanna risk it its called _speedFactor in the dump

TrueWeedle 7th August 2021 04:37 AM

how would I dump offsets like from this pastebin: https://pastebin.com/gNHhLKpc

bhehe6813 7th August 2021 06:07 AM

Quote:

Originally Posted by TrueWeedle (Post 3207960)
how would I dump offsets like from this pastebin: https://pastebin.com/gNHhLKpc

That looks like custom output from a tool like unispect. I don't know of any tool that does that though, so I think the author must have made it himself (the formatting at least).


Really you can create this is well, it's not too hard to parse unispect or cheat engine output, albeit it's annoying but it saves ya time. You'd wanna make sure the file compiles after you generate it, you can automate it. Even better is if you setup unit tests for your cheat, so if your cheat uses something like player.PlayerBones and this is suddenly not in the newly generated dump file, it would fail the test and show you it errored.

pinefin 7th August 2021 06:48 AM

Quote:

Originally Posted by bhehe6813 (Post 3208004)
That looks like custom output from a tool like unispect. I don't know of any tool that does that though, so I think the author must have made it himself (the formatting at least).


Really you can create this is well, it's not too hard to parse unispect or cheat engine output, albeit it's annoying but it saves ya time. You'd wanna make sure the file compiles after you generate it, you can automate it. Even better is if you setup unit tests for your cheat, so if your cheat uses something like player.PlayerBones and this is suddenly not in the newly generated dump file, it would fail the test and show you it errored.

it does kinda look like someone manually made that in reclass or smt but with added publics and privates (useless? idk why its needed :thinking:)

6GbPNAUaFZV 7th August 2021 08:06 AM

Quote:

Originally Posted by pinefin (Post 3207803)
people say its detected. if you really wanna risk it its called _speedFactor in the dump

sorry i could of worded my question better, im looking for muzzle velocity

xzackcc 7th August 2021 10:28 AM

Quote:

Originally Posted by TrueWeedle (Post 3207960)
how would I dump offsets like from this pastebin: https://pastebin.com/gNHhLKpc


Quote:

Originally Posted by bhehe6813 (Post 3208004)
That looks like custom output from a tool like unispect. I don't know of any tool that does that though, so I think the author must have made it himself (the formatting at least).


Really you can create this is well, it's not too hard to parse unispect or cheat engine output, albeit it's annoying but it saves ya time. You'd wanna make sure the file compiles after you generate it, you can automate it. Even better is if you setup unit tests for your cheat, so if your cheat uses something like player.PlayerBones and this is suddenly not in the newly generated dump file, it would fail the test and show you it errored.

That is literally the generated code ReClass does when exploring memory, if you don't name the classes and ptr instances when you create them, you would end up with many classes in the generated code.
sidenote: N00000??? are unnamed classes.

Example
base addr + gom gets you to ..
Code:

class GameObjectManager
{
public:
    LastObjectBase* last_tagged_object; //0x0000
    BaseObject* tagged_objects; //0x0008
    LastObjectBase* last_active_object; //0x0010
    BaseObject* active_objects; //0x0018
 
}; //Size=0x0020

Tool Information
Initially, ReClass has been made by @DrUnKeN ChEeTaH (miss the GA times btw :/ ..) and since then it got improved and "recoded" by some people.

Commonly used Versions
ReClass 64 bit: ReClass x64
ReClass based on NET Framework: https://github.com/ReClassNET/ReClass.NET

RonaldWeezly 7th August 2021 06:29 PM

What function people hooking for chams? Rather stay away from all the mono bs

hst 7th August 2021 08:12 PM

Quote:

Originally Posted by RonaldWeezly (Post 3208597)
What function people hooking for chams? Rather stay away from all the mono bs

do you mean d3d or people changing unity shaders/materials?

TrueWeedle 8th August 2021 12:19 AM

can someone tell me how I would go about looking through CE classes, my classes look like dogshit: https://cdn.discordapp.com/attachmen...34/unknown.png
some of my classes are givin the correct class name, but others are not.

POFPE 8th August 2021 01:29 AM

Quote:

Originally Posted by TrueWeedle (Post 3208945)
can someone tell me how I would go about looking through CE classes, my classes look like dogshit: https://cdn.discordapp.com/attachmen...34/unknown.png
some of my classes are givin the correct class name, but others are not.

https://www.youtube.com/watch?v=YYpl4WHpcS4

TrueWeedle 8th August 2021 02:15 AM

Quote:

Originally Posted by POFPE (Post 3208995)

thank you for being helpful.

pinefin 8th August 2021 02:17 AM

Quote:

Originally Posted by RonaldWeezly (Post 3208597)
What function people hooking for chams? Rather stay away from all the mono bs

why and what would u hook for chams?

POFPE 8th August 2021 11:33 AM

Quote:

Originally Posted by montroisiemecon (Post 3202373)
you should take the sigs from the latest version.
you also need to patch fragmentation and ricochet

I'm sorry to reply to the old post, but has the JIT code patch been detected? I don't think the code on RWX won't easily detect, but the account was suspended this morning. I think it was detected because of by setting Fragment and ricochet Chance to zero (like SpeedFactor) in Method_0 (mov offset's of Fragment/ricochet, 0). Don't you have a problem? or using thermal vision with edit value of ThermalVision?(Without Thermalscope or Vision) or maybe due to openprocess with PROCESS_QUERY_INFORMATION?

ilahigod31 8th August 2021 01:24 PM

how can i use unity render? (internal)

RonaldWeezly 8th August 2021 02:56 PM

Quote:

Originally Posted by hst (Post 3208711)
do you mean d3d or people changing unity shaders/materials?

modifying unity shaders/materials

montroisiemecon 8th August 2021 03:06 PM

Quote:

Originally Posted by POFPE (Post 3209333)
I'm sorry to reply to the old post, but has the JIT code patch been detected? I don't think the code on RWX won't easily detect, but the account was suspended this morning. I think it was detected because of by setting Fragment and ricochet Chance to zero (like SpeedFactor) in Method_0 (mov offset's of Fragment/ricochet, 0). Don't you have a problem? or using thermal vision with edit value of ThermalVision?(Without Thermalscope or Vision) or maybe due to openprocess with PROCESS_QUERY_INFORMATION?

Is it a BE ban or a BSG ban?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

hst 8th August 2021 04:01 PM

Quote:

Originally Posted by RonaldWeezly (Post 3209525)
modifying unity shaders/materials

Hook any OnGUI or Update method. Then just modify the shaders in players renderer component.

TrueWeedle 8th August 2021 05:11 PM

any have the sequence of bytes for getPosition internal function for IDA?

POFPE 9th August 2021 01:14 AM

Quote:

Originally Posted by montroisiemecon (Post 3209530)
Is it a BE ban or a BSG ban?

How can I check it? Just Profile banned 200 error shown

Quote:

Originally Posted by montroisiemecon (Post 3209530)
Is it a BE ban or a BSG ban?

How can I check it? Just Profile banned 200 error shown

Quote:

Originally Posted by montroisiemecon (Post 3209530)
Is it a BE ban or a BSG ban?

How can I check it? Just Profile banned 200 error shown

pinefin 9th August 2021 01:41 AM

Quote:

Originally Posted by POFPE (Post 3210059)
How can I check it? Just Profile banned 200 error shown



How can I check it? Just Profile banned 200 error shown



How can I check it? Just Profile banned 200 error shown

did u get an email?

POFPE 9th August 2021 07:20 AM

Quote:

Originally Posted by pinefin (Post 3210083)
did u get an email?

nah i didnt get any email

TrueWeedle 9th August 2021 08:13 AM

My W2S is behaving weird, im posting a video and code of my issue any help or insight into my issue would be helpful.
https://streamable.com/vnlcjc
Code:

if(Util::WorldToScreen(O::localPlayer.position, position))
D::DrawString(position, ImColor(130, 0, 255), "Player");

bool WorldToScreen(Vector3 WorldPosition, Vector2& ScreenPosition)
        {
                Matrix4x4 viewMatrix = O::viewMatrix;
                MatrixTranspose(viewMatrix, viewMatrix);
                const Vector3 translation = { viewMatrix._41, viewMatrix._42, viewMatrix._43 };
                const Vector3 up = { viewMatrix._21, viewMatrix._22, viewMatrix._23 };
                const Vector3 right = { viewMatrix._11, viewMatrix._12, viewMatrix._13 };

                const auto w = translation.Dot(WorldPosition) + viewMatrix._44;

                if (w < 0.1f)
                        return false;

                const auto x = right.Dot(WorldPosition) + viewMatrix._14;
                const auto y = up.Dot(WorldPosition) + viewMatrix._24;
                ScreenPosition = Vector2((O::screenwWidth / 2) * (1.f + x / w), (O::screenHeight / 2) * (1.f - y / w));
                return true;
        }

Edit:Solved

ecthirune 9th August 2021 09:50 AM

Quote:

Originally Posted by TrueWeedle (Post 3210275)
~snip

Check your code.

Code:

MatrixTranspose(viewMatrix, viewMatrix);
i bet this it's not as it should be, create new variable for transposed matrix.
Also, as i see, you trying to draw enemy_player position, probably you get their coords in wrong way.

pinefin 9th August 2021 02:51 PM

hey with calling mono functions to search for jit'd function, how would i search for something that is named like this "\uE000"

would i search for it like "\\uE000" or "\uE000" or something else, i've tried both and neither work. also GClass**** doesnt work either

failnoobgamer 9th August 2021 07:32 PM

anyway to check if ingame/in a raid

pinefin 9th August 2021 07:35 PM

Quote:

Originally Posted by failnoobgamer (Post 3210762)
anyway to check if ingame/in a raid

if (!GameWorld)

Quote:

Originally Posted by POFPE (Post 3210240)
nah i didnt get any email

then (iirc, correct if wrong) thats a manual ban.

eldev 10th August 2021 10:47 AM

EFT.Player->Profile->Info fields shifted +8
HandsController->ActiveWeapon shifted from 0x50 to 0x58

sharkdev 10th August 2021 12:43 PM

anyone got recent BE main shellcode from EFT?
ty good share

okoko98ttt 10th August 2021 02:51 PM

Quote:

Originally Posted by eldev (Post 3211362)
EFT.Player->Profile->Info fields shifted +8
HandsController->ActiveWeapon shifted from 0x50 to 0x58

Code:

// is this struct right?
        struct
        {
                static constexpr uint64_t information = 0x30; //updated
                static constexpr uint64_t id = 0x10; //updated
        } profile;


ZeusLord 10th August 2021 05:02 PM

Quote:

Originally Posted by okoko98ttt (Post 3211537)
Code:

// is this struct right?
        struct
        {
                static constexpr uint64_t information = 0x30; //updated
                static constexpr uint64_t id = 0x10; //updated
        } profile;


I am not sure which ID you are referring to by the "id" offset but the information offset is still at 0x28.

Quote:

Originally Posted by okoko98ttt (Post 3211537)
Code:

// is this struct right?
        struct
        {
                static constexpr uint64_t information = 0x30; //updated
                static constexpr uint64_t id = 0x10; //updated
        } profile;


I am not sure which ID you are referring to by the "id" offset but the information offset is still at 0x28.

eldev 10th August 2021 06:14 PM

Quote:

Originally Posted by okoko98ttt (Post 3211537)
Code:

// is this struct right?
        struct
        {
                static constexpr uint64_t information = 0x30; //updated
                static constexpr uint64_t id = 0x10; //updated
        } profile;


I meant the fields inside

pinefin 10th August 2021 06:17 PM

Quote:

Originally Posted by pinefin (Post 3210500)
hey with calling mono functions to search for jit'd function, how would i search for something that is named like this "\uE000"

would i search for it like "\\uE000" or "\uE000" or something else, i've tried both and neither work. also GClass**** doesnt work either

could someone possibly give me a push in the right direction with this? i cant get a class from calling mono_class_from_name with obfuscated names and/or deobfuscated names

Razchek 11th August 2021 01:46 AM

Quote:

Originally Posted by pinefin (Post 3211748)
could someone possibly give me a push in the right direction with this? i cant get a class from calling mono_class_from_name with obfuscated names and/or deobfuscated names

I would assume that you should use the type reference instead
Code:

MonoClass* mono_class_from_typeref (MonoImage *image, guint32 type_token)
Unfortunately I haven't fully explored this area - but I considered using type tokens for certain identifications when developing Unispect.

Edit: Or yeah, brain fart - do what bhehe said and use the actual Unicode characters lol

bhehe6813 11th August 2021 01:51 AM

Quote:

Originally Posted by pinefin (Post 3211748)
could someone possibly give me a push in the right direction with this? i cant get a class from calling mono_class_from_name with obfuscated names and/or deobfuscated names

... Those names aren't \uE01 and GClass and shit... That's literally just how unispect, dnyspy, etc and cheat engine rename unicode symbol names. This is extremely common sense. You need to go find the real name. They use EAZfuscatator to change names to unprintable unicode characters.

Find the file offset of the function (literally in dnspy) and then open it in a hex editor.

POFPE 11th August 2021 07:22 AM

Using ThermalVision(edit vision's on off value) without Thermalvision / Zero the values of DEFLECT and Ricochet chance (Jit Code patch) Do I have a detection risk with those two Feature? Does BSG start to monitoring Deflect and ricochet chance too? (Since I dont get any email that related with ban, So I think it is BSG manual blocking) or was my KDA 156 so I was manually blocked?

azmwsuwakwuvrbc 11th August 2021 10:05 AM

does anyone know why some chains differs depending on game, i mean : eft (current version) online raid, eft (current version) offline raid, eft (current version + sptarkov) raid (which i believe is more like offline raid). for example full chain of dead corpse's player profile, dead corpse contained items full chain also not same for all three game launching types. and there is also one thing - i distinguish corpses within loot items by its game object name like "playersuperrior" or "bot" and it works perfectly until corpse appears on a map before me (mid/late game scav run) - from this moment i can't see it, and i believe these corpses has different name


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

hollow 11th August 2021 02:00 PM

Quote:

Originally Posted by POFPE (Post 3212311)
or was my KDA 156 so I was manually blocked?

lol, obviously

24jared24 12th August 2021 01:48 AM

Quote:

Originally Posted by hollow (Post 3212552)
lol, obviously

u really think they ban for KD? I'm at like 270 or something

pinefin 12th August 2021 01:51 AM

Quote:

Originally Posted by bhehe6813 (Post 3212107)
... Those names aren't \uE01 and GClass and shit... That's literally just how unispect, dnyspy, etc and cheat engine rename unicode symbol names. This is extremely common sense. You need to go find the real name. They use EAZfuscatator to change names to unprintable unicode characters.

Find the file offset of the function (literally in dnspy) and then open it in a hex editor.

hey sorry, i was being a little retarded. i learned that u could click on the offset of token in dnspy and copy the symbol thats in the name field. (if anyone is wondering)

(also edit, i was asking just to ask and figured this out after looking into it for like 10 minutes, but thank you anyways)

hollow 12th August 2021 10:48 AM

Quote:

Originally Posted by 24jared24 (Post 3213077)
u really think they ban for KD? I'm at like 270 or something

no, their kd said they're raging hard or whatever
i have no clue how your account is alive at 270 kd, none of mine lived past 1 week and i wasn't even doing sus shit (for the most part, there were times when i was teleporting around the map i guess lol) - people in this game literally report you for anything

ilahigod31 12th August 2021 12:21 PM

Quote:

Originally Posted by 24jared24 (Post 3213077)
u really think they ban for KD? I'm at like 270 or something

how? i banned like a 20

ecthirune 12th August 2021 01:57 PM

Quote:

Originally Posted by ilahigod31 (Post 3213419)
how? i banned like a 20

keeping overall kda in ~40, but do not pushing players a lot(actually my pmc Kills/raids are ~1.2, because im mostly destroying bots and never chase player for no reason), also trying to play as legit man - for ~5 month no ban.

bhehe6813 12th August 2021 03:22 PM

KD is a loaded stat because of scavs. # of players killed per game on average is a better one.

POFPE 12th August 2021 03:34 PM

Can Anyone let me know How can I check Player's Active weapon?
I already search it on this thread, but I cant find proper one

hollow 12th August 2021 04:02 PM

Quote:

Originally Posted by POFPE (Post 3213572)
Can Anyone let me know How can I check Player's Active weapon?
I already search it on this thread, but I cant find proper one

do networked players have handscontroller? if so, player->handscontroller->item

bhehe6813 12th August 2021 05:27 PM

Quote:

Originally Posted by hollow (Post 3213597)
do networked players have handscontroller? if so, player->handscontroller->item

If they don't you can also get it from FAC which is for sure networked, player->pwa->fac->ilw (item)


Code:

weapon = player.ProceduralWeaponAnimation.FirearmController.InventoryLogicWeapon

serge 12th August 2021 06:24 PM

https://cdn.discordapp.com/attachmen...368468/fly.mp4

drive-by :D

pinefin 12th August 2021 08:58 PM

Quote:

Originally Posted by hollow (Post 3213344)
no, their kd said they're raging hard or whatever
i have no clue how your account is alive at 270 kd, none of mine lived past 1 week and i wasn't even doing sus shit (for the most part, there were times when i was teleporting around the map i guess lol) - people in this game literally report you for anything

kd dont matter bruvvy

https://imgur.com/6nQd9xn

ZeusLord 12th August 2021 09:08 PM

Quote:

Originally Posted by serge (Post 3213730)

Very good game we have here. :motiass:

24jared24 13th August 2021 12:56 AM

Quote:

Originally Posted by hollow (Post 3213344)
no, their kd said they're raging hard or whatever
i have no clue how your account is alive at 270 kd, none of mine lived past 1 week and i wasn't even doing sus shit (for the most part, there were times when i was teleporting around the map i guess lol) - people in this game literally report you for anything

idk I've played full rage for 2 wipes getting Kappa both times and never had a ban. I haven't seen any evidence of reports mattering

bhehe6813 13th August 2021 09:16 AM

Instant examine in the menu:

code:

Code:

                IntPtr pObjectManager = M.Read<IntPtr>(H.pObjectManager); // get gom ptr
                Classes.GameObjectManager objectManager = M.Read<Classes.GameObjectManager>(pObjectManager); // deref to gom
                IntPtr _commonUI = Classes.GetObjectFromList(objectManager.activeObjects, objectManager.lastActiveObject, "Common UI"); // search for Common UI
                if (_commonUI.IsValid()) {
                    IntPtr commonUIPtr = Classes.ReadChain(_commonUI, new List<uint>(new uint[] { 0x30, 0x18, 0x28 }));
                    if (commonUIPtr.IsValid()) {
                        Classes.CommonUI commonUI = M.Read<Classes.CommonUI>(commonUIPtr);
                        if (commonUI.pInventoryScreen.IsValid() && commonUI.InventoryScreen.pPlayerProfile.IsValid() && commonUI.InventoryScreen.Profile.pSkills.IsValid()) {
                            Cheats.Skills.SetMenuSkills(commonUI.InventoryScreen.Profile.Skills);
                        }
                    }
                }

structs:

Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct CommonUI
        {
            [FieldOffset(0x30)]
            public IntPtr pInventoryScreen;

            public InventoryScreen InventoryScreen => M.Read<InventoryScreen>(this.pInventoryScreen);
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct InventoryScreen
        {
            [FieldOffset(0x0f0)]
            public IntPtr pPlayerProfile;

            public PlayerProfile Profile => M.Read<PlayerProfile>(this.pPlayerProfile);
        }

Then it's just normal skill modding.

POFPE 13th August 2021 09:29 AM

Quote:

Originally Posted by bhehe6813 (Post 3213687)
If they don't you can also get it from FAC which is for sure networked, player->pwa->fac->ilw (item)


Code:

weapon = player.ProceduralWeaponAnimation.FirearmController.InventoryLogicWeapon

InventoryLogicWeapon is looks like some class not value May I wrong?

buddgaf 13th August 2021 01:52 PM

anyone have the offset for player profile or name?

ecthirune 13th August 2021 02:05 PM

Quote:

Originally Posted by buddgaf (Post 3214550)
anyone have the offset for player profile or name?


Code:

eft.player+0x458] =eft.profile+0x28] = Info+0x18] = nickname stuff;
Nickname stuff:
Code:

0x10 int = size of string
0x14 string;


buddgaf 13th August 2021 02:12 PM

Quote:

Originally Posted by ecthirune (Post 3214565)
Code:

eft.player+0x458] =eft.profile+0x28] = Info+0x18] = nickname stuff;
Nickname stuff:
Code:

0x10 int = size of string
0x14 string;


Thank you much! did inventory move too? was at 0x498?

ecthirune 13th August 2021 02:41 PM

Quote:

Originally Posted by buddgaf (Post 3214573)
did inventory move too?

no
Code:

[498] _inventoryController : -.GClass1900
as far i know - no changes, except info stuff (they added some field for Ragman).


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

buddgaf 13th August 2021 03:15 PM

Quote:

Originally Posted by ecthirune (Post 3214592)
no
Code:

[498] _inventoryController : -.GClass1900
as far i know - no changes, except info stuff (they added some field for Ragman).

hmm... wtf

failnoobgamer 14th August 2021 08:50 AM

I'm trying to get the fov when using a 4x scope, but i cant seem to get the correct fov from optics when switching to the side scope (CTRL+RMB)

TJ888 14th August 2021 04:36 PM

Quote:

Originally Posted by failnoobgamer (Post 3215327)
I'm trying to get the fov when using a 4x scope, but i cant seem to get the correct fov from optics when switching to the side scope (CTRL+RMB)

Using DnSpy, in the ProceduralWeaponAnimation class look at the get_CurrentAimingMod function. Then using the SightComponent you get from that, look at GetCurrentOpticZoom in the SightComponent class. This is how the game determines your current scope and then determines the current zoom level of that scope.

I implemented it into my internal and it has worked flawlessly for me regardless of what scope I use and switch to on my gun, and whether I switch the zoom level between say 1x and 4x, or 1x and 6x, etc, making my W2S always functioning correctly.

(If your current current zoom level isn't > 1.f, use the usual "FPS Camera" even if there is an active optic camera. If it is > 1.f then use the current active "BaseOpticCamera(Clone)").

bhehe6813 15th August 2021 05:32 AM

How to find quest marker locations i.e. place an item here, or visit this location:

Here's a list of all of them:

Code:

        public static Dictionary<string, string> QuestMapNameToIdMap = new Dictionary<string, string>() {
            {"Woods", "5704e3c2d2720bac5b8b4567"},
            {"Shoreline", "5704e554d2720bac5b8b456e" },
            {"Military base", "5704e5fad2720bc05b8b4567"},
            {"Laboratory", "5b0fc42d86f7744a585f9105" },
            {"Interchange", "5714dbc024597771384a510d" },
            {"Factory", "55f2d3fd4bdc2d5f408b4567" },
            {"Night Factory", "59fc81d786f774390775787e" },
            {"Customs", "56f40101d2720b2a4d8b45d6" }
        };

public static Dictionary<string,
        Quest> QuestMarkerMap = new Dictionary<string, Quest>() {
            {
                "5967530a86f77462ba22226b",
                new Quest("5967530a86f77462ba22226b", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("locked_office"),
                })
            },
            {
                "59675d6c86f7740a842fc482",
                new Quest("59675d6c86f7740a842fc482", "5704e3c2d2720bac5b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("bunker2"),
                })
            },
            {
                "5967725e86f774601a446662",
                new Quest("5967725e86f774601a446662", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("room214"),
                })
            },
            {
                "597a171586f77405ba6887d3",
                new Quest("597a171586f77405ba6887d3", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("gazel"),
                    new QuestWorldMarker("gazel"),
                })
            },
            {
                "59c124d686f774189b3c843f",
                new Quest("59c124d686f774189b3c843f", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("fuel1"),
                    new QuestWorldMarker("fuel2"),
                    new QuestWorldMarker("fuel3"),
                    new QuestWorldMarker("fuel4"),
                })
            },
            {
                "5eda19f0edce541157209cee",
                new Quest("5eda19f0edce541157209cee", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("prapor_022_area_1"),
                    new QuestWorldMarker("prapor_022_area_2"),
                    new QuestWorldMarker("prapor_022_area_3"),
                })
            },
            {
                "5edab736cc183c769d778bc2",
                new Quest("5edab736cc183c769d778bc2", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("ter_023_area_1_1"),
                    new QuestWorldMarker("ter_023_area_2_1"),
                    new QuestWorldMarker("ter_023_area_3_1"),
                })
            },
            {
                "5ede55112c95834b583f052a",
                new Quest("5ede55112c95834b583f052a", "5704e5fad2720bc05b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("prapor_024_area_2"),
                    new QuestWorldMarker("prapor_024_area_1"),
                })
            },
            {
                "5ede567cfa6dc072ce15d6e3",
                new Quest("5ede567cfa6dc072ce15d6e3", "5704e5fad2720bc05b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("prapor_025_area_1"),
                    new QuestWorldMarker("prapor_025_area_2"),
                    new QuestWorldMarker("prapor_025_area_3"),
                    new QuestWorldMarker("prapor_025_area_4"),
                    new QuestWorldMarker("prapor_025_area_5"),
                })
            },
            {
                "59689ee586f7740d1570bbd5",
                new Quest("59689ee586f7740d1570bbd5", "55f2d3fd4bdc2d5f408b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("pumproom"),
                })
            },
            {
                "59689fbd86f7740d137ebfc4",
                new Quest("59689fbd86f7740d137ebfc4", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("room206_water"),
                })
            },
            {
                "5969f9e986f7741dde183a50",
                new Quest("5969f9e986f7741dde183a50", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("vaz_feld"),
                    new QuestWorldMarker("room114"),
                })
            },
            {
                "597a160786f77477531d39d2",
                new Quest("597a160786f77477531d39d2", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("gazel"),
                    new QuestWorldMarker("gazel"),
                })
            },
            {
                "5a68661a86f774500f48afb0",
                new Quest("5a68661a86f774500f48afb0", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("ter_013_area_1"),
                    new QuestWorldMarker("ter_013_area_2"),
                    new QuestWorldMarker("ter_013_area_3"),
                })
            },
            {
                "5a68665c86f774255929b4c7",
                new Quest("5a68665c86f774255929b4c7", "5704e3c2d2720bac5b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("ter_015_area_1"),
                })
            },
            {
                "5a68669a86f774255929b4d4",
                new Quest("5a68669a86f774255929b4d4", "59fc81d786f774390775787e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("ter_017_area_1"),
                })
            },
            {
                "5edac63b930f5454f51e128b",
                new Quest("5edac63b930f5454f51e128b", "5b0fc42d86f7744a585f9105", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("peace_027_area"),
                })
            },
            {
                "596b43fb86f77457ca186186",
                new Quest("596b43fb86f77457ca186186", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("dead_posylni"),
                    new QuestWorldMarker("vremyan_case"),
                })
            },
            {
                "5979f9ba86f7740f6c3fe9f2",
                new Quest("5979f9ba86f7740f6c3fe9f2", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("bomj_place"),
                })
            },
            {
                "597a0f5686f774273b74f676",
                new Quest("597a0f5686f774273b74f676", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("gazel"),
                    new QuestWorldMarker("gazel"),
                })
            },
            {
                "5edabd13218d181e29451442",
                new Quest("5edabd13218d181e29451442", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("skier_022_area_1"),
                    new QuestWorldMarker("skier_022_area_2"),
                    new QuestWorldMarker("skier_022_area_3"),
                })
            },
            {
                "5a03173786f77451cb427172",
                new Quest("5a03173786f77451cb427172", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_008_2_N1"),
                    new QuestWorldMarker("place_peacemaker_008_2_N2"),
                })
            },
            {
                "5a03296886f774569778596a",
                new Quest("5a03296886f774569778596a", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_008_4_N1"),
                    new QuestWorldMarker("place_peacemaker_008_4_N2"),
                })
            },
            {
                "5a27b75b86f7742e97191958",
                new Quest("5a27b75b86f7742e97191958", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_001"),
                })
            },
            {
                "5a27b7a786f774579c3eb376",
                new Quest("5a27b7a786f774579c3eb376", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_002_N1"),
                    new QuestWorldMarker("place_peacemaker_002_N2"),
                    new QuestWorldMarker("place_peacemaker_002_N3"),
                })
            },
            {
                "5a27b7d686f77460d847e6a6",
                new Quest("5a27b7d686f77460d847e6a6", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_003_N1"),
                    new QuestWorldMarker("place_peacemaker_003_N2"),
                    new QuestWorldMarker("place_peacemaker_003_N3"),
                })
            },
            {
                "5a27b80086f774429a5d7e20",
                new Quest("5a27b80086f774429a5d7e20", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_004_N1"),
                    new QuestWorldMarker("place_peacemaker_004_N2"),
                })
            },
            {
                "5a27b87686f77460de0252a8",
                new Quest("5a27b87686f77460de0252a8", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_005_N1"),
                    new QuestWorldMarker("place_peacemaker_005_N2"),
                    new QuestWorldMarker("place_peacemaker_005_N1"),
                    new QuestWorldMarker("place_peacemaker_005_N2"),
                })
            },
            {
                "5a27b9de86f77464e5044585",
                new Quest("5a27b9de86f77464e5044585", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_007_1_N1"),
                })
            },
            {
                "5a27ba1c86f77461ea5a3c56",
                new Quest("5a27ba1c86f77461ea5a3c56", "any", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_007_N1"),
                    new QuestWorldMarker("place_peacemaker_007_2_N2"),
                    new QuestWorldMarker("place_peacemaker_007_2_N2_1"),
                    new QuestWorldMarker("place_peacemaker_007_2_N3"),
                })
            },
            {
                "5a27bb3d86f77411ea361a21",
                new Quest("5a27bb3d86f77411ea361a21", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_009_2"),
                })
            },
            {
                "5a27bb5986f7741dfb660900",
                new Quest("5a27bb5986f7741dfb660900", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_009_3_N1"),
                })
            },
            {
                "5a27bbf886f774333a418eeb",
                new Quest("5a27bbf886f774333a418eeb", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_010_2"),
                    new QuestWorldMarker("place_peacemaker_010_2"),
                })
            },
            {
                "5fd9fad9c1ce6b1a3b486d00",
                new Quest("5fd9fad9c1ce6b1a3b486d00", "5704e3c2d2720bac5b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("pr_scout_col"),
                    new QuestWorldMarker("pr_scout_base"),
                })
            },
            {
                "5a27bc1586f7741f6d40fa2f",
                new Quest("5a27bc1586f7741f6d40fa2f", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_010_3"),
                })
            },
            {
                "5ac3462b86f7741d6118b983",
                new Quest("5ac3462b86f7741d6118b983", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_SADOVOD_03"),
                })
            },
            {
                "5ac3467986f7741d6224abc2",
                new Quest("5ac3467986f7741d6224abc2", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_SIGNAL_01_1"),
                    new QuestWorldMarker("place_SIGNAL_01_2"),
                })
            },
            {
                "5ac346cf86f7741d63233a02",
                new Quest("5ac346cf86f7741d63233a02", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_SIGNAL_03_1"),
                    new QuestWorldMarker("place_SIGNAL_03_2"),
                    new QuestWorldMarker("place_SIGNAL_03_3"),
                })
            },
            {
                "5ac3477486f7741d651d6885",
                new Quest("5ac3477486f7741d651d6885", "55f2d3fd4bdc2d5f408b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_pacemaker_SCOUT_01"),
                    new QuestWorldMarker("place_pacemaker_SCOUT_02"),
                    new QuestWorldMarker("place_pacemaker_SCOUT_03"),
                })
            },
            {
                "5f04886a3937dc337a6b8238",
                new Quest("5f04886a3937dc337a6b8238", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_meh_sanitar_room"),
                })
            },
            {
                "5ae448e586f7744dcf0c2a67",
                new Quest("5ae448e586f7744dcf0c2a67", "5714dbc024597771384a510d", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_SALE_03_AVOKADO"),
                    new QuestWorldMarker("place_SALE_03_KOSTIN"),
                    new QuestWorldMarker("place_SALE_03_TREND"),
                    new QuestWorldMarker("place_SALE_03_DINO"),
                    new QuestWorldMarker("place_SALE_03_TOPBRAND"),
                })
            },
            {
                "5ae448f286f77448d73c0131",
                new Quest("5ae448f286f77448d73c0131", "5714dbc024597771384a510d", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_WARBLOOD_04_1"),
                    new QuestWorldMarker("place_WARBLOOD_04_2"),
                    new QuestWorldMarker("place_WARBLOOD_04_3"),
                })
            },
            {
                "5b478d0f86f7744d190d91b5",
                new Quest("5b478d0f86f7744d190d91b5", "5714dbc024597771384a510d", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_merch_21_1"),
                    new QuestWorldMarker("place_merch_21_2"),
                    new QuestWorldMarker("place_merch_21_3"),
                })
            },
            {
                "5c10f94386f774227172c572",
                new Quest("5c10f94386f774227172c572", "5704e3c2d2720bac5b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("bar_fuel3_1"),
                    new QuestWorldMarker("bar_fuel3_2"),
                    new QuestWorldMarker("bar_fuel3_3"),
                })
            },
            {
                "5d25e48186f77443e625e386",
                new Quest("5d25e48186f77443e625e386", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("huntsman_024_1"),
                    new QuestWorldMarker("huntsman_024_2"),
                    new QuestWorldMarker("huntsman_024_3"),
                })
            },
            {
                "5d25e4ad86f77443e625e387",
                new Quest("5d25e4ad86f77443e625e387", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("huntsman_026"),
                })
            },
            {
                "5d25e4d586f77443e625e388",
                new Quest("5d25e4d586f77443e625e388", "5704e5fad2720bc05b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("huntsman_029"),
                })
            }

First Id is the quest id. This is also included in the "new Quest" part. The second id (the second parameter to new Quest) is the location Id. There is a reversed location name to id map at the top. This is because local game world + 0x20 is the translated name not id. The new QuestWorldMarker("string") is the name of the game object (well partial name).

So these are a bit tricky as EFT doesn't manage them too much other than handling their interactions. These world markers / zones are unity engine exploration zones. They are untagged, but active.

Retrieving these zones from GOM (basically pull that object out of object manager list, read it's components for a transform):

Code:

        public static Vector3 GetCachedMarkerLocation(string key) {
            if (!CachedMarkerLocations.ContainsKey(key)) {
                var obj = GetObjectFromList(World.GameObjectManager.activeObjects, World.GameObjectManager.lastActiveObject, key, true);
                if (!obj.IsValid())
                    return Vector3.Zero;
                var zone = M.Read<ExplorationZoneObject>(obj);
                var pTransform = zone.GetComponentByName("Transform");
                if (!pTransform.IsValid())
                    return Vector3.Zero;
                var transform = M.Read<TransformInternal>(pTransform);
                var position = GetBonePosition(transform);
                if (position != Vector3.Zero)
                    CachedMarkerLocations.Add(key, position);
            }
            return CachedMarkerLocations[key];
        }

Here's the structs referenced in the above

Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct ExplorationZoneObject
        {
            [FieldOffset(0x30)]
            public IntPtr pComponentsList;

            public IntPtr GetComponentByName(string name) {
                try {
                    for (int i = 0x8; i < 0x600; i += 0x10) {
                        IntPtr componentPtr = M.Read<IntPtr>(this.pComponentsList + i);
                        Component component = M.Read<Component>(componentPtr);
                        string className = component.ComponentFields.ComponentStaticFields.ClassDetails.ClassName;
                        if (className == name) {
                            return componentPtr;
                        }
                    }
                } catch {
                }
                return IntPtr.Zero;
            }
        }

If you're curious on the other components, there is a PlaceItemTrigger, and a BoxCollider/Collider.

If you're also curious on how I figured this out:

1. SP-Tarkov parsing quest.json to build the maps
2. Unity Explorer on SP-Tarkov to observe unity object list and did lots and lots of reading in dnspy of assembly-csharp.
3. Noticed the correlation between names in the quest.json like "fuel4" and game objects like "beacon_zone_fuel4".
4. Inspected those game objects with Unity Explorer and saw they had a transform.
5. Did some googling and found they are called Exploration Zones (not really relevant but interesting anyways)

I do a partial name search for the objects. Some of the place item ones are prepended with "beacon_zone" but in typical BSG fashion some have random names.


EDIT:

The location isn't working (not accurate), I'll figure it out and update.

Above ^

Code:

        public static Dictionary<string, Vector3> MarkerNameToLocationMap = new Dictionary<string, Vector3>() {
            {"place_pacemaker_SCOUT_01", new Vector3(66.08f, -1.676f, -30.421f)},
            {"place_pacemaker_SCOUT_02", new Vector3(-53.107f, 2.292f, 58.188f)},
            {"place_pacemaker_SCOUT_03", new Vector3(59.698f, 1.163f, 57.254f)},
            {"prapor_024_area_2", new Vector3(-115.030106f, -11.859222f, 33.881912f)},
            {"prapor_024_area_1", new Vector3(-116.75311f, -13.159225f, 31.686905f)},
            {"prapor_025_area_1", new Vector3(-90.30911f, -13.41922f, -5.1480865f)},
            {"prapor_025_area_2", new Vector3(-144.2501f, -9.983223f, 6.19191f)},
            {"prapor_025_area_3", new Vector3(-149.41011f, -9.329224f, 50.001907f)},
            {"prapor_025_area_4", new Vector3(-107.0101f, -9.388222f, 77.49191f)},
            {"prapor_025_area_5", new Vector3(-73.001114f, -9.653221f, 29.993912f)},
            {"huntsman_029", new Vector3(78.77f, -12.286003f, -117.1f)},
            {"bunker2", new Vector3(437.44995f, -11.22f, 64.57001f)},
            {"ter_015_area_1", new Vector3(-97.150024f, -13.19f, 219.76001f)},
            {"pr_scout_col", new Vector3(195.56006f, 12.21f, -595.81995f)},
            {"pr_scout_base", new Vector3(283.05005f, 24.04f, -439.39f)},
            {"bar_fuel3_1", new Vector3(356.44995f, 0.35f, -85.880005f)},
            {"bar_fuel3_2", new Vector3(-325.042f, 15.319f, 23.984985f)},
            {"bar_fuel3_3", new Vector3(-200.40698f, 31.302f, -210.92401f)},
            {"room214", new Vector3(176.42181f, 3.330181f, 184.24689f)},
            {"gazel", new Vector3(480.77383f, 3.292181f, -76.6871f)},
            {"fuel1", new Vector3(429.8568f, 2.7361808f, 16.229898f)},
            {"fuel2", new Vector3(101.44681f, 3.060181f, -14.1001005f)},
            {"fuel3", new Vector3(334.95682f, 3.040181f, -189.97011f)},
            {"fuel4", new Vector3(-334.93317f, 2.220181f, -163.46011f)},
            {"room206_water", new Vector3(232.2398f, 3.3901808f, 138.87689f)},
            {"room114", new Vector3(235.47781f, 0.42918086f, 160.07489f)},
            {"vremyan_case", new Vector3(368.89383f, 1.6001809f, -49.8851f)},
            {"place_peacemaker_002_N1", new Vector3(505.02997f, 1.24f, -11.290001f)},
            {"place_peacemaker_002_N2", new Vector3(565.76f, -0.00999999f, -24.169998f)},
            {"place_peacemaker_002_N3", new Vector3(17.86f, 0.3499999f, 0.3600006f)},
            {"place_SADOVOD_03", new Vector3(-212.56999f, 1.1620009f, -109.05f)},
            {"prapor_022_area_1", new Vector3(-263.98303f, -3.9580002f, -85.25296f)},
            {"prapor_022_area_2", new Vector3(96.72998f, -47.19f, 97.10004f)},
            {"prapor_022_area_3", new Vector3(-306.19995f, -60.86f, 494.09998f)},
            {"ter_023_area_1_1", new Vector3(-253.17004f, -4.0699997f, -56.859955f)},
            {"ter_023_area_2_1", new Vector3(94.20996f, -47.5f, 61.97003f)},
            {"ter_023_area_3_1", new Vector3(-311.90002f, -60.9f, 489.70007f)},
            {"ter_013_area_1", new Vector3(312.69995f, -59.18f, 314.5f)},
            {"ter_013_area_2", new Vector3(354.91992f, -58.63f, 306.12f)},
            {"ter_013_area_3", new Vector3(-258.07495f, -3.958f, -85.66f)},
            {"skier_022_area_1", new Vector3(-263.594f, -3.9580002f, -85.71597f)},
            {"skier_022_area_2", new Vector3(98.10303f, -47.19f, 96.979034f)},
            {"skier_022_area_3", new Vector3(-305.38403f, -60.86f, 492.20105f)},
            {"place_peacemaker_008_2_N1", new Vector3(-250.5f, -5.1409655f, -48.28f)},
            {"place_peacemaker_008_2_N2", new Vector3(-280.55005f, -4.78f, -41.309998f)},
            {"place_peacemaker_008_4_N1", new Vector3(-336.54504f, 0.145f, -76.42799f)},
            {"place_peacemaker_008_4_N2", new Vector3(-171.16296f, 0.14f, -75.51401f)},
            {"place_peacemaker_001", new Vector3(-182.04004f, -63.725f, 459.84998f)},
            {"place_peacemaker_003_N1", new Vector3(-153.07996f, -17.05f, -280.18f)},
            {"place_peacemaker_003_N2", new Vector3(378.74f, -54.375f, 166.85999f)},
            {"place_peacemaker_003_N3", new Vector3(-349.68005f, -39.864f, 185.87f)},
            {"place_peacemaker_004_N1", new Vector3(-717.06006f, -42.896f, 225.56f)},
            {"place_peacemaker_004_N2", new Vector3(-57.369995f, -19.38f, -310.29f)},
            {"place_peacemaker_005_N1", new Vector3(-234.48999f, -3.47f, -164.42f)},
            {"place_peacemaker_005_N2", new Vector3(-596.26f, -58.53f, 475.53003f)},
            {"place_peacemaker_007_1_N1", new Vector3(287.0691f, -49.353f, -42.326996f)},
            {"place_peacemaker_009_2", new Vector3(-336.97498f, -2.729f, -88.08501f)},
            {"place_peacemaker_009_3_N1", new Vector3(-149.87402f, -6.08f, -77.004f)},
            {"place_peacemaker_010_2", new Vector3(235.56006f, -64.464f, 442.02002f)},
            {"place_peacemaker_010_3", new Vector3(72.910034f, -59.673073f, 348.72998f)},
            {"place_SIGNAL_01_1", new Vector3(-230.40002f, 8.35f, -93.619995f)},
            {"place_SIGNAL_01_2", new Vector3(-483.31006f, -25.762f, 253.65997f)},
            {"place_SIGNAL_03_1", new Vector3(-483.81006f, -24.47f, 248.83002f)},
            {"place_SIGNAL_03_2", new Vector3(-230.55005f, 8.32f, -92.39f)},
            {"place_SIGNAL_03_3", new Vector3(-708.72f, -26.21f, 90.59f)},
            {"place_meh_sanitar_room", new Vector3(-322.833f, -2.7529984f, -77.53696f)},
            {"huntsman_024_1", new Vector3(405.93994f, -51.93f, -44.5f)},
            {"huntsman_024_2", new Vector3(382.93994f, -51.93f, -125.899994f)},
            {"huntsman_024_3", new Vector3(287.1399f, -49.2f, -46.320007f)},
            {"huntsman_026", new Vector3(-229.06006f, 3.285f, -88.856995f)},
            {"place_SALE_03_AVOKADO", new Vector3(-33.16f, 28.631f, 25.81f)},
            {"place_SALE_03_KOSTIN", new Vector3(-24.67f, 28.62f, -103.52f)},
            {"place_SALE_03_TREND", new Vector3(64.17f, 28.07f, -155.4f)},
            {"place_SALE_03_DINO", new Vector3(94.39f, 28.16f, -120.64f)},
            {"place_SALE_03_TOPBRAND", new Vector3(94.2f, 28.2f, 10.22f)},
            {"place_WARBLOOD_04_1", new Vector3(-208.36f, 22.84f, -74.42f)},
            {"place_WARBLOOD_04_2", new Vector3(274.29f, 22.85f, 14.53f)},
            {"place_WARBLOOD_04_3", new Vector3(-172.62f, 22.807f, -359.48f)},
            {"place_merch_21_1", new Vector3(109.86798f, 22.33f, 288.768f)},
            {"place_merch_21_2", new Vector3(17.557037f, 22.834f, -25.496002f)},
            {"place_merch_21_3", new Vector3(-49.76779f, 22.854f, 59.03575f)},
        };


bhehe6813 15th August 2021 08:07 PM

And here's marker name to objective name:

Code:

        public static Dictionary<string, string> QuestMarkerNameToSimpleNameMap = new Dictionary<string, string>() {
            { "place_SALE_03_AVOKADO", "Avokado" },
            { "place_SALE_03_KOSTIN", "Kostin" },
            { "place_SALE_03_TREND", "Trend" },
            { "place_SALE_03_DINO", "Dino" },
            { "place_merch_21_1", "Minibus 1" },
            { "place_merch_21_2", "Minibus 2" },
            { "place_merch_21_3", "Minibus 3" },
            { "place_WARBLOOD_04_1", "Tank 1" },
            { "place_WARBLOOD_04_2", "Tank 2" },
            { "place_WARBLOOD_04_3", "Tank 3" },
            { "huntsman_024_1", "Chairman House" },
            { "huntsman_024_2", "Fisherman House" },
            { "huntsman_024_3", "Priest House" },
            { "huntsman_026", "Bay View Room" },
            { "place_meh_sanitar_room", "Sanitar's Office" },
            { "place_SIGNAL_01_1", "1st Signal" },
            { "place_SIGNAL_01_2", "2nd Signal" },
            { "place_SIGNAL_03_1", "Jammer 1" },
            { "place_SIGNAL_03_2", "Jammer 2" },
            { "place_SIGNAL_03_3", "Jammer 3" },
            { "place_peacemaker_010_3", "Artyom's Car" },
            { "place_peacemaker_010_2", "Fisher's Dwelling" },
            { "place_peacemaker_009_3_N1", "Terragroup Cargo" },
            { "place_peacemaker_009_2", "Resevoir Room" },
            { "place_peacemaker_007_1_N1", "Missing Informant" },
            { "place_peacemaker_005_N2", "2nd Truck" },
            { "place_peacemaker_005_N1", "1st Truck" },
            { "place_peacemaker_004_N2", "2nd UAV" },
            { "place_peacemaker_004_N1", "1st UAV" },
            { "place_peacemaker_003_N3", "Tank 3" },
            { "place_peacemaker_003_N2", "Tank 2" },
            { "place_peacemaker_003_N1", "Tank 1" },
            { "place_peacemaker_001", "Secret Spot" },
            { "place_peacemaker_008_4_N2", "Left Wing Generator" },
            { "place_peacemaker_008_4_N1", "Right Wing Generator" },
            { "place_peacemaker_008_2_N2", "Safe Road" },
            { "place_peacemaker_008_2_N1", "Helicopter" },
            { "skier_022_area_1", "Medical 1" },
            { "skier_022_area_2", "Medical 2" },
            { "skier_022_area_3", "Medical 3" },
            { "ter_013_area_3", "Ambulance 3" },
            { "ter_013_area_2", "Ambulance 2" },
            { "ter_013_area_1", "Ambulance 1" },
            { "ter_023_area_3_1", "Pier Group" },
            { "ter_023_area_2_1", "Cottage Group" },
            { "ter_023_area_1_1", "HR Group" },
            { "prapor_022_area_3", "Trading 3" },
            { "prapor_022_area_2", "Trading 2" },
            { "prapor_022_area_1", "Trading 1" },
            { "place_SADOVOD_03", "Confiscate Warehouse" },
            { "place_peacemaker_002_N3", "Tigr 3" },
            { "place_peacemaker_002_N2", "Tigr 2" },
            { "place_peacemaker_002_N1", "Tigr 1" },
            { "vremyan_case", "Messenger Item" },
            { "room114", "Room 114" },
            { "room206_water", "Room 206" },
            { "fuel1", "Fuel 1" },
            { "fuel2", "Fuel 2" },
            { "fuel3", "Fuel 3" },
            { "fuel4", "Fuel 4" },
            { "gazel", "Transport" },
            { "room214", "Room 214" },
            { "bar_fuel3_1", "Fuel Stash 1" },
            { "bar_fuel3_2", "Fuel Stash 2" },
            { "bar_fuel3_3", "Fuel Stash 3" },
            { "pr_scout_col", "Convoy" },
            { "pr_scout_base", "USEC Camp" },
            { "ter_015_area_1", "Med Car" },
            { "bunker2", "Bunker" },
            { "huntsman_029", "Food Storage" },
            { "prapor_025_area_5", "Hermetic Door" },
            { "prapor_025_area_4", "White Pawn" },
            { "prapor_025_area_3", "Black Pawn" },
            { "prapor_025_area_2", "Black Bishop" },
            { "prapor_025_area_1", "White Bishop" },
            { "prapor_024_area_1", "Control Room" },
            { "prapor_024_area_2", "Underground Bunker" },
            { "place_pacemaker_SCOUT_03", "Exit 3" },
            { "place_pacemaker_SCOUT_02", "Exit 2" },
            { "place_pacemaker_SCOUT_01", "Exit 1" },
        };


Anyone have weapon name to simple weapon name? (i.e. instead of izmash it just says ak74)

scatterhvh 16th August 2021 04:37 AM

ty good share

TrueWeedle 16th August 2021 07:04 AM

was wondering what some good options would be for rendering internally

told ImGui sigged
Engine Rendering pain in the ass
Discord present hook + d2d maybe?

any other information/suggestions would be appriciated

hollow 16th August 2021 09:47 AM

Quote:

Originally Posted by TrueWeedle (Post 3217120)
told ImGui sigged

take a look at one of the be dump threads, find the imgui sig and change the related part quite easily

TrueWeedle 16th August 2021 03:06 PM

Quote:

Originally Posted by hollow (Post 3217199)
take a look at one of the be dump threads, find the imgui sig and change the related part quite easily

thank you

hollow 16th August 2021 04:45 PM

does anyone else have the issue of fpscamera viewmatrix.. "shivering"? any solution to this? you barely notice it but still, incredibly annoying.

ecthirune 16th August 2021 10:14 PM

Quote:

Originally Posted by hollow (Post 3217460)
does anyone else have the issue of fpscamera viewmatrix.. "shivering"? any solution to this? you barely notice it but still, incredibly annoying.

change antialiasyng method(im not jokin)

hollow 16th August 2021 10:23 PM

Quote:

Originally Posted by ecthirune (Post 3217741)
change antialiasyng method(im not jokin)

omfg
https://i.imgur.com/Stail63.jpg

TrueWeedle 16th August 2021 11:55 PM

Quote:

Originally Posted by ecthirune (Post 3217741)
change antialiasyng method(im not jokin)

smartest human on the planet in this forum

pinefin 17th August 2021 12:42 AM

Quote:

Originally Posted by TrueWeedle (Post 3217810)
smartest human on the planet in this forum

i thought everyone knew this lol :Flush:

Quote:

Originally Posted by TrueWeedle (Post 3217120)
was wondering what some good options would be for rendering internally

told ImGui sigged
Engine Rendering pain in the ass
Discord present hook + d2d maybe?

any other information/suggestions would be appriciated

hook the games present. its infinitely better then discord present.

dont ever consider using d2d or engine renderer (only engine renderer if mono internal).

im using imgui perfectly fine.

TrueWeedle 17th August 2021 03:09 AM

Quote:

Originally Posted by pinefin (Post 3217846)
i thought everyone knew this lol :Flush:



hook the games present. its infinitely better then discord present.

dont ever consider using d2d or engine renderer (only engine renderer if mono internal).

im using imgui perfectly fine.

thanks for the information, and can someone tell me which class ammountion count/name is in?

pinefin 17th August 2021 04:08 AM

hey does anyone know why when i call Internal_RaycastTest_Injected (for vischeck purposes, not messing with anything regarded to projectiles or anything) all my bullets go through any humanoid? they have impacts on objects but not humanoid?

TJ888 17th August 2021 10:30 AM

Quote:

Originally Posted by pinefin (Post 3217964)
hey does anyone know why when i call Internal_RaycastTest_Injected (for vischeck purposes, not messing with anything regarded to projectiles or anything) all my bullets go through any humanoid? they have impacts on objects but not humanoid?

You cannot call it from Present (either the games Present or 3rd party overlays) or your own thread. You need to call it from the games main thread, otherwise what you described happens.

Find a game function that is called once every frame, hook it and do your logic in there. (I might recommend spreading out your Raycasting across numerous frames, such as doing 10-20% of players each frame and caching the result. Otherwise, you will take a bit of an FPS hit if you're doing a tonne of Raycasts each frame for all players and their bones etc).

Quote:

Originally Posted by hollow (Post 3217748)
Quote:

Originally Posted by ecthirune (Post 3217741)
change antialiasyng method(im not jokin)

omfg

Or if you prefer to keep TAA antialiasing on instead of FXAA or off, then turn on Z-Blur and it fixes it as well.
(All Z-Blur does is a slight DoF effect on the butt of your gun by slightly blurring the rear of it. But it doesn't change anything else)

JudischerHund 17th August 2021 02:38 PM

Quote:

Originally Posted by hollow (Post 3217199)
take a look at one of the be dump threads, find the imgui sig and change the related part quite easily

I did just that but I still get banned on EFT, without ImGui I don't get banned. On other BE games I can use ImGui just fine, I encrypted vertex shader buffer, rebuilt my own IAGetState, GetSiccorsRect etc funcs but still getting bans with ImGui

6GbPNAUaFZV 17th August 2021 03:20 PM

hello, did Registeration time change?
the offsets im using Player->Profile(0x458)->Info(0x28)->RegisterationDate(0x54)
thx
EDIT:
when im debugging it its not normal, for scavs its like 956 / 954

ecthirune 17th August 2021 04:11 PM

Quote:

Originally Posted by 6GbPNAUaFZV (Post 3218377)
hello, did Registeration time change?
the offsets im using Player->Profile(0x458)->Info(0x28)->RegisterationDate(0x54)
thx
EDIT:
when im debugging it its not normal, for scavs its like 956 / 954

all PlayerInfo shifted to 0x8, due to additional field in the beginning.
Current struct:
Code:

struct PlayerInfo
{
        char pad_0000[24]; //0x0000
    // new field here, 0x10 OnBanChanged : System.Action<Int32>
        ULONG64 UnityEngineString_Nickname; //0x0018
        ULONG64 UnityEngineString_GroupId; //0x0020
        ULONG64 UnityEngineString_EntryPoint; //0x0028
        char pad_0030[16]; //0x0030
        ULONG64 RE_Settings; //0x0040
        char pad_0048[16]; //0x0048
        int32_t Side; //0x0058
        int32_t RegistrationDate; //0x005C
        float SavageLockTime; //0x0060
        char pad_0064[4]; //0x0064
        int32_t NicknameChangeDate; //0x0068
        bool IsStreamerModeAvailable; //0x006C
        char pad_006D[3]; //0x006D
        int32_t MemberCategory; //0x0070
        int32_t Experience; //0x0074
        char pad_0078[28]; //0x0078
}; //Size: 0x0094



All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

lolmemes123 17th August 2021 05:06 PM

anybody have the function offset for Internal_RaycastTest_Injected?

JudischerHund 17th August 2021 05:21 PM

Can anybody confirm if GOM is 0x156B698? My IDA thats rebased to 0 shows 0x156B698 but it's invalid when I read it

lolmemes123 17th August 2021 05:25 PM

Quote:

Originally Posted by JudischerHund (Post 3218480)
Can anybody confirm if GOM is 0x156B698? My IDA thats rebased to 0 shows 0x156B698 but it's invalid when I read it

0x156C698

ecthirune 17th August 2021 05:35 PM

Quote:

Originally Posted by JudischerHund (Post 3218480)
Can anybody confirm if GOM is 0x156B698? My IDA thats rebased to 0 shows 0x156B698 but it's invalid when I read it

0x156B698 is Jet's emulator gom adress (which is 0.9(?) eft version? i don't remember)

So you reading unityplayer.dll from wrong client.

edit: i just noted this as "jet" for myself, ofc official gom was same.

JudischerHund 17th August 2021 07:07 PM

Quote:

Originally Posted by ecthirune (Post 3218497)
0x156B698 is Jet's emulator gom adress (which is 0.9(?) eft version? i don't remember)

So you reading unityplayer.dll from wrong client.

edit: i just noted this as "jet" for myself, ofc official gom was same.

Rebasing IDA to complete 0 is retarded not sure why it subtracts an extra 0x1000 from everything. Thanks tho I've figured it out, did Item profile change by any chance?

TrueWeedle 17th August 2021 07:55 PM

Quote:

Originally Posted by lolmemes123 (Post 3218467)
anybody have the function offset for Internal_RaycastTest_Injected?

0x401240

ecthirune 17th August 2021 08:59 PM

Quote:

Originally Posted by JudischerHund (Post 3218578)
Rebasing IDA to complete 0 is retarded not sure why it subtracts an extra 0x1000 from everything. Thanks tho I've figured it out, did Item profile change by any chance?

read forum plz, before asking questions.
https://www.unknowncheats.me/forum/3...-post4860.html
Escape from Tarkov Reversal, Structs and Offsets

hollow 17th August 2021 10:18 PM

haven't seen this here yet so:
extremely sad that legit players have to beg bsg for a feature they've already made, yet is only accessible by cheaters.

preloader ui + 0x100 = true (or PreloaderUI.SetStreamMode(true)) activates stream mode - a feature that disables server id printing in bottom left corner, as well as ping and packet loss warnings.

sorry nikita, no more manual bans because of that :)

ZeusLord 17th August 2021 10:20 PM

Quote:

Originally Posted by hollow (Post 3218738)
haven't seen this here yet so:
extremely sad that legit players have to beg bsg for a feature they've already made, yet is only accessible by cheaters.

preloader ui + 0x100 = true (or PreloaderUI.SetStreamMode(true)) activates stream mode - a feature that disables server id printing in bottom left corner.

sorry nikita, no more manual bans because of that :)


Nice find. I believe it�s accessible only through application? I find it stupid on their part that you have to apply to enable streamer mode.

hollow 17th August 2021 10:34 PM

Quote:

Originally Posted by ZeusLord (Post 3218740)
Nice find. I believe it’s accessible only through application? I find it stupid on their part that you have to apply to enable streamer mode.

seems like you indeed need to apply
https://i.imgur.com/7I1vVQA.png

just shows how greedy bsg is tbh

now i wonder if IsStreamerModeAvailable is networked lmao

TrueWeedle 17th August 2021 10:47 PM

anyone know where Ammunition count is? ive looked in Unispect and found it in FirearmController.GClass1008 but when I go into ProcuduralWeaponAnimation -> firearmController I see no sign of anything like that.

hollow 17th August 2021 10:56 PM

Quote:

Originally Posted by TrueWeedle (Post 3218761)
anyone know where Ammunition count is? ive looked in Unispect and found it in FirearmController.GClass1008 but when I go into ProcuduralWeaponAnimation -> firearmController I see no sign of anything like that.

i gotchu:
if you're internal, it's as easy as Weapon.GetCurrentMagazine.Count.

if you're external, however, it's a bit harder:
get magazine slot by reading _magSlotCache, then read the contained item, which will be the magazine item itself. go to Cartridges, _items will be a list of different types of ammo in the magazine, MaxCount is the maximum amount the magazine fits. iterate through the list of items, read StackObjectsCount of each and add to the counter.

pinefin 17th August 2021 11:24 PM

Quote:

Originally Posted by TJ888 (Post 3218157)
You cannot call it from Present (either the games Present or 3rd party overlays) or your own thread. You need to call it from the games main thread, otherwise what you described happens.

Find a game function that is called once every frame, hook it and do your logic in there. (I might recommend spreading out your Raycasting across numerous frames, such as doing 10-20% of players each frame and caching the result. Otherwise, you will take a bit of an FPS hit if you're doing a tonne of Raycasts each frame for all players and their bones etc).


Or if you prefer to keep TAA antialiasing on instead of FXAA or off, then turn on Z-Blur and it fixes it as well.
(All Z-Blur does is a slight DoF effect on the butt of your gun by slightly blurring the rear of it. But it doesn't change anything else)

yea i knew it had something to do with the thread

virii72 17th August 2021 11:39 PM

Can anyone help me with the location of farClipPlane for scopes? Trying trying to extend the render distance on thermal scores but I'm not find anything on cameraEntity or the camera components. Am I looking in the wrong place?

pinefin 17th August 2021 11:59 PM

Quote:

Originally Posted by virii72 (Post 3218796)
Can anyone help me with the location of farClipPlane for scopes? Trying trying to extend the render distance on thermal scores but I'm not find anything on cameraEntity or the camera components. Am I looking in the wrong place?

im confused
are you struggling to find the optic sight?
are you trying to find the optic camera?
are you trying to find the farClipPlane var?

virii72 18th August 2021 12:08 AM

Quote:

Originally Posted by pinefin (Post 3218810)
im confused
are you struggling to find the optic sight?
are you trying to find the optic camera?
are you trying to find the farClipPlane var?

Just trying to find the offset for farClipPlane so I can have Reap/Flir render past 200meters.

I have everything else. I just want to get Reap/Flir to render things past 200meters. Already adjusting thermal colors, IsNoisy, IsGlitch, etc... I'm just not seeing any float values while looking at cameraEntity for "BaseOpticCamera(Clone)" that could be the render distance.

pinefin 18th August 2021 01:58 AM

Quote:

Originally Posted by virii72 (Post 3218817)
Just trying to find the offset for farClipPlane so I can have Reap/Flir render past 200meters.

I have everything else. I just want to get Reap/Flir to render things past 200meters. Already adjusting thermal colors, IsNoisy, IsGlitch, etc... I'm just not seeing any float values while looking at cameraEntity for "BaseOpticCamera(Clone)" that could be the render distance.

im pretty sure you just get the UnityEngine.Camera and then set farClipPlane from that. correct if wrong, never messed with this

virii72 18th August 2021 02:11 AM

Quote:

Originally Posted by pinefin (Post 3218872)
im pretty sure you just get the UnityEngine.Camera and then set farClipPlane from that. correct if wrong, never messed with this

That's what I figured also, but I'm not seeing any values (via external methods) that would match. I'm using 'cameraEntity + 0x158' to adjust FOV (giving all scopes variable zoom via mouse wheel). Was hoping someone else might have already figured it out :)

lolmemes123 18th August 2021 02:33 AM

Always returns false. Any clue?

Code:

    bool visible(vec3_t src,vec3_t dst) {
        vec3_t direction = dst - src;
        float distance = direction.magnitude() * 0.9f;

        ray r;
        r.origin = src;
        r.direction = direction;

        uint32_t scene_handle;
        return raycast(&scene_handle, &r, &distance, 0x0000180, 0);
    }

typedef bool(__fastcall* raycast_fn)(uint32_t* scene, ray* Position, float* distance, unsigned int DefaultRaycastLayers, int QueryTriggerInteraction);

raycast = (raycast_fn)(game_vars::unity_dll + 0x401240);


Razchek 18th August 2021 04:09 AM

Quote:

Originally Posted by virii72 (Post 3218875)
That's what I figured also, but I'm not seeing any values (via external methods) that would match. I'm using 'cameraEntity + 0x158' to adjust FOV (giving all scopes variable zoom via mouse wheel). Was hoping someone else might have already figured it out :)

Camera.m_State.m_FarClip (Camera_Set_Custom_PropFarClipPlane)
Code:

camera + 0x440
Code:

00000000 Camera          struc ; (sizeof=0x8D8, align=0x8, copyof_922)
00000000 baseclass_0    Behaviour ?
00000040 m_State        Camera::CopiableState ?
00000520 m_IsRendering  db ?
00000521 m_IsRenderingStereo db ?
00000522 m_IsStandaloneCustomRendering db ?
00000523 m_IsCulling    db ?
00000524 m_IsNonJitteredProjMatrixSet db ?
00000525 m_IsStereoNonJitteredProjMatrixCopied db 2 dup(?)
00000527 m_UseJitteredProjMatrixForTransparent db ?
00000528 m_BuffersSetFromScripts db ?
00000529                db ? ; undefined
0000052A                db ? ; undefined
0000052B                db ? ; undefined
0000052C                db ? ; undefined
0000052D                db ? ; undefined
0000052E                db ? ; undefined
0000052F                db ? ; undefined
00000530 m_RenderLoop    dq ?                    ; offset
00000538 m_ShadowCache  dq ?                    ; offset
00000540 m_RenderEvents  RenderEventsContext ?
00000558 m_CurrentTargetTexture dq ?            ; offset
00000560 m_DepthTexture  dq ?                    ; offset
00000568 m_DepthNormalsTexture dq ?              ; offset
00000570 m_ODSWorldTexture dq ?                  ; offset
00000578 m_RenderPlaneCallbacks dynamic_array<Camera::RenderPlaneCallbackItem,0> ?
00000598 m_PrevFrameViewProj Matrix4x4f ?
000005D8 m_LastUsedViewProj Matrix4x4f ?
00000618 m_StereoPrevFrameViewProj Matrix4x4f 2 dup(?)
00000698 m_StereoLastUsedViewProj Matrix4x4f 2 dup(?)
00000718 m_NonJitteredProjMatrix Matrix4x4f ?
00000758 m_StereoNonJitteredProjMatrix Matrix4x4f 2 dup(?)
000007D8 m_VRIgnoreImplicitCameraUpdate db ?
000007D9                db ? ; undefined
000007DA                db ? ; undefined
000007DB                db ? ; undefined
000007DC m_PrevMatrixStateForStereoSRP Camera::MatrixState ?
000008A8 m_PrevNormalizedViewportRectForStereoSRP RectT<float> ?
000008B8 m_CurrentRenderFlagsForStereoSRP dd ?  ; enum Camera::RenderFlag
000008BC                db ? ; undefined
000008BD                db ? ; undefined
000008BE                db ? ; undefined
000008BF                db ? ; undefined
000008C0 m_ODSWorldShader dq ?                  ; offset
000008C8 m_gateFittedFOV dd ?
000008CC m_gateFittedLensShift Vector2f ?
000008D4                db ? ; undefined
000008D5                db ? ; undefined
000008D6                db ? ; undefined
000008D7                db ? ; undefined
000008D8 Camera          ends

~~~~~~~~~~~~~~~~

00000000 Camera::CopiableState struc ; (sizeof=0x4E0, align=0x8, copyof_1957)
00000000                                        ; XREF: Camera/r
00000000 m_SensorSize    Vector2f ?
00000008 m_LensShift    Vector2f ?
00000010 m_FocalLength  dd ?
00000014 m_GateFitMode  dd ?                    ; enum Camera::GateFitMode
00000018 m_WorldToCameraMatrix Matrix4x4f ?
00000058 m_ProjectionMatrix Matrix4x4f ?
00000098 m_WorldToClipMatrix Matrix4x4f ?
000000D8 m_SkyboxProjectionMatrix Matrix4x4f ?
00000118 m_FieldOfView  dd ?
0000011C m_FieldOfViewBeforeEnablingVRMode dd ?
00000120 m_StereoViewMatrices Matrix4x4f 2 dup(?)
000001A0 m_StereoProjectionMatrices Matrix4x4f 2 dup(?)
00000220 m_StereoWorldToClipMatrices Matrix4x4f 2 dup(?)
000002A0 m_CullingMatrix Matrix4x4f ?
000002E0 m_TargetTexture PPtr<RenderTexture> ?
000002E4                db ? ; undefined
000002E5                db ? ; undefined
000002E6                db ? ; undefined
000002E7                db ? ; undefined
000002E8 m_TargetColorBuffer ObjectHandle<RenderSurface_Tag,RenderSurfaceBase *> 8 dup(?)
00000328 m_TargetColorBufferCount dd ?
0000032C                db ? ; undefined
0000032D                db ? ; undefined
0000032E                db ? ; undefined
0000032F                db ? ; undefined
00000330 m_TargetDepthBuffer ObjectHandle<RenderSurface_Tag,RenderSurfaceBase *> ?
00000338 m_TargetBuffersOriginatedFrom dq 8 dup(?) ; offset
00000378 m_TargetDisplay dd ?
0000037C m_TargetEye    dd ?                    ; enum TargetEyeMask
00000380 m_ReplacementShader PPtr<Shader> ?
00000384                db ? ; undefined
00000385                db ? ; undefined
00000386                db ? ; undefined
00000387                db ? ; undefined
00000388 m_ReplacementTag core::basic_string<char,core::StringStorageDefault<char> > ?
000003B0 m_ClearFlags    dd ?
000003B4 m_BackGroundColor ColorRGBAf ?
000003C4 m_NormalizedViewPortRect RectT<float> ?
000003D4 m_CullingMask  BitField ?
000003D8 m_EventMask    BitField ?
000003DC m_Depth        dd ?
000003E0 m_Velocity      Vector3f ?
000003EC m_LastPosition  Vector3f ?
000003F8 m_OrthographicSize dd ?
000003FC m_NearClip      dd ?
00000400 m_FarClip      dd ?
00000404 m_RenderingPath dd ?
00000408 m_LayerCullDistances dd 32 dup(?)
00000488 m_Aspect        dd ?
0000048C m_OpaqueSortMode dd ?                  ; enum Camera::OpaqueSortMode
00000490 m_TransparencySortMode dd ?            ; enum Camera::TransparencySortMode
00000494 m_TransparencySortAxis Vector3f ?
000004A0 m_ImplicitTransparencySortSettings db ?
000004A1                db ? ; undefined
000004A2                db ? ; undefined
000004A3                db ? ; undefined
000004A4 m_DepthTextureMode dd ?
000004A8 m_DirtyProjectionMatrix db ?
000004A9 m_DirtySkyboxProjectionMatrix db ?
000004AA m_ImplicitWorldToCameraMatrix db ?
000004AB                db ? ; undefined
000004AC m_ProjectionMatrixMode dd ?            ; enum Camera::ProjectionMatrixMode
000004B0 m_ImplicitSkyboxProjectionMatrix db ?
000004B1                db ? ; undefined
000004B2                db ? ; undefined
000004B3                db ? ; undefined
000004B4 m_StereoViewMatrixMode dd ?            ; enum Camera::StereoViewMatrixMode
000004B8 m_ImplicitStereoProjectionMatrices db ?
000004B9 m_ImplicitCullingMatrix db ?
000004BA m_ImplicitAspect db ?
000004BB m_Orthographic  db ?
000004BC m_OcclusionCulling db ?
000004BD m_LayerCullSpherical db ?
000004BE m_AllowHDR      db ?
000004BF m_UsingHDR      db ?
000004C0 m_AllowMSAA    db ?
000004C1 m_AllowDynamicResolution db ?
000004C2 m_ForceIntoRT  db ?
000004C3 m_ClearStencilAfterLightingPass db ?
000004C4 m_StereoSeparation dd ?
000004C8 m_StereoConvergence dd ?
000004CC m_StereoFrameCounter dd ?
000004D0 m_CameraType    dd ?                    ; enum CameraType
000004D4                db ? ; undefined
000004D5                db ? ; undefined
000004D6                db ? ; undefined
000004D7                db ? ; undefined
000004D8 m_Scene        dq ?                    ; offset
000004E0 Camera::CopiableState ends

That should be all you need (assuming it's just the farClip that's culling distant objects, which it probably is lol).


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

bhehe6813 18th August 2021 07:43 AM

Quote:

Originally Posted by hollow (Post 3218765)
i gotchu:
if you're internal, it's as easy as Weapon.GetCurrentMagazine.Count.

if you're external, however, it's a bit harder:
get magazine slot by reading _magSlotCache, then read the contained item, which will be the magazine item itself. go to Cartridges, _items will be a list of different types of ammo in the magazine, MaxCount is the maximum amount the magazine fits. iterate through the list of items, read StackObjectsCount of each and add to the counter.

You don't have to use magSlotCache, I imagine you picked that like I picked it because it's just easier to use. Sometimes it doesn't work though, but you can usually get it to be cached by reloading again.

But yeah, it's a bit more of a pain in the ass. Here's a copy paste for the people that need it.

MagSlotCache is type slot. You might be used to slots with loot.

Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct Slot
        {
            [FieldOffset(0x38)]
            public IntPtr pContainedItem;
            [FieldOffset(0x40)]
            public IntPtr pParentItem;

            public Classes.InventoryLogicItem ContainedItem => M.Read<Classes.InventoryLogicItem>(this.pContainedItem);

            public Classes.InventoryLogicItem ParentItem => M.Read<Classes.InventoryLogicItem>(this.pParentItem);
        }

That's the gist of them. You go inventorylogicweapon->Slot->Magazine (base class is inventorylogicitem). Then, in the magazine, there is another new object type that you could possibly be familiar with too. It's called a StackSlot. However, you don't need to understand the object too much.

Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct Magazine
        {
            [FieldOffset(0x80)]
            public IntPtr pCartridgesStackSlot;


            public StackSlot Catridges => M.Read<StackSlot>(this.pCartridgesStackSlot);

            public int Count => this.Catridges.Count;
        }

Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct StackSlot
        {
            [FieldOffset(0x10)]
            public IntPtr pList; // normal List object

            public int Count {
                get {
                    List list = M.Read<List>(this.pList);
                    if (list.itemCount == 0) { return 0; }
                    byte[] itemPtrData = M.Read(list.listBase + 0x20, list.itemCount * 0x8);
                    int total = 0;
                    for (int i = 0x0; i < itemPtrData.Length; i += 0x8) {
                        byte[] ptrBuffer = new byte[8];
                        if (i + 0x8 > itemPtrData.Length) {
                            continue;
                        }

                        Array.Copy(itemPtrData, i, ptrBuffer, 0, 0x8);
                        IntPtr itemPtr = MemoryManager.GetStructure<IntPtr>(ptrBuffer);
                        if (!itemPtr.IsValid()) {
                            continue;
                        }

                        InventoryLogicItem item = M.Read<InventoryLogicItem>(itemPtr);
                        total += item.StackObjectsCount; // 0x5C
                    }
                    return total;
                }
            }
        }


hollow 18th August 2021 11:41 AM

Quote:

Originally Posted by bhehe6813 (Post 3219043)
Sometimes it doesn't work though, but you can usually get it to be cached by reloading again.

i don’t think i’ve ever had any issues with using it - my ammo counter always works flawlessly. if you have issues i believe you don’t even need to reload - just check ammo in current mag and the field will get populated.

you’re right about me picking it because it’s much easier, though.

pinefin 18th August 2021 10:07 PM

Quote:

Originally Posted by bhehe6813 (Post 3219043)
~snip~

just like hollow said, it works perfectly

this is all im doing
Code:

int max_ammo = mono::get_magazine_max_count(magazine);
int current_ammo = mono::get_magazine_count(magazine);


TrueWeedle 18th August 2021 10:21 PM

Quote:

Originally Posted by JudischerHund (Post 3218480)
Can anybody confirm if GOM is 0x156B698? My IDA thats rebased to 0 shows 0x156B698 but it's invalid when I read it

1. Open Ida
2. Search for sequence of bytes(48 8B 15 ? ? ? ? 66 ? ? ? 75 04)
3. Profit.

virii72 19th August 2021 03:06 AM

Quote:

Originally Posted by Razchek (Post 3218920)
Camera.m_State.m_FarClip (Camera_Set_Custom_PropFarClipPlane)
Code:

camera + 0x440
Code:

00000000 Camera          struc ; (sizeof=0x8D8, align=0x8, copyof_922)
00000000 baseclass_0    Behaviour ?
00000040 m_State        Camera::CopiableState ?
00000520 m_IsRendering  db ?
00000521 m_IsRenderingStereo db ?
00000522 m_IsStandaloneCustomRendering db ?
00000523 m_IsCulling    db ?
00000524 m_IsNonJitteredProjMatrixSet db ?
00000525 m_IsStereoNonJitteredProjMatrixCopied db 2 dup(?)
00000527 m_UseJitteredProjMatrixForTransparent db ?
00000528 m_BuffersSetFromScripts db ?
00000529                db ? ; undefined
0000052A                db ? ; undefined
0000052B                db ? ; undefined
0000052C                db ? ; undefined
0000052D                db ? ; undefined
0000052E                db ? ; undefined
0000052F                db ? ; undefined
00000530 m_RenderLoop    dq ?                    ; offset
00000538 m_ShadowCache  dq ?                    ; offset
00000540 m_RenderEvents  RenderEventsContext ?
00000558 m_CurrentTargetTexture dq ?            ; offset
00000560 m_DepthTexture  dq ?                    ; offset
00000568 m_DepthNormalsTexture dq ?              ; offset
00000570 m_ODSWorldTexture dq ?                  ; offset
00000578 m_RenderPlaneCallbacks dynamic_array<Camera::RenderPlaneCallbackItem,0> ?
00000598 m_PrevFrameViewProj Matrix4x4f ?
000005D8 m_LastUsedViewProj Matrix4x4f ?
00000618 m_StereoPrevFrameViewProj Matrix4x4f 2 dup(?)
00000698 m_StereoLastUsedViewProj Matrix4x4f 2 dup(?)
00000718 m_NonJitteredProjMatrix Matrix4x4f ?
00000758 m_StereoNonJitteredProjMatrix Matrix4x4f 2 dup(?)
000007D8 m_VRIgnoreImplicitCameraUpdate db ?
000007D9                db ? ; undefined
000007DA                db ? ; undefined
000007DB                db ? ; undefined
000007DC m_PrevMatrixStateForStereoSRP Camera::MatrixState ?
000008A8 m_PrevNormalizedViewportRectForStereoSRP RectT<float> ?
000008B8 m_CurrentRenderFlagsForStereoSRP dd ?  ; enum Camera::RenderFlag
000008BC                db ? ; undefined
000008BD                db ? ; undefined
000008BE                db ? ; undefined
000008BF                db ? ; undefined
000008C0 m_ODSWorldShader dq ?                  ; offset
000008C8 m_gateFittedFOV dd ?
000008CC m_gateFittedLensShift Vector2f ?
000008D4                db ? ; undefined
000008D5                db ? ; undefined
000008D6                db ? ; undefined
000008D7                db ? ; undefined
000008D8 Camera          ends

~~~~~~~~~~~~~~~~

00000000 Camera::CopiableState struc ; (sizeof=0x4E0, align=0x8, copyof_1957)
00000000                                        ; XREF: Camera/r
00000000 m_SensorSize    Vector2f ?
00000008 m_LensShift    Vector2f ?
00000010 m_FocalLength  dd ?
00000014 m_GateFitMode  dd ?                    ; enum Camera::GateFitMode
00000018 m_WorldToCameraMatrix Matrix4x4f ?
00000058 m_ProjectionMatrix Matrix4x4f ?
00000098 m_WorldToClipMatrix Matrix4x4f ?
000000D8 m_SkyboxProjectionMatrix Matrix4x4f ?
00000118 m_FieldOfView  dd ?
0000011C m_FieldOfViewBeforeEnablingVRMode dd ?
00000120 m_StereoViewMatrices Matrix4x4f 2 dup(?)
000001A0 m_StereoProjectionMatrices Matrix4x4f 2 dup(?)
00000220 m_StereoWorldToClipMatrices Matrix4x4f 2 dup(?)
000002A0 m_CullingMatrix Matrix4x4f ?
000002E0 m_TargetTexture PPtr<RenderTexture> ?
000002E4                db ? ; undefined
000002E5                db ? ; undefined
000002E6                db ? ; undefined
000002E7                db ? ; undefined
000002E8 m_TargetColorBuffer ObjectHandle<RenderSurface_Tag,RenderSurfaceBase *> 8 dup(?)
00000328 m_TargetColorBufferCount dd ?
0000032C                db ? ; undefined
0000032D                db ? ; undefined
0000032E                db ? ; undefined
0000032F                db ? ; undefined
00000330 m_TargetDepthBuffer ObjectHandle<RenderSurface_Tag,RenderSurfaceBase *> ?
00000338 m_TargetBuffersOriginatedFrom dq 8 dup(?) ; offset
00000378 m_TargetDisplay dd ?
0000037C m_TargetEye    dd ?                    ; enum TargetEyeMask
00000380 m_ReplacementShader PPtr<Shader> ?
00000384                db ? ; undefined
00000385                db ? ; undefined
00000386                db ? ; undefined
00000387                db ? ; undefined
00000388 m_ReplacementTag core::basic_string<char,core::StringStorageDefault<char> > ?
000003B0 m_ClearFlags    dd ?
000003B4 m_BackGroundColor ColorRGBAf ?
000003C4 m_NormalizedViewPortRect RectT<float> ?
000003D4 m_CullingMask  BitField ?
000003D8 m_EventMask    BitField ?
000003DC m_Depth        dd ?
000003E0 m_Velocity      Vector3f ?
000003EC m_LastPosition  Vector3f ?
000003F8 m_OrthographicSize dd ?
000003FC m_NearClip      dd ?
00000400 m_FarClip      dd ?
00000404 m_RenderingPath dd ?
00000408 m_LayerCullDistances dd 32 dup(?)
00000488 m_Aspect        dd ?
0000048C m_OpaqueSortMode dd ?                  ; enum Camera::OpaqueSortMode
00000490 m_TransparencySortMode dd ?            ; enum Camera::TransparencySortMode
00000494 m_TransparencySortAxis Vector3f ?
000004A0 m_ImplicitTransparencySortSettings db ?
000004A1                db ? ; undefined
000004A2                db ? ; undefined
000004A3                db ? ; undefined
000004A4 m_DepthTextureMode dd ?
000004A8 m_DirtyProjectionMatrix db ?
000004A9 m_DirtySkyboxProjectionMatrix db ?
000004AA m_ImplicitWorldToCameraMatrix db ?
000004AB                db ? ; undefined
000004AC m_ProjectionMatrixMode dd ?            ; enum Camera::ProjectionMatrixMode
000004B0 m_ImplicitSkyboxProjectionMatrix db ?
000004B1                db ? ; undefined
000004B2                db ? ; undefined
000004B3                db ? ; undefined
000004B4 m_StereoViewMatrixMode dd ?            ; enum Camera::StereoViewMatrixMode
000004B8 m_ImplicitStereoProjectionMatrices db ?
000004B9 m_ImplicitCullingMatrix db ?
000004BA m_ImplicitAspect db ?
000004BB m_Orthographic  db ?
000004BC m_OcclusionCulling db ?
000004BD m_LayerCullSpherical db ?
000004BE m_AllowHDR      db ?
000004BF m_UsingHDR      db ?
000004C0 m_AllowMSAA    db ?
000004C1 m_AllowDynamicResolution db ?
000004C2 m_ForceIntoRT  db ?
000004C3 m_ClearStencilAfterLightingPass db ?
000004C4 m_StereoSeparation dd ?
000004C8 m_StereoConvergence dd ?
000004CC m_StereoFrameCounter dd ?
000004D0 m_CameraType    dd ?                    ; enum CameraType
000004D4                db ? ; undefined
000004D5                db ? ; undefined
000004D6                db ? ; undefined
000004D7                db ? ; undefined
000004D8 m_Scene        dq ?                    ; offset
000004E0 Camera::CopiableState ends

That should be all you need (assuming it's just the farClip that's culling distant objects, which it probably is lol).

That was it! Setting it to 1000 makes render distance match other scopes. TY.

DuOreng 19th August 2021 03:04 PM

Checked in IDA GOM seems to be 0x156B698 but when reading UnityPlayer.dll + 0x156B698 it is null any ideas?

eldev 19th August 2021 03:34 PM

Quote:

Originally Posted by DuOreng (Post 3220322)
Checked in IDA GOM seems to be 0x156B698 but when reading UnityPlayer.dll + 0x156B698 it is null any ideas?

GOM is 0x156C698

TrueWeedle 19th August 2021 06:52 PM

Quote:

Originally Posted by DuOreng (Post 3220322)
Checked in IDA GOM seems to be 0x156B698 but when reading UnityPlayer.dll + 0x156B698 it is null any ideas?

if you read a few messages above I told you how to get the GOM...

ill restate it:
1. Open Ida
2. Search for sequence of bytes(48 8B 15 ? ? ? ? 66 ? ? ? 75 04)
3. Profit.

pinefin 19th August 2021 11:43 PM

why are we still on the talk of GOM, bsg has not upgraded their unity for years. there is a search function.

(if u dont know where that is, go to the top right of the thread, you will see "Search". if you click on it it will show up a box to search whatever your heart desires.)

POFPE 20th August 2021 12:44 AM

Has BE started checking bytes for JIT codes? I've patched IsPenetrated, Deflect, ricochet Chance, Fragment Chance, etc., but it's banned in a day even though I used Spoofer. I got email.. so maybe BE ban

pinefin 20th August 2021 12:55 AM

Quote:

Originally Posted by POFPE (Post 3220791)
Has BE started checking bytes for JIT codes? I've patched IsPenetrated, Deflect, ricochet Chance, Fragment Chance, etc., but it's banned in a day even though I used Spoofer. I got email.. so maybe BE ban

ive noticed that this past week as well, but i hook instead of patching jit :thonking:

idk if they just started checking it or theyve collected information and just now started banning for it or what

^^ this may even be a really shit observation and they may have even been banning for it all along and i just havent noticed

POFPE 20th August 2021 12:57 AM

Quote:

Originally Posted by pinefin (Post 3220796)
ive noticed that this past week as well, but i hook instead of patching jit :thonking:

idk if they just started checking it or theyve collected information and just now started banning for it or what

^^ this may even be a really shit observation and they may have even been banning for it all along and i just havent noticed

Maybe.. I can't sure
Code:

OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid);
They Can Ban me with This one... But, some legit program(like process manager or other smh antiviiruses using it)

pinefin 20th August 2021 01:00 AM

Quote:

Originally Posted by POFPE (Post 3220797)
Maybe.. I can't sure
Code:

OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid);
They Can Ban me with This one... But, some legit program(like process manager or other smh antiviiruses using it)

no, im being banned for hooking (and im internal, didnt have any email bans before this), so i dont think this is just you using OpenProcess (could really be a reason)

bhehe6813 20th August 2021 05:21 AM

How would BE detect patches to JIT'ed code that is not deterministic? They don't have a clean function to compare with. Even JIT'd code has odd sections like 3-16 NOP bytes as padding, so detecting even something like a NOP slide would be unfeasible.

What BE does is scan RWX. Mono functions are in RWX. BE will walk each JMP (and similar) that they come across. They will end up at your hook, allocated code, etc, whatever.

montroisiemecon 20th August 2021 06:45 AM

Quote:

Originally Posted by POFPE (Post 3220797)
Maybe.. I can't sure
Code:

OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid);
They Can Ban me with This one... But, some legit program(like process manager or other smh antiviiruses using it)

Why would you open a usermode handle when you can do it from kernel

POFPE 20th August 2021 06:52 AM

Quote:

Originally Posted by montroisiemecon (Post 3220986)
Why would you open a usermode handle when you can do it from kernel

I didn't back up my kernel project when I was formatting it. I have to rewrite it from the beginning, but i am very lazy. But would it detect stripped handle (the handle without VM_operation R/W) as well? closehandle after sigscan.

Quote:

Originally Posted by bhehe6813 (Post 3220947)
How would BE detect patches to JIT'ed code that is not deterministic? They don't have a clean function to compare with. Even JIT'd code has odd sections like 3-16 NOP bytes as padding, so detecting even something like a NOP slide would be unfeasible.

What BE does is scan RWX. Mono functions are in RWX. BE will walk each JMP (and similar) that they come across. They will end up at your hook, allocated code, etc, whatever.

Find a method to patch with sigscan, and change it to return a specific value. I do not jump to custom functions using jmp etc. (change values only) Patches the original code with simple code such as mov eax,0. So I thought that assembly bytes of mov eax, 0 ret could be sigged. (checking for specific assembly bytes, not integrity checks)

MaiGuaQQqun 20th August 2021 09:37 AM

this show you how to get currentcount/maxcount of your weapon magazine.
_xxxx::xxxx is offset.
such as:
Code:

//[Class] EFT.InventoryLogic.WeaponTemplate : GClass182D, GInterface7585, GInterface749A, GInterface748B
namespace _WeaponTemplate
{
        constexpr auto _defAmmoTemplate = 0x160;// [160] _defAmmoTemplate : EFT.InventoryLogic.AmmoTemplate
}
//[ : EFT.InventoryLogic.AmmoTemplate]
//[Class] EFT.InventoryLogic.AmmoTemplate : GClass18C7, GInterface746D, IItemTemplate, GInterface7E45
namespace _AmmoTemplate
{
        constexpr auto Damage = 0x140;// (type: System.Int32)
        constexpr auto PenetrationPower = 0x154;// (类型 : System.Int32)
        constexpr auto PenetrationPowerDiviation = 0x158;// (类型 : System.Single)
        constexpr auto InitialSpeed = 0x17c;//(类型: System.Single)
        constexpr auto PenetrationChance = 0x180;// (类型 : System.Single)
        constexpr auto RicochetChance = 0x184;// (类型 : System.Single)
        constexpr auto FragmentationChance = 0x188;// (类型 : System.Single)
}
//[ : EFT.InventoryLogic.ItemTemplate]
namespace _ItemTemplate
{
        constexpr auto Name = 0x10;//(类型: System.String)
        constexpr auto ShortName = 0x18;//(类型: System.String)
        constexpr auto Description = 0x20;//(类型: System.String)
        constexpr auto _id = 0x50;//(类型: System.String)
        constexpr auto _name = 0x58;//(类型: System.String)
        constexpr auto QuestItem = 0x94;// (类型 : System.Boolean)
}
//[ : EFT.InventoryLogic.Item]
//[Class] EFT.InventoryLogic.Item : Object
namespace _Item
{
        constexpr auto ItemNoHashComparer = 0x00;// [00] [S] <ItemNoHashComparer>k__BackingField : System.Collections.Generic.IEqualityComparer<Item>
        constexpr auto Replacements = 0x08;// [08][S] Replacements : System.Collections.Generic.Dictionary<Enum, String>
        constexpr auto Id = 0x10;// [10] Id : String
        constexpr auto OriginalAddress = 0x18;// [18] OriginalAddress : EFT.InventoryLogic.ItemAddress
        constexpr auto Components = 0x20;// [20] Components : System.Collections.Generic.List<IItemComponent>
        constexpr auto _toStringCache = 0x28;// [28] _toStringCache : String
        constexpr auto CurrentAddress = 0x30;// [30] CurrentAddress : EFT.InventoryLogic.ItemAddress
        constexpr auto Template = 0x38;// [38] <Template>k__BackingField : EFT.InventoryLogic.ItemTemplate
        constexpr auto Attributes = 0x40;// [40] Attributes : System.Collections.Generic.List<GClass193A>
        constexpr auto ChildrenChanged = 0x48;// [48] ChildrenChanged : -.GClass252E<Item>
        constexpr auto UnlimitedCount = 0x50;// [50] UnlimitedCount : Boolean
        constexpr auto BuyRestrictionMax = 0x54;// [54] BuyRestrictionMax : Int32
        constexpr auto BuyRestrictionCurrent = 0x58;// [58] BuyRestrictionCurrent : Int32
        constexpr auto StackObjectsCount = 0x5C;// [5C] StackObjectsCount : Int32
        constexpr auto Version = 0x60;// [60] Version : Int32
        constexpr auto SpawnedInSession = 0x64;// [64] SpawnedInSession : Boolean
}
//[Class] EFT.InventoryLogic.StackSlot : Object, IContainer
namespace _StackSlot
{
        constexpr auto _items = 0x10;// [10] _items : System.Collections.Generic.List<Item>
        constexpr auto _deserializationList = 0x18;// [18] _deserializationList : System.Collections.Generic.SortedList<Int32, Item>
        constexpr auto ID = 0x20;// [20] <ID>k__BackingField : String
        constexpr auto Filters = 0x28;// [28] <Filters>k__BackingField : EFT.InventoryLogic.ItemFilter[]
        constexpr auto ParentItem = 0x30;// [30] <ParentItem>k__BackingField : EFT.InventoryLogic.Item
        constexpr auto MaxCount = 0x38;// [38] MaxCount : Int32
}
//[Class] - .GClass1877 : GClass1849, IAmmoContainer
namespace _i_Magazine
{
        constexpr auto _i_stackSlot = 0x80;//[80] stackSlot_0x80 : EFT.InventoryLogic.StackSlot
}
//[ : EFT.InventoryLogic.Slot]
namespace _Slot
{
        constexpr auto Id = 0x10;// [10] Id : String
        constexpr auto _reactiveContainedItem = 0x18;// [18] _reactiveContainedItem : -.GClass2543<Item>
        constexpr auto ConflictingSlots = 0x20;// [20] ConflictingSlots : System.Collections.Generic.Dictionary<String, Slot>
        constexpr auto BlockerSlots = 0x28;// [28] BlockerSlots : System.Collections.Generic.List<Slot>
        constexpr auto _cachedSlotName = 0x30;// [30] _cachedSlotName : String
        constexpr auto ContainedItem = 0x38;//[38] <ContainedItem>k__BackingField : EFT.InventoryLogic.Item
        constexpr auto ParentItem = 0x40;// [40] <ParentItem>k__BackingField : EFT.InventoryLogic.Item
        constexpr auto Filters = 0x48;// [48] <Filters>k__BackingField : EFT.InventoryLogic.ItemFilter[]
        constexpr auto Required = 0x50;// [50] Required : Boolean
        constexpr auto Deleted = 0x51;// [51] Deleted : Boolean
        constexpr auto MergeContainerWithChildren = 0x54;// [54] <MergeContainerWithChildren>k__BackingField : System.Int32
}
//[ : EFT.InventoryLogic.Weapon]
//[Class] EFT.InventoryLogic.Weapon : GClass182E
namespace _Weapon
{
        constexpr auto Chambers = 0x90;// [90] Chambers : EFT.InventoryLogic.Slot[]
        constexpr auto _opticCalibrationPoints = 0x98;// [98] _opticCalibrationPoints : UnityEngine.Vector3[]
        constexpr auto _magSlotCache = 0xA0;// [A0] _magSlotCache : EFT.InventoryLogic.Slot
        constexpr auto AimIndex = 0xA8;// [A8] AimIndex : -.GClass2543<Int32>
        constexpr auto ShellsInChambers = 0xB0;// [B0] ShellsInChambers : EFT.InventoryLogic.AmmoTemplate[]
        constexpr auto CompatibleAmmo = 0xC0;// [C0] CompatibleAmmo : Boolean
        constexpr auto Armed = 0xC1;// [C1] Armed : Boolean
}

Code:

int32_t current_magazine_ammo_count = 0;
                        int32_t current_magazine_ammo__max_count = 0;
                        current_magazine_ammo__max_count = RW::ReadChain(dddd->eft.myfac, _ItemHandsController::Weapon, _Weapon::_magSlotCache, _Slot::ContainedItem, _i_Magazine::_i_stackSlot, _StackSlot::MaxCount) & INT32_MAX;
                        uint64_t items_array[200];
                        uint64_t items_list = RW::ReadChain(dddd->eft.myfac, _ItemHandsController::Weapon, _Weapon::_magSlotCache, _Slot::ContainedItem, _i_Magazine::_i_stackSlot, _StackSlot::_items);
                        if (items_list)
                        {
                                uint64_t items_list_base = RW::Read<uint64_t>(items_list + _List::listbase);
                                if (items_list_base)
                                {
                                        int32_t items_list_count = RW::Read<int32_t>(items_list + _List::count);
                                        if ((items_list_count > 0 && items_list_count <= 200) && RW::ReadBytes(items_list_base + _ListBase::start, items_array, items_list_count * 8))
                                        {
                                                for (int32_t i = 0; i < items_list_count; i++)
                                                {
                                                        current_magazine_ammo_count += RW::Read<int32_t>(items_array[i] + _Item::StackObjectsCount);
                                                }
                                        }
                                }
                        }

Noted: if you use this for calculate aimbot , you should read _speedFactor and
do
Code:

realspped = _speedFactor * InitialSpeed
Get InitialSpeed Of Next Ammo That Will Be Fired
Code:


                        uint64_t AmmoTemplate = RW::ReadChain(dddd->eft.myfac, _ItemHandsController::Weapon, _Weapon::Chambers, _Array::start, _Slot::ContainedItem, _Item::Template);
                        if (0 == AmmoTemplate)
                                AmmoTemplate = RW::ReadChain(dddd->eft.myfac, _ItemHandsController::Weapon, _Weapon::_magSlotCache, _Slot::ContainedItem, _i_Magazine::_i_stackSlot, _StackSlot::_items, _List::listbase, _ListBase::start, _Item::Template);
                        if (0 == AmmoTemplate)
                                AmmoTemplate = RW::ReadChain(dddd->eft.myfac, _ItemHandsController::Weapon, _Item::Template, _WeaponTemplate::_defAmmoTemplate);
                        if (AmmoTemplate && (AmmoTemplate_InitialSpeed = RW::Read<float>(AmmoTemplate + _AmmoTemplate::InitialSpeed)) > 10.f)
                        {
;//........
                        }
                        else
                        {
                                AmmoTemplate_InitialSpeed = 777.f;
                                子弹速度 = 777.f;
                                speedFactor = 1.f;
                        }


hollow 20th August 2021 11:09 AM

Quote:

Originally Posted by bhehe6813 (Post 3220947)
Even JIT'd code has odd sections like 3-16 NOP bytes as padding, so detecting even something like a NOP slide would be unfeasible.

actually there is a catch that BE could be using to detect patched code: i believe, all short jump targets in JITed code are nops. assuming this is true for ALL short jumps, it can easily tell you if the function was patched or not.

not sure if it's that way in every function, but seeing this was quite common:
https://i.imgur.com/c7fao4d.png

bhehe6813 20th August 2021 07:00 PM

Update just dropped. A lot of things in EFT.Player shifted a bit, (isLocalPlayer 0x5F1 -> 0x5F9, healthcontroller 0x490, abstracthands 0x4a8, inventorycontrooller 0x4a0, isDeadAlready 0x674)

Quote:

Originally Posted by iB07 (Post 1840411)
I found the GameObject called "GameWorld" but I cannot quite figure out where "LocalGameWorld" is supposed to be in that object?
Any help would be appreciated (=

Currently I got it like this:
https://i.gyazo.com/c24c2e41f6b4ee7d...499aed3f5b.png

0x30->0x18->0x28

Quote:

Originally Posted by bhehe6813 (Post 3216194)
How to find quest marker locations i.e. place an item here, or visit this location:

Here's a list of all of them:

Code:

        public static Dictionary<string, string> QuestMapNameToIdMap = new Dictionary<string, string>() {
            {"Woods", "5704e3c2d2720bac5b8b4567"},
            {"Shoreline", "5704e554d2720bac5b8b456e" },
            {"Military base", "5704e5fad2720bc05b8b4567"},
            {"Laboratory", "5b0fc42d86f7744a585f9105" },
            {"Interchange", "5714dbc024597771384a510d" },
            {"Factory", "55f2d3fd4bdc2d5f408b4567" },
            {"Night Factory", "59fc81d786f774390775787e" },
            {"Customs", "56f40101d2720b2a4d8b45d6" }
        };

public static Dictionary<string,
        Quest> QuestMarkerMap = new Dictionary<string, Quest>() {
            {
                "5967530a86f77462ba22226b",
                new Quest("5967530a86f77462ba22226b", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("locked_office"),
                })
            },
            {
                "59675d6c86f7740a842fc482",
                new Quest("59675d6c86f7740a842fc482", "5704e3c2d2720bac5b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("bunker2"),
                })
            },
            {
                "5967725e86f774601a446662",
                new Quest("5967725e86f774601a446662", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("room214"),
                })
            },
            {
                "597a171586f77405ba6887d3",
                new Quest("597a171586f77405ba6887d3", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("gazel"),
                    new QuestWorldMarker("gazel"),
                })
            },
            {
                "59c124d686f774189b3c843f",
                new Quest("59c124d686f774189b3c843f", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("fuel1"),
                    new QuestWorldMarker("fuel2"),
                    new QuestWorldMarker("fuel3"),
                    new QuestWorldMarker("fuel4"),
                })
            },
            {
                "5eda19f0edce541157209cee",
                new Quest("5eda19f0edce541157209cee", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("prapor_022_area_1"),
                    new QuestWorldMarker("prapor_022_area_2"),
                    new QuestWorldMarker("prapor_022_area_3"),
                })
            },
            {
                "5edab736cc183c769d778bc2",
                new Quest("5edab736cc183c769d778bc2", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("ter_023_area_1_1"),
                    new QuestWorldMarker("ter_023_area_2_1"),
                    new QuestWorldMarker("ter_023_area_3_1"),
                })
            },
            {
                "5ede55112c95834b583f052a",
                new Quest("5ede55112c95834b583f052a", "5704e5fad2720bc05b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("prapor_024_area_2"),
                    new QuestWorldMarker("prapor_024_area_1"),
                })
            },
            {
                "5ede567cfa6dc072ce15d6e3",
                new Quest("5ede567cfa6dc072ce15d6e3", "5704e5fad2720bc05b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("prapor_025_area_1"),
                    new QuestWorldMarker("prapor_025_area_2"),
                    new QuestWorldMarker("prapor_025_area_3"),
                    new QuestWorldMarker("prapor_025_area_4"),
                    new QuestWorldMarker("prapor_025_area_5"),
                })
            },
            {
                "59689ee586f7740d1570bbd5",
                new Quest("59689ee586f7740d1570bbd5", "55f2d3fd4bdc2d5f408b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("pumproom"),
                })
            },
            {
                "59689fbd86f7740d137ebfc4",
                new Quest("59689fbd86f7740d137ebfc4", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("room206_water"),
                })
            },
            {
                "5969f9e986f7741dde183a50",
                new Quest("5969f9e986f7741dde183a50", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("vaz_feld"),
                    new QuestWorldMarker("room114"),
                })
            },
            {
                "597a160786f77477531d39d2",
                new Quest("597a160786f77477531d39d2", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("gazel"),
                    new QuestWorldMarker("gazel"),
                })
            },
            {
                "5a68661a86f774500f48afb0",
                new Quest("5a68661a86f774500f48afb0", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("ter_013_area_1"),
                    new QuestWorldMarker("ter_013_area_2"),
                    new QuestWorldMarker("ter_013_area_3"),
                })
            },
            {
                "5a68665c86f774255929b4c7",
                new Quest("5a68665c86f774255929b4c7", "5704e3c2d2720bac5b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("ter_015_area_1"),
                })
            },
            {
                "5a68669a86f774255929b4d4",
                new Quest("5a68669a86f774255929b4d4", "59fc81d786f774390775787e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("ter_017_area_1"),
                })
            },
            {
                "5edac63b930f5454f51e128b",
                new Quest("5edac63b930f5454f51e128b", "5b0fc42d86f7744a585f9105", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("peace_027_area"),
                })
            },
            {
                "596b43fb86f77457ca186186",
                new Quest("596b43fb86f77457ca186186", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("dead_posylni"),
                    new QuestWorldMarker("vremyan_case"),
                })
            },
            {
                "5979f9ba86f7740f6c3fe9f2",
                new Quest("5979f9ba86f7740f6c3fe9f2", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("bomj_place"),
                })
            },
            {
                "597a0f5686f774273b74f676",
                new Quest("597a0f5686f774273b74f676", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("gazel"),
                    new QuestWorldMarker("gazel"),
                })
            },
            {
                "5edabd13218d181e29451442",
                new Quest("5edabd13218d181e29451442", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("skier_022_area_1"),
                    new QuestWorldMarker("skier_022_area_2"),
                    new QuestWorldMarker("skier_022_area_3"),
                })
            },
            {
                "5a03173786f77451cb427172",
                new Quest("5a03173786f77451cb427172", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_008_2_N1"),
                    new QuestWorldMarker("place_peacemaker_008_2_N2"),
                })
            },
            {
                "5a03296886f774569778596a",
                new Quest("5a03296886f774569778596a", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_008_4_N1"),
                    new QuestWorldMarker("place_peacemaker_008_4_N2"),
                })
            },
            {
                "5a27b75b86f7742e97191958",
                new Quest("5a27b75b86f7742e97191958", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_001"),
                })
            },
            {
                "5a27b7a786f774579c3eb376",
                new Quest("5a27b7a786f774579c3eb376", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_002_N1"),
                    new QuestWorldMarker("place_peacemaker_002_N2"),
                    new QuestWorldMarker("place_peacemaker_002_N3"),
                })
            },
            {
                "5a27b7d686f77460d847e6a6",
                new Quest("5a27b7d686f77460d847e6a6", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_003_N1"),
                    new QuestWorldMarker("place_peacemaker_003_N2"),
                    new QuestWorldMarker("place_peacemaker_003_N3"),
                })
            },
            {
                "5a27b80086f774429a5d7e20",
                new Quest("5a27b80086f774429a5d7e20", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_004_N1"),
                    new QuestWorldMarker("place_peacemaker_004_N2"),
                })
            },
            {
                "5a27b87686f77460de0252a8",
                new Quest("5a27b87686f77460de0252a8", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_005_N1"),
                    new QuestWorldMarker("place_peacemaker_005_N2"),
                    new QuestWorldMarker("place_peacemaker_005_N1"),
                    new QuestWorldMarker("place_peacemaker_005_N2"),
                })
            },
            {
                "5a27b9de86f77464e5044585",
                new Quest("5a27b9de86f77464e5044585", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_007_1_N1"),
                })
            },
            {
                "5a27ba1c86f77461ea5a3c56",
                new Quest("5a27ba1c86f77461ea5a3c56", "any", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_007_N1"),
                    new QuestWorldMarker("place_peacemaker_007_2_N2"),
                    new QuestWorldMarker("place_peacemaker_007_2_N2_1"),
                    new QuestWorldMarker("place_peacemaker_007_2_N3"),
                })
            },
            {
                "5a27bb3d86f77411ea361a21",
                new Quest("5a27bb3d86f77411ea361a21", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_009_2"),
                })
            },
            {
                "5a27bb5986f7741dfb660900",
                new Quest("5a27bb5986f7741dfb660900", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_009_3_N1"),
                })
            },
            {
                "5a27bbf886f774333a418eeb",
                new Quest("5a27bbf886f774333a418eeb", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_010_2"),
                    new QuestWorldMarker("place_peacemaker_010_2"),
                })
            },
            {
                "5fd9fad9c1ce6b1a3b486d00",
                new Quest("5fd9fad9c1ce6b1a3b486d00", "5704e3c2d2720bac5b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("pr_scout_col"),
                    new QuestWorldMarker("pr_scout_base"),
                })
            },
            {
                "5a27bc1586f7741f6d40fa2f",
                new Quest("5a27bc1586f7741f6d40fa2f", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_peacemaker_010_3"),
                })
            },
            {
                "5ac3462b86f7741d6118b983",
                new Quest("5ac3462b86f7741d6118b983", "56f40101d2720b2a4d8b45d6", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_SADOVOD_03"),
                })
            },
            {
                "5ac3467986f7741d6224abc2",
                new Quest("5ac3467986f7741d6224abc2", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_SIGNAL_01_1"),
                    new QuestWorldMarker("place_SIGNAL_01_2"),
                })
            },
            {
                "5ac346cf86f7741d63233a02",
                new Quest("5ac346cf86f7741d63233a02", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_SIGNAL_03_1"),
                    new QuestWorldMarker("place_SIGNAL_03_2"),
                    new QuestWorldMarker("place_SIGNAL_03_3"),
                })
            },
            {
                "5ac3477486f7741d651d6885",
                new Quest("5ac3477486f7741d651d6885", "55f2d3fd4bdc2d5f408b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_pacemaker_SCOUT_01"),
                    new QuestWorldMarker("place_pacemaker_SCOUT_02"),
                    new QuestWorldMarker("place_pacemaker_SCOUT_03"),
                })
            },
            {
                "5f04886a3937dc337a6b8238",
                new Quest("5f04886a3937dc337a6b8238", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_meh_sanitar_room"),
                })
            },
            {
                "5ae448e586f7744dcf0c2a67",
                new Quest("5ae448e586f7744dcf0c2a67", "5714dbc024597771384a510d", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_SALE_03_AVOKADO"),
                    new QuestWorldMarker("place_SALE_03_KOSTIN"),
                    new QuestWorldMarker("place_SALE_03_TREND"),
                    new QuestWorldMarker("place_SALE_03_DINO"),
                    new QuestWorldMarker("place_SALE_03_TOPBRAND"),
                })
            },
            {
                "5ae448f286f77448d73c0131",
                new Quest("5ae448f286f77448d73c0131", "5714dbc024597771384a510d", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_WARBLOOD_04_1"),
                    new QuestWorldMarker("place_WARBLOOD_04_2"),
                    new QuestWorldMarker("place_WARBLOOD_04_3"),
                })
            },
            {
                "5b478d0f86f7744d190d91b5",
                new Quest("5b478d0f86f7744d190d91b5", "5714dbc024597771384a510d", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("place_merch_21_1"),
                    new QuestWorldMarker("place_merch_21_2"),
                    new QuestWorldMarker("place_merch_21_3"),
                })
            },
            {
                "5c10f94386f774227172c572",
                new Quest("5c10f94386f774227172c572", "5704e3c2d2720bac5b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("bar_fuel3_1"),
                    new QuestWorldMarker("bar_fuel3_2"),
                    new QuestWorldMarker("bar_fuel3_3"),
                })
            },
            {
                "5d25e48186f77443e625e386",
                new Quest("5d25e48186f77443e625e386", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("huntsman_024_1"),
                    new QuestWorldMarker("huntsman_024_2"),
                    new QuestWorldMarker("huntsman_024_3"),
                })
            },
            {
                "5d25e4ad86f77443e625e387",
                new Quest("5d25e4ad86f77443e625e387", "5704e554d2720bac5b8b456e", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("huntsman_026"),
                })
            },
            {
                "5d25e4d586f77443e625e388",
                new Quest("5d25e4d586f77443e625e388", "5704e5fad2720bc05b8b4567", new List < QuestWorldMarker > () {
                    new QuestWorldMarker("huntsman_029"),
                })
            }

First Id is the quest id. This is also included in the "new Quest" part. The second id (the second parameter to new Quest) is the location Id. There is a reversed location name to id map at the top. This is because local game world + 0x20 is the translated name not id. The new QuestWorldMarker("string") is the name of the game object (well partial name).

So these are a bit tricky as EFT doesn't manage them too much other than handling their interactions. These world markers / zones are unity engine exploration zones. They are untagged, but active.

Retrieving these zones from GOM (basically pull that object out of object manager list, read it's components for a transform):

Code:

        public static Vector3 GetCachedMarkerLocation(string key) {
            if (!CachedMarkerLocations.ContainsKey(key)) {
                var obj = GetObjectFromList(World.GameObjectManager.activeObjects, World.GameObjectManager.lastActiveObject, key, true);
                if (!obj.IsValid())
                    return Vector3.Zero;
                var zone = M.Read<ExplorationZoneObject>(obj);
                var pTransform = zone.GetComponentByName("Transform");
                if (!pTransform.IsValid())
                    return Vector3.Zero;
                var transform = M.Read<TransformInternal>(pTransform);
                var position = GetBonePosition(transform);
                if (position != Vector3.Zero)
                    CachedMarkerLocations.Add(key, position);
            }
            return CachedMarkerLocations[key];
        }

Here's the structs referenced in the above

Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct ExplorationZoneObject
        {
            [FieldOffset(0x30)]
            public IntPtr pComponentsList;

            public IntPtr GetComponentByName(string name) {
                try {
                    for (int i = 0x8; i < 0x600; i += 0x10) {
                        IntPtr componentPtr = M.Read<IntPtr>(this.pComponentsList + i);
                        Component component = M.Read<Component>(componentPtr);
                        string className = component.ComponentFields.ComponentStaticFields.ClassDetails.ClassName;
                        if (className == name) {
                            return componentPtr;
                        }
                    }
                } catch {
                }
                return IntPtr.Zero;
            }
        }

If you're curious on the other components, there is a PlaceItemTrigger, and a BoxCollider/Collider.

If you're also curious on how I figured this out:

1. SP-Tarkov parsing quest.json to build the maps
2. Unity Explorer on SP-Tarkov to observe unity object list and did lots and lots of reading in dnspy of assembly-csharp.
3. Noticed the correlation between names in the quest.json like "fuel4" and game objects like "beacon_zone_fuel4".
4. Inspected those game objects with Unity Explorer and saw they had a transform.
5. Did some googling and found they are called Exploration Zones (not really relevant but interesting anyways)

I do a partial name search for the objects. Some of the place item ones are prepended with "beacon_zone" but in typical BSG fashion some have random names.


EDIT:

The location isn't working (not accurate), I'll figure it out and update.

Above ^

Code:

        public static Dictionary<string, Vector3> MarkerNameToLocationMap = new Dictionary<string, Vector3>() {
            {"place_pacemaker_SCOUT_01", new Vector3(66.08f, -1.676f, -30.421f)},
            {"place_pacemaker_SCOUT_02", new Vector3(-53.107f, 2.292f, 58.188f)},
            {"place_pacemaker_SCOUT_03", new Vector3(59.698f, 1.163f, 57.254f)},
            {"prapor_024_area_2", new Vector3(-115.030106f, -11.859222f, 33.881912f)},
            {"prapor_024_area_1", new Vector3(-116.75311f, -13.159225f, 31.686905f)},
            {"prapor_025_area_1", new Vector3(-90.30911f, -13.41922f, -5.1480865f)},
            {"prapor_025_area_2", new Vector3(-144.2501f, -9.983223f, 6.19191f)},
            {"prapor_025_area_3", new Vector3(-149.41011f, -9.329224f, 50.001907f)},
            {"prapor_025_area_4", new Vector3(-107.0101f, -9.388222f, 77.49191f)},
            {"prapor_025_area_5", new Vector3(-73.001114f, -9.653221f, 29.993912f)},
            {"huntsman_029", new Vector3(78.77f, -12.286003f, -117.1f)},
            {"bunker2", new Vector3(437.44995f, -11.22f, 64.57001f)},
            {"ter_015_area_1", new Vector3(-97.150024f, -13.19f, 219.76001f)},
            {"pr_scout_col", new Vector3(195.56006f, 12.21f, -595.81995f)},
            {"pr_scout_base", new Vector3(283.05005f, 24.04f, -439.39f)},
            {"bar_fuel3_1", new Vector3(356.44995f, 0.35f, -85.880005f)},
            {"bar_fuel3_2", new Vector3(-325.042f, 15.319f, 23.984985f)},
            {"bar_fuel3_3", new Vector3(-200.40698f, 31.302f, -210.92401f)},
            {"room214", new Vector3(176.42181f, 3.330181f, 184.24689f)},
            {"gazel", new Vector3(480.77383f, 3.292181f, -76.6871f)},
            {"fuel1", new Vector3(429.8568f, 2.7361808f, 16.229898f)},
            {"fuel2", new Vector3(101.44681f, 3.060181f, -14.1001005f)},
            {"fuel3", new Vector3(334.95682f, 3.040181f, -189.97011f)},
            {"fuel4", new Vector3(-334.93317f, 2.220181f, -163.46011f)},
            {"room206_water", new Vector3(232.2398f, 3.3901808f, 138.87689f)},
            {"room114", new Vector3(235.47781f, 0.42918086f, 160.07489f)},
            {"vremyan_case", new Vector3(368.89383f, 1.6001809f, -49.8851f)},
            {"place_peacemaker_002_N1", new Vector3(505.02997f, 1.24f, -11.290001f)},
            {"place_peacemaker_002_N2", new Vector3(565.76f, -0.00999999f, -24.169998f)},
            {"place_peacemaker_002_N3", new Vector3(17.86f, 0.3499999f, 0.3600006f)},
            {"place_SADOVOD_03", new Vector3(-212.56999f, 1.1620009f, -109.05f)},
            {"prapor_022_area_1", new Vector3(-263.98303f, -3.9580002f, -85.25296f)},
            {"prapor_022_area_2", new Vector3(96.72998f, -47.19f, 97.10004f)},
            {"prapor_022_area_3", new Vector3(-306.19995f, -60.86f, 494.09998f)},
            {"ter_023_area_1_1", new Vector3(-253.17004f, -4.0699997f, -56.859955f)},
            {"ter_023_area_2_1", new Vector3(94.20996f, -47.5f, 61.97003f)},
            {"ter_023_area_3_1", new Vector3(-311.90002f, -60.9f, 489.70007f)},
            {"ter_013_area_1", new Vector3(312.69995f, -59.18f, 314.5f)},
            {"ter_013_area_2", new Vector3(354.91992f, -58.63f, 306.12f)},
            {"ter_013_area_3", new Vector3(-258.07495f, -3.958f, -85.66f)},
            {"skier_022_area_1", new Vector3(-263.594f, -3.9580002f, -85.71597f)},
            {"skier_022_area_2", new Vector3(98.10303f, -47.19f, 96.979034f)},
            {"skier_022_area_3", new Vector3(-305.38403f, -60.86f, 492.20105f)},
            {"place_peacemaker_008_2_N1", new Vector3(-250.5f, -5.1409655f, -48.28f)},
            {"place_peacemaker_008_2_N2", new Vector3(-280.55005f, -4.78f, -41.309998f)},
            {"place_peacemaker_008_4_N1", new Vector3(-336.54504f, 0.145f, -76.42799f)},
            {"place_peacemaker_008_4_N2", new Vector3(-171.16296f, 0.14f, -75.51401f)},
            {"place_peacemaker_001", new Vector3(-182.04004f, -63.725f, 459.84998f)},
            {"place_peacemaker_003_N1", new Vector3(-153.07996f, -17.05f, -280.18f)},
            {"place_peacemaker_003_N2", new Vector3(378.74f, -54.375f, 166.85999f)},
            {"place_peacemaker_003_N3", new Vector3(-349.68005f, -39.864f, 185.87f)},
            {"place_peacemaker_004_N1", new Vector3(-717.06006f, -42.896f, 225.56f)},
            {"place_peacemaker_004_N2", new Vector3(-57.369995f, -19.38f, -310.29f)},
            {"place_peacemaker_005_N1", new Vector3(-234.48999f, -3.47f, -164.42f)},
            {"place_peacemaker_005_N2", new Vector3(-596.26f, -58.53f, 475.53003f)},
            {"place_peacemaker_007_1_N1", new Vector3(287.0691f, -49.353f, -42.326996f)},
            {"place_peacemaker_009_2", new Vector3(-336.97498f, -2.729f, -88.08501f)},
            {"place_peacemaker_009_3_N1", new Vector3(-149.87402f, -6.08f, -77.004f)},
            {"place_peacemaker_010_2", new Vector3(235.56006f, -64.464f, 442.02002f)},
            {"place_peacemaker_010_3", new Vector3(72.910034f, -59.673073f, 348.72998f)},
            {"place_SIGNAL_01_1", new Vector3(-230.40002f, 8.35f, -93.619995f)},
            {"place_SIGNAL_01_2", new Vector3(-483.31006f, -25.762f, 253.65997f)},
            {"place_SIGNAL_03_1", new Vector3(-483.81006f, -24.47f, 248.83002f)},
            {"place_SIGNAL_03_2", new Vector3(-230.55005f, 8.32f, -92.39f)},
            {"place_SIGNAL_03_3", new Vector3(-708.72f, -26.21f, 90.59f)},
            {"place_meh_sanitar_room", new Vector3(-322.833f, -2.7529984f, -77.53696f)},
            {"huntsman_024_1", new Vector3(405.93994f, -51.93f, -44.5f)},
            {"huntsman_024_2", new Vector3(382.93994f, -51.93f, -125.899994f)},
            {"huntsman_024_3", new Vector3(287.1399f, -49.2f, -46.320007f)},
            {"huntsman_026", new Vector3(-229.06006f, 3.285f, -88.856995f)},
            {"place_SALE_03_AVOKADO", new Vector3(-33.16f, 28.631f, 25.81f)},
            {"place_SALE_03_KOSTIN", new Vector3(-24.67f, 28.62f, -103.52f)},
            {"place_SALE_03_TREND", new Vector3(64.17f, 28.07f, -155.4f)},
            {"place_SALE_03_DINO", new Vector3(94.39f, 28.16f, -120.64f)},
            {"place_SALE_03_TOPBRAND", new Vector3(94.2f, 28.2f, 10.22f)},
            {"place_WARBLOOD_04_1", new Vector3(-208.36f, 22.84f, -74.42f)},
            {"place_WARBLOOD_04_2", new Vector3(274.29f, 22.85f, 14.53f)},
            {"place_WARBLOOD_04_3", new Vector3(-172.62f, 22.807f, -359.48f)},
            {"place_merch_21_1", new Vector3(109.86798f, 22.33f, 288.768f)},
            {"place_merch_21_2", new Vector3(17.557037f, 22.834f, -25.496002f)},
            {"place_merch_21_3", new Vector3(-49.76779f, 22.854f, 59.03575f)},
        };


Completed list of all the markers (save for any multimap location), last list was missing some:

Code:

{"place_pacemaker_SCOUT_01", new Vector3(66.08f, -1.676f, -30.421f)},
            {"place_pacemaker_SCOUT_02", new Vector3(-53.107f, 2.292f, 58.188f)},
            {"place_pacemaker_SCOUT_03", new Vector3(59.698f, 1.163f, 57.254f)},
            {"prapor_024_area_2", new Vector3(-115.030106f, -11.859222f, 33.881912f)},
            {"prapor_024_area_1", new Vector3(-116.75311f, -13.159225f, 31.686905f)},
            {"prapor_025_area_1", new Vector3(-90.30911f, -13.41922f, -5.1480865f)},
            {"prapor_025_area_2", new Vector3(-144.2501f, -9.983223f, 6.19191f)},
            {"prapor_025_area_3", new Vector3(-149.41011f, -9.329224f, 50.001907f)},
            {"prapor_025_area_4", new Vector3(-107.0101f, -9.388222f, 77.49191f)},
            {"prapor_025_area_5", new Vector3(-73.001114f, -9.653221f, 29.993912f)},
            {"huntsman_029", new Vector3(78.77f, -12.286003f, -117.1f)},
            {"bunker2", new Vector3(437.44995f, -11.22f, 64.57001f)},
            {"ter_015_area_1", new Vector3(-97.150024f, -13.19f, 219.76001f)},
            {"pr_scout_col", new Vector3(195.56006f, 12.21f, -595.81995f)},
            {"pr_scout_base", new Vector3(283.05005f, 24.04f, -439.39f)},
            {"bar_fuel3_1", new Vector3(356.44995f, 0.35f, -85.880005f)},
            {"bar_fuel3_2", new Vector3(-325.042f, 15.319f, 23.984985f)},
            {"bar_fuel3_3", new Vector3(-200.40698f, 31.302f, -210.92401f)},
            {"room214", new Vector3(176.42181f, 3.330181f, 184.24689f)},
            {"gazel", new Vector3(480.77383f, 3.292181f, -76.6871f)},
            {"fuel1", new Vector3(429.8568f, 2.7361808f, 16.229898f)},
            {"fuel2", new Vector3(101.44681f, 3.060181f, -14.1001005f)},
            {"fuel3", new Vector3(334.95682f, 3.040181f, -189.97011f)},
            {"fuel4", new Vector3(-334.93317f, 2.220181f, -163.46011f)},
            {"room206_water", new Vector3(232.2398f, 3.3901808f, 138.87689f)},
            {"room114", new Vector3(235.47781f, 0.42918086f, 160.07489f)},
            {"vremyan_case", new Vector3(368.89383f, 1.6001809f, -49.8851f)},
            {"place_peacemaker_002_N1", new Vector3(505.02997f, 1.24f, -11.290001f)},
            {"place_peacemaker_002_N2", new Vector3(565.76f, -0.00999999f, -24.169998f)},
            {"place_peacemaker_002_N3", new Vector3(17.86f, 0.3499999f, 0.3600006f)},
            {"place_SADOVOD_03", new Vector3(-212.56999f, 1.1620009f, -109.05f)},
            {"prapor_022_area_1", new Vector3(-263.98303f, -3.9580002f, -85.25296f)},
            {"prapor_022_area_2", new Vector3(96.72998f, -47.19f, 97.10004f)},
            {"prapor_022_area_3", new Vector3(-306.19995f, -60.86f, 494.09998f)},
            {"ter_023_area_1_1", new Vector3(-253.17004f, -4.0699997f, -56.859955f)},
            {"ter_023_area_2_1", new Vector3(94.20996f, -47.5f, 61.97003f)},
            {"ter_023_area_3_1", new Vector3(-311.90002f, -60.9f, 489.70007f)},
            {"ter_013_area_1", new Vector3(312.69995f, -59.18f, 314.5f)},
            {"ter_013_area_2", new Vector3(354.91992f, -58.63f, 306.12f)},
            {"ter_013_area_3", new Vector3(-258.07495f, -3.958f, -85.66f)},
            {"skier_022_area_1", new Vector3(-263.594f, -3.9580002f, -85.71597f)},
            {"skier_022_area_2", new Vector3(98.10303f, -47.19f, 96.979034f)},
            {"skier_022_area_3", new Vector3(-305.38403f, -60.86f, 492.20105f)},
            {"place_peacemaker_008_2_N1", new Vector3(-250.5f, -5.1409655f, -48.28f)},
            {"place_peacemaker_008_2_N2", new Vector3(-280.55005f, -4.78f, -41.309998f)},
            {"place_peacemaker_008_4_N1", new Vector3(-336.54504f, 0.145f, -76.42799f)},
            {"place_peacemaker_008_4_N2", new Vector3(-171.16296f, 0.14f, -75.51401f)},
            {"place_peacemaker_001", new Vector3(-182.04004f, -63.725f, 459.84998f)},
            {"place_peacemaker_003_N1", new Vector3(-153.07996f, -17.05f, -280.18f)},
            {"place_peacemaker_003_N2", new Vector3(378.74f, -54.375f, 166.85999f)},
            {"place_peacemaker_003_N3", new Vector3(-349.68005f, -39.864f, 185.87f)},
            {"place_peacemaker_004_N1", new Vector3(-717.06006f, -42.896f, 225.56f)},
            {"place_peacemaker_004_N2", new Vector3(-57.369995f, -19.38f, -310.29f)},
            {"place_peacemaker_005_N1", new Vector3(-234.48999f, -3.47f, -164.42f)},
            {"place_peacemaker_005_N2", new Vector3(-596.26f, -58.53f, 475.53003f)},
            {"place_peacemaker_007_1_N1", new Vector3(287.0691f, -49.353f, -42.326996f)},
            {"place_peacemaker_009_2", new Vector3(-336.97498f, -2.729f, -88.08501f)},
            {"place_peacemaker_009_3_N1", new Vector3(-149.87402f, -6.08f, -77.004f)},
            {"place_peacemaker_010_2", new Vector3(235.56006f, -64.464f, 442.02002f)},
            {"place_peacemaker_010_3", new Vector3(72.910034f, -59.673073f, 348.72998f)},
            {"place_SIGNAL_01_1", new Vector3(-230.40002f, 8.35f, -93.619995f)},
            {"place_SIGNAL_01_2", new Vector3(-483.31006f, -25.762f, 253.65997f)},
            {"place_SIGNAL_03_1", new Vector3(-483.81006f, -24.47f, 248.83002f)},
            {"place_SIGNAL_03_2", new Vector3(-230.55005f, 8.32f, -92.39f)},
            {"place_SIGNAL_03_3", new Vector3(-708.72f, -26.21f, 90.59f)},
            {"place_meh_sanitar_room", new Vector3(-322.833f, -2.7529984f, -77.53696f)},
            {"huntsman_024_1", new Vector3(405.93994f, -51.93f, -44.5f)},
            {"huntsman_024_2", new Vector3(382.93994f, -51.93f, -125.899994f)},
            {"huntsman_024_3", new Vector3(287.1399f, -49.2f, -46.320007f)},
            {"huntsman_026", new Vector3(-229.06006f, 3.285f, -88.856995f)},
            {"place_SALE_03_AVOKADO", new Vector3(-33.16f, 28.631f, 25.81f)},
            {"place_SALE_03_KOSTIN", new Vector3(-24.67f, 28.62f, -103.52f)},
            {"place_SALE_03_TREND", new Vector3(64.17f, 28.07f, -155.4f)},
            {"place_SALE_03_DINO", new Vector3(94.39f, 28.16f, -120.64f)},
            {"place_SALE_03_TOPBRAND", new Vector3(94.2f, 28.2f, 10.22f)},
            {"place_WARBLOOD_04_1", new Vector3(-208.36f, 22.84f, -74.42f)},
            {"place_WARBLOOD_04_2", new Vector3(274.29f, 22.85f, 14.53f)},
            {"place_WARBLOOD_04_3", new Vector3(-172.62f, 22.807f, -359.48f)},
            {"place_merch_21_1", new Vector3(109.86798f, 22.33f, 288.768f)},
            {"place_merch_21_2", new Vector3(17.557037f, 22.834f, -25.496002f)},
            {"place_merch_21_3", new Vector3(-49.76779f, 22.854f, 59.03575f)},
            { "baraholshik_fuel_area_2", new Vector3(11.94989f, -9.889221f, 73.80191f) },
            { "baraholshik_fuel_area_3", new Vector3(170.0299f, -9.309227f, -97.85809f) },
            { "baraholshik_arsenal_area_1", new Vector3(-167.37611f, -1.2852249f, 31.355911f) },
            { "baraholshik_arsenal_area_3", new Vector3(-167.37611f, -7.0462265f, 31.355911f) },
            { "baraholshik_arsenal_area_4", new Vector3(-125.51811f, -1.2852249f, 95.67992f) },
            { "baraholshik_arsenal_area_5", new Vector3(-125.51811f, -7.0462265f, 95.67992f) },
            { "baraholshik_dejurniy_area_2", new Vector3(-164.96411f, -4.221222f, 34.52591f) },
            { "mechanik_exit_area_1", new Vector3(-119.75011f, -29.311226f, 171.7919f) },
            { "tadeush_bmp2_area_check_13", new Vector3(53.829895f, -4.139221f, 122.03192f) },
            { "tadeush_bmp2_area_mark_13", new Vector3(53.619904f, -3.997223f, 122.661896f)},
            { "tadeush_bmp2_area_check_12", new Vector3(103.3819f, -4.6292267f, 63.869904f)},
            { "tadeush_bmp2_area_mark_12", new Vector3(101.727905f, -5.592224f, 64.444916f)},
            { "tadeush_bmp2_area_check_11", new Vector3(79.00989f, -4.6292267f, -31.548088f)},
            { "tadeush_bmp2_area_mark_11", new Vector3(79.02789f, -5.4392242f, -31.787086f)},
            { "tadeush_bmp2_area_check_2", new Vector3(-100.4001f, -4.3192215f, -155.6881f)},
            { "tadeush_bmp2_area_mark_2", new Vector3(-100.58011f, -3.719223f, -155.87808f)},
            { "tadeush_stryker_area_check_3", new Vector3(42.029907f, 0.28077698f, -195.2381f)},
            { "tadeush_stryker_area_mark_3", new Vector3(42.12439f, 0.8737793f, -195.23909f)},
            { "tadeush_stryker_area_check_4", new Vector3(-107.222275f, -5.6922226f, -67.3433f)},
            { "tadeush_t90_area_check_1", new Vector3(-160.6201f, -4.3192215f, -117.58809f)},

Getting location:


1. Open SP-Tarkov
2. Have UnityExplorer installed
3. Search for one of the game objects (triggers all of them to be loaded)
4. Use this code:


Code:


        public static Vector3 GetCachedMarkerLocation(string key) {
            if (!CachedMarkerLocations.ContainsKey(key)) {
                var obj = GetObjectFromList(World.GameObjectManager.activeObjects, World.GameObjectManager.lastActiveObject, key, true);
                if (!obj.IsValid())
                    return Vector3.Zero;
                var zone = M.Read<ExplorationZoneObject>(obj);
                var pTransform = zone.GetComponentByName("Transform");
                if (!pTransform.IsValid())
                    return Vector3.Zero;
                var transform = M.Read<TransformInternal>(pTransform);
                var position = GetBonePosition(transform);
                if (position != Vector3.Zero)
                    CachedMarkerLocations.Add(key, position);
            }
            return CachedMarkerLocations[key];
        }

  //var locationId = "Shoreline";
                        //Console.WriteLine($"===={locationId}====");
                        //foreach (var marker in MapMarkersList[locationId]) {
                        //    if (MarkerNameToLocationMap.ContainsKey(marker))
                        //        continue;
                        //    var location = GetCachedMarkerLocation(marker);
                        //    if (location != Vector3.Zero) {
                        //        Console.WriteLine($"\"{marker}\", new Vector3({location.X}f, {location.Y}f, {location.Z}f)");
                        //    } else {
                        //        Console.WriteLine($"Failed on {marker}");
                        //    }
                        //}
                        //Console.WriteLine($"===={locationId} END====");

Here's the MapMarketList:

Code:


 public static Dictionary<string,
        List<string>> MapMarkersList = new Dictionary<string, List<string>>()
        {
            {
                "Factory",
                new List < string > () {
                    "pumproom",
                    "place_pacemaker_SCOUT_01",
                    "place_pacemaker_SCOUT_02",
                    "place_pacemaker_SCOUT_03"
                }
            },
            {
                "Military Base",
                new List < string > () {
                    "prapor_024_area_2",
                    "prapor_024_area_1",
                    "baraholshik_fuel_area_2",
                    "baraholshik_fuel_area_3",
                    "baraholshik_arsenal_area_1",
                    "baraholshik_arsenal_area_3",
                    "baraholshik_arsenal_area_4",
                    "baraholshik_arsenal_area_5",
                    "baraholshik_dejurniy_area_2",
                    "prapor_025_area_1",
                    "prapor_025_area_2",
                    "prapor_025_area_3",
                    "prapor_025_area_4",
                    "prapor_025_area_5",
                    "mechanik_exit_area_1",
                    "huntsman_029",
                    "tadeush_bmp2_area_check_13",
                    "tadeush_bmp2_area_mark_13",
                    "tadeush_bmp2_area_check_12",
                    "tadeush_bmp2_area_mark_12",
                    "tadeush_bmp2_area_check_11",
                    "tadeush_bmp2_area_mark_11",
                    "tadeush_bmp2_area_check_2",
                    "tadeush_bmp2_area_mark_2",
                    "tadeush_stryker_area_check_3",
                    "tadeush_stryker_area_mark_3",
                    "tadeush_stryker_area_check_4",
                    "tadeush_t90_area_check_1"
                }
            },
            {
                "Woods",
                new List < string > () {
                    "bunker2",
                    "ter_015_area_1",
                    "pr_scout_col",
                    "pr_scout_base",
                    "bar_fuel3_1",
                    "bar_fuel3_2",
                    "bar_fuel3_3"
                }
            },
            {
                "Customs",
                new List < string > () {
                    "locked_office",
                    "room214",
                    "gazel",
                    "fuel1",
                    "fuel2",
                    "fuel3",
                    "fuel4",
                    "room206_water",
                    "vaz_feld",
                    "room114",
                    "dead_posylni",
                    "vremyan_case",
                    "bomj_place",
                    "place_peacemaker_002_N1",
                    "place_peacemaker_002_N2",
                    "place_peacemaker_002_N3",
                    "place_SADOVOD_03"
                }
            },
            {
                "Shoreline",
                new List < string > () {
                    "prapor_022_area_1",
                    "prapor_022_area_2",
                    "prapor_022_area_3",
                    "ter_023_area_1_1",
                    "ter_023_area_2_1",
                    "ter_023_area_3_1",
                    "ter_013_area_1",
                    "ter_013_area_2",
                    "ter_013_area_3",
                    "skier_022_area_1",
                    "skier_022_area_2",
                    "skier_022_area_3",
                    "place_peacemaker_008_2_N1",
                    "place_peacemaker_008_2_N2",
                    "place_peacemaker_008_4_N1",
                    "place_peacemaker_008_4_N2",
                    "place_peacemaker_001",
                    "place_peacemaker_003_N1",
                    "place_peacemaker_003_N2",
                    "place_peacemaker_003_N3",
                    "place_peacemaker_004_N1",
                    "place_peacemaker_004_N2",
                    "place_peacemaker_005_N1",
                    "place_peacemaker_005_N2",
                    "place_peacemaker_007_1_N1",
                    "place_peacemaker_009_2",
                    "place_peacemaker_009_3_N1",
                    "place_peacemaker_010_2",
                    "place_peacemaker_010_3",
                    "place_SIGNAL_01_1",
                    "place_SIGNAL_01_2",
                    "place_SIGNAL_03_1",
                    "place_SIGNAL_03_2",
                    "place_SIGNAL_03_3",
                    "place_meh_sanitar_room",
                    "huntsman_024_1",
                    "huntsman_024_2",
                    "huntsman_024_3",
                    "huntsman_026"
                }
            },
            {
                "Night Factory",
                new List < string > () {
                    "ter_017_area_1"
                }
            },
            {
                "Interchange",
                new List < string > () {
                    "place_SALE_03_AVOKADO",
                    "place_SALE_03_KOSTIN",
                    "place_SALE_03_TREND",
                    "place_SALE_03_DINO",
                    "place_SALE_03_TOPBRAND",
                    "place_WARBLOOD_04_1",
                    "place_WARBLOOD_04_2",
                    "place_WARBLOOD_04_3",
                    "place_merch_21_1",
                    "place_merch_21_2",
                    "place_merch_21_3"
                }
            },
            {
                "Laboratory",
                new List < string > () {
                    "peace_027_area"
                }
            }
        };

Note these are not real map names (you cannot get map from gameworld in sp-tarkov).

Real map names:


Code:

        public static Dictionary<string, string> QuestMapNameToIdMap = new Dictionary<string, string>() {
            {"Woods", "5704e3c2d2720bac5b8b4567"},
            {"Shoreline", "5704e554d2720bac5b8b456e" },
            {"RezervBase", "5704e5fad2720bc05b8b4567"},
            {"Laboratory", "5b0fc42d86f7744a585f9105" },
            {"Interchange", "5714dbc024597771384a510d" },
            {"factory4_day", "55f2d3fd4bdc2d5f408b4567" },
            {"factory4_night", "59fc81d786f774390775787e" },
            {"bigmap", "56f40101d2720b2a4d8b45d6" }
        };


Result:

https://i.imgur.com/ELlB8rP.png
https://i.imgur.com/HKDODpO.png

6GbPNAUaFZV 21st August 2021 04:56 PM

new boolean for is localplayer is 0x5F9
EFT.Player -> IsLocal (0x5F9)


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

pinefin 21st August 2021 06:19 PM

Quote:

Originally Posted by 6GbPNAUaFZV (Post 3222223)
new boolean for is localplayer is 0x5F9
EFT.Player -> IsLocal (0x5F9)

bhehe already said that right here

6GbPNAUaFZV 21st August 2021 07:36 PM

Quote:

Originally Posted by pinefin (Post 3222284)
bhehe already said that right here

oh sorry, i didnt see it

pinefin 21st August 2021 07:38 PM

Quote:

Originally Posted by 6GbPNAUaFZV (Post 3222330)
oh sorry, i didnt see it

also i've never understood why people use that bool, your player is always the first player in that registeredplayers list

hollow 21st August 2021 07:59 PM

Quote:

Originally Posted by MaiGuaQQqun (Post 3221080)
Code:

                        uint64_t AmmoTemplate = RW::ReadChain(dddd->eft.myfac, _ItemHandsController::Weapon, _Weapon::Chambers, _Array::start, _Slot::ContainedItem, _Item::Template);
                        if (0 == AmmoTemplate)
                                AmmoTemplate = RW::ReadChain(dddd->eft.myfac, _ItemHandsController::Weapon, _Weapon::_magSlotCache, _Slot::ContainedItem, _i_Magazine::_i_stackSlot, _StackSlot::_items, _List::listbase, _ListBase::start, _Item::Template);


you can have a bullet in mag but not in chamber and shoot? is that how guns work?

Quote:

Originally Posted by pinefin (Post 3222331)
also i've never understood why people use that bool, your player is always the first player in that registeredplayers list

relying on something like this is a horrible idea lol, especially when not even bsg does that

ecthirune 21st August 2021 09:35 PM

Quote:

Originally Posted by hollow (Post 3222342)
relying on something like this is a horrible idea lol, especially when not even bsg does that

if it works - it works until it works.
When this won't work - ppl will read local ptr.

6GbPNAUaFZV 21st August 2021 11:03 PM

any idea why my aimbot locking on to the middle of the player when im aiming at someone far like 300m https://imgur.com/a/VRsueaj and the white line is the line to the head

Code:

uintptr_t FirePort = Driver::ReadChain(EFT::LocalPlayer, { 0x4A8,0xE8});
if (!FirePort) return;
uintptr_t BifacialTransform = Driver::RPM<uintptr_t>(FirePort + 0x10);
if (!BifacialTransform) return;
uintptr_t transform = Driver::RPM<uintptr_t>(BifacialTransform + 0x10);
FirePortPosition = EFT::GetTransform(transform);

D3DXVECTOR2 calculated_angles;
calculated_angles = EFT::CalcAngle(FirePortPosition, HeadPos);

Driver::write<D3DXVECTOR2>(MovementContext + ViewAngles, calculated_angles);

CalAngle is

Code:

D3DXVECTOR2 CalcAngle(D3DXVECTOR3 camPosition, D3DXVECTOR3 enemyPosition)
        {
                D3DXVECTOR2 temp;
                D3DXVECTOR3 relative;
                D3DXVec3Subtract(&relative, &camPosition, &enemyPosition);
                float magnitude = fast_sqrt(relative.x * relative.x + relative.y * relative.y + relative.z * relative.z);
                double pitch = asin(relative[1] / magnitude);
                double yaw = -atan2(relative[0], -relative[2]);


                yaw = D3DXToDegree(yaw);
                pitch = D3DXToDegree(pitch);
                temp.y = pitch;
                temp.x = yaw;


                return temp;
        }


ZeusLord 22nd August 2021 12:07 AM

Quote:

Originally Posted by 6GbPNAUaFZV (Post 3222441)
any idea why my aimbot locking on to the middle of the player when im aiming at someone far like 300m https://imgur.com/a/VRsueaj and the white line is the line to the head

Code:

uintptr_t FirePort = Driver::ReadChain(EFT::LocalPlayer, { 0x4A8,0xE8});
if (!FirePort) return;
uintptr_t BifacialTransform = Driver::RPM&lt;uintptr_t&gt;(FirePort + 0x10);
if (!BifacialTransform) return;
uintptr_t transform = Driver::RPM&lt;uintptr_t&gt;(BifacialTransform + 0x10);
FirePortPosition = EFT::GetTransform(transform);

D3DXVECTOR2 calculated_angles;
calculated_angles = EFT::CalcAngle(FirePortPosition, HeadPos);

Driver::write&lt;D3DXVECTOR2&gt;(MovementContext + ViewAngles, calculated_angles);

CalAngle is

Code:

D3DXVECTOR2 CalcAngle(D3DXVECTOR3 camPosition, D3DXVECTOR3 enemyPosition)
{
D3DXVECTOR2 temp;
D3DXVECTOR3 relative;
D3DXVec3Subtract(&relative, &camPosition, &enemyPosition);
float magnitude = fast_sqrt(relative.x * relative.x + relative.y * relative.y + relative.z * relative.z);
double pitch = asin(relative[1] / magnitude);
double yaw = -atan2(relative[0], -relative[2]);


yaw = D3DXToDegree(yaw);
pitch = D3DXToDegree(pitch);
temp.y = pitch;
temp.x = yaw;


return temp;
}



Could possibly have something to do with the sighting of the scope maybe? I am not entirely sure I have never looked into it too much.

pinefin 22nd August 2021 01:27 AM

Quote:

Originally Posted by ecthirune (Post 3222388)
if it works - it works until it works.
When this won't work - ppl will read local ptr.

i dont think BSG has plans to get rid of it

bhehe6813 22nd August 2021 03:02 AM

Quote:

Originally Posted by hollow (Post 3222342)
you can have a bullet in mag but not in chamber and shoot? is that how guns work?



relying on something like this is a horrible idea lol, especially when not even bsg does that

Based on C#'s language specification, if it's inserted first in the list, and provided the list isn't sorted, it should respect insertion order. Not all languages respect/guarantee insertion order, c# does. Main take away is that the list implementation in c# is index based.


Code:

        // Adds the given object to the end of this list. The size of the list is
        // increased by one. If required, the capacity of the list is doubled
        // before adding the new element.
        //
        public void Add(T item) {
            if (_size == _items.Length) EnsureCapacity(_size + 1);
            _items[_size++] = item;
            _version++;
        }

You can see the Add function simply appends to the end of the internal items array.

https://referencesource.microsoft.co...7f4095e4de7646

The only way for index 0 to be moved, is by a sort operation.

But I agree it's stupid to always expect LP to be index 0, especially if BSG were to do literally anything with that list in the future. But given how BSG has implemented it, it is reliable enough at this current moment to pull the first player.

6GbPNAUaFZV 22nd August 2021 08:24 AM

Quote:

Originally Posted by ZeusLord (Post 3222480)
Could possibly have something to do with the sighting of the scope maybe? I am not entirely sure I have never looked into it too much.

must be, ill try to fix it thanks

POFPE 22nd August 2021 01:41 PM

Quote:

Originally Posted by 6GbPNAUaFZV (Post 3222693)
must be, ill try to fix it thanks

//nvm

xzackcc 22nd August 2021 03:41 PM

Quick question,

can someone push the latest offsets of the csharp assembly (just CE generated treeview) to pastebin or the forums?
Currently on my laptop and have no access to my main pc to get the dump (downloading eft on laptop takes ages ~)

tyvm.

fusionpak 22nd August 2021 04:25 PM

Quote:

Originally Posted by xzackcc (Post 3222996)
~ snip ~

https://ghostbin.com/paste/WRK8q

HHsPlays 23rd August 2021 12:01 AM

Just returning to EFT and trying internal this time (not mono), anyone got get_position_Injected? I tried looking at strings in IDA and thought it might be this: https://i.gyazo.com/82d6b71c4a8915b2...434cc35aa7.png
But I'm crashing when calling it, here's my function in-case there's any mistakes there:

Code:

inline geo::vec3_t GetBonePos(Player* m_player, int BoneID)
{
        auto Array = m_player->m_pPlayerBody->m_pSkeletonRootJoint->m_pBoneEnumerator->m_pTransformArray;

        const auto BoneValue = *reinterpret_cast<unity_transform**>((uintptr_t)Array + (0x20 + (BoneID * 8)));

        if (!BoneValue)
                return {};

        geo::vec3_t Position;

        static const auto GetPositionInjected = reinterpret_cast<uint64_t(__fastcall*)(void*, geo::vec3_t&)>(Globals::UnityPlayer + 0xC130F0);
        GetPositionInjected(BoneValue->transform, Position);

        return Position;
}

Edit: It might actually be the function I was inside of (0x96A250), need to do some more testing.
Edit 2: Nope, still crashing....

TrueWeedle 23rd August 2021 03:01 AM

Quote:

Originally Posted by HHsPlays (Post 3223340)
Just returning to EFT and trying internal this time (not mono), anyone got get_position_Injected? I tried looking at strings in IDA and thought it might be this: https://i.gyazo.com/82d6b71c4a8915b2...434cc35aa7.png
But I'm crashing when calling it, here's my function in-case there's any mistakes there:

Code:

inline geo::vec3_t GetBonePos(Player* m_player, int BoneID)
{
        auto Array = m_player->m_pPlayerBody->m_pSkeletonRootJoint->m_pBoneEnumerator->m_pTransformArray;

        const auto BoneValue = *reinterpret_cast<unity_transform**>((uintptr_t)Array + (0x20 + (BoneID * 8)));

        if (!BoneValue)
                return {};

        geo::vec3_t Position;

        static const auto GetPositionInjected = reinterpret_cast<uint64_t(__fastcall*)(void*, geo::vec3_t&)>(Globals::UnityPlayer + 0xC130F0);
        GetPositionInjected(BoneValue->transform, Position);

        return Position;
}

Edit: It might actually be the function I was inside of (0x96A250), need to do some more testing.
Edit 2: Nope, still crashing....

how to get le offset :)
https://streamable.com/y429y1

also Frankies public internal isn't going to be UD on real tarkov

Code:

typedef void* TGetPositionInjected(void*, Vector3);
        TGetPositionInjected* fnGetPosition = nullptr;
        Vector3 GetBonePosition(uintptr_t transform, int id)
        {
                static bool doOnce = TRUE;//its up to you where you want to put this. ive put it here as an example
                if (doOnce)
                {
                        fnGetPosition = (TGetPositionInjected*)(O::unityBase + 0x96A250);//Ida -> Unity player -> strings: UnityEngine.Transform::get_position_Injected -> F5 decompile;
                        doOnce = FALSE;
                }

                const auto playerTrasform = *reinterpret_cast<void**>(transform + (0x20 + (id * 0x8)));
                if (!playerTrasform)
                        return {};

                Vector3 position{};
                fnGetPosition(playerTrasform, position);

                return position;
        }

Usage:
        Vector3 middleFeet = (Util::GetBonePosition( player.transform, Bones::HumanLFoot) + Util::GetBonePosition( player.transform, Bones::HumanRFoot)) / 2.f;


HHsPlays 23rd August 2021 04:29 AM

Quote:

Originally Posted by TrueWeedle (Post 3223432)
how to get le offset :)
https://streamable.com/y429y1

also Frankies public internal isn't going to be UD on real tarkov

Code:

typedef void* TGetPositionInjected(void*, Vector3);
        TGetPositionInjected* fnGetPosition = nullptr;
        Vector3 GetBonePosition(uintptr_t transform, int id)
        {
                static bool doOnce = TRUE;//its up to you where you want to put this. ive put it here as an example
                if (doOnce)
                {
                        fnGetPosition = (TGetPositionInjected*)(O::unityBase + 0x96A250);//Ida -> Unity player -> strings: UnityEngine.Transform::get_position_Injected -> F5 decompile;
                        doOnce = FALSE;
                }

                const auto playerTrasform = *reinterpret_cast<void**>(transform + (0x20 + (id * 0x8)));
                if (!playerTrasform)
                        return {};

                Vector3 position{};
                fnGetPosition(playerTrasform, position);

                return position;
        }

Usage:
        Vector3 middleFeet = (Util::GetBonePosition( player.transform, Bones::HumanLFoot) + Util::GetBonePosition( player.transform, Bones::HumanRFoot)) / 2.f;


Was using frankies as a reference for a couple things, everything else is different (the hooks, encrypted strings, etc) and ty :).
Edit: Yeah, just realised that’s what I did for the offset, guess i’ve got issues elsewhere…

buddgaf 23rd August 2021 07:36 AM

anyone have player xp? i have playerinfo + 0x6C but it stopped working after the wipe.

aeonixlegit 23rd August 2021 08:40 AM

Quote:

Originally Posted by buddgaf (Post 3223597)
anyone have player xp? i have playerinfo + 0x6C but it stopped working after the wipe.

it's shifted by 0x8, currently: player_info + 0x74

HHsPlays 25th August 2021 06:05 PM

I'm crashing when trying to loop gamecomponents, atm for testing I've tried:

pCamera->pComponentsList (0x30) ->FirstComponent (0x8) -> pComponentFields (0x28) ->pComponentStaticFields (0x0) ->pClassDetails (0x0) ->pClassName (0x48)
(I know its not a loop, which it will need to be I'm just trying to get a single component atm).
Usually crashing when hitting FirstComponent.

TrueWeedle 25th August 2021 10:48 PM

I've heard that inline hooking a Jit compiled function is now detected by BE, has anyone heard other information on this?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

bhehe6813 26th August 2021 04:48 AM

Quote:

Originally Posted by TrueWeedle (Post 3226091)
I've heard that inline hooking a Jit compiled function is now detected by BE, has anyone heard other information on this?

That's always detected. They walk all jmps, and then find your allocated shellcode. There's various ways around it.

Razchek 26th August 2021 05:34 PM

Quote:

Originally Posted by HHsPlays (Post 3225834)
I'm crashing when trying to loop gamecomponents, atm for testing I've tried:

pCamera->pComponentsList (0x30) ->FirstComponent (0x8) -> pComponentFields (0x28) ->pComponentStaticFields (0x0) ->pClassDetails (0x0) ->pClassName (0x48)
(I know its not a loop, which it will need to be I'm just trying to get a single component atm).
Usually crashing when hitting FirstComponent.

If I had to take a guess, it would be that you are starting from the MonoBehaviour in your chain and skipping the GameObject.

This will probably help:
https://www.unknowncheats.me/forum/2...-post2694.html

JudischerHund 27th August 2021 04:58 AM

How do I check if my local player has a weapon or not? thanks in advance

aeonixlegit 27th August 2021 06:33 AM

Quote:

Originally Posted by JudischerHund (Post 3227206)
How do I check if my local player has a weapon or not? thanks in advance

0x4A8 (hands_controller) ] 0x58 (weapon) ] 0x38 (item_template)

DuOreng 27th August 2021 05:14 PM

I'm stuck at this point. I'm having so many troubles with WorldtoScreen, I've tried creating my own Matrix using the camera rotation and angles still doesn't work.

Right now, I'm just trying to get the standard Viewmatrix to work with WorldtoScreen then I will sort the scoped shit out. I'm reading this value at FPSCamera + 0x18, + 0x02E0.

Code:

bool WorldToScreen(const Vector3& point3D, Vector3* point2D)
{
        Vector3Newf WorldPosition = Vector3Newf(point3D.x, point3D.y, point3D.z);

        CameraMatrix = CameraMatrix.transpose();

        const Vector3Newf translation = { CameraMatrix.at(3, 0), CameraMatrix.at(3, 1), CameraMatrix.at(3, 2) };
        const Vector3Newf up = { CameraMatrix.at(1, 0), CameraMatrix.at(1, 1), CameraMatrix.at(1, 2) };
        const Vector3Newf right = { CameraMatrix.at(0, 0), CameraMatrix.at(0, 1), CameraMatrix.at(0, 2) };

        const auto w = translation.dotProduct(WorldPosition) + CameraMatrix.at(3, 3);

        if (w < 0.098f)
                return false;

        const auto x = right.dotProduct(WorldPosition) + CameraMatrix.at(0, 3);
        const auto y = up.dotProduct(WorldPosition) + CameraMatrix.at(1, 3);

        point2D->x = (sdk::window_width / 2) * (1.f + x / w);
        point2D->y = (sdk::window_height / 2) * (1.f - y / w);

        return true;
}

It either draws at the top left, or sometimes in the center then only moves on the X axis. the data I'm feeding for the position is 100% correct and the FPSCamera is also valid, however, I'm not 100% sure about the pointer to the correct ViewMatrix any help would be great, thanks :)

Here is an example, so as you can see some players are rendering fine but then some are just rendering directly to my middle of my screen

https://i.imgur.com/Do9AK5H.png

ecthirune 27th August 2021 05:45 PM

Quote:

Originally Posted by DuOreng (Post 3227676)
FPSCamera + 0x18, + 0x02E0.

0x18]+0xD8];

DuOreng 27th August 2021 06:05 PM

Quote:

Originally Posted by ecthirune (Post 3227700)
0x18]+0xD8];

Same results sadly, people rendering in center of screen and some rendering correctly

hollow 27th August 2021 09:24 PM

Quote:

Originally Posted by DuOreng (Post 3227676)
It either draws at the top left

check the return value
i also get a feeling the other issue is a different fuckup outside of w2s code. w2s should either work for everything or nothing.

DuOreng 27th August 2021 09:51 PM

Quote:

Originally Posted by hollow (Post 3227831)
check the return value
i also get a feeling the other issue is a different fuckup outside of w2s code. w2s should either work for everything or nothing.

Out of screen issue was due to the Matrix, I've fixed that. here is a video (sorry for the audio) of what is happening https://www.youtube.com/watch?v=8v3C...&ab_channel=DS
The code is clean and optimised so it is not like a lagging behind or slow rendering issue, I'm about stuck. All I do is have 2 threads, 1 loop entities, grab position push into array, rendering just world to screen, renders them to the screen. Pulling my hair out with this now :(

sep333 27th August 2021 09:51 PM

Hey guys, I'm external, I did the following.
Write<float>(LOOT_RAYCAST_DISTANCE , 5.0f);
Write<float>(DOOR_RAYCAST_DISTANCE , -1.0f);
Write<float>(WeaponLn , 4.0f);
But this can't show the "take" UI, I can't get anything behind the door or behind the wall.
Does anyone know why this is.

ecthirune 27th August 2021 10:37 PM

Quote:

Originally Posted by DuOreng (Post 3227850)
Out of screen issue was due to the Matrix, I've fixed that. here is a video (sorry for the audio) of what is happening https://www.youtube.com/watch?v=8v3C...&ab_channel=DS
The code is clean and optimised so it is not like a lagging behind or slow rendering issue, I'm about stuck. All I do is have 2 threads, 1 loop entities, grab position push into array, rendering just world to screen, renders them to the screen. Pulling my hair out with this now :(

It seems like you expecting same problem, as me in past(probably?), some "entity" being draw on screen, when player stays "back" to them (but mine entities do not stick in center, they moving when i moves my camera. example: https://i.imgur.com/QAeIM0Z.png < this guy stays behind me in ~15-20 meters and a bit right, so it's mirrored);

just curious. Workaround for my shit was:

if (w2sCoordinates.z<1.5f)
return false;

DuOreng 27th August 2021 11:10 PM

Quote:

Originally Posted by ecthirune (Post 3227878)
It seems like you expecting same problem, as me in past(probably?), some "entity" being draw on screen, when player stays "back" to them (but mine entities do not stick in center, they moving when i moves my camera. example: https://i.imgur.com/QAeIM0Z.png < this guy stays behind me in ~15-20 meters and a bit right, so it's mirrored);

just curious. Workaround for my shit was:

if (w2sCoordinates.z<1.5f)
return false;

Thanks, but still happens, just going to stop. :sadwavey:

Sweethamcheeks 28th August 2021 01:03 AM

I asked a stupid question. If mod wants to delete this that'd be appreciated

3rd EDIT: I asked how to get Player object of a corpse when joining a game late. Realized Player wasn't needed and PlayerBody would work fine.

bhehe6813 28th August 2021 03:43 AM

:motiass:
Quote:

Originally Posted by Sweethamcheeks (Post 3227970)
I asked a stupid question. If mod wants to delete this that'd be appreciated

You're not supposed to edit the post of the entire question even if stupid btw, have gotten a warning for that before.

Sweethamcheeks 28th August 2021 03:50 AM

Quote:

Originally Posted by bhehe6813 (Post 3228074)
:motiass:

You're not supposed to edit the post of the entire question even if stupid btw, have gotten a warning for that before.

Thanks for the heads up. I re edited the question

bhehe6813 28th August 2021 05:58 AM

Quote:

Originally Posted by JudischerHund (Post 3227206)
How do I check if my local player has a weapon or not? thanks in advance

Quote:

Originally Posted by aeonixlegit (Post 3227271)
0x4A8 (hands_controller) ] 0x58 (weapon) ] 0x38 (item_template)

Not needed. That's an extra read.

Code:

if (firearmcontroller->pWeapon /* (0x58) */ == handsController->pItemInHands /* (0x58) */)
Just compare to see if fac weapon ptr is the same as handscontroller item in hands.

Quote:

Originally Posted by DuOreng (Post 3227888)
Thanks, but still happens, just going to stop. :sadwavey:

Lower it to .5

Code:

                float w = Vector3.Dot(transposed.TranslationVector, origin) + transposed.M44;

                if (w < 0.5f) {
                    return Vector2.Zero;
                }

Quote:

Originally Posted by Sweethamcheeks (Post 3227970)
I asked a stupid question. If mod wants to delete this that'd be appreciated

3rd EDIT: I asked how to get Player object of a corpse when joining a game late. Realized Player wasn't needed and PlayerBody would work fine.

Yeah chain through playerbody is the easiest way. If anyone's curious it's

Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct CorpseItem
        {
            [FieldOffset(0x128)]
            public IntPtr pPlayerBody;

            public Classes.PlayerBody PlayerBody => M.Read<Classes.PlayerBody>(this.pPlayerBody);

            public Classes.Player GetCorpsePlayer => this.PlayerBody.PlayerBones.Player;
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct PlayerBody
        {
            [FieldOffset(0x20)]
            public IntPtr pPlayerBones;
            [FieldOffset(0x28)]
            public IntPtr pSkeletonRootJoin;
            [FieldOffset(0x38)]
            public IntPtr pBodySkins;
            [FieldOffset(0x48)]
            public IntPtr pBodyRenderers;

            public Classes.SkeletonRootJoin SkeletonRootJoin => M.Read<Classes.SkeletonRootJoin>(this.pSkeletonRootJoin);

            public Classes.PlayerBones PlayerBones => M.Read<Classes.PlayerBones>(this.pPlayerBones);

            public Classes.SkinDict BodySkins => M.Read<Classes.SkinDict>(this.pBodySkins);
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct PlayerBones
        {
            [FieldOffset(0x18)]
            public IntPtr pPlayer;

            public Classes.Player Player => M.Read<Classes.Player>(this.pPlayer);
        }


serge 28th August 2021 08:25 AM

Quote:

Originally Posted by sep333 (Post 3227852)
Hey guys, I'm external, I did the following.
Write<float>(LOOT_RAYCAST_DISTANCE , 5.0f);
Write<float>(DOOR_RAYCAST_DISTANCE , -1.0f);
Write<float>(WeaponLn , 4.0f);
But this can't show the "take" UI, I can't get anything behind the door or behind the wall.
Does anyone know why this is.

it's got nothing to do with weapon length.
check LootRaycastOrigin in PlayerBones,
looting through walls with this method is fine on live as long as you avoid their "gap caps" on the server

buddgaf 28th August 2021 03:56 PM

i have x110 > x10 > x78 > x18 for player inventory but i'm still having trouble. aren't these right?

hollow 28th August 2021 09:51 PM

Quote:

Originally Posted by buddgaf (Post 3228512)
i have x110 > x10 > x78 > x18 for player inventory but i'm still having trouble. aren't these right?

label your field offsets and you�ll always have a way to check if they�re right

6GbPNAUaFZV 28th August 2021 10:37 PM

Hi, so im having issues with AllLoot(LocalGameWorld + 0x78).
So when im looping through all the elements and i go up to ItemTemplate and get the name of the item works but when i pick up the item the text stays.
https://imgur.com/a/aVn8eYP
help would be much appriciated


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

es3n1n 28th August 2021 11:10 PM

Quote:

Originally Posted by 6GbPNAUaFZV (Post 3228820)
Hi, so im having issues with AllLoot(LocalGameWorld + 0x78).
So when im looping through all the elements and i go up to ItemTemplate and get the name of the item works but when i pick up the item the text stays.
https://imgur.com/a/aVn8eYP
help would be much appriciated


because you need to use EFT::GameWorld::LootList instead

DuOreng 29th August 2021 03:48 AM

Fixed, the issue with my worldtoscreen, now I'm experiencing issues reading player positions, some are correct some are not correct (0, 0, 0).

The loop contains a valid ptr to the entity and is valid just reading pos will not work.

Code:

Matrix3x4 GetLocationMatrixTest(uintptr_t Address)
{
        uint64_t m_BoneEnum = Memory::ReadAnyType<uint64_t>(Address + 0x28);
        uint64_t m_TransformArray = Memory::ReadAnyType<uint64_t>(m_BoneEnum + 0x10);
        uint64_t m_TransformA = Memory::ReadAnyType<uint64_t>(m_TransformArray + 0x20);
        uint64_t m_internalTransformA = Memory::ReadAnyType<uint64_t>(m_TransformA + 0x10);
        uint64_t m_transformAccessReadOnlyData = Memory::ReadAnyType<uint64_t>(m_internalTransformA + 0x38);

        uint64_t m_transformDataArray = Memory::ReadAnyType<uint64_t>(m_transformAccessReadOnlyData + 0x18);
        Matrix3x4 locMatrixDebug = Memory::ReadAnyType<Matrix3x4>(m_transformDataArray); /* 0x40 between matrix's */

        return locMatrixDebug;
}

Vector3 GetCoordsFromMatrixTest(uintptr_t Address)
{
        Vector3 newCoords;
        Matrix3x4 oldMatrix = GetLocationMatrixTest(Address);

        newCoords.x = oldMatrix.A.x;
        newCoords.y = oldMatrix.A.y;
        newCoords.z = oldMatrix.A.z;

        return newCoords;
}

EDIT: Fixed

--------------------------------------------------------------------------------------------------------------------------------------------

Anyone know why Scav positions show as 0? Sometimes players are also displaying as 0.

Code:

PlayerPosition: 88.652344 | 1.450195 | -150.292969 - 1625137408 bakannalos
PlayerPosition: 190.570709 | 2.832065 | 176.019577 - 1625574667 TTV-KeenCTV
PlayerPosition: 282.822876 | 0.733177 | 89.599792 - 1625063267 Whiffmaster_
PlayerPosition: 297.400635 | 4.014314 | 97.267891 - 1625073275 Antek
PlayerPosition: 54.473412 | 0.440245 | 7.601980 - 1626620125 zxcqwed
PlayerPosition: 0.000000 | 0.000000 | 0.000000 - 0 ▼0HB5B '[email protected]?
PlayerPosition: 0.000000 | 0.000000 | 0.000000 - 0 ▼@>B0A89 (=8??5;L
PlayerPosition: -217.590439 | 0.828241 | -193.890625 - 0 ↕0=L:0  52>;[email protected]
PlayerPosition: 0.000000 | 0.000000 | 0.000000 - 0 %[email protected]>= ◄>@>2

Code:

Matrix3x4 GetLocationMatrixTests(uintptr_t Address)
{
        uint64_t m_BoneEnum = Memory::ReadAnyType<uint64_t>(Address + 0x28);
        uint64_t m_TransformArray = Memory::ReadAnyType<uint64_t>(m_BoneEnum + 0x10);
        uint64_t m_TransformA = Memory::ReadAnyType<uint64_t>(m_TransformArray + 0x20);
        uint64_t m_internalTransformA = Memory::ReadAnyType<uint64_t>(m_TransformA + 0x10);
        uint64_t m_transformAccessReadOnlyData = Memory::ReadAnyType<uint64_t>(m_internalTransformA + 0x38);

        uint64_t m_transformDataArray = Memory::ReadAnyType<uint64_t>(m_transformAccessReadOnlyData + 0x18);
        //uint64_t m_transformDataIndices = GameProcess->Read<uint64_t>(m_transformAccessReadOnlyData + 0x20);

        Matrix3x4 locMatrixDebug = Memory::ReadAnyType<Matrix3x4>(m_transformDataArray); /* 0x40 between matrix's */

        return locMatrixDebug;
}

Vector3 GetCoordsFromMatrixTest(uintptr_t Address)
{
        Vector3 newCoords;
        Matrix3x4 oldMatrix = GetLocationMatrixTests(Address);

        newCoords.x = oldMatrix.A.x;
        newCoords.y = oldMatrix.A.y;
        newCoords.z = oldMatrix.A.z;

        return newCoords;
}

Way I am getting the positions

6GbPNAUaFZV 29th August 2021 12:17 PM

Quote:

Originally Posted by es3n1n (Post 3228847)
because you need to use EFT::GameWorld::LootList instead

thanks +rep

POFPE 29th August 2021 12:52 PM

Quote:

Originally Posted by DuOreng (Post 3228976)
Anyone know why Scav positions show as 0? Sometimes players are also displaying as 0.

Code:

PlayerPosition: 88.652344 | 1.450195 | -150.292969 - 1625137408 bakannalos
PlayerPosition: 190.570709 | 2.832065 | 176.019577 - 1625574667 TTV-KeenCTV
PlayerPosition: 282.822876 | 0.733177 | 89.599792 - 1625063267 Whiffmaster_
PlayerPosition: 297.400635 | 4.014314 | 97.267891 - 1625073275 Antek
PlayerPosition: 54.473412 | 0.440245 | 7.601980 - 1626620125 zxcqwed
PlayerPosition: 0.000000 | 0.000000 | 0.000000 - 0 ▼0HB5B '[email protected]?
PlayerPosition: 0.000000 | 0.000000 | 0.000000 - 0 ▼@>B0A89 (=8??5;L
PlayerPosition: -217.590439 | 0.828241 | -193.890625 - 0 ↕0=L:0  52>;[email protected]
PlayerPosition: 0.000000 | 0.000000 | 0.000000 - 0 %[email protected]>= ◄>@>2

Code:

Matrix3x4 GetLocationMatrixTests(uintptr_t Address)
{
        uint64_t m_BoneEnum = Memory::ReadAnyType<uint64_t>(Address + 0x28);
        uint64_t m_TransformArray = Memory::ReadAnyType<uint64_t>(m_BoneEnum + 0x10);
        uint64_t m_TransformA = Memory::ReadAnyType<uint64_t>(m_TransformArray + 0x20);
        uint64_t m_internalTransformA = Memory::ReadAnyType<uint64_t>(m_TransformA + 0x10);
        uint64_t m_transformAccessReadOnlyData = Memory::ReadAnyType<uint64_t>(m_internalTransformA + 0x38);

        uint64_t m_transformDataArray = Memory::ReadAnyType<uint64_t>(m_transformAccessReadOnlyData + 0x18);
        //uint64_t m_transformDataIndices = GameProcess->Read<uint64_t>(m_transformAccessReadOnlyData + 0x20);

        Matrix3x4 locMatrixDebug = Memory::ReadAnyType<Matrix3x4>(m_transformDataArray); /* 0x40 between matrix's */

        return locMatrixDebug;
}

Vector3 GetCoordsFromMatrixTest(uintptr_t Address)
{
        Vector3 newCoords;
        Matrix3x4 oldMatrix = GetLocationMatrixTests(Address);

        newCoords.x = oldMatrix.A.x;
        newCoords.y = oldMatrix.A.y;
        newCoords.z = oldMatrix.A.z;

        return newCoords;
}

Way I am getting the positions

It's creepy that you're so confident.

pinefin 29th August 2021 06:57 PM

Quote:

Originally Posted by DuOreng (Post 3228976)
Anyone know why Scav positions show as 0? Sometimes players are also displaying as 0.

Way I am getting the positions

Code:

        newCoords.x = oldMatrix.A.x;
        newCoords.y = oldMatrix.A.y;
        newCoords.z = oldMatrix.A.z;

        return newCoords;

what are u doing here? :thinking:

~snipped in edit, wasnt his issue~

edit: oh my god i just noticed that you dont even look at your data LOL nevermind i think u have it right, but look at your data.

Sweethamcheeks 29th August 2021 11:21 PM

Anyone know a good way to get the material / skin / shader of an item in tarkov?

bhehe6813 30th August 2021 02:12 AM

Quote:

Originally Posted by Sweethamcheeks (Post 3229777)
Anyone know a good way to get the material / skin / shader of an item in tarkov?

All vastly different and depends on what the starting object is.

Sweethamcheeks 30th August 2021 04:31 AM

Quote:

Originally Posted by bhehe6813 (Post 3229896)
All vastly different and depends on what the starting object is.

Assuming the starting object is "Item" class, how would you get the shader(s) associated with the item when it's dropped / loose loot.

buddgaf 30th August 2021 05:23 AM

Quote:

Originally Posted by hollow (Post 3228792)
label your field offsets and you�ll always have a way to check if they�re right

i just don't have the tools i need on this machine. i love how you took the time to respond yet chose not to be helpful.

member of the month, everyone.

Quote:

Originally Posted by Sweethamcheeks (Post 3229777)
Anyone know a good way to get the material / skin / shader of an item in tarkov?

uabe will tell you in the info section for each item won't it?

Sweethamcheeks 30th August 2021 05:51 AM

Quote:

Originally Posted by buddgaf (Post 3229973)
i just don't have the tools i need on this machine. i love how you took the time to respond yet chose not to be helpful.

member of the month, everyone.



uabe will tell you in the info section for each item won't it?

Uabe? The bundle extractor?

hollow 30th August 2021 07:56 AM

Quote:

Originally Posted by buddgaf (Post 3229973)
i just don't have the tools i need on this machine. i love how you took the time to respond yet chose not to be helpful.

member of the month, everyone.

i�m very sorry i�m in the process of moving and don�t have access to a pc to be helpful. not motm-worthy :(

montroisiemecon 30th August 2021 02:37 PM

Quote:

Originally Posted by buddgaf (Post 3229973)
i just don't have the tools i need on this machine. i love how you took the time to respond yet chose not to be helpful.

member of the month, everyone.



uabe will tell you in the info section for each item won't it?


you really are one of the worst actor of this thread. not only you are completly useless, you keep asking for very simple offsets that could be solved in about 28 seconds using dnspy and CE to dump offsets

Plz help where offset health?? last update 0xD8

You suck. You suck so bad, it's terrible. And on top of that you complain when somebody points you to the correct direction. Your parents did a terrible job

TrueWeedle 30th August 2021 08:46 PM

Quote:

Originally Posted by montroisiemecon (Post 3230322)
you really are one of the worst actor of this thread. not only you are completly useless, you keep asking for very simple offsets that could be solved in about 28 seconds using dnspy and CE to dump offsets

Plz help where offset health?? last update 0xD8

You suck. You suck so bad, it's terrible. And on top of that you complain when somebody points you to the correct direction. Your parents did a terrible job

UC Drama got me actin up

buddgaf 31st August 2021 03:18 AM

Quote:

Originally Posted by montroisiemecon (Post 3230322)
you really are one of the worst actor of this thread. not only you are completly useless, you keep asking for very simple offsets that could be solved in about 28 seconds using dnspy and CE to dump offsets

Plz help where offset health?? last update 0xD8

You suck. You suck so bad, it's terrible. And on top of that you complain when somebody points you to the correct direction. Your parents did a terrible job

i guess you're right man. i'm just terrible. but i do go out of my way to be as helpful as possible to everyone i encounter here. i answer lots of questions and give people good info rather than spread rumors or lie. some day i'll have it all figured out and i'll be sure not to upset you by asking for help.

Quote:

Originally Posted by hollow (Post 3230067)
i�m very sorry i�m in the process of moving and don�t have access to a pc to be helpful. not motm-worthy :(

no, i'm sorry. i didn't mean to be so shitty about it and shouldn't have. i assumed you had the info handy and mistook your advice for you being shitty.

Quote:

Originally Posted by Sweethamcheeks (Post 3229985)
Uabe? The bundle extractor?

yeah, doesn't it give you detailed info about the materials/shaders for things? i could be wrong...

Angelkun 31st August 2021 04:26 AM

Can u share Glow ESP(Wallhack )
Thanks

xFirstPromise 31st August 2021 04:43 AM

Quote:

Originally Posted by Angelkun (Post 3230980)
Can u share Glow ESP(Wallhack )
Thanks

-rep stop asking for ESP no one can give u here !

nikobelic29 31st August 2021 07:37 AM

I think they added more server-sided checks today or yesterday? shoot through walls now deal 0 damage but triggers the hurt animation

hollow 31st August 2021 04:01 PM

Quote:

Originally Posted by nikobelic29 (Post 3231081)
I think they added more server-sided checks today or yesterday? shoot through walls now deal 0 damage but triggers the hurt animation

bsg looking at eft section threads and trying to brainstorm a fix for 2 released features lol

montroisiemecon 31st August 2021 04:26 PM

It took a couple of month for those monkeys to figure it out

Sweethamcheeks 1st September 2021 02:01 AM

So I didnt have any luck in asking how to get shader, renderer, and/or material from the Item class in tarkov. Anyone know how to transform the Item object to GameObject? Assuming this is even possible


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

Razchek 1st September 2021 07:57 AM

Quote:

Originally Posted by Sweethamcheeks (Post 3231802)
So I didnt have any luck in asking how to get shader, renderer, and/or material from the Item class in tarkov. Anyone know how to transform the Item object to GameObject? Assuming this is even possible

From the MonoBehaviour instance you can find the game object by following this simple chain:
Code:

// 0x10 = (Unity::Component)m_CachedPtr , 0x30 = GameObject
var gameObject = Memory.ReadChain<UInt64>(itemAddr, 0x10, 0x30);

Getting the material from the GameObject seemed a little tricky externally, but it turned out somewhat simple. So what you are looking for is the Renderer components of the object, these hold the methods to grab the materials (which will hold the shader info and so on).
The Renderer components can usually be found referenced on the class you're investigating.
For example the EFT.Interactive.LootItem class holds a List:
Code:

EFT.Interactive.LootItem->_renderers // Offset: 0x0090 (Type: System.Collections.Generic.List<Renderer>)
But if you can't find the correct MonoBehaviour, you can iterate all child transforms from the parent transform of an object and check the components of every game object in that hierarchy.
Most of the time you can just check the child transforms, as it's common practice to have renderers as a child object of the game object it's attached to.

Once you have the Renderer component (you can validate this by checking the MonoClass name (see my implementation GetComponents() Externally, tldr; readchain: monoBehaviour->0->0->0x48) you would move on to finding the material.
If we look at dnSpy under the UnityEngine.Renderer class we can see that a native call is made to get the sharedMaterial (sharedMaterial returns the actual instance(s) of the Material(s) on the Renderer, so this is what we're after here)
We're better off looking at the GetSharedMaterialArray stuff here though, because we might want to utilize all of the materials on the object.

Code:

public Material[] sharedMaterials
{
        get => return this.GetSharedMaterialArray();
        set => this.SetMaterialArray(value);
}

[NativeName("GetMaterialArray")]
[MethodImpl(MethodImplOptions.InternalCall)]
private extern Material[] GetSharedMaterialArray();

This means we need to go and find the native function in UnityPlayer.dll and port it over.

I believe the function we're looking for is
Code:

RendererScripting::GetSharedMaterialArray(Renderer *,dynamic_array<PPtr<Material>,0> &)
Decompiling that presents:
Code:

void __fastcall RendererScripting::GetSharedMaterialArray(Renderer *r, dynamic_array<PPtr<Material>,0> *mat)
{
  Renderer *renderer; // rbx
  dynamic_array<PPtr<Material>,0> *retMaterial; // rdi
  int materialCount; // eax
  __int64 materialCount_v5; // r8
  __int64 index; // rax

  renderer = r;
  retMaterial = mat;
  materialCount = r->BaseRenderer::vfptr->GetMaterialCount(&r->BaseRenderer);
  materialCount_v5 = materialCount;
  if ( materialCount > 0 )
  {
    index = 0i64;
    do
    {
      *((_DWORD *)retMaterial->m_ptr + index) = *((_DWORD *)renderer->m_Materials.m_ptr + index);
      ++index;
    }
    while ( index < materialCount_v5 );
  }
}

Unfortunately we can see that there's a virtual function to get the amount of materials on the object.
We could dump this function, disassemble, decompile and then port it if you really want to use it. But I'll give it a miss for now.

Moving on; if we look through the decompiled code we can spot this line:
Code:

*((_DWORD *)retMaterial->m_ptr + index) = *((_DWORD *)renderer->m_Materials.m_ptr + index);
Left side is the return variable, right side is our material.

It seems that we can find the offset to the materials array from that structure. It's 0x140.

I took a look at the local type for this in IDA and it matches up.
Structures for Renderer, Material, Shader & DynamicArray:
Concluding this all that's left is to parse the array, take the materials you want and if necessary investigate the Shader class. I'm not sure what your objective is, so I'll just leave it there.

To summarize:
1. Find the Renderer components. Some classes will reference these for you, so you can utilize that. Other times you will have to enumerate the components of the children of the game object you are targetting.
2. For each Renderer component, check the instanced materials array at offset 0x140.
3. Profit?

DuOreng 1st September 2021 08:28 PM

Random issue I'm experiencing, so when I load into a game ALL player transforms are perfectly fine, they read completely fine without any problems but suddenly break.

Code:

uint64_t m_BoneEnum = getBoneEnum();
                uint64_t m_TransformArray = Memory::ReadAnyType<uint64_t>(m_BoneEnum + 0x10);
                uint64_t m_TransformA = Memory::ReadAnyType<uint64_t>(m_TransformArray + 0x20 + (bone_id * 0x8));

m_TransformA = Null, the boneEnum, Array are perfectly fine.

The pointer that I'm reading and Entity are both valid, so I'm really unsure on how this is possible.

ajisda 2nd September 2021 08:15 PM

Can someone tell me the offset of the latest player entity list or how to get it?

bhehe6813 2nd September 2021 08:25 PM

Quote:

Originally Posted by Razchek (Post 3231976)
From the MonoBehaviour instance you can find the game object by following this simple chain:
Code:

// 0x10 = (Unity::Component)m_CachedPtr , 0x30 = GameObject
var gameObject = Memory.ReadChain<UInt64>(itemAddr, 0x10, 0x30);

Getting the material from the GameObject seemed a little tricky externally, but it turned out somewhat simple. So what you are looking for is the Renderer components of the object, these hold the methods to grab the materials (which will hold the shader info and so on).
The Renderer components can usually be found referenced on the class you're investigating.
For example the EFT.Interactive.LootItem class holds a List:
Code:

EFT.Interactive.LootItem->_renderers // Offset: 0x0090 (Type: System.Collections.Generic.List<Renderer>)
But if you can't find the correct MonoBehaviour, you can iterate all child transforms from the parent transform of an object and check the components of every game object in that hierarchy.
Most of the time you can just check the child transforms, as it's common practice to have renderers as a child object of the game object it's attached to.

Once you have the Renderer component (you can validate this by checking the MonoClass name (see my implementation GetComponents() Externally, tldr; readchain: monoBehaviour->0->0->0x48) you would move on to finding the material.
If we look at dnSpy under the UnityEngine.Renderer class we can see that a native call is made to get the sharedMaterial (sharedMaterial returns the actual instance(s) of the Material(s) on the Renderer, so this is what we're after here)
We're better off looking at the GetSharedMaterialArray stuff here though, because we might want to utilize all of the materials on the object.

Code:

public Material[] sharedMaterials
{
        get => return this.GetSharedMaterialArray();
        set => this.SetMaterialArray(value);
}

[NativeName("GetMaterialArray")]
[MethodImpl(MethodImplOptions.InternalCall)]
private extern Material[] GetSharedMaterialArray();

This means we need to go and find the native function in UnityPlayer.dll and port it over.

I believe the function we're looking for is
Code:

RendererScripting::GetSharedMaterialArray(Renderer *,dynamic_array<PPtr<Material>,0> &)
Decompiling that presents:
Code:

void __fastcall RendererScripting::GetSharedMaterialArray(Renderer *r, dynamic_array<PPtr<Material>,0> *mat)
{
  Renderer *renderer; // rbx
  dynamic_array<PPtr<Material>,0> *retMaterial; // rdi
  int materialCount; // eax
  __int64 materialCount_v5; // r8
  __int64 index; // rax

  renderer = r;
  retMaterial = mat;
  materialCount = r->BaseRenderer::vfptr->GetMaterialCount(&r->BaseRenderer);
  materialCount_v5 = materialCount;
  if ( materialCount > 0 )
  {
    index = 0i64;
    do
    {
      *((_DWORD *)retMaterial->m_ptr + index) = *((_DWORD *)renderer->m_Materials.m_ptr + index);
      ++index;
    }
    while ( index < materialCount_v5 );
  }
}

Unfortunately we can see that there's a virtual function to get the amount of materials on the object.
We could dump this function, disassemble, decompile and then port it if you really want to use it. But I'll give it a miss for now.

Moving on; if we look through the decompiled code we can spot this line:
Code:

*((_DWORD *)retMaterial->m_ptr + index) = *((_DWORD *)renderer->m_Materials.m_ptr + index);
Left side is the return variable, right side is our material.

It seems that we can find the offset to the materials array from that structure. It's 0x140.

I took a look at the local type for this in IDA and it matches up.
Structures for Renderer, Material, Shader & DynamicArray:
Concluding this all that's left is to parse the array, take the materials you want and if necessary investigate the Shader class. I'm not sure what your objective is, so I'll just leave it there.

To summarize:
1. Find the Renderer components. Some classes will reference these for you, so you can utilize that. Other times you will have to enumerate the components of the children of the game object you are targetting.
2. For each Renderer component, check the instanced materials array at offset 0x140.
3. Profit?

This is sorta correct.

1. There's a difference between the mono class and the actual Renderer. In the actual renderer (a unity object, not a mono object), there is a dictionary at 0x140 of material keys/ids/whatever (this is what you found) and the size of this dictionary at 0x150.

If the person's question was "how do I find the material of a renderer", you have not answered that question. Instead, you've posted how to find the dictionary of keys that Unity uses to lookup the material object. If he's only interesting in breaking the renderer's material, then sure, that's enough. Write null for the length of the dictionary, and you'll have pink items / players / whatever.

This applies to a Material's shader as well.

Best of luck to you, but I'm presuming not a single person here will be able to do something like:


Code:


Material.Shader = MyCustomShader

I even doubt people being able to do Material.Shader = SomeOtherShaderThanTheOriginal

2. Not every renderer is a component within a game object. Open Unity Explorer to see this for yourself. There are renderers, outside of a game objects children/components, that are used for those game objects. You are correct that for things like the players body, you can find a list of renderers for this quite easily. That doesn't mean you can't find them externally though, you can obviously find any object in the entire game, what matters is efficiency.


tldr; none of this information is enough to replicate GetMaterial/SetMaterial or GetShader/SetShader, you have not gotten the material. Take a look at the dict at 140. There are no pointers. It's int keys used for another lookup. As a result, if you null this dictionary, you will cause Unity to crash when it attempts to dispose of the renderer, in turn, trying to dispose of each material with no crash handling. Doesn't always happen for whatever reason though. In terms of chams, it almost never happens unless you're on Factory or you modify your local player. I'm assuming whatever calculation they do for the real material PTR, 0x0 will sometimes cause this calculation to point towards a bad region of memory.

Code:

ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FF81AA248E9)
0x00007FF81AA248E9 (UnityPlayer) (function-name not available)
0x00007FF81ACEBEFF (UnityPlayer) UnityMain
0x00007FF81ACEBE67 (UnityPlayer) UnityMain
0x00007FF81ACEBE67 (UnityPlayer) UnityMain
0x00007FF81ACEBE67 (UnityPlayer) UnityMain
0x00007FF81ACEBE67 (UnityPlayer) UnityMain
0x00007FF81ACEBE67 (UnityPlayer) UnityMain
0x00007FF81ACEBE67 (UnityPlayer) UnityMain
0x00007FF81ACEBE67 (UnityPlayer) UnityMain
0x00007FF81ACEBE67 (UnityPlayer) UnityMain
0x00007FF81ACEBCB1 (UnityPlayer) UnityMain
0x00007FF81ACED309 (UnityPlayer) UnityMain
0x00007FF81AEAFFD6 (UnityPlayer) UnityMain
0x00007FF81AEAFE04 (UnityPlayer) UnityMain
0x00007FF81B01EC26 (UnityPlayer) UnityMain
0x000001CB5E60C450 (Mono JIT Code) (wrapper managed-to-native) UnityEngine.Object:DestroyImmediate (UnityEngine.Object,bool)
0x000001CB5E60C3B3 (Mono JIT Code) UnityEngine.Object:DestroyImmediate (UnityEngine.Object)
0x000001CB390B2753 (Mono JIT Code) /: (System.Action`1<>)
0x000001CB390B24F3 (Mono JIT Code) /:QuickDispose ()
0x000001CB390B22AB (Mono JIT Code) :ClearPools (/PoolsCategory,bool)
0x000001CB58EA4843 (Mono JIT Code) EFT.GameWorld:Dispose ()
0x000001CB390B20DB (Mono JIT Code) EFT.MainApplication: ()
0x000001CB8080A393 (Mono JIT Code) EFT.MainApplication: (string,EFT.Profile,/,bool,Comfort.Common.Result`3<EFT.ExitStatus, System.TimeSpan, >,EFT.UI.Matchmaker.MatchmakerTimeHasCome/)
0x000001CB8080A283 (Mono JIT Code) EFT.MainApplication/: (Comfort.Common.Result`3<EFT.ExitStatus, System.TimeSpan, >)
0x000001CB80800A33 (Mono JIT Code) EFT.NetworkGame/:MoveNext ()
0x000001CB58EADF78 (Mono JIT Code) UnityEngine.SetupCoroutine:InvokeMoveNext (System.Collections.IEnumerator,intptr)


Razchek 3rd September 2021 05:22 AM

Quote:

Originally Posted by bhehe6813 (Post 3233415)
~

Actually I was in the process of revising this post. I was too hasty and had only tested nulling one of the materials and concluded my results from that.
I realized my mistake a few hours ago. Specifically I read "GetSharedMaterialArray" and followed that in the native chain.
But when I looked at this again:
Code:

[NativeName("GetMaterialArray")]
[MethodImpl(MethodImplOptions.InternalCall)]
private extern Material[] GetSharedMaterialArray();

The actual native call goes to GetMaterialArray.

The journey on this one is much, much longer.
I'll leave my original post intact because it does have some value.
When I get some more time I'll come back to this and make a new post.

Sorry lads, I fucked up.

Quote:

Originally Posted by ajisda (Post 3233404)
Can someone tell me the offset of the latest player entity list or how to get it?

Get a list of all game worlds, and check for which one has players.
Code:

EFT.ClientGameWorld->RegisteredPlayers // Offset: 0x0080 (Type: System.Collections.Generic.List<Player>)
You can use Cheat Engine's mono dissect or Unispect to get more offsets (or search this thread).

Quote:

Originally Posted by DuOreng (Post 3232511)
Random issue I'm experiencing, so when I load into a game ALL player transforms are perfectly fine, they read completely fine without any problems but suddenly break.

Code:

uint64_t m_BoneEnum = getBoneEnum();
                uint64_t m_TransformArray = Memory::ReadAnyType<uint64_t>(m_BoneEnum + 0x10);
                uint64_t m_TransformA = Memory::ReadAnyType<uint64_t>(m_TransformArray + 0x20 + (bone_id * 0x8));

m_TransformA = Null, the boneEnum, Array are perfectly fine.

The pointer that I'm reading and Entity are both valid, so I'm really unsure on how this is possible.

Assuming the rest of your code is fine, it's probably the in-game setting: Auto-RAM Cleaner.
Try disabling that, save, then restart the game. I've seen other people in this thread be affected by this but was never able to replicate it.

bhehe6813 3rd September 2021 05:44 AM

Quote:

Originally Posted by Razchek (Post 3233658)
Actually I was in the process of revising this post. I was too hasty and had only tested nulling one of the materials and concluded my results from that.
I realized my mistake a few hours ago. Specifically I read "GetSharedMaterialArray" and followed that in the native chain.
But when I looked at this again:
Code:

[NativeName("GetMaterialArray")]
[MethodImpl(MethodImplOptions.InternalCall)]
private extern Material[] GetSharedMaterialArray();

The actual native call goes to GetMaterialArray.

The journey on this one is much, much longer.
I'll leave my original post intact because it does have some value.
When I get some more time I'll come back to this and make a new post.

Sorry lads, I fucked up.


Get a list of all game worlds, and check for which one has players.
Code:

EFT.ClientGameWorld->RegisteredPlayers // Offset: 0x0080 (Type: System.Collections.Generic.List<Player>)
You can use Cheat Engine's mono dissect or Unispect to get more offsets (or search this thread).



Assuming the rest of your code is fine, it's probably the in-game setting: Auto-RAM Cleaner.
Try disabling that, save, then restart the game. I've seen other people in this thread be affected by this but was never able to replicate it.

Yep. I have gotten a little ways in both the material and shader, but it is a much longer journey. You can find some of my posts.

If your objective is chams though, the method you posted above is fine. Can't remember if it's an int or a 64 bit int, but yeah just write that * size of the dictionary.

DuOreng 3rd September 2021 05:51 AM

Quote:

Originally Posted by Razchek (Post 3233658)
Actually I was in the process of revising this post. I was too hasty and had only tested nulling one of the materials and concluded my results from that.
I realized my mistake a few hours ago. Specifically I read "GetSharedMaterialArray" and followed that in the native chain.
But when I looked at this again:
Code:

[NativeName("GetMaterialArray")]
[MethodImpl(MethodImplOptions.InternalCall)]
private extern Material[] GetSharedMaterialArray();

The actual native call goes to GetMaterialArray.

The journey on this one is much, much longer.
I'll leave my original post intact because it does have some value.
When I get some more time I'll come back to this and make a new post.

Sorry lads, I fucked up.


Get a list of all game worlds, and check for which one has players.
Code:

EFT.ClientGameWorld->RegisteredPlayers // Offset: 0x0080 (Type: System.Collections.Generic.List<Player>)
You can use Cheat Engine's mono dissect or Unispect to get more offsets (or search this thread).



Assuming the rest of your code is fine, it's probably the in-game setting: Auto-RAM Cleaner.
Try disabling that, save, then restart the game. I've seen other people in this thread be affected by this but was never able to replicate it.


Thanks for the response :D I was looking through every page and I found some people experienced this and yep of course disabling auto-ram fixed it.

ajisda 3rd September 2021 07:47 PM

I used the GOM address loop to traverse the game world
How to use the GameWorld address to get the list of entities in the game world
I am a novice
Can someone give me an idea?

hollow 4th September 2021 09:10 AM

Quote:

Originally Posted by ajisda (Post 3234209)
I used the GOM address loop to traverse the game world
How to use the GameWorld address to get the list of entities in the game world
I am a novice
Can someone give me an idea?

come on man, it�s literally 2 posts above yours
https://www.unknowncheats.me/forum/3...-post4965.html

Sweethamcheeks 4th September 2021 10:21 AM

Quote:

Originally Posted by Razchek (Post 3231976)
From the MonoBehaviour instance you can find the game object by following this simple chain:
Code:

// 0x10 = (Unity::Component)m_CachedPtr , 0x30 = GameObject
var gameObject = Memory.ReadChain<UInt64>(itemAddr, 0x10, 0x30);

Getting the material from the GameObject seemed a little tricky externally, but it turned out somewhat simple. So what you are looking for is the Renderer components of the object, these hold the methods to grab the materials (which will hold the shader info and so on).
The Renderer components can usually be found referenced on the class you're investigating.
For example the EFT.Interactive.LootItem class holds a List:
Code:

EFT.Interactive.LootItem->_renderers // Offset: 0x0090 (Type: System.Collections.Generic.List<Renderer>)
But if you can't find the correct MonoBehaviour, you can iterate all child transforms from the parent transform of an object and check the components of every game object in that hierarchy.
Most of the time you can just check the child transforms, as it's common practice to have renderers as a child object of the game object it's attached to.

Once you have the Renderer component (you can validate this by checking the MonoClass name (see my implementation GetComponents() Externally, tldr; readchain: monoBehaviour->0->0->0x48) you would move on to finding the material.
If we look at dnSpy under the UnityEngine.Renderer class we can see that a native call is made to get the sharedMaterial (sharedMaterial returns the actual instance(s) of the Material(s) on the Renderer, so this is what we're after here)
We're better off looking at the GetSharedMaterialArray stuff here though, because we might want to utilize all of the materials on the object.

Code:

public Material[] sharedMaterials
{
        get => return this.GetSharedMaterialArray();
        set => this.SetMaterialArray(value);
}

[NativeName("GetMaterialArray")]
[MethodImpl(MethodImplOptions.InternalCall)]
private extern Material[] GetSharedMaterialArray();

This means we need to go and find the native function in UnityPlayer.dll and port it over.

I believe the function we're looking for is
Code:

RendererScripting::GetSharedMaterialArray(Renderer *,dynamic_array<PPtr<Material>,0> &)
Decompiling that presents:
Code:

void __fastcall RendererScripting::GetSharedMaterialArray(Renderer *r, dynamic_array<PPtr<Material>,0> *mat)
{
  Renderer *renderer; // rbx
  dynamic_array<PPtr<Material>,0> *retMaterial; // rdi
  int materialCount; // eax
  __int64 materialCount_v5; // r8
  __int64 index; // rax

  renderer = r;
  retMaterial = mat;
  materialCount = r->BaseRenderer::vfptr->GetMaterialCount(&r->BaseRenderer);
  materialCount_v5 = materialCount;
  if ( materialCount > 0 )
  {
    index = 0i64;
    do
    {
      *((_DWORD *)retMaterial->m_ptr + index) = *((_DWORD *)renderer->m_Materials.m_ptr + index);
      ++index;
    }
    while ( index < materialCount_v5 );
  }
}

Unfortunately we can see that there's a virtual function to get the amount of materials on the object.
We could dump this function, disassemble, decompile and then port it if you really want to use it. But I'll give it a miss for now.

Moving on; if we look through the decompiled code we can spot this line:
Code:

*((_DWORD *)retMaterial->m_ptr + index) = *((_DWORD *)renderer->m_Materials.m_ptr + index);
Left side is the return variable, right side is our material.

It seems that we can find the offset to the materials array from that structure. It's 0x140.

I took a look at the local type for this in IDA and it matches up.
Structures for Renderer, Material, Shader & DynamicArray:
Concluding this all that's left is to parse the array, take the materials you want and if necessary investigate the Shader class. I'm not sure what your objective is, so I'll just leave it there.

To summarize:
1. Find the Renderer components. Some classes will reference these for you, so you can utilize that. Other times you will have to enumerate the components of the children of the game object you are targetting.
2. For each Renderer component, check the instanced materials array at offset 0x140.
3. Profit?

What a fucking legend. Apologies for the delayed response but this is the most well-thought response I've seen. You far exceeded anything I was hoping for. Take my rep and my respect.

cherrydeveloper 6th September 2021 11:19 PM

does anyone see whats wrong with my norecoil here?
Quote:

void norecoil(uintptr_t local) {
uint64_t animation = mem->Read<UINT64>(local + 0x190);
if (animation)
{
uint64_t breath = animation + 0x28;
breath = mem->Read<uint64_t>(breath);
mem->Read<uint64_t>(breath + 0xA4, 0.f);//breath intensity

uint64_t alignToZeroFloat22 = animation + 0x21c;
mem->Read<uint64_t>(alignToZeroFloat22, 0.f);

uint64_t mask = animation + 0xF8;
mem->Read<uint64_t>(mask, 1.f);

}
}
unless my offsets wrong i dont see the issue?

thank you.

lulyou 7th September 2021 10:17 AM

Quote:

Originally Posted by cherrydeveloper (Post 3236628)
does anyone see whats wrong with my norecoil here?


unless my offsets wrong i dont see the issue?

thank you.

you are calling Read on the memory addresses, which presumably means read memory, not write. haven't looked for any other issues though.

POFPE 7th September 2021 03:21 PM

Did the penetration always end due to the server side check?

ilahigod31 7th September 2021 04:56 PM

view angle still 0x20C?

LowkeyCharmzz 8th September 2021 12:38 AM

Quote:

Originally Posted by ilahigod31 (Post 3237149)
view angle still 0x20C?

last time i checked, yes. Why don’t you just test it though? surely that would be faster than asking on UC.

DuOreng 8th September 2021 02:17 PM

Anybody know if no stamina is currently detected? recently added in no recoil, haven't been hit yet and I now want to add stamina just wondering if people been hit as ive seen mixed posts about it inside of this thread :)

hollow 8th September 2021 02:54 PM

Quote:

Originally Posted by DuOreng (Post 3237900)
Anybody know if no stamina is currently detected? recently added in no recoil, haven't been hit yet and I now want to add stamina just wondering if people been hit as ive seen mixed posts about it inside of this thread :)

it's not

bhehe6813 8th September 2021 03:57 PM

Quote:

Originally Posted by hollow (Post 3237923)
it's not

There is a way to get yourself banned doing it. Go write 100 to your current on a loop and you'll get banned, at least that was my experience.

LowkeyCharmzz 8th September 2021 04:49 PM

Quote:

Originally Posted by bhehe6813 (Post 3237971)
There is a way to get yourself banned doing it. Go write 100 to your current on a loop and you'll get banned, at least that was my experience.

i do that and have had zero issues for 3 months.

xXBradXx 8th September 2021 04:50 PM

Quote:

Originally Posted by LowkeyCharmzz (Post 3238010)
i do that, and have had zero issues for 3 months.

i do the same and have never been banned


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

ecthirune 8th September 2021 05:00 PM

Quote:

Originally Posted by bhehe6813 (Post 3237971)
There is a way to get yourself banned doing it. Go write 100 to your current on a loop and you'll get banned, at least that was my experience.

your ban was not the stamina issue.

hollow 8th September 2021 06:33 PM

Quote:

Originally Posted by bhehe6813 (Post 3237971)
There is a way to get yourself banned doing it. Go write 100 to your current on a loop and you'll get banned, at least that was my experience.

i write 1000 and i have zero issues

gabbo200 9th September 2021 02:31 AM

is there an offset to check for left click?

22jase 9th September 2021 03:44 AM

I'm attempting to code a norecoil cheat by modifying:
Code:

public ShotEffector Shootingg;
I'm writing to the localplayer animations to remove the recoil animation.
This is my code: (offsets might be outdated)

Code:

let shot = LittleEndian::read_u64(&read_mem(pid, animation + 0x48, 8, 0).unwrap());
let write_shot = write_mem(pid, shot + 0x68, 0.0);

Does anyone know if this method of norecoil is detected? Thx <3

hollow 9th September 2021 10:59 AM

Quote:

Originally Posted by 22jase (Post 3238387)
Does anyone know if this method of norecoil is detected? Thx <3

no it's not

bhehe6813 9th September 2021 04:40 PM

Quote:

Originally Posted by 22jase (Post 3238387)
I'm attempting to code a norecoil cheat by modifying:
Code:

public ShotEffector Shootingg;
I'm writing to the localplayer animations to remove the recoil animation.
This is my code: (offsets might be outdated)

Code:

let shot = LittleEndian::read_u64(&read_mem(pid, animation + 0x48, 8, 0).unwrap());
let write_shot = write_mem(pid, shot + 0x68, 0.0);

Does anyone know if this method of norecoil is detected? Thx <3

No but this is something they would maybe try to detect later. But you can see these effectors aren't networked.

Quote:

Originally Posted by 22jase (Post 3238387)
I'm attempting to code a norecoil cheat by modifying:
Code:

public ShotEffector Shootingg;
I'm writing to the localplayer animations to remove the recoil animation.
This is my code: (offsets might be outdated)

Code:

let shot = LittleEndian::read_u64(&read_mem(pid, animation + 0x48, 8, 0).unwrap());
let write_shot = write_mem(pid, shot + 0x68, 0.0);

Does anyone know if this method of norecoil is detected? Thx <3

No but this is something they would maybe try to detect later. But you can see in dnspy that none of the PWA effectors end up getting networked, at least not in a way that matters.

Quote:

Originally Posted by hollow (Post 3238099)
i write 1000 and i have zero issues

Intresting. Guess it was a coincidence. They do send stamina current to the server though so I mean... what the fuck are they doing if you're getting away with 1000.

6GbPNAUaFZV 9th September 2021 06:06 PM

Quote:

Originally Posted by bhehe6813 (Post 3238841)
No but this is something they would maybe try to detect later. But you can see none of the PWA effectors end up getting networked, at least not in a way that matters.


No but this is something they would maybe try to detect later. But you can see in dnspy that none of the PWA effectors end up getting networked, at least not in a way that matters.



Intresting. Guess it was a coincidence. They do send stamina current to the server though so I mean... what the fuck are they doing if you're getting away with 1000.

i was writing a 1000 for a good month and a half and recently got banned, i dont know if its related to the stamina or not

ecthirune 10th September 2021 09:21 AM

Quote:

Originally Posted by 6GbPNAUaFZV (Post 3238925)
i was writing a 1000 for a good month and a half and recently got banned, i dont know if its related to the stamina or not

stamina is not the reason of your ban.
im filling stamina when it's depleted with 1000 value for a good 4 months without ban.

POFPE 10th September 2021 11:39 AM

Quote:

Originally Posted by gabbo200 (Post 3238360)
is there an offset to check for left click?

Code:

bool IsAiming(uint64_t    instance)
{
    uint64_t m_pbreath = mem->ReadChain(instance, { this->offsets.Player.proceduralWeaponAnimation, 0x28 });
    return mem->read<bool>(m_pbreath + 0xA0); //0xA0 is aiming
}

btw, Penetration with JIT patch is Not working now? someone said me BSG check some Bullet with penetration.. No dmg but only Effect..

RonaldWeezly 10th September 2021 12:43 PM

Anyone got chams internally w/o calling mono_runtime_invoke? Perhaps calling GetComponentsInternal in UnityPlayer.dll instead?

hollow 10th September 2021 12:55 PM

Quote:

Originally Posted by RonaldWeezly (Post 3239569)
Anyone got chams internally w/o calling mono_runtime_invoke? Perhaps calling GetComponentsInternal in UnityPlayer.dll instead?

sorry but what is the point of unity internal hacks without c# code?
you will have about as much fun trying to implement features as you do in external cheats

es3n1n 10th September 2021 02:08 PM

Quote:

Originally Posted by RonaldWeezly (Post 3239569)
Anyone got chams internally w/o calling mono_runtime_invoke? Perhaps calling GetComponentsInternal in UnityPlayer.dll instead?


if you are scared of bans because of mono_runtime_invoke hooks, then you can call mono_compile_method, then call result as a native function

RonaldWeezly 10th September 2021 02:08 PM

Quote:

Originally Posted by hollow (Post 3239577)
sorry but what is the point of unity internal hacks without c# code?
you will have about as much fun trying to implement features as you do in external cheats

I couldn't get mono_runtime_invoke to work properly...

Code:

        bool InvokeFunction(std::string Namespace, std::string Class, std::string Method, void* Args)
        {
            if (void* Domain = mono_domain_get())
            {
                if (void* Assembly = mono_domain_assembly_open(Domain, "EscapeFromTarkov_Data\\Managed\\Assembly-CSharp.dll"))
                {
                    if (void* Image = mono_assembly_get_image(Assembly))
                    {
                        if (void* Klass = mono_class_from_name(Image, Namespace.c_str(), Class.c_str()))
                        {
                            if (void* PMethod = mono_class_get_method_from_name(Klass, Method.c_str(), 0))
                            {
                                void* Result = mono_runtime_invoke(PMethod, nullptr, Args, nullptr);
                                printf("Result=%p\n", Result);
                                return true;
                            }
                        }
                    }
                }
            }

            return false;
        }


LowkeyCharmzz 10th September 2021 04:34 PM

Quote:

Originally Posted by POFPE (Post 3239536)
Code:

bool IsAiming(uint64_t    instance)
{
    uint64_t m_pbreath = mem->ReadChain(instance, { this->offsets.Player.proceduralWeaponAnimation, 0x28 });
    return mem->read<bool>(m_pbreath + 0xA0); //0xA0 is aiming
}

btw, Penetration with JIT patch is Not working now? someone said me BSG check some Bullet with penetration.. No dmg but only Effect..

that’s right click. I believe he wants to check if you are shooting. And yes, shoot through wall is patched, you can shoot through the wall and the player looks like they are getting hit, but no damage is dealt. Sometimes it seems that the first bullet you shoot through the wall does damage though.

POFPE 11th September 2021 01:07 AM

Quote:

Originally Posted by LowkeyCharmzz (Post 3239810)
that�s right click. I believe he wants to check if you are shooting. And yes, shoot through wall is patched, you can shoot through the wall and the player looks like they are getting hit, but no damage is dealt. Sometimes it seems that the first bullet you shoot through the wall does damage though.

He can hook the CreateShot to see if the bullet is fired(Right Click)
btw, Do you think it means they started a raycast check on each bullet? It's amazing.

POFPE 12th September 2021 03:00 PM

Does Anyone Know How can I get player's Velocity?

RonaldWeezly 12th September 2021 04:20 PM

Anyone tried enumerating `IEnumerable`?

montroisiemecon 12th September 2021 05:25 PM

Quote:

Originally Posted by POFPE (Post 3241555)
Does Anyone Know How can I get player's Velocity?

compute it yourself?

RaiseHardError 12th September 2021 11:34 PM

Don't understand why aimbot smoothing doesnt seem to work properly.

Code:

Vector Vector::CalculateSmoothAngles(Vector& enemyPos) const
{
    Vector difference = *this - enemyPos;
    difference.x *= .5;
    difference.y *= .5;

    Vector angle = difference.VectorAngles(); //Also subtracts 180 from yaw (x)

    return angle;
}

This should technically result in in an exponential acceleration speed toward the target by cropping the distance by half each time. Instead all this does is keep my crosshair a certain distance from the target and not move. Am I misunderstanding the math behind this?

Thanks!

POFPE 13th September 2021 12:52 AM

Quote:

Originally Posted by montroisiemecon (Post 3241665)
compute it yourself?

Can't I get it With offsets? I need to calculate Now pos - previous pos / time to get now pos from previous pos?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

BraydenEGC 13th September 2021 02:00 AM

Quote:

Originally Posted by POFPE (Post 3242040)
~snip~

I looked for a while, and I never found anything that worked online.

I just cache their previous position and subtract it from their current position (along with some other calculations) to get velocity. It isn't perfect, but it certainly gets the job done.

nikobelic29 13th September 2021 06:11 AM

Quote:

Originally Posted by BraydenEGC (Post 3242073)
I looked for a while, and I never found anything that worked online.

I just cache their previous position and subtract it from their current position (along with some other calculations) to get velocity. It isn't perfect, but it certainly gets the job done.

there is something under charactermovement that represents velocity IIRC, but you kinda have to use reclass to figure it out.

TheLordOfRing0 13th September 2021 08:09 AM

I'm sorry for the lame question fellas.
How do you guys lookup for the offsets?
I've tried searching this thread and forum "how to find offsets", the forum didn't give anything specific, this thread contains so many records I literally have no time to read :(.
In my cheat I try to develop, I read GOM address @ RVA 0x156C698. This seems to give me the right address but then reading activeObjects returns zeroes for both fields. I'm in a raid for SCAV when reading it.
Code:

// Read pointer to activeObjects and lastActiveObject with 1 read, then find game world and local game world.
        auto active_objects = memio->read<std::array<uint64_t, 2>>(this->offsets.gameObjectManager + offsetof(EFTStructs::GameObjectManager, lastActiveObject)); // the offsett is 0x10
        if (!active_objects[0] || !active_objects[1])
                return false;

As mentioned in this thread before many offsets have changed, probably that's why it fails to read.

Searching the thread I found people suggesting using dnSpy, CE, ReClass.
dnSpy for UnityPlayer.dll doesn't work, it's not a managed assembly.
Using CE/ReClass I'm afraid to get banned, ReClass wants to attach to the process, how would you not get banned for doing this, what's the catch? How can it attach anyways, ProcessExloprer can't have access to it, surely I don't want even trying to attach something user-level to eft exe.

Please point me in the right direction :)

ecthirune 13th September 2021 08:52 AM

Quote:

Originally Posted by TheLordOfRing0 (Post 3242232)
~

1) you use search button in wrong way
2) use CE-dump or dnspy(dnspy works) with eft without be (look into main folder)
3) you can't attach reclass to eft (it doesnt work)
4) you can use emulator to safe work

BraydenEGC 13th September 2021 12:43 PM

Quote:

Originally Posted by nikobelic29 (Post 3242181)
~snip~

So this is definitely an instance of me not double-checking anything has updated before I posted. Sorry for the misinformation. I found what you are talking about. (btw reclass isn't needed, just check the interface's inheritance)

The velocity inside the character controller used to bug out online. Maoci and I tested it ages ago. We also found another velocity that only worked for close entities.

Thanks for correcting me!

LowkeyCharmzz 13th September 2021 04:14 PM

Quote:

Originally Posted by TheLordOfRing0 (Post 3242232)
I'm sorry for the lame question fellas.
How do you guys lookup for the offsets?
I've tried searching this thread and forum "how to find offsets", the forum didn't give anything specific, this thread contains so many records I literally have no time to read :(.
In my cheat I try to develop, I read GOM address @ RVA 0x156C698. This seems to give me the right address but then reading activeObjects returns zeroes for both fields. I'm in a raid for SCAV when reading it.
Code:

// Read pointer to activeObjects and lastActiveObject with 1 read, then find game world and local game world.
        auto active_objects = memio->read<std::array<uint64_t, 2>>(this->offsets.gameObjectManager + offsetof(EFTStructs::GameObjectManager, lastActiveObject)); // the offsett is 0x10
        if (!active_objects[0] || !active_objects[1])
                return false;

As mentioned in this thread before many offsets have changed, probably that's why it fails to read.

Searching the thread I found people suggesting using dnSpy, CE, ReClass.
dnSpy for UnityPlayer.dll doesn't work, it's not a managed assembly.
Using CE/ReClass I'm afraid to get banned, ReClass wants to attach to the process, how would you not get banned for doing this, what's the catch? How can it attach anyways, ProcessExloprer can't have access to it, surely I don't want even trying to attach something user-level to eft exe.

Please point me in the right direction :)

a good tool to use is unispect (Unispect - A Mono Type Definition & Field Inspector). Fast and easy to use.

bhehe6813 13th September 2021 09:09 PM

Quote:

Originally Posted by TheLordOfRing0 (Post 3242232)
I'm sorry for the lame question fellas.
How do you guys lookup for the offsets?
I've tried searching this thread and forum "how to find offsets", the forum didn't give anything specific, this thread contains so many records I literally have no time to read :(.
In my cheat I try to develop, I read GOM address @ RVA 0x156C698. This seems to give me the right address but then reading activeObjects returns zeroes for both fields. I'm in a raid for SCAV when reading it.
Code:

// Read pointer to activeObjects and lastActiveObject with 1 read, then find game world and local game world.
        auto active_objects = memio->read<std::array<uint64_t, 2>>(this->offsets.gameObjectManager + offsetof(EFTStructs::GameObjectManager, lastActiveObject)); // the offsett is 0x10
        if (!active_objects[0] || !active_objects[1])
                return false;

As mentioned in this thread before many offsets have changed, probably that's why it fails to read.

Searching the thread I found people suggesting using dnSpy, CE, ReClass.
dnSpy for UnityPlayer.dll doesn't work, it's not a managed assembly.
Using CE/ReClass I'm afraid to get banned, ReClass wants to attach to the process, how would you not get banned for doing this, what's the catch? How can it attach anyways, ProcessExloprer can't have access to it, surely I don't want even trying to attach something user-level to eft exe.

Please point me in the right direction :)

There's no point in helping you finish your copy paste cheat.

ReClass is just a memory analyzer. It does literally nothing. All it does is help you separate out blocks of bytes.

CE has a .net analyzer, and a mono dumper. You can use this to get game offsets. This is the same for unispect.

DnSpy is used to look at Assembly-c-sharp and other .net dlls

For analyzing unityplayer, you can just use ida.

Regardless, literally every offset you can think of is constantly posted on basically every page from people asking the same questions over and over and over and over. You want a signature for unityplayer.dll's object manager? Literally look a few pages before this one. You just want the offset? Also a few pages before this one.

TheLordOfRing0 13th September 2021 10:13 PM

Quote:

Originally Posted by bhehe6813 (Post 3242780)
There's no point in helping you finish your copy paste cheat.

ReClass is just a memory analyzer. It does literally nothing. All it does is help you separate out blocks of bytes.

CE has a .net analyzer, and a mono dumper. You can use this to get game offsets. This is the same for unispect.

DnSpy is used to look at Assembly-c-sharp and other .net dlls

For analyzing unityplayer, you can just use ida.

Regardless, literally every offset you can think of is constantly posted on basically every page from people asking the same questions over and over and over and over. You want a signature for unityplayer.dll's object manager? Literally look a few pages before this one. You just want the offset? Also a few pages before this one.

I saw the GOM address 0x156C698, but reading pointers to activeObjects and lastActiveObject with the offset of 0x10 (like in the code I posted) had read me zeroes.

I also saw byte signature for finding GOM but I haven't copy/pasted it and did not preserve exact formating, and therefore found nothing.
It left me with no choice but to ask.
Copy/pasting is a good start to learn providing how much work there is to be done.

Happy programmers day everyone :)

Edit:
Never mind, zeroes were due to a mistake I made in a driver, been tired asf. Thanks for your replies.

DuOreng 15th September 2021 05:58 PM

Anyone got weapon names converted and willing to share?

Like clean names

The WeaponTemplate + 0x58 one

Promptitude 16th September 2021 08:01 AM

Quote:

Originally Posted by DuOreng (Post 3244852)
Anyone got weapon names converted and willing to share?

Like clean names

The WeaponTemplate + 0x58 one

Here's a JSON of all the items, it includes weapons. All you need is the hash.
https://pastebin.com/WQN9wj6P

hollow 16th September 2021 09:19 AM

Quote:

Originally Posted by DuOreng (Post 3244852)
Anyone got weapon names converted and willing to share?

Like clean names

The WeaponTemplate + 0x58 one

use tarkov market json which will always provide you accurate prices as well

bloddyangel 16th September 2021 10:30 AM

Quote:

Originally Posted by bhehe6813 (Post 3237971)
There is a way to get yourself banned doing it. Go write 100 to your current on a loop and you'll get banned, at least that was my experience.

Nope... not banned .. but what I can tell you .. check what you are nulling .. if any of course.
They are playing with AC now .... atleast in the past day's seeing more and more TLP ..

POFPE 16th September 2021 11:17 AM

Are you sure the always penetration is patched? One of the 10 races today, the enemy who fell 40m (about 4 walls) broke through the wall and killed me, and once killed me with Grenade TP (not sure).

Romanoszczak 17th September 2021 05:13 AM

Quote:

Originally Posted by POFPE (Post 3245471)
Are you sure the always penetration is patched? One of the 10 races today, the enemy who fell 40m (about 4 walls) broke through the wall and killed me, and once killed me with Grenade TP (not sure).

The tool which has "shoot thru the wall" was updated yesterday and thats why you died like this.

POFPE 17th September 2021 08:14 AM

Quote:

Originally Posted by Romanoszczak (Post 3246153)
The tool which has "shoot thru the wall" was updated yesterday and thats why you died like this.

u MEAN Is there are other way to process shoot thru wall working?

JackTheRat 17th September 2021 09:45 PM

Quote:

Originally Posted by hollow (Post 3245398)
use tarkov market json which will always provide you accurate prices as well

Fuck tarkov market. Use tarkov-tools api instead every day. It's free, more accurat and you dont have to fight with some crazy russian owner if your allowed to use it.

bhehe6813 18th September 2021 02:35 AM

Quote:

Originally Posted by JackTheRat (Post 3246705)
Fuck tarkov market. Use tarkov-tools api instead every day. It's free, more accurat and you dont have to fight with some crazy russian owner if your allowed to use it.

? I pay $5 for tarkov-market and get to use the API. I've literally never spoken to anyone.

es3n1n 18th September 2021 08:42 PM

Quote:

Originally Posted by JackTheRat (Post 3246705)
Fuck tarkov market. Use tarkov-tools api instead every day. It's free, more accurat and you dont have to fight with some crazy russian owner if your allowed to use it.

have being used tarkov-market for awhile and had no issues with it lol

failnoobgamer 19th September 2021 09:08 AM

Does anyone's fireport seem to be inaccurate when the game fov is not 50?

xXBradXx 19th September 2021 09:17 AM

Quote:

Originally Posted by es3n1n (Post 3247504)
have being used tarkov-market for awhile and had no issues with it lol

i do too but a free alternative is always welcome, you can't grab all items in the game without listing every ID in the query though as far as i can see. with the one the other guy mentioned that is.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

vasterasjontek 19th September 2021 07:43 PM

How do I loot through walls?

DuOreng 20th September 2021 02:43 PM

Anybody experience any problems with GameWorld? sometimes it just doesn't find it until I restart the game, and I get a bunch of garbage data in the active name. Offsets up to date, ram cleaner off.

vasterasjontek 20th September 2021 06:44 PM

I change localplayer + worldInteractiveObject to loot instance but it does not show up the pickup UI. Anyone knows why?

gabbo200 20th September 2021 06:51 PM

Quote:

Originally Posted by DuOreng (Post 3249001)
Anybody experience any problems with GameWorld? sometimes it just doesn't find it until I restart the game, and I get a bunch of garbage data in the active name. Offsets up to date, ram cleaner off.

Same here, usually alt+tab to another program for a couples of seconds fix it. If anyone knows what could be wrong and an actual fix will be great to know!

ecthirune 20th September 2021 07:48 PM

Quote:

Originally Posted by DuOreng (Post 3249001)
Anybody experience any problems with GameWorld? sometimes it just doesn't find it until I restart the game, and I get a bunch of garbage data in the active name. Offsets up to date, ram cleaner off.

Quote:

Originally Posted by gabbo200 (Post 3249183)
Same here, usually alt+tab to another program for a couples of seconds fix it. If anyone knows what could be wrong and an actual fix will be great to know!

Not sure what exactly your problem is.
Rules to have 100% found gameworld:
1. use 200-300 cycles to iterate in searching (probably so much is overuse, but whatever).
2. Compare name of object to "GameWorld".
3. If compare success - jump into LocalGameWorld and look for playerCount >= 1 && <=60;
This 3 rules give me GameWorld for 100% chances for last ~6 month.

hollow 20th September 2021 08:42 PM

Quote:

Originally Posted by vasterasjontek (Post 3249180)
I change localplayer + worldInteractiveObject to loot instance but it does not show up the pickup UI. Anyone knows why?

because it should not, read the loot raycast function carefully

Sweethamcheeks 21st September 2021 06:16 AM

Anyone know how to determine if a scav is a traitor? Meaning know if a scav killed an ai scav or player scav?

There seems to be things like CanBeFreeKilled or IsAggressor for loyalty, but any clarity would be appreciated.

vasterasjontek 21st September 2021 08:57 PM

Quote:

Originally Posted by hollow (Post 3249282)
because it should not, read the loot raycast function carefully

Yeh, but I am external

hollow 21st September 2021 10:50 PM

Quote:

Originally Posted by vasterasjontek (Post 3250182)
Yeh, but I am external

unfortunate

airshelf 23rd September 2021 05:46 AM

Is there any other way to open the locked door?
I used following code , but it doesn't work anymore.
it can open door locally but not work on onlinegame. Is there any check on serverside ? can i bypass it ?
Code:

void OpenDoor()
{
    ULONG64 tmpAddr = 0;
    ReadMemory(LocalPlayer + 0x430, &tmpAddr, sizeof(tmpAddr));
    if (!tmpAddr)
        return;
    ULONG64 shellcode = 0x02000001020200;
    WriteMemory(tmpAddr + 0xF8, &shellcode, sizeof(ULONG64));
}


hollow 23rd September 2021 08:37 PM

Quote:

Originally Posted by airshelf (Post 3251573)
Is there any other way to open the locked door?
I used following code , but it doesn't work anymore.
it can open door locally but not work on onlinegame. Is there any check on serverside ? can i bypass it ?

they fixed it months ago

montroisiemecon 25th September 2021 09:51 PM

Quote:

Originally Posted by vasterasjontek (Post 3250182)
Yeh, but I am external

wat
being external makes it impossible to read code in dnspy?

xXBradXx 4th October 2021 02:05 PM

Quote:

Originally Posted by DuOreng (Post 3249001)
Anybody experience any problems with GameWorld? sometimes it just doesn't find it until I restart the game, and I get a bunch of garbage data in the active name. Offsets up to date, ram cleaner off.

Quote:

Originally Posted by gabbo200 (Post 3249183)
Same here, usually alt+tab to another program for a couples of seconds fix it. If anyone knows what could be wrong and an actual fix will be great to know!

are you guys using DMA? memflow? if so it's because it gets paged out after a while so it's no longer in physical memory.

EasyAntiCheater 5th October 2021 03:18 AM

hey guys, decided to work on eft again. I got a internal working with basic esp. I've only ever done externals but I decided to do a C++ internal now, can someone explain to me how you would call EFT. stuff without being mono internal? this has really confused me. Thank you, also explaining how chams would be possible would be helpful.

gabbo200 5th October 2021 09:36 AM

Quote:

Originally Posted by xXBradXx (Post 3261553)
are you guys using DMA? memflow? if so it's because it gets paged out after a while so it's no longer in physical memory.

Yes I�am, have you found out any fix?

pattyz 5th October 2021 09:43 AM

Quote:

Originally Posted by EasyAntiCheater (Post 3262159)
hey guys, decided to work on eft again. I got a internal working with basic esp. I've only ever done externals but I decided to do a C++ internal now, can someone explain to me how you would call EFT. stuff without being mono internal? this has really confused me. Thank you, also explaining how chams would be possible would be helpful.

Since you're not a mono internal, you gotta build your functions and stuff by hand.

Also chams can be made by messing with shaders, you get the entity you want to override, then you get their renderer, get the renderer's material and shader, then set "Hidden/Internal-Colored" shader to the color you want. (This is pretty much how it's done in Rust, if I said smthing wrong please correct me.)

es3n1n 5th October 2021 03:49 PM

Quote:

Originally Posted by EasyAntiCheater (Post 3262159)
hey guys, decided to work on eft again. I got a internal working with basic esp. I've only ever done externals but I decided to do a C++ internal now, can someone explain to me how you would call EFT. stuff without being mono internal? this has really confused me. Thank you, also explaining how chams would be possible would be helpful.


If you are talking about jited fns from c# code, then u can get it over cheatengine and then sig it

EasyAntiCheater 5th October 2021 08:05 PM

Quote:

Originally Posted by pattyz (Post 3262314)
Since you're not a mono internal, you gotta build your functions and stuff by hand.

Also chams can be made by messing with shaders, you get the entity you want to override, then you get their renderer, get the renderer's material and shader, then set "Hidden/Internal-Colored" shader to the color you want. (This is pretty much how it's done in Rust, if I said smthing wrong please correct me.)

If you don't mind can you please explain or show an example to how I can build the function by hand?

kkcqkx 6th October 2021 03:14 AM

Anyone have success writing a legit recoil compensation method? I'm able to get several recoil related values from ProceduralWeaponAnimation (XYRecoilStrength, Recoil.Zero, Recoil.current, ShotsEffector.RecoilDirection, RecoilRadian, etc...).

As of now I have put together a working percent based smooth aimer with reliable visibility check, fov calc, basic projectile prediction, and bone scanning. All that I'm missing to complete this legit aim assist is a compensator for the recoil.

For simplicity I'm not worried about sway or breath effects at this moment, I'm strictly focusing on camera and shooting effectors - which from what I've dissected so far these two are the ones primarily affected by recoil punch angles.

The way recoil is calculated and applied to the camera and the weapon animation is a little funky, but I think if I can narrow down which recoil values are reliable then I can translate at least the Y recoil into a magnitude/difference to add to the fireport position's Y. On the other hand, it may be easier for me to add the angle difference to the aim angle instead of messing with fireport position...

I'm currently digging and debugging - I'll update if I find a solution. Cheers to anyone that knows a good value for Y and X weapon recoil that can be translated into player view angles.

xXBradXx 6th October 2021 07:37 PM

Quote:

Originally Posted by gabbo200 (Post 3262310)
Yes I�am, have you found out any fix?

one of the memflow maintainers plans to implement a pull-through kind of cache, like it will remember what was at a particular address and if it fails to read that from the guest because it's paged out it will refer to said cache. you could implement something similar yourself. i never implemented any fix in my cheat, haven't worked on it in a bit. but i imagine it shouldn't be too hard, just check for read/partial read errors when getting the GameWorld object and if you get those errors refer to a cached value.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

DuOreng 7th October 2021 10:50 AM

Is thermal still

ThermalVision fields + 0xD0 , also tried 0xD1 = on/off? doesn't seem to work

TheLordOfRing0 7th October 2021 02:44 PM

Quote:

Originally Posted by DuOreng (Post 3263936)
Is thermal still

ThermalVision fields + 0x140 = on/off? doesn't seem to work

It's 0xD0

DuOreng 7th October 2021 06:29 PM

Quote:

Originally Posted by TheLordOfRing0 (Post 3264069)
It's 0xD0

Hmm, doesn't seem to work using "ThermalVision". VisorEffect, working perfectly though

TheLordOfRing0 7th October 2021 08:25 PM

1 Attachment(s)
Quote:

Originally Posted by DuOreng (Post 3264230)
Hmm, doesn't seem to work using "ThermalVision". VisorEffect, working perfectly though

1. Traverse tagged objects from GOM until you find an object with tag 5 which is the main camera.
2. Then from the main camera get a component named "ThermalVision".
3. Then get the script from the component that is the ThermalVision component + scripting class offset which is 0x28.
4. Then from that script the offset 0xD0 is used to turn on/off thermal vision (it's a byte, not int or single).

Code:

auto main_camera = game_object::find_with_tag(5);
auto thermal_component = main_camera.get_component_by_name("ThermalVision");
auto thermal_script = std::make_shared<thermal_vision>(thermal_component.scripting_class);

Code:

Offsets

class component
{
public:

        static const uint64_t mono_class = 0x00;
        static const uint64_t scripting_class = 0x28;
        static const uint64_t attached_game_object = 0x30;
        static const uint64_t next_component = 0x08; // not sure
};

class thermal_vision
{
public:
        static const uint64_t is_on = 0xD0;
        static const uint64_t is_noisy = 0xD1;
        static const uint64_t is_fps_stuck = 0xD2;
        static const uint64_t is_motion_blurred = 0xD3;
        static const uint64_t is_glitch = 0xD4;
        static const uint64_t is_pixelated = 0xD5;
};

This is how it looks on my end, I think this is what you asking about if I understood you correctly. See attachment.

DuOreng 7th October 2021 09:00 PM

Quote:

Originally Posted by TheLordOfRing0 (Post 3264303)
1. Traverse tagged objects from GOM until you find an object with tag 5 which is the main camera.
2. Then from the main camera get a component named "ThermalVision".
3. Then get the script from the component that is the ThermalVision component + scripting class offset which is 0x28.
4. Then from that script the offset 0x0D is used to turn on/off thermal vision (it's a byte, not int or single).

Code:

auto main_camera = game_object::find_with_tag(5);
auto thermal_component = main_camera.get_component_by_name("ThermalVision");
auto thermal_script = std::make_shared<thermal_vision>(thermal_component.scripting_class);

Code:

Offsets

class component
{
public:

        static const uint64_t mono_class = 0x00;
        static const uint64_t scripting_class = 0x28;
        static const uint64_t attached_game_object = 0x30;
        static const uint64_t next_component = 0x08; // not sure
};

class thermal_vision
{
public:
        static const uint64_t is_on = 0xD0;
        static const uint64_t is_noisy = 0xD1;
        static const uint64_t is_fps_stuck = 0xD2;
        static const uint64_t is_motion_blurred = 0xD3;
        static const uint64_t is_glitch = 0xD4;
        static const uint64_t is_pixelated = 0xD5;
};

This is how it looks on my end, I think this is what you asking about if I understood you correctly. See attachment.

Okay, was doing this totally wrong and thought it was the same way as no visor, thanks, will test this shortly

uNitx 9th October 2021 09:43 AM

[HEALTH PLAYER]
 
Hi, i cant find health of body parts, can anyone help me?
now its? - player + 0x490] + 0x20 ] + 0x18 ] + 0x30(like head)] + 0x10] +0x10 = 0, bad way....

community !! please!!

Quote:

Originally Posted by DuOreng (Post 3264337)
Okay, was doing this totally wrong and thought it was the same way as no visor, thanks, will test this shortly

can u help?

failnoobgamer 9th October 2021 12:03 PM

Quote:

Originally Posted by uNitx (Post 3265500)
Hi, i cant find health of body parts, can anyone help me?
now its? - player + 0x490] + 0x20 ] + 0x18 ] + 0x30(like head)] + 0x10] +0x10 = 0, bad way....

community !! please!!



can u help?

player + 0x490] + 0x50 ] + 0x18 ] + 0x30 + 0x18 * i] + 0x10] + 0x10

uNitx 9th October 2021 01:52 PM

Quote:

Originally Posted by failnoobgamer (Post 3265559)
player + 0x490] + 0x50 ] + 0x18 ] + 0x30 + 0x18 * i] + 0x10] + 0x10

ur the best!:slomo:

kkcqkx 11th October 2021 04:50 AM

How do you guys determine if you are actually shooting out a bullet?

Myself, I will check if bool_2 is true in local player's firearm controller, and also check if magazine count and chamber count is > 0... Other than that I can't find a better way -- this only works for automatic weapons. The bool_2 check does not work for Shotguns and bolt action weapons. I've solved bolt action weapons with checking that GClass432.BOOL_BOLTACTIONRELOAD is false, but I cannot resolve it for shotguns...

Anyway, I can't find a reliable check.

N0x61r0x6Bo0x6E 11th October 2021 04:50 PM

Hmm anyone knows what is wrong here? I've been sitting for a long time and I don't see any error, and it's probably some bullshit...

GetHealth = 0 for every player...

Code:

        public int GetHealth()
        {
            var bodyPartsEntries =
                MemoryManager.ReadPointer<IntPtr>(BaseAddress, new[] {Offsets.HealthControllerBodyParts, 0x18}); // HealthControllerBodyParts = 0x50
            var outputHealth = 0;

            for (var i = 0; i < 6; i++)
            {
                var bodyPartHealth = MemoryManager.ReadPointer<int>(bodyPartsEntries,
                    new[] {bodyPartsEntries.ToInt64() + 0x30 + (0x18 * i), 0x10, 0x10});

                outputHealth += bodyPartHealth;
            }

            return outputHealth;
        }


buddgaf 11th October 2021 06:12 PM

Quote:

Originally Posted by gabbo200 (Post 3262310)
Yes I’am, have you found out any fix?

disable the service 'sysmain' should stop this in most cases (the best solution is to upgrade to more than 32 gigs of memory)

DuOreng 11th October 2021 08:12 PM

Some offsets, will update with more.

Using these for weapons works fine

Code:

Active Weapon Item - 0x60
Weapon Template (Item Template) - 0x40
Weapon Template + 0x50  - Name is still this


hollow 11th October 2021 08:54 PM

Quote:

Originally Posted by DuOreng (Post 3267358)
Some offsets, will update with more.

Using these for weapons works fine

Code:

Active Weapon Item - 0x60
Weapon Template (Item Template) - 0x40
Weapon Template + 0x50  - Name is still this


EFT.GameWorld.Grenades is also 0xe0

DuOreng 11th October 2021 11:42 PM

Quote:

Originally Posted by hollow (Post 3267378)
EFT.GameWorld.Grenades is also 0xe0

Don't suppose novisor if you have it in your cheat randomly stopped working? offsets seem the fine, just doesn't work anymore.

cheeterr 12th October 2021 12:47 AM

Quote:

Originally Posted by DuOreng (Post 3267480)
Don't suppose novisor if you have it in your cheat randomly stopped working? offsets seem the fine, just doesn't work anymore.

Writing 0.0f to VisorEffect Intensity (0xB8) seems to work fine, tried it just now.

okoko98ttt 12th October 2021 02:23 AM

Is these changed?
Code:

static constexpr uint64_t itemList = 0x60;

        class ArrayItems
        {
        public:
                char pad_0000[16]; //0x0000
                class ItemList *m_pItemList; //0x0010
                int32_t Count; //0x0018
                int32_t MaxCout; //0x001C
        }; //Size: 0x0020


bhehe6813 12th October 2021 04:38 AM

Quote:

Originally Posted by okoko98ttt (Post 3267549)
Is these changed?
Code:

static constexpr uint64_t itemList = 0x60;

        class ArrayItems
        {
        public:
                char pad_0000[16]; //0x0000
                class ItemList *m_pItemList; //0x0010
                int32_t Count; //0x0018
                int32_t MaxCout; //0x001C
        }; //Size: 0x0020


No this did not change.

Container esp fix:

Code:

ItemOwner->RootItem: 0x98 -> 0xA0

buddgaf 12th October 2021 09:25 AM

Quote:

Originally Posted by bhehe6813 (Post 3267605)
No this did not change.

Container esp fix:

Code:

ItemOwner->RootItem: 0x98 -> 0xA0

Quote:

Originally Posted by DuOreng (Post 3267358)
Some offsets, will update with more.

Using these for weapons works fine

Code:

Active Weapon Item - 0x60
Weapon Template (Item Template) - 0x40
Weapon Template + 0x50  - Name is still this



i've changed these but still it's freezing with no error about 250-300 items into the loop. i can't pin it down to any item or type of item and i've dumped and compared the offsets and can't see anything wrong. any ideas? thx

DuOreng 12th October 2021 10:58 AM

Quote:

Originally Posted by buddgaf (Post 3267690)
i've changed these but still it's freezing with no error about 250-300 items into the loop. i can't pin it down to any item or type of item and i've dumped and compared the offsets and can't see anything wrong. any ideas? thx

are you checking if you're reading a valid pointer? these work fine for me.

And when you say freezing does the entire thread stop? I have separate threads for loot, player data and such have had issues before with looping and it stopping a thread due to invalid pointer, or a race condition. I would recommend checking if the pointer is valid and within bounds if you're not.

hollow 12th October 2021 02:19 PM

Quote:

Originally Posted by buddgaf (Post 3267690)
i've changed these but still it's freezing with no error about 250-300 items into the loop. i can't pin it down to any item or type of item and i've dumped and compared the offsets and can't see anything wrong. any ideas? thx

could be literally anything, use a debugger


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

montroisiemecon 12th October 2021 03:38 PM

it looks like those bsg monkeys did not fix properly shoot through wall

buddgaf 12th October 2021 03:43 PM

Quote:

Originally Posted by DuOreng (Post 3267713)
are you checking if you're reading a valid pointer? these work fine for me.

And when you say freezing does the entire thread stop? I have separate threads for loot, player data and such have had issues before with looping and it stopping a thread due to invalid pointer, or a race condition. I would recommend checking if the pointer is valid and within bounds if you're not.

thanks for the reply, my problem turned out to be containers. if the lootable container owner offset mentioned above is the only one that changed then i must have a larger issue somewhere. at least i have a place to look now. still learning. :)

Quote:

Originally Posted by hollow (Post 3267820)
could be literally anything, use a debugger

you genuinely stop what you're doing and use calories you'll never get back just to type something unhelpful here. it just stuns me every time i see it.

hollow 12th October 2021 05:05 PM

Quote:

Originally Posted by buddgaf (Post 3267875)
you genuinely stop what you're doing and use calories you'll never get back just to type something unhelpful here. it just stuns me every time i see it.

thank you for the hostility, but i'll still suggest that you use a debugger. 99.9% of issues can be solved with the magical tool.

if by "it's freezing" you mean execution is stuck somewhere, here's a step by step guide on how you can find out what is wasting time:
1) click the "break all" button (the pause icon)
2) go to debug->windows->threads
3) select all threads but the problematic one, right click and select "freeze"
4) click on "continue"
5) click on "break all" again and you'll see the part of code that wastes time

:flowers1:

none of this is eft related and i hate that i have to post that here

buddgaf 13th October 2021 04:36 PM

Quote:

Originally Posted by hollow (Post 3267915)
thank you for the hostility, but i'll still suggest that you use a debugger. 99.9% of issues can be solved with the magical tool.

if by "it's freezing" you mean execution is stuck somewhere, here's a step by step guide on how you can find out what is wasting time:
1) click the "break all" button (the pause icon)
2) go to debug->windows->threads
3) select all threads but the problematic one, right click and select "freeze"
4) click on "continue"
5) click on "break all" again and you'll see the part of code that wastes time

:flowers1:

none of this is eft related and i hate that i have to post that here

you didn't have to post it here. you didn't have to post anything at all. did my post say "Roleplay wanted: I am five and you are a total Karen, teach me how to debug."?

ZeusLord 13th October 2021 04:48 PM

Quote:

Originally Posted by buddgaf (Post 3268823)
you didn't have to post it here. you didn't have to post anything at all. did my post say "Roleplay wanted: I am five and you are a total Karen, teach me how to debug."?


What? He�s literally helping you.... I don�t see how there is an issue for what he is saying he wasn�t being toxic he was telling you how to find out what was wasting time?

Rampage 13th October 2021 06:19 PM

Quote:

Originally Posted by buddgaf (Post 3267875)
thanks for the reply, my problem turned out to be containers. if the lootable container owner offset mentioned above is the only one that changed then i must have a larger issue somewhere. at least i have a place to look now. still learning. :)



you genuinely stop what you're doing and use calories you'll never get back just to type something unhelpful here. it just stuns me every time i see it.

I am having the same issue. For some reason containers are not iterated properly. Debugging is a hassle, because I cant find where the interpretation of the item-data is going wrong. It seems to go wrong somewhere halfway the list.

ZeusLord 13th October 2021 06:24 PM

Quote:

Originally Posted by Rampage (Post 3268895)
I am having the same issue. For some reason containers are not iterated properly. Debugging is a hassle, because I cant find where the interpretation of the item-data is going wrong. It seems to go wrong somewhere halfway the list.

I'd check my offsets and how you're iterating them something could be off or you're just not iterating it the right way.. it's hard to help without seeing the code for what you are doing that's not working.

gabbo200 13th October 2021 06:26 PM

Quote:

Originally Posted by Rampage (Post 3268895)
I am having the same issue. For some reason containers are not iterated properly. Debugging is a hassle, because I cant find where the interpretation of the item-data is going wrong. It seems to go wrong somewhere halfway the list.

Updating itemTemplate and rootItem offsets did the job for me.

oq1337 13th October 2021 08:57 PM

Whats the easiest way of doing external chams?

montroisiemecon 15th October 2021 04:15 PM

If you mess too much with the materials associated to thermal vision, your game will start leaking memory like crazy until it becomes unplayable (it used up to 29go ram for me)
A correct uint8_t to write is 0xE6, although it doesn't allow to see through glasses it has very intense contrast and doesn't crash your computer in 2 minutes
https://i.imgur.com/or9Tbl3.png

nicxio 15th October 2021 04:21 PM

Quote:

Originally Posted by montroisiemecon (Post 3270342)
If you mess too much with the materials associated to thermal vision, your game will start leaking memory like crazy until it becomes unplayable (it used up to 29go ram for me)
A correct uint8_t to write is 0xE6, although it doesn't allow to see through glasses it has very intense contrast and doesn't crash your computer in 2 minutes
https://i.imgur.com/or9Tbl3.png

since material is fucked i changed a bit more and i kinda like my result
and no these aren't chams.
https://i.imgur.com/fZM5w6G.png

kkcqkx 16th October 2021 11:20 AM

So I figured out a shitty RCS for Y recoil. I've also been having a lot of fun and I finally got around to adding damage hit markers - with that I decided to throw in floating damage numbers too.

The way of compensating is really dirty considering the way camera & firearm are smooth rotated into their positions, also i'm doing magic math to try to figure out a good scale to match the compensation with, so this seems unnatural but is the best way I could imitate 'recoil control' when doing it from a player input only perspective, so your taste may differ, i find it to work nicely. I may add proper strength calculations in the future.

Code:

public float compensate_legit_percent { get; set; } = 0.47f;
void compensate_recoil()
{
        GameStateSnapshot? current = GameState.Current;
        if (current == null || current.LocalPlayer == null)
                return;

        ProceduralWeaponAnimation? proc_weapon_anim = current.LocalPlayer.ProceduralWeaponAnimation;
        AbstractHandsController? local_hands_controller = current.LocalPlayer.HandsController;
        if (proc_weapon_anim == null || proc_weapon_anim.HandsContainer == null || proc_weapon_anim.Shootingg == null || local_hands_controller == null)
                return;

        if (local_hands_controller?.Item is not Weapon)
                return;

        if (proc_weapon_anim.HandsContainer.Recoil == null || proc_weapon_anim.HandsContainer.RecoilPivot == null)
                return;


        int mag_count = 0;
        int chamber_count = 0;

        if (current.LocalPlayer.HandsController != null && current.LocalPlayer.HandsController.Item is Weapon weapon)
                if (weapon.GetCurrentMagazine() != null)
                {
                        mag_count = weapon.GetCurrentMagazine().Count;
                        chamber_count = weapon.ChamberAmmoCount;
                }

        Vector3 get_recoil = proc_weapon_anim.HandsContainer.Recoil.Get();
        float recoil = get_recoil.x;
        Vector2 current_rotation = current.LocalPlayer.MovementContext.Rotation;
        float recoil_normalized = recoil / 180f;

        if (current.LocalPlayer.HandsController == null || current.LocalPlayer.HandsController is not FirearmController)
                return;

        var type_firearm = typeof(FirearmController);
        FieldInfo? field_info = type_firearm.GetField("bool_2", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

        if (type_firearm == null)
                return;

        bool is_firearm_pressed = (bool)field_info.GetValue(current.LocalPlayer.HandsController as FirearmController);

        if ((current.LocalPlayer.HandsController as FirearmController)?.WeaponSoundPlayer == null || (current.LocalPlayer.HandsController as FirearmController)?.WeaponSoundPlayer is not WeaponSoundPlayer)
                return;

        var type_sound = typeof(WeaponSoundPlayer);
        FieldInfo? start_sound_field_info = type_sound.GetField("_start", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

        if (type_sound == null)
                return;

        float is_weapon_sound_started = (float)start_sound_field_info.GetValue((current.LocalPlayer.HandsController as FirearmController)?.WeaponSoundPlayer as WeaponSoundPlayer);

        float sound_first_shot_complete = is_weapon_sound_started + Singleton<GameWorld>.Instance.DeltaTime;

        bool is_sound_first_shot_complete = (UnityEngine.Time.time >= sound_first_shot_complete);

        if (proc_weapon_anim.IsAiming && is_firearm_pressed && (mag_count > 0 || chamber_count > 0))
        {
                if (recoil != 0f)
                {
                        if (!is_sound_first_shot_complete)
                        {
                                recoil_normalized = -(CompensateLegitPercent); //TODO: Calculate first shot recoil from StrengthXY
                        }
                        else
                        {
                                recoil_normalized = recoil_normalized * CompensateLegitPercent;
                        }

                        recoil_normalized = -recoil_normalized;

                        Vector2 expected_rcs_rotation = new Vector2(current_rotation.x, (current_rotation.y + recoil_normalized));
                        current.LocalPlayer.MovementContext.Rotation = expected_rcs_rotation;
                }
        }
}

Here is the hit marker and floating damage text implementation that I was able to construct thanks to the LastDamageInfo field on Player class, I attached a pic so you see how it should look when complete:
Screenshot of Hit Marker and floating Damage text rendering

Code:

public class HitMarker
{
        public override bool Enabled { get; set; } = false;

        public static bool finished_hit = false;

        public static float time_of_hit = 0.0f;
        public static float expiration = 0.33f;
        public static GStruct245? last_damage_info = null;
        public static Player? hit_player = null;

        //Anim min-max values used by renderer
        public static int starting_tick { get; set; } = 70;
        public static int tick_index { get; set; } = 70;
        public static int max_ticks { get; set; } = 350;

        void Update()
        {
                Player? local_player = GameState.Current?.LocalPlayer;
                if (local_player == null)
                        return;

                IEnumerable<Player>? hostiles = GameState.Current?.Hostiles;
                if (hostiles == null || hostiles.Count() == 0)
                        return;

                foreach (Player? enemy in hostiles)
                {
                        Type enemy_player_type = typeof(Player);
                        FieldInfo? _damage_info_field = enemy_player_type.GetField("LastDamageInfo", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
                        GStruct245 damage_info = (GStruct245)_damage_info_field.GetValue(enemy);

                        if (damage_info.Player == null)
                                continue;

                        if (!damage_info.Player.IsAlive())
                                continue;

                        if (damage_info.Weapon == null)
                                continue;

                        //Save time on reflection operations here since this can replace the LastAggressor check
                        if (damage_info.Weapon.Id != local_player.Weapon.Id)
                                continue;

                        if (damage_info.Equals(HitMarker.last_damage_info))
                                continue;

                        HitMarker.finished_hit = true;
                        HitMarker.time_of_hit = UnityEngine.Time.time;
                        HitMarker.last_damage_info = damage_info;
                        HitMarker.hit_player = ((GStruct245)HitMarker.last_damage_info).Player;
                        HitMarker.tick_index = HitMarker.starting_tick;
                }
        }
}


void draw_hitmarker()
{
        if (HitMarker.hit_player == null)
                return;

        if (HitMarker.finished_hit == false)
                return;

        //Draw for X number of ticks fading out each tick until
        if (HitMarker.tick_index >= HitMarker.max_ticks)
        {
                HitMarker.finished_hit = true;
                return;
        }

        HitMarker.tick_index++;

        float current_index = (float)HitMarker.tick_index / (float)HitMarker.max_ticks;
        float anim_alpha = (1.0f - current_index);

        Color anim_color = new Color(225f/255f, 66f/255f, 33f/255f, anim_alpha - 0.1f);

        Render.draw_hit_damage(anim_alpha);
        Render.DrawCircle(new Vector2(ScreenCenter.x, ScreenCenter.y), 9.0f, anim_color, 2.98f, true, 34);
}


void draw_hit_damage(float alpha_percent = 0.75f)
{
        if (Aimbot._camera == null) return;
        if (HitMarker.last_damage_info == null) return;

        Vector3 new_target_pos = ((GStruct245)HitMarker.last_damage_info).HitPoint;
        new_target_pos.y = new_target_pos.y + 0.5f;

        Vector3 screen_position = Aimbot._camera.WorldPointToScreenPoint(new_target_pos);

        int armor_damage = (int)((GStruct245)HitMarker.last_damage_info).ArmorDamage;
        int health_damage = (int)((GStruct245)HitMarker.last_damage_info).Damage;

        if (armor_damage > 1) Render.DrawString(new Vector2(screen_position.x - 16.50f, screen_position.y - 9.75f), $"-{armor_damage}", new Color(0.0f, 126f / 255f, 1.0f, alpha_percent + 0.5f), true);
        Render.DrawString(new Vector2(screen_position.x, screen_position.y), $"-{health_damage}", new Color(1.0f, 33f/255f, 33f/255f, alpha_percent + 0.5f), true);
}


Xed0s 16th October 2021 05:20 PM

BSG fixed internal visible check? I can't damage players/bots, but raycast works fine, wtf?

TJ888 17th October 2021 04:06 AM

Quote:

Originally Posted by Xed0s (Post 3271231)
BSG fixed internal visible check? I can't damage players/bots, but raycast works fine, wtf?

No, that happens because you aren't calling it from the games main thread. I assume you are calling it from either Present or your own thread, or a different random thread you hijacked.

Xed0s 17th October 2021 06:33 AM

Quote:

Originally Posted by TJ888 (Post 3271628)
No, that happens because you aren't calling it from the games main thread. I assume you are calling it from either Present or your own thread, or a different random thread you hijacked.

I'm using it in PresentScene from swapchain, lul.

TJ888 17th October 2021 07:51 AM

Quote:

Originally Posted by Xed0s (Post 3271704)
I'm using it in PresentScene from swapchain, lul.

Well there you go, as I said, you cannot use Present. You will need to call it from the game's main thread.

Xed0s 17th October 2021 07:59 AM

Quote:

Originally Posted by TJ888 (Post 3271749)
Well there you go, as I said, you cannot use Present. You will need to call it from the game's main thread.

How I can do it if I'm internal? BE checks every thread context/registers/etc, thread hijacking/creating was detected.

Btw why internal w2s (Camera->WorldToScreenPoint_Injected) fuck ups with optics?

vasterasjontek 19th October 2021 03:06 AM

grids updated?

DuOreng 19th October 2021 04:36 AM

Seem to have invalid positions constantly with containers anybody know what is up?

m_pInteractive is ItemProfile + 0x28

Code:


uint64_t baseObject = Memory::ReadType<uint64_t>(m_pInteractive + 0x10);
uint64_t gameObject = Memory::ReadType<uint64_t>(baseObject + 0x30);
uint64_t objectClass = Memory::ReadType<uint64_t>(gameObject + 0x30);
uint64_t pointerToTransform_1 = Memory::ReadType<uint64_t>(objectClass + 0x8);
uint64_t pointerToTransform_2 = Memory::ReadType<uint64_t>(pointerToTransform_1 + 0x28); (inside of my get position I + 0x10 this)

Vector3 loot_position = GetPosition(pointerToTransform_2);

All pointers seem to be valid I can read the container items fine with the correct hash, just these positions seem completely fucked (0, 0, 0) constantly any help, appreciated! :)

(edit) -

It seems like the TransformData, TransformAccessReadOnly is completely fucked passing that transform into it.

https://i.imgur.com/YnwXMoM.png

kleenx 19th October 2021 07:09 PM

Quote:

Originally Posted by kkcqkx (Post 3270961)
Here is the hit marker and floating damage text implementation that I was able to construct thanks to the LastDamageInfo field on Player class, I attached a pic so you see how it should look when complete:
Screenshot of Hit Marker and floating Damage text rendering

Code:

public class HitMarker
{
        public override bool Enabled { get; set; } = false;

        public static bool finished_hit = false;

        public static float time_of_hit = 0.0f;
        public static float expiration = 0.33f;
        public static GStruct245? last_damage_info = null;
        public static Player? hit_player = null;

        //Anim min-max values used by renderer
        public static int starting_tick { get; set; } = 70;
        public static int tick_index { get; set; } = 70;
        public static int max_ticks { get; set; } = 350;

        void Update()
        {
                Player? local_player = GameState.Current?.LocalPlayer;
                if (local_player == null)
                        return;

                IEnumerable<Player>? hostiles = GameState.Current?.Hostiles;
                if (hostiles == null || hostiles.Count() == 0)
                        return;

                foreach (Player? enemy in hostiles)
                {
                        Type enemy_player_type = typeof(Player);
                        FieldInfo? _damage_info_field = enemy_player_type.GetField("LastDamageInfo", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
                        GStruct245 damage_info = (GStruct245)_damage_info_field.GetValue(enemy);

                        if (damage_info.Player == null)
                                continue;

                        if (!damage_info.Player.IsAlive())
                                continue;

                        if (damage_info.Weapon == null)
                                continue;

                        //Save time on reflection operations here since this can replace the LastAggressor check
                        if (damage_info.Weapon.Id != local_player.Weapon.Id)
                                continue;

                        if (damage_info.Equals(HitMarker.last_damage_info))
                                continue;

                        HitMarker.finished_hit = true;
                        HitMarker.time_of_hit = UnityEngine.Time.time;
                        HitMarker.last_damage_info = damage_info;
                        HitMarker.hit_player = ((GStruct245)HitMarker.last_damage_info).Player;
                        HitMarker.tick_index = HitMarker.starting_tick;
                }
        }
}


void draw_hitmarker()
{
        if (HitMarker.hit_player == null)
                return;

        if (HitMarker.finished_hit == false)
                return;

        //Draw for X number of ticks fading out each tick until
        if (HitMarker.tick_index >= HitMarker.max_ticks)
        {
                HitMarker.finished_hit = true;
                return;
        }

        HitMarker.tick_index++;

        float current_index = (float)HitMarker.tick_index / (float)HitMarker.max_ticks;
        float anim_alpha = (1.0f - current_index);

        Color anim_color = new Color(225f/255f, 66f/255f, 33f/255f, anim_alpha - 0.1f);

        Render.draw_hit_damage(anim_alpha);
        Render.DrawCircle(new Vector2(ScreenCenter.x, ScreenCenter.y), 9.0f, anim_color, 2.98f, true, 34);
}


void draw_hit_damage(float alpha_percent = 0.75f)
{
        if (Aimbot._camera == null) return;
        if (HitMarker.last_damage_info == null) return;

        Vector3 new_target_pos = ((GStruct245)HitMarker.last_damage_info).HitPoint;
        new_target_pos.y = new_target_pos.y + 0.5f;

        Vector3 screen_position = Aimbot._camera.WorldPointToScreenPoint(new_target_pos);

        int armor_damage = (int)((GStruct245)HitMarker.last_damage_info).ArmorDamage;
        int health_damage = (int)((GStruct245)HitMarker.last_damage_info).Damage;

        if (armor_damage > 1) Render.DrawString(new Vector2(screen_position.x - 16.50f, screen_position.y - 9.75f), $"-{armor_damage}", new Color(0.0f, 126f / 255f, 1.0f, alpha_percent + 0.5f), true);
        Render.DrawString(new Vector2(screen_position.x, screen_position.y), $"-{health_damage}", new Color(1.0f, 33f/255f, 33f/255f, alpha_percent + 0.5f), true);
}


Just wanted to give a shout out and say that the floating numbers and hit marker implementation that you presented in your last post is super sweet! Can't believe I hadn't thought of doing something like that. Gives me all sorts of ideas, like adding a little healing sprite popup when someone uses meds or something is just such a funny idea to me.

Again, great work!


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

Xed0s 20th October 2021 12:11 AM

Anyone use WorldToScreenPointInjected from Camera?

progamer321 20th October 2021 04:50 PM

Quote:

Originally Posted by Xed0s (Post 3274259)
Anyone use WorldToScreenPointInjected from Camera?

I use this, why?

kkcqkx 20th October 2021 05:40 PM

Quote:

Originally Posted by kleenx (Post 3274044)
Just wanted to give a shout out and say that the floating numbers and hit marker implementation that you presented in your last post is super sweet! Can't believe I hadn't thought of doing something like that. Gives me all sorts of ideas, like adding a little healing sprite popup when someone uses meds or something is just such a funny idea to me.

Again, great work!

Thanks! It's a little messy I have some cleaning up to do but I was excited to finally get it working. I didn't think to add sprites or medicine, that's a great idea. There is a ton of cool things that can be added in the realm of realtime features. I'll be uploading the full source to github soon and share it here once I'm done trimming the fat.

I'm currently doing all my cheating offline through a Singleplayer emulator so I don't know how applicable any of this stuff will be for live. If just reading damageinfo for Hitmarkers/Dmg text then should be undetected.

hollow 20th October 2021 08:33 PM

Quote:

Originally Posted by kleenx (Post 3274044)
Gives me all sorts of ideas, like adding a little healing sprite popup when someone uses meds or something is just such a funny idea to me.

this is actually very easily implementable: check item in hands. works perfectly for meds and food.

kleenx 20th October 2021 11:27 PM

Quote:

Originally Posted by hollow (Post 3274905)
this is actually very easily implementable: check item in hands. works perfectly for meds and food.

My thoughts exactly, but I'd probably do it by running a check on HP once it's detected and comparing to see an increase. Then running the sprite animation or something... same with food.

Is there a more efficient way to do that, or am I on the right track?

HELOHELO121 21st October 2021 01:47 AM

Quote:

Originally Posted by hollow (Post 3274905)
this is actually very easily implementable: check item in hands. works perfectly for meds and food.

How would you know that the item is a medical item or food without manually entering their ids and checking them? I'm not aware of any item type field or sm like that

Quote:

Originally Posted by kkcqkx (Post 3270961)
Here is the hit marker and floating damage text implementation that I was able to construct thanks to the LastDamageInfo field on Player class, I attached a pic so you see how it should look when complete:
Screenshot of Hit Marker and floating Damage text rendering

Code:

public class HitMarker
{
        public override bool Enabled { get; set; } = false;

        public static bool finished_hit = false;

        public static float time_of_hit = 0.0f;
        public static float expiration = 0.33f;
        public static GStruct245? last_damage_info = null;
        public static Player? hit_player = null;

        //Anim min-max values used by renderer
        public static int starting_tick { get; set; } = 70;
        public static int tick_index { get; set; } = 70;
        public static int max_ticks { get; set; } = 350;

        void Update()
        {
                Player? local_player = GameState.Current?.LocalPlayer;
                if (local_player == null)
                        return;

                IEnumerable<Player>? hostiles = GameState.Current?.Hostiles;
                if (hostiles == null || hostiles.Count() == 0)
                        return;

                foreach (Player? enemy in hostiles)
                {
                        Type enemy_player_type = typeof(Player);
                        FieldInfo? _damage_info_field = enemy_player_type.GetField("LastDamageInfo", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
                        GStruct245 damage_info = (GStruct245)_damage_info_field.GetValue(enemy);

                        if (damage_info.Player == null)
                                continue;

                        if (!damage_info.Player.IsAlive())
                                continue;

                        if (damage_info.Weapon == null)
                                continue;

                        //Save time on reflection operations here since this can replace the LastAggressor check
                        if (damage_info.Weapon.Id != local_player.Weapon.Id)
                                continue;

                        if (damage_info.Equals(HitMarker.last_damage_info))
                                continue;

                        HitMarker.finished_hit = true;
                        HitMarker.time_of_hit = UnityEngine.Time.time;
                        HitMarker.last_damage_info = damage_info;
                        HitMarker.hit_player = ((GStruct245)HitMarker.last_damage_info).Player;
                        HitMarker.tick_index = HitMarker.starting_tick;
                }
        }
}


void draw_hitmarker()
{
        if (HitMarker.hit_player == null)
                return;

        if (HitMarker.finished_hit == false)
                return;

        //Draw for X number of ticks fading out each tick until
        if (HitMarker.tick_index >= HitMarker.max_ticks)
        {
                HitMarker.finished_hit = true;
                return;
        }

        HitMarker.tick_index++;

        float current_index = (float)HitMarker.tick_index / (float)HitMarker.max_ticks;
        float anim_alpha = (1.0f - current_index);

        Color anim_color = new Color(225f/255f, 66f/255f, 33f/255f, anim_alpha - 0.1f);

        Render.draw_hit_damage(anim_alpha);
        Render.DrawCircle(new Vector2(ScreenCenter.x, ScreenCenter.y), 9.0f, anim_color, 2.98f, true, 34);
}


void draw_hit_damage(float alpha_percent = 0.75f)
{
        if (Aimbot._camera == null) return;
        if (HitMarker.last_damage_info == null) return;

        Vector3 new_target_pos = ((GStruct245)HitMarker.last_damage_info).HitPoint;
        new_target_pos.y = new_target_pos.y + 0.5f;

        Vector3 screen_position = Aimbot._camera.WorldPointToScreenPoint(new_target_pos);

        int armor_damage = (int)((GStruct245)HitMarker.last_damage_info).ArmorDamage;
        int health_damage = (int)((GStruct245)HitMarker.last_damage_info).Damage;

        if (armor_damage > 1) Render.DrawString(new Vector2(screen_position.x - 16.50f, screen_position.y - 9.75f), $"-{armor_damage}", new Color(0.0f, 126f / 255f, 1.0f, alpha_percent + 0.5f), true);
        Render.DrawString(new Vector2(screen_position.x, screen_position.y), $"-{health_damage}", new Color(1.0f, 33f/255f, 33f/255f, alpha_percent + 0.5f), true);
}


Tried it out for myself and LastDamageInfo only works offline for me

Xed0s 21st October 2021 08:42 AM

Quote:

Originally Posted by progamer321 (Post 3274744)
I use this, why?

Why it fuckups bone drawing and w2s? Sometimes bones drawing so weird, random huge lines, not attached to entity corner box, wtf? I use if from Camera.main.

P.s. mono_thread_attach(mono_get_root_domain()) doesnt helps with internal Raycast, bullet damage anyway fuckups.

ZeusLord 21st October 2021 02:18 PM

Quote:

Originally Posted by Xed0s (Post 3275303)
Why it fuckups bone drawing and w2s? Sometimes bones drawing so weird, random huge lines, not attached to entity corner box, wtf? I use if from Camera.main.

P.s. mono_thread_attach(mono_get_root_domain()) doesnt helps with internal Raycast, bullet damage anyway fuckups.


Yeah you need to call it from an actual game thread.. Attaching to mono threads won�t help you there.

hollow 21st October 2021 02:46 PM

Quote:

Originally Posted by HELOHELO121 (Post 3275109)
How would you know that the item is a medical item or food without manually entering their ids and checking them? I'm not aware of any item type field or sm like that

i use tarkov market bsg response, each item type has fields unique to it

TJ888 22nd October 2021 02:58 AM

Quote:

Originally Posted by Xed0s (Post 3275303)
Why it fuckups bone drawing and w2s? Sometimes bones drawing so weird, random huge lines, not attached to entity corner box, wtf? I use if from Camera.main.

I can't answer that as I don't have any issues either. Have you tried w2s using some pasted function to see if it causes the same issue? If so, then your issue is elsewhere and not calling that function.
Quote:

Originally Posted by Xed0s (Post 3275303)
P.s. mono_thread_attach(mono_get_root_domain()) doesnt helps with internal Raycast, bullet damage anyway fuckups.

As I've told you twice and ZeusLord who replied to this too, YOU NEED TO CALL IT FROM THE GAMES MAIN THREAD. Using mono_thread_attach just attaches the existing thread to allow the use of mono function calls and manipulating mono objects. It doesn't magically change your thread to the game's main thread.

How you manage to get it called from the game's main thread without getting detected is up to you to figure out, but contrary to your other post saying BattlEye detects everything isn't true, not everything (not a lot of things haha).

RangeMachine 22nd October 2021 09:18 PM

Code:

EFT.Player.Profile 0x458 -> 0x460
EFT.Player.HealthController 0x490 -> 0x498
EFT.Player.HandsController 0x4A8 -> 0x4B0


cheeterr 23rd October 2021 12:39 AM

Quote:

Originally Posted by RangeMachine (Post 3276544)
Code:

EFT.Player.Profile 0x458 -> 0x460
EFT.Player.HealthController 0x490 -> 0x498
EFT.Player.HandsController 0x4A8 -> 0x4B0


Indeed most fields in EFT.Player shifted by 8 bytes, notably also:

Code:

Physical 0x468 -> 0x470

gabbo200 23rd October 2021 01:14 AM

Does anyone know what this offset points to Player + 0x7A3 and has the updated one? I was using it to verify local player.

nicxio 23rd October 2021 01:22 AM

Quote:

Originally Posted by RangeMachine (Post 3276544)
Code:

EFT.Player.Profile 0x458 -> 0x460
EFT.Player.HealthController 0x490 -> 0x498
EFT.Player.HandsController 0x4A8 -> 0x4B0


stackslot 0x80 -> 0x88

Quote:

Originally Posted by gabbo200 (Post 3276732)
Does anyone know what this offset points to Player + 0x7A3 and has the updated one? I was using it to verify local player.

i check for 0x18 if its there localplayer
but it should be 0x7AF its AggressorFound+ 0x1

bhehe6813 23rd October 2021 03:09 AM

Quote:

Originally Posted by nicxio (Post 3276734)
stackslot 0x80 -> 0x88



i check for 0x18 if its there localplayer
but it should be 0x7AF its AggressorFound+ 0x1

"i check for 0x18 if its there localplayer" try drinking, healing, and throwing grenades and you'll see why 0x18 isn't used anymore.

shaliuno 23rd October 2021 04:09 AM

Quote:

Originally Posted by gabbo200 (Post 3276732)
Does anyone know what this offset points to Player + 0x7A3 and has the updated one? I was using it to verify local player.

player + 0x18

if ptr is not null, then it's local player

gabbo200 23rd October 2021 05:33 AM

Quote:

Originally Posted by shaliuno (Post 3276825)
player + 0x18

if ptr is not null, then it's local player

It's now 0x7AF if anyone needs it. I have had issues with 0x18 and it stops working after inventory open or some actions.

montroisiemecon 23rd October 2021 01:33 PM

People be like "use 0x18" when their code works only because they parse the list of players and local player is always first.

HELOHELO121 24th October 2021 12:06 AM

Quote:

Originally Posted by montroisiemecon (Post 3277112)
People be like "use 0x18" when their code works only because they parse the list of players and local player is always first.

It does work pretty well though, and that's not true because local isn't always first in the list on scav runs and 0x18 works for me on scav runs. Only issue is the ptr becomes valid whenever looting (which is new).

ZeusLord 24th October 2021 12:11 AM

Everything adds up now I was having issues with this and I never thought anything of it and it was while I was looting I would have never thought it would have been this. Very interesting to say the least I just thought it was my 3 am codenz


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

HELOHELO121 24th October 2021 12:16 AM

Anyone have an issue with a corpse's equipment slots becoming out of order sometimes? It used to work perfectly for me to calculate the value of a corpse and this is new. Still works perfectly fine for alive players and scav corpses but player corpses equipment slots become out of order somehow.

Edit:
Solved, I was using the wrong field whoops
Code:

auto equipment = GClass19BA(corpse.get_item_0x50().addr).get_slotArray_0x78();
Anyone know of a way to check if a scav is a scav boss other than manually checking the name?

express2 24th October 2021 06:50 AM

Quote:

Originally Posted by HELOHELO121 (Post 3277548)
Anyone have an issue with a corpse's equipment slots becoming out of order sometimes? It used to work perfectly for me to calculate the value of a corpse and this is new. Still works perfectly fine for alive players and scav corpses but player corpses equipment slots become out of order somehow.

Edit:
Solved, I was using the wrong field whoops
Code:

auto equipment = GClass19BA(corpse.get_item_0x50().addr).get_slotArray_0x78();
Anyone know of a way to check if a scav is a scav boss other than manually checking the name?

I think the most direct way is to use the role/WildSpawnType enum. There could be a better way I am unaware of though, since this worked for me; you'd still need to update when a boss or AI type is added though

Escape from Tarkov Reversal, Structs and Offsets

vasterasjontek 24th October 2021 05:53 PM

Does anyone know how to set backpacks as searched or increase the search time?

RaiseHardError 25th October 2021 11:12 PM

https://imgur.com/a/1IPjxYp

Anyone know why my ESP is so damn delayed? Com is decently fast and I dont believe its an issue with the overlay. Maybe some view matrix stuff? Dunno. Ive also tried running the visuals on a separate thread but still feels the same. Looks like its taking about 10-30ms to render a frame which is slower than when I was using GDI.

Edit: //Fixed

cheeterr 26th October 2021 01:53 AM

Quote:

Originally Posted by RaiseHardError (Post 3278948)
https://imgur.com/a/1IPjxYp

Anyone know why my ESP is so damn delayed? Com is decently fast and I dont believe its an issue with the overlay. Maybe some view matrix stuff? Dunno. Ive also tried running the visuals on a separate thread but still feels the same. Looks like its taking about 10-30ms to render a frame which is slower than when I was using GDI.

Besides drawing on a separate thread were you updating the view matrix during the render loop? Otherwise you could have delayed positions regardless of the frame rate.

It should also help to have threads for reading the entity list and updating cached entities.

kleenx 27th October 2021 04:56 AM

Quote:

Originally Posted by RaiseHardError (Post 3278948)

What was the issue?

amokachi 27th October 2021 08:42 PM

INPUT_MANAGER 0x0156C448
UNITY_OBJECT_LIST 0x0156C698
UNITY_CAMERA_LIST 0x0150EA00

CLASS_MonoBehaviour 68
CLASS_MonoTransform 120

Guys trying to update these with emu, keep failing everytime. I'm trying to update my friend's source without having the actual game. Any help?

(im not a tarkov player sadly, just trying fix these to make him banned fast so we can continue playing valorant again)

RaiseHardError 27th October 2021 09:29 PM

Quote:

Originally Posted by kleenx (Post 3279900)
What was the issue?

Thought I fixed it, but I didnt. Was too lazy to type out what I removed. Went to labs and got 3 frames. Posted a thread about it on Direct3D
DX9 Performance Issues

HELOHELO121 30th October 2021 11:57 PM

Quote:

Originally Posted by RaiseHardError (Post 3280385)
Thought I fixed it, but I didnt. Was too lazy to type out what I removed. Went to labs and got 3 frames. Posted a thread about it on Direct3D
DX9 Performance Issues

This isn't performance related but you shouldn't give your overlay the transparent AND topmost flags together. You should use these flags:
Code:

WS_EX_LAYERED | WS_EX_NOACTIVATE | WS_EX_TRANSPARENT
To make it topmost call SetWindowPos every frame and for the hWndInsertAfter parameter, pass the tarkov process and it will set the overlay above the game process. Using both flags may not get you banned immediately, but it can get your account flagged so best be safe and not use them both.

DuOreng 31st October 2021 01:24 AM

Quote:

Originally Posted by RaiseHardError (Post 3280385)
Thought I fixed it, but I didnt. Was too lazy to type out what I removed. Went to labs and got 3 frames. Posted a thread about it on Direct3D
DX9 Performance Issues

Edit, Im a jew.

Sweethamcheeks 31st October 2021 06:27 AM

Could someone tell me how to get aimIndex and initialspeed since they removed Weapon object from the player class?

uNitx 1st November 2021 01:30 PM

hello community ! How make listing for exit points from raid ?

ExfiltrationPoints
scavExfiltrationPoints

But I’m played on factory and see only boxes in middle, no one exitpoint wft?

exfiltration_controller + 0x20] table
exfiltration_controller + 0x20] + 0x18] size

Code:

        for (uint32_t index = 0; index < exfiltration_list_size; index++)
                                {
                                        const auto exit_point = *(uint64_t*)(exfiltration_list_table + 0x20 /*fist_part*/ + (index * 8ULL));

                                        if (!exit_point)
                                        {
                                                continue;
                                        }

                                        //magic
                                }


shaliuno 1st November 2021 01:52 PM

Quote:

Originally Posted by uNitx (Post 3284105)
hello community ! How make listing for exit points from raid ?

ExfiltrationPoints
scavExfiltrationPoints

But I�m played on factory and see only boxes in middle, no one exit wft?

EFT.Interactive.ExfiltrationPoint
you can try get transform from there or from collider iirc

uNitx 1st November 2021 01:57 PM

Quote:

Originally Posted by shaliuno (Post 3284114)
EFT.Interactive.ExfiltrationPoint
you can try get transform from there or from collider iirc

u mean that 18 : ExtendedCollider (type: UnityEngine.Collider)? what im doing wrong?

shaliuno 1st November 2021 02:11 PM

Quote:

Originally Posted by uNitx (Post 3284118)
u mean that 18 : ExtendedCollider (type: UnityEngine.Collider)? what im doing wrong?

https://i.imgur.com/zhUxXD3.png

from here get components list and find transform
or just get JET and get all coordinates from here and make associative array
save your time

uNitx 1st November 2021 02:13 PM

Quote:

Originally Posted by shaliuno (Post 3284123)
https://i.imgur.com/zhUxXD3.png

from here get components list and find transform
or just get JET and get all coordinates from here and make associative array
save your time

Thx dude, i luv u :thinkguns:

Quote:

Originally Posted by shaliuno (Post 3284123)
https://i.imgur.com/zhUxXD3.png

from here get components list and find transform
or just get JET and get all coordinates from here and make associative array
save your time

const auto box_collider = *(uint64_t*)(exit_point + 0x88);
const auto game_object = *(uint64_t*)(box_collider + 0x30);
const auto object_class = *(uint64_t*)(game_object + 0x30);
const auto entity = *(uint64_t*)(object_class + 0x18);
const auto entity_base = *(uint64_t*)(entity + 0x28);

after classic find transform right?

bhehe6813 1st November 2021 03:04 PM

Quote:

Originally Posted by HELOHELO121 (Post 3282824)
This isn't performance related but you shouldn't give your overlay the transparent AND topmost flags together. You should use these flags:
Code:

WS_EX_LAYERED | WS_EX_NOACTIVATE | WS_EX_TRANSPARENT
To make it topmost call SetWindowPos every frame and for the hWndInsertAfter parameter, pass the tarkov process and it will set the overlay above the game process. Using both flags may not get you banned immediately, but it can get your account flagged so best be safe and not use them both.

It passes report if set transparent and topmost, but does not ban off this report. It seems more for recon than anything.

Quote:

Originally Posted by uNitx (Post 3284126)
Thx dude, i luv u :thinkguns:



const auto box_collider = *(uint64_t*)(exit_point + 0x88);
const auto game_object = *(uint64_t*)(box_collider + 0x30);
const auto object_class = *(uint64_t*)(game_object + 0x30);
const auto entity = *(uint64_t*)(object_class + 0x18);
const auto entity_base = *(uint64_t*)(entity + 0x28);

after classic find transform right?

Here (note my names aren't accurate):

Code:

  [StructLayout(LayoutKind.Explicit)]
        public struct ExfiltrationController
        {
            [FieldOffset(0x20)] public IntPtr pExfilPoints;

            [FieldOffset(0x28)] public IntPtr pScavExfilPoints;
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct Exfiltration
        {
            [FieldOffset(0x10)] public IntPtr pExfilTransform;

            [FieldOffset(0x58)] public IntPtr pExfilInfo;

            [FieldOffset(0xA8)] public int eStatus;

            [FieldOffset(0x30)] public IntPtr pList;

            public ExfilTransform ExfilTransform => M.Read<ExfilTransform>(this.pExfilTransform);

            public ExfiltrationPointInfo ExfiltrationPointInfo => M.Read<ExfiltrationPointInfo>(this.pExfilInfo);

            public EExfilStatus Status => (EExfilStatus)this.eStatus;
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct ExfiltrationPointInfo
        {
            [FieldOffset(0x10)] public IntPtr pName;

            [FieldOffset(0x34)] public int PassageRequirement;

            public string ExfilName =>
                M.ReadUnicodeString(this.pName + 0x14, M.Read<int>(this.pName + 0x10) * 8);
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct ExfilTransform
        {
            [FieldOffset(0x30)] public IntPtr pExfilTransform2;

            public ExfilTransform2 ExfilTransform2 => M.Read<ExfilTransform2>(this.pExfilTransform2);
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct ExfilTransform2
        {
            [FieldOffset(0x30)] public IntPtr pExfilTransform3;

            public ExfilTransform3 ExfilTransform3 => M.Read<ExfilTransform3>(this.pExfilTransform3);
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct ExfilTransform3
        {
            [FieldOffset(0x8)] public IntPtr pExfilTransform4;
            public ExfilTransform4 ExfilTransform4 => M.Read<ExfilTransform4>(this.pExfilTransform4);
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct ExfilTransform4
        {
            [FieldOffset(0x28)] public IntPtr pTransform;

            public TransformInternal ExfilTransform => M.Read<TransformInternal>(M.Read<IntPtr>(this.pTransform + 0x10));
        }


uNitx 1st November 2021 03:27 PM

Quote:

Originally Posted by bhehe6813 (Post 3284153)
It passes report if set transparent and topmost, but does not ban off this report. It seems more for recon than anything.



Here (note my names aren't accurate):

Code:

  [StructLayout(LayoutKind.Explicit)]
        public struct ExfiltrationController
        {
            [FieldOffset(0x20)] public IntPtr pExfilPoints;

            [FieldOffset(0x28)] public IntPtr pScavExfilPoints;
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct Exfiltration
        {
            [FieldOffset(0x10)] public IntPtr pExfilTransform;

            [FieldOffset(0x58)] public IntPtr pExfilInfo;

            [FieldOffset(0xA8)] public int eStatus;

            [FieldOffset(0x30)] public IntPtr pList;

            public ExfilTransform ExfilTransform => M.Read<ExfilTransform>(this.pExfilTransform);

            public ExfiltrationPointInfo ExfiltrationPointInfo => M.Read<ExfiltrationPointInfo>(this.pExfilInfo);

            public EExfilStatus Status => (EExfilStatus)this.eStatus;
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct ExfiltrationPointInfo
        {
            [FieldOffset(0x10)] public IntPtr pName;

            [FieldOffset(0x34)] public int PassageRequirement;

            public string ExfilName =>
                M.ReadUnicodeString(this.pName + 0x14, M.Read<int>(this.pName + 0x10) * 8);
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct ExfilTransform
        {
            [FieldOffset(0x30)] public IntPtr pExfilTransform2;

            public ExfilTransform2 ExfilTransform2 => M.Read<ExfilTransform2>(this.pExfilTransform2);
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct ExfilTransform2
        {
            [FieldOffset(0x30)] public IntPtr pExfilTransform3;

            public ExfilTransform3 ExfilTransform3 => M.Read<ExfilTransform3>(this.pExfilTransform3);
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct ExfilTransform3
        {
            [FieldOffset(0x8)] public IntPtr pExfilTransform4;
            public ExfilTransform4 ExfilTransform4 => M.Read<ExfilTransform4>(this.pExfilTransform4);
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct ExfilTransform4
        {
            [FieldOffset(0x28)] public IntPtr pTransform;

            public TransformInternal ExfilTransform => M.Read<TransformInternal>(M.Read<IntPtr>(this.pTransform + 0x10));
        }


lol i cant understand that c# code -> for position entity + 0x10] + 0x30] + 0x30] + 0x8] + 0x28] + 0x10] ? what?

bhehe6813 1st November 2021 03:51 PM

Quote:

Originally Posted by uNitx (Post 3284164)
lol i cant understand that c# code -> for position entity + 0x10] + 0x30] + 0x30] + 0x8] + 0x28] + 0x10] ? what?

Correct.

uNitx 1st November 2021 03:59 PM

Quote:

Originally Posted by bhehe6813 (Post 3284173)
Correct.

Ok, but how next? u using get_position_from_transoform? how me get a vector3 pos

for players i can use that: but if im using it for exilif i see one point in middle on factory
+ 0x10]
+ 0x30]
+ 0x30]
+ 0x8]
+ 0x38]
+ 0xB0 - Vector3


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

shaliuno 1st November 2021 04:24 PM

Quote:

Originally Posted by uNitx (Post 3284180)
Ok, but how next? u using get_position_from_transoform? how me get a vector3 pos

last snippet
Vector3f getTransformPosition
https://www.unknowncheats.me/forum/3...-post3348.html

Sweethamcheeks 1st November 2021 06:14 PM

Quote:

Originally Posted by Sweethamcheeks (Post 3283048)
Could someone tell me how to get aimIndex and initialspeed since they removed Weapon object from the player class?

For anyone interested, I retrieved the firearmcontroller from the handscontroller

JackTheRat 2nd November 2021 07:06 AM

anyone got a up to date table of experience points for every level? The wiki is outdated and any other, I found on here, as well.

shaliuno 2nd November 2021 11:40 AM

Quote:

Originally Posted by JackTheRat (Post 3284727)
anyone got a up to date table of experience points for every level? The wiki is outdated and any other, I found on here, as well.

idk if its outdated but here it is

Code:


        internal static List<int> experienceTable = new List<int>()
        {
            0,
            1000,
            2743,
            3999,
            5256,
            6494,
            7658,
            8851,
            10025,
            11098,
            12226,
            13336,
            16814,
            19924,
            23053,
            26283,
            29219,
            32045,
            34466,
            37044,
            39162,
            41492,
            44002,
            46900,
            51490,
            56080,
            60670,
            65260,
            69850,
            74440,
            79030,
            83620,
            90964,
            98308,
            105652,
            112996,
            120340,
            127684,
            135028,
            142372,
            149716,
            157060,
            167158,
            177256,
            187354,
            197452,
            207550,
            217648,
            227746,
            237844,
            247942,
            258040,
            271810,
            285580,
            299350,
            313120,
            323450,
            362111,
            369536,
            386978,
            407174,
            430124,
            457664,
            494384,
            549464,
            622904,
            760604,
            1036004,
            1449104,
            10000000,
            99999999 // justiNcase
        };


numagomedov 2nd November 2021 01:45 PM

Quote:

Originally Posted by uNitx (Post 3284180)
Ok, but how next? u using get_position_from_transoform? how me get a vector3 pos

for players i can use that: but if im using it for exilif i see one point in middle on factory
+ 0x10]
+ 0x30]
+ 0x30]
+ 0x8]
+ 0x38]
+ 0xB0 - Vector3

i have the exact same fucking issue

montroisiemecon 2nd November 2021 04:18 PM

Quote:

Originally Posted by JackTheRat (Post 3284727)
anyone got a up to date table of experience points for every level? The wiki is outdated and any other, I found on here, as well.

Code:

uint64_t tablePlayerExperience[] =
{
    1000, 4017, 8432, 14256, 21477, 30023, 39936, 51204, 63723, 77563, 92713, 111881, 134674, 161139, 191417, 225194,
    262366, 302484, 345751, 391649, 440444, 492366, 547896, 609066, 675913, 748474, 826786, 910885, 1000809, 1096593, 1198275,
    1309251, 1429580, 1559321, 1698532, 1847272, 2005600, 2173575, 2351255, 2538699, 2735966, 2946585, 3170637,
    3408202, 3659361, 3924195, 4202784, 4495210, 4801553, 5121894, 5456314, 5809667, 6182063, 6573613,
    6984426, 7414613, 7864284, 8333549, 8831052, 9360623, 9928578, 10541848, 11206300, 11946977, 12789143, 13820522, 15229487, 17206065, 19706065, 22706065
};


amokachi 2nd November 2021 04:20 PM

Can someone help me with these?

INPUT_MANAGER 0x0156C448
UNITY_OBJECT_LIST 0x0156C698
UNITY_CAMERA_LIST 0x0150EA00

CLASS_MonoBehaviour 68
CLASS_MonoTransform 120


I dont have the game, just trying to build for my friend.

HELOHELO121 3rd November 2021 12:16 AM

Quote:

Originally Posted by bhehe6813 (Post 3284153)
It passes report if set transparent and topmost, but does not ban off this report. It seems more for recon than anything.

I been said that man in my original reply

hollow 3rd November 2021 01:57 AM

i am VERY surprised nobody seems to have ever posted anything about finding dx11 swapchain with a little help from unity:
https://i.imgur.com/dARRb3Z.png

GetD3D11PrimarySwapChain being:
https://i.imgur.com/Ro69iCi.png

all this makes finding swapchain a 2 line process
Code:

auto unity_swapchain = *(uintptr_t*)(unityplayer_base + 0x154E7D0);
auto d3d_swapchain = *(IDXGISwapChain**)(unity_swapchain + 0x2A0);

the function can easily be found by searching for a string
https://i.imgur.com/LyxiQjH.png

bhehe6813 3rd November 2021 02:07 AM

Quote:

Originally Posted by Sweethamcheeks (Post 3284303)
For anyone interested, I retrieved the firearmcontroller from the handscontroller

Just get it from pwa.

Quote:

Originally Posted by uNitx (Post 3284180)
Ok, but how next? u using get_position_from_transoform? how me get a vector3 pos

for players i can use that: but if im using it for exilif i see one point in middle on factory
+ 0x10]
+ 0x30]
+ 0x30]
+ 0x8]
+ 0x38]
+ 0xB0 - Vector3

Use getbonepositition function that you can copy pasta from here for this. B0 doesn't work for exfils I thought. I'd have to look.

pinefin 3rd November 2021 03:19 AM

Quote:

Originally Posted by hollow (Post 3285452)
i am VERY surprised nobody seems to have ever posted anything about finding dx11 swapchain with a little help from unity:
https://i.imgur.com/dARRb3Z.png

GetD3D11PrimarySwapChain being:
https://i.imgur.com/Ro69iCi.png

all this makes finding swapchain a 2 line process
Code:

auto unity_swapchain = *(uintptr_t*)(unityplayer_base + 0x154E7D0);
auto d3d_swapchain = *(IDXGISwapChain**)(unity_swapchain + 0x2A0);

the function can easily be found by searching for a string
https://i.imgur.com/LyxiQjH.png

i thought normally everyone had just a dummy swapchain on standby (for whenever unity updates) and then in cheat engine, find ptrs to it

thats the exact swapchain i have

Mareek 4th November 2021 10:08 AM

Quote:

Originally Posted by uNitx (Post 3284180)
Ok, but how next? u using get_position_from_transoform? how me get a vector3 pos

for players i can use that: but if im using it for exilif i see one point in middle on factory
+ 0x10]
+ 0x30]
+ 0x30]
+ 0x8]
+ 0x38]
+ 0xB0 - Vector3

Code:

Vec3 get_transform_position(uint64_t transform) {
                auto transform_internal = driver::read<uint64_t>(transform + 0x10);
                if (!transform_internal)
                        return Vec3();

                auto matrices = driver::read<uint64_t>(transform_internal + 0x38);
                auto index = driver::read<uint32_t>(transform_internal + 0x40);
                if (!matrices || index < 0)
                        return Vec3();

                return get_transform_position(matrices, index);
        }

uint64_t get_exfil_transform() {
                return driver::read_multi_ptr<uint64_t>(exfil_point, { 0x10, 0x30, 0x30, 0x8, 0x28 });
        }

Vec3 get_exfil_position() {
                exfil_position = get_transform_position(get_exfil_transform());
                return exfil_position;
        }


MaiGuaQQqun 5th November 2021 10:37 PM

Offsets for current version
 
Code:

namespace _GameObjectManager
{
        constexpr auto lastTaggedObject = 0x0;
        constexpr auto taggedObjects = 0x8;
        constexpr auto lastActiveObject = 0x10;
        constexpr auto activeObjects = 0x18;
}
namespace _ObjectList
{
        constexpr auto nextList = 0x8;
        constexpr auto Object = 0x10;
        namespace _Object
        {
                constexpr auto mutiName = 0x60;
        }
}
namespace _CameraInternal
{
        constexpr auto worldToScreenMatrix = 0xD8;
        constexpr auto fieldOfView = 0x158;
        constexpr auto cameraPosition = 0x42C;
        constexpr auto aspectRatio = 0x4C8;
}
namespace _Dictionary
{
        constexpr auto entries = 0x18;
        namespace _Entry
        {
                constexpr auto key = 0x8;
                constexpr auto value = 0x10;
                constexpr auto _size = 0x18;
                constexpr auto _start = 0x20;
        }
        constexpr auto keys = 0x28;
        constexpr auto count = 0x40;
}
namespace _List
{
        constexpr auto listbase = 0x10;
        constexpr auto count = 0x18;
}
namespace _ListBase
{
        constexpr auto start = 0x20;
}
namespace _Array
{
        constexpr auto count = 0x18;
        constexpr auto start = 0x20;
}
namespace _String
{
        constexpr auto length = 0x10;
        constexpr auto start = 0x14;
}
namespace _RaycastHit
{
        constexpr auto m_Point = 0x10; //(类型 : UnityEngine.Vector3)
        constexpr auto m_Normal = 0x1c; //(类型 : UnityEngine.Vector3)
        constexpr auto m_FaceID = 0x28; //(类型 : System.UInt32)
        constexpr auto m_Distance = 0x2c; //(类型 : System.Single)
        constexpr auto m_UV = 0x30; //(类型; UnityEngine.Vector2)
        constexpr auto m_Collider = 0x38; //(类型 : System.Int32)
}
//[ : EFT.MovementState]
//[Class] EFT.MovementState : Object
namespace _MovementState
{
        constexpr auto Name = 0x2C;// (类型 : EPlayerState)
}
//PickUpState : EFT.MovementState
namespace _MovementContext
{
        constexpr auto PickUpState = 0x50;//(类型: EFT.MovementState)
        constexpr auto _i_CurrentState = 0xb0;// (类型 : EFT.MovementState)
        constexpr auto _i_PreviousState = 0xb8;// (类型 : EFT.MovementState)
        //下面3个Vector2连着,dump中没有名字
        constexpr auto MovementDirection = 0x204;//(类型 : UnityEngine.Vector2)
        constexpr auto Rotation = 0x20C;//(类型 : UnityEngine.Vector2)
        constexpr auto PreviousRotation = 0x214;//(类型 : UnityEngine.Vector2)
}
//[ : EFT.Ballistics.BallisticCollider]
//[Class] EFT.Ballistics.BallisticCollider : BaseBallistic
namespace _BallisticCollider
{
        constexpr auto NetId = 0x28;//(类型 : System.Int32)
        constexpr auto HitType = 0x2c;//(类型 : EFT.NetworkPackets.EHitType)
        constexpr auto _typeOfMaterial = 0x30;//(类型 : EFT.Ballistics.MaterialType)
        constexpr auto PenetrationLevel = 0x34;//(类型 : System.Single)
        constexpr auto PenetrationChance = 0x38;//(类型 : System.Single)
        constexpr auto RicochetChance = 0x3c;//(类型 : System.Single)
        constexpr auto FragmentationChance = 0x40;//(类型 : System.Single)
        constexpr auto TrajectoryDeviationChance = 0x44;//(类型 : System.Single)
        constexpr auto TrajectoryDeviation = 0x48;//(类型 : System.Single)
}
//PositionHistory : System.Collections.Generic.List<Vector3>
namespace _Shots
{
        constexpr auto _i_ShotsStack = 0x0;//(类型: System.Collections.Generic.Stack<>)
        constexpr auto PositionHistory = 0x18;// (类型 : System.Collections.Generic.List<UnityEngine.Vector3>)
        constexpr auto HittedBallisticCollider = 0x30;//(类型: EFT.Ballistics.BallisticCollider)
        constexpr auto Fragments = 0x48;//(type : System.Collections.Generic.List<>)
        constexpr auto Parent = 0x60;
        constexpr auto _i_BulletState = 0x80;// private \uE8F0.EBulletState \uE000;//int32_0x80 : System.Int32
        constexpr auto AmmoLifeTime = 0x84;//(类型 : System.Single)
        constexpr auto FragmentIndex = 0x88;// (类型 : System.Int32)
        constexpr auto RandomSeed = 0x8C;//(type : System.Int32)
        constexpr auto TimeSinceShot = 0xd4;// (类型 : System.Single)
        constexpr auto StartPosition = 0xd8;//(类型 : UnityEngine.Vector3)
        constexpr auto StartVelocity = 0xe4;//(类型 : UnityEngine.Vector3)
        //下面两个Vector3连在一起
        constexpr auto _i_CurrentPositon = 0xf0;//(类型 : UnityEngine.Vector3)
        constexpr auto _i_CurrentVelocity = 0xfc;//(类型 : UnityEngine.Vector3)
        constexpr auto _i_RaycastHit = 0x114;//(类型 : UnityEngine.RaycastHit)
        constexpr auto IsForwardHit = 0x140;//(type: System.Boolean)
}

//[ : EFT.Ballistics.BallisticsCalculator]
//[Class] EFT.Ballistics.BallisticsCalculator : MonoBehaviour, GInterface
namespace _BallisticsCalculator
{
        constexpr auto Shots = 0x18;//(类型 : System.Collections.Generic.List<>)
        constexpr auto _i_FinishedShots = 0x20;//(类型 : System.Collections.Generic.List<>)
}
//[ : EFT.BifacialTransform]
//[Class] EFT.BifacialTransform : Object
namespace _BifacialTransform
{
        constexpr auto Original = 0x10;//(类型: UnityEngine.Transform)
}
//[ : TransformLinks]
//[Class] -.TransformLinks : MonoBehaviour
namespace _TransformLinks
{
        constexpr auto Self = 0x20;//(类型: UnityEngine.Transform)
}
//[ : EFT.Player+ItemHandsController]
//[Class] -.AIFirearmController : FirearmController
namespace _ItemHandsController
{
        constexpr auto _handsHierarchy = 0x58;//(类型: TransformLinks)
        constexpr auto Weapon = 0x60;//(type: EFT.InventoryLogic.Item)
        constexpr auto _player = 0x70;//(类型: EFT.Player)
        //[ : EFT.Player+FirearmController]
        namespace _FirearmController
        {
                constexpr auto BallisticsCalculator = 0xe0;//(type: \uE8D3)
                constexpr auto Fireport = 0xe8;//(type: EFT.BifacialTransform)
                constexpr auto _isAiming = 0x14d;//(type: System.Boolean)
                constexpr auto WeaponLn = 0x154;//(type: System.Single)
                //两个无名字bool连着,InventoryOpened是第一个
                constexpr auto _i_InventoryOpened = 0x158;//(类型 : System.Boolean)
                //两个无名字float连着,MOA是第二个
                constexpr auto _i_MOA = 0x160;// (类型 : System.Single)
                constexpr auto HipInaccuracy = 0x164;// (类型 : System.Single)
                constexpr auto _speedFactor = 0x16c;// (type: System.Single)
        }
}
//[Class] EFT.InventoryLogic.WeaponTemplate : GClass
namespace _WeaponTemplate
{
        constexpr auto _defAmmoTemplate = 0x158;// [160] _defAmmoTemplate : EFT.InventoryLogic.AmmoTemplate
}
//[ : EFT.InventoryLogic.AmmoTemplate]
//[Class] EFT.InventoryLogic.AmmoTemplate : GClass
namespace _AmmoTemplate
{
        constexpr auto Damage = 0x140;// (type: System.Int32)
        constexpr auto PenetrationPower = 0x154;// (类型 : System.Int32)
        constexpr auto PenetrationPowerDiviation = 0x158;// (类型 : System.Single)
        constexpr auto InitialSpeed = 0x17c;//(类型: System.Single)
        constexpr auto PenetrationChance = 0x180;// (类型 : System.Single)
        constexpr auto RicochetChance = 0x184;// (类型 : System.Single)
        constexpr auto FragmentationChance = 0x188;// (类型 : System.Single)
}
//[Class] EFT.InventoryLogic.ItemTemplate
namespace _ItemTemplate
{
        constexpr auto _id = 0x50;//(类型: System.String)
        constexpr auto QuestItem = 0x94;// (类型 : System.Boolean)
        constexpr auto Unlootable = 0xF1;//[F1] Unlootable : Boolean
        constexpr auto UnlootableFromSide = 0xF4;//[F4] UnlootableFromSide : System.Int32
}
//[ : EFT.InventoryLogic.Item]
//[Class] EFT.InventoryLogic.Item : Object
namespace _Item
{
        constexpr auto Template = 0x40;// [38] <Template>k__BackingField : EFT.InventoryLogic.ItemTemplate
        constexpr auto StackObjectsCount = 0x5C;// [5C] StackObjectsCount : Int32
        constexpr auto SpawnedInSession = 0x64;// [64] SpawnedInSession : Boolean
}
//[Class] EFT.InventoryLogic.StackSlot : Object, IContainer
namespace _StackSlot
{
        constexpr auto _items = 0x10;// [10] _items : System.Collections.Generic.List<Item>
        constexpr auto _deserializationList = 0x18;// [18] _deserializationList : System.Collections.Generic.SortedList<Int32, Item>
        constexpr auto ID = 0x20;// [20] <ID>k__BackingField : String
        constexpr auto Filters = 0x28;// [28] <Filters>k__BackingField : EFT.InventoryLogic.ItemFilter[]
        constexpr auto ParentItem = 0x30;// [30] <ParentItem>k__BackingField : EFT.InventoryLogic.Item
        constexpr auto MaxCount = 0x38;// [38] MaxCount : Int32
}
//[Class] - .GClass1877 : GClass1849, IAmmoContainer
namespace _i_Magazine_Item
{
        constexpr auto _i_stackSlot = 0x88;//[88] stackSlot_0x88 : EFT.InventoryLogic.StackSlot
}
//[ : EFT.InventoryLogic.Slot]
//[Class] EFT.InventoryLogic.Slot : Object, IContainer
namespace _Slot
{
        constexpr auto Id = 0x10;// [10] Id : String
        constexpr auto _reactiveContainedItem = 0x18;// [18] _reactiveContainedItem : -.GClass2543<Item>
        constexpr auto ConflictingSlots = 0x20;// [20] ConflictingSlots : System.Collections.Generic.Dictionary<String, Slot>
        constexpr auto BlockerSlots = 0x28;// [28] BlockerSlots : System.Collections.Generic.List<Slot>
        constexpr auto _cachedSlotName = 0x30;// [30] _cachedSlotName : String
        constexpr auto ContainedItem = 0x38;//[38] <ContainedItem>k__BackingField : EFT.InventoryLogic.Item
        constexpr auto ParentItem = 0x40;// [40] <ParentItem>k__BackingField : EFT.InventoryLogic.Item
        constexpr auto Filters = 0x48;// [48] <Filters>k__BackingField : EFT.InventoryLogic.ItemFilter[]
        constexpr auto Required = 0x50;// [50] Required : Boolean
        constexpr auto Deleted = 0x51;// [51] Deleted : Boolean
        constexpr auto MergeContainerWithChildren = 0x54;// [54] <MergeContainerWithChildren>k__BackingField : System.Int32
}
//[ : EFT.InventoryLogic.Weapon]
//[Class] EFT.InventoryLogic.Weapon : GClass
namespace _Weapon
{
        constexpr auto Chambers = 0x90;// [90] Chambers : EFT.InventoryLogic.Slot[]
        constexpr auto _opticCalibrationPoints = 0x98;// [98] _opticCalibrationPoints : UnityEngine.Vector3[]
        constexpr auto _magSlotCache = 0xA0;// [A0] _magSlotCache : EFT.InventoryLogic.Slot
        constexpr auto AimIndex = 0xA8;// [A8] AimIndex : -.GClass2543<Int32>
        constexpr auto ShellsInChambers = 0xB0;// [B0] ShellsInChambers : EFT.InventoryLogic.AmmoTemplate[]
        constexpr auto CompatibleAmmo = 0xC0;// [C0] CompatibleAmmo : Boolean
        constexpr auto Armed = 0xC1;// [C1] Armed : Boolean
}
//[Class] EFT.Animations.PlayerSpring : MonoBehaviour
namespace _PlayerSpring
{
        constexpr auto HandsPosition = 0x30;// [30] HandsPosition : EFT.Animations.Spring
        constexpr auto HandsRotation = 0x38;// [38] HandsRotation : EFT.Animations.Spring
        constexpr auto Recoil = 0x40;// [40] Recoil : EFT.Animations.RecoilSpring
        constexpr auto CameraRotation = 0x48;// [48] CameraRotation : EFT.Animations.Spring
        constexpr auto CameraPosition = 0x50;// [50] CameraPosition : EFT.Animations.Spring
}
//[Class] EFT.Animations.Spring : Object
namespace _Spring
{
        constexpr auto Damping = 0x3C;//[3C] Damping : Single
        constexpr auto Current = 0x80;//[80] Current : UnityEngine.Vector3
}
//[Class] EFT.Animations.BreathEffector : Object, IEffector
namespace _BreathEffector
{
        constexpr auto Intensity = 0xA4;//[A4] Intensity : Single
}
//[Class] EFT.Animations.ProceduralWeaponAnimation : MonoBehaviour
namespace _ProceduralWeaponAnimation
{
        constexpr auto HandsContainer = 0x18;// [18] HandsContainer : EFT.Animations.PlayerSpring
        constexpr auto Breath = 0x28;// [28] Breath : EFT.Animations.BreathEffector
        constexpr auto FirearmController = 0x80;// (类型 : EFT.Player.FirearmController)
        //_pointOfView用来定位_i_AimSpeed
        constexpr auto _pointOfView = 0x190;// (类型: EFT.EPointOfView)
        constexpr auto _i_AimSpeed = 0x194;// (类型: System.Single)
        constexpr auto _shotDirection = 0x1dc;// (类型: UnityEngine.Vector3)
        constexpr auto CameraSmoothOut = 0x204;// (类型 : System.Single)
        constexpr auto AimSwayStartsThreshold = 0x224;//(类型 : System.Single)
        constexpr auto AimSwayMaxThreshold = 0x228;//(类型 : System.Single)
        constexpr auto _i_AimSwayThreshold = 0x22c;//(类型 : System.Single)
        //dnspy上看 //下面跟着最后一个float
        constexpr auto ShotNeedsFovAdjustments = 0x359;//(类型: System.Boolean)
}
//[GetBodyPartHealth (bodyPart: EBodyPart; rounded: bool):]
//[20] healControllerLogger_0x20
namespace _HealthController
{
        constexpr auto _i_BodyPartState_Dic = 0x50;//[50] dictionary_0x50 : System.Collections.Generic.Dictionary<Int32, BodyPartState<Var>>
        //.BodyPartState : Object
        namespace _N_BodyPartState
        {
                constexpr auto Health = 0x10;//[10] Health : EFT.HealthSystem.HealthValue
                constexpr auto IsDestroyed = 0x18;//(类型 : System.Boolean)
                //[Class] EFT.HealthSystem.HealthValue : Object
                namespace _N_Health
                {
                        constexpr auto _i_Value = 0x10;// : (类型 : )
                        //[Struct] EFT.HealthSystem.ValueStruct : ValueType
                        namespace _N_S_Value
                        {
                                constexpr auto Current = 0x0;//FLOAT
                                constexpr auto Maximum = 0x4;//FLOAT
                                constexpr auto Minimum = 0x8;//FLOAT
                        }
                }
        }
}
//[Class] - .GClass1901 : GClass18FD, GInterface7C9C, GInterface7C97, IItemOwner, IContainer
namespace _i_InventoryController
{
        constexpr auto SearchOperations = 0x110;// [118] SearchOperations : -.GClass2533<GClass1A27>
        constexpr auto _i_Inventory = 0x118;// [120] gClass18F4_0x120 : -.GClass18F4
        //[Class] -.GClass18F4 : Object
        namespace _i_n_Inventory
        {
                constexpr auto Equipment = 0x10;// [10] Equipment : -.GClass1928
                //[Class] -.GClass1928 : GClass182F
                //namespace _i_RTAs
        }
}
//[ : _mouseSensitivityModifiers]
//[Class] EFT.ClientPlayer : NetworkPlayer
namespace _Player
{
        constexpr auto MovementContext = 0x40;//上面是(类型: EFT.Interactive.WorldInteractiveObject)
        constexpr auto _playerBody = 0xa8;// (类型: EFT.PlayerBody)
        constexpr auto ProceduralWeaponAnimation = 0x190;//(类型 : EFT.Animations.ProceduralWeaponAnimation)
        constexpr auto Profile = 0x460;//(类型: EFT.Profile)
        constexpr auto Physical = 0x470;//(type: \uE20A)
        constexpr auto _healthController = 0x498;//(type: \uE6D3)
        constexpr auto _inventoryController = 0x4A8;// (type : \uE7E7) //-.GClass1901
        constexpr auto _handsController = 0x4B0;//(type : EFT.Player.AbstractHandsController)
        constexpr auto _questController = 0x4B8;// (type : \uE657)
        constexpr auto RibcageScaleCurrent = 0x5B8;//(类型: System.Single)
        //下面两个连着
        constexpr auto AggressorFound = 0x7AE;//[7A2] AggressorFound : Boolean
        constexpr auto IsYourPlayer = 0x7AF;//(type: System.Boolean)//看源码搜属性IsYourPlayer
}
//[Class] -.Player.BetterValueBlender : ValueBlender
namespace _BetterValueBlender
{
        constexpr auto Speed = 0x1C;// [1C] Speed : Single
}
//[ : EFT.Profile]
//[Class] EFT.Profile : Object, IProfileDataContainer
namespace _Profile
{
        constexpr auto Id = 0x10;
        constexpr auto AccountId = 0x18;
        constexpr auto PetId = 0x20;
        constexpr auto Info = 0x28;
        constexpr auto Health = 0x40;
        constexpr auto Inventory = 0x48;
        constexpr auto Skills = 0x60;
        constexpr auto Stats = 0xe8;
        //[ : RemoveBan]//RegistrationDate
        namespace _Info
        {
                constexpr auto Nickname = 0x18;
                constexpr auto GroupId = 0x20;
                constexpr auto EntryPoint = 0x28;
                constexpr auto Settings = 0x40;
                constexpr auto Side = 0x58;
                constexpr auto RegistrationDate = 0x5C;
                constexpr auto MemberCategory = 0x70;
                //[ : BotDifficulty]//BotDifficulty
                namespace _Settings
                {
                        constexpr auto Role = 0x10;//(类型: EFT.WildSpawnType)
                        constexpr auto BotDifficulty = 0x14;//(类型: BotDifficulty)
                        constexpr auto Experience = 0x18;//(类型: System.Int32)
                }

        }
        //[ : GetBuffedGrenadeExpense]//WeaponBuffs
        namespace _Skills
        {
                constexpr auto WeaponBuffs = 0x10;// (类型 : System.Collections.Generic.Dictionary<System.Type, System.Collections.Generic.Dictionary<EFT.EBuffId,>>)
                constexpr auto AttentionLootSpeed = 0x150;//增加搜索速度0.02f
                constexpr auto AttentionExamine = 0x158;//增加找到更好战利品的几率+检视速度0.02f
                constexpr auto AttentionEliteLuckySearch = 0x160;//有几率瞬间完成搜索0.5elite
                constexpr auto AttentionEliteExtraLootExp = 0x168;//双倍搜索经验bool
                constexpr auto MagDrillsLoadSpeed = 0x170;//提高弹药装填速度0.6
                constexpr auto MagDrillsUnloadSpeed = 0x178;//提高弹药的卸载速度0.6
                constexpr auto MagDrillsInventoryCheckSpeed = 0x180;//提高使用菜单检查弹匣的速度0.8
                constexpr auto MagDrillsInventoryCheckAccuracy = 0x188;//提高使用菜单检查弹匣的准确性
                constexpr auto MagDrillsInstantCheck = 0x190;//移动到您的库存后立即检查弹匣bool
                constexpr auto MagDrillsLoadProgression = 0x198;//bool
                //[先找Skills然后.替换为+搜索]
                namespace _Value
                {
                        constexpr auto Value = 0x28;
                }
        }
        //[ : OverallCounters]//OverallCounters
        namespace _Stats
        {
                constexpr auto OverallCounters = 0x18;
                //[ : Counters (类型: System.Collections.Generic.Dictionary<]
                namespace _Counters
                {
                        constexpr auto Counters = 0x10;//public readonly Dictionary<\uE65E.\uE000, long> Counters = new Dictionary<\uE65E.\uE000, long>();
                }
        }
}
//[ : EFT.PlayerBody]
//[Class] EFT.PlayerBody : MonoBehaviour
namespace _PlayerBody
{
        constexpr auto SkeletonRootJoint = 0x28;// (类型 : Diz.Skinning.Skeleton)
}
//[ : Diz.Skinning.Skeleton]
namespace _Skeleton
{
        constexpr auto Bones = 0x18;// (类型 : System.Collections.Generic.Dictionary<System.String, UnityEngine.Transform>)
        constexpr auto _keys = 0x20;// (类型 : System.Collections.Generic.List<System.String>)
        constexpr auto _values = 0x28;// (类型 : System.Collections.Generic.List<UnityEngine.Transform>)
}
//[OxygenRestoreRate]//OxygenRestoreRate
namespace _Physical
{
        constexpr auto Stamina = 0x28;
        constexpr auto HandsStamina = 0x30;
        constexpr auto Oxygen = 0x38;
}
//[DisableRestoration]//DisableRestoration
namespace _Stamina
{
        constexpr auto Current = 0x48;
        constexpr auto _i_BuffRestoration = 0x50;//(类型 : System.Single)
}


//[ : EFT.GameWorld]
//RegisteredPlayers
namespace _GameWorld
{
        constexpr auto ExfiltrationController = 0x18;//private \uE334 \uE000;
        constexpr auto LootList = 0x60;//public readonly List<\uE1B5> LootList = new List<\uE1B5>(1000);
        constexpr auto RegisteredPlayers = 0x80;//public readonly List<Player> RegisteredPlayers = new List<Player>(40);
        constexpr auto Grenades = 0xE0;//\uE23B<int, Throwable>
        //(类型: System.Action<EFT.Interactive.ExfiltrationPoint>)
        namespace _ExfiltrationController
        {
                constexpr auto ExfiltrationPoint = 0x20;
                constexpr auto ScavExfiltrationPoint = 0x28;
                //[ : EFT.Interactive.ExfiltrationPoint]//[Class] EFT.Interactive.ExfiltrationPoint : MonoBehaviour,
                namespace _ExfiltrationPoint
                {
                        constexpr auto Settings = 0x58;//(类型: EFT.Interactive.ExitTriggerSettings)
                        constexpr auto _status = 0xA8;
                        //[ : EFT.Interactive.ExitTriggerSettings]//EFT.Interactive.ExitTriggerSettings
                        namespace _ExitTriggerSettings
                        {
                                constexpr auto Name = 0x10;
                                constexpr auto EntryPoints = 0x18;
                        }
                }
        }
        namespace _Grenades
        {
                constexpr auto Dictionary = 0x10;
                constexpr auto List = 0x18;
        }
}

//[ : EFT.Interactive.LootItem]
//[Class] EFT.Interactive.LootItem : InteractableObject, GInterface86F1
namespace _LootItem
{
        constexpr auto ItemOwner = 0x48;//
        constexpr auto Item = 0x50;//(类型: EFT.InventoryLogic.Item)
        constexpr auto MovingPlatform = 0x58;//(类型: EFT.MovingPlatforms.MovingPlatform)
        constexpr auto Name = 0x60;//(类型 : System.String)
        constexpr auto StaticId = 0x68;//(类型 : System.String)
        constexpr auto ItemId = 0x70;//(类型 : System.String)
        constexpr auto TemplateId = 0x78;//(类型: System.String)
        //[EFT.Interactive.Corpse]
        //[Class] EFT.Interactive.Corpse : LootItem
        namespace _Corpse
        {
                constexpr auto _pelvis = 0x110;//[120] _pelvis : UnityEngine.Transform
                constexpr auto PlayerBody = 0x118;//(type: EFT.PlayerBody)
                constexpr auto _i_Side = 0x130;//(type: EFT.EPlayerSide)
        }
}
//[ : EFT.Interactive.LootableContainer]
//[Class] EFT.Interactive.LootableContainer : WorldInteractiveObject, GInterface1B62
namespace _LootableContainer
{
        constexpr auto Grips = 0xA0;// : -.GripPose[]
        constexpr auto ItemOwner = 0x108;//(类型 : )
        //[Class] -.GClass195B : Object, IItemOwner, IContainer, IDatabaseIdGenerator
        namespace _i_ItemOwner
        {
                constexpr auto itemFilterArray = 0x98;// [90] itemFilterArray_0x90 : EFT.InventoryLogic.ItemFilter[]
                constexpr auto _i_RootItem = 0xA0; //[98] item_0x98 : EFT.InventoryLogic.Item
                //[Class] -.GClass182F : Item, IContainerCollection, IApplicable
                namespace _i_RTAs
                {
                        constexpr auto Grids = 0x68;// [68] Grids : -.GClass1799[]
                        constexpr auto Slots = 0x70;// [70] Slots : EFT.InventoryLogic.Slot[]
                        //[Class] -.GClass1799 : Object, IContainer
                        namespace _i_Grids
                        {
                                constexpr auto _i_ItemCollection = 0x40;// [40] gClass17A6_0x40 : -.GClass17A6 //public virtual \uE738 ItemCollection { get; } = new \uE738();
                                constexpr auto itemFilterArray = 0x48;// [48] itemFilterArray_0x48 : EFT.InventoryLogic.ItemFilter[]
                                //[Class] -.GClass17A6 : Object, IEnumerable`1, IEnumerable
                                namespace _i_Grids2
                                {
                                        constexpr auto dictionary = 0x10;// [10] dictionary_0x10 : System.Collections.Generic.Dictionary<Item, LocationInGrid>
                                        constexpr auto list = 0x18;// [18] list_0x18 : System.Collections.Generic.List<Item>
                                }
                        }
                }
        }
}
//[Class] EFT.UI.CommonUI : MonoBehaviourSingleton`1
namespace _CommonUI
{
        constexpr auto InventoryScreen = 0x30;// [30] InventoryScreen : EFT.UI.InventoryScreen
}

//[Class] EFT.UI.InventoryScreen : BaseScreen`2
namespace _InventoryScreen
{
        constexpr auto profile = 0xF0;// [F0] profile_0xF0 : EFT.Profile
}
//[Class] -.ThermalVision : MonoBehaviour, GInterface313D
namespace _ThermalVision
{
        constexpr auto ThermalVisionUtilities = 0x18;//[18] ThermalVisionUtilities : -.ThermalVisionUtilities
        constexpr auto On = 0xD0;//[D0] On : Boolean
        constexpr auto IsNoisy = 0xD1;//[D1] IsNoisy : Boolean
        constexpr auto IsFpsStuck = 0xD2;//[D2] IsFpsStuck : Boolean
        constexpr auto IsMotionBlurred = 0xD3;//[D3] IsMotionBlurred : Boolean
        constexpr auto IsGlitch = 0xD4;//[D4] IsGlitch : Boolean
        constexpr auto IsPixelated = 0xD5;//[D5] IsPixelated : Boolean
        constexpr auto UnsharpRadiusBlur = 0xDC;//[DC] UnsharpRadiusBlur : Single
        constexpr auto UnsharpBias = 0xE0;//[E0] UnsharpBias : Single
}
//[Class] -.ThermalVisionUtilities : Object
namespace _ThermalVisionUtilities
{
        constexpr auto ValuesCoefs = 0x18;//[18] ValuesCoefs : -.ValuesCoefs
        constexpr auto CurrentRampPalette = 0x30;//[30] CurrentRampPalette : System.Int32
        constexpr auto DepthFade = 0x34;//[34] DepthFade : Single
}
//[Class] - .ValuesCoefs : Object
namespace _ValuesCoefs
{
        constexpr auto MainTexColorCoef = 0x10;//[10] MainTexColorCoef : Single
        constexpr auto MinimumTemperatureValue = 0x14;//[14] MinimumTemperatureValue : Single
        constexpr auto RampShift = 0x18;//[18] RampShift : Single
}
//[Class] -.VisorEffect : MonoBehaviour
namespace _VisorEffect
{
        constexpr auto Intensity = 0xB8;//[B8] Intensity : Single
}


RaiseHardError 6th November 2021 12:16 AM

Pricing Data:

Code:

        {"5c1d0efb86f7744baf2e7b7b", {"TerraGroup Labs keycard (Red)", 54481481}},
        {"5c0a840b86f7742ffa4f2482", {"T H I C C Items case", 17614095}},
        {"5c110624d174af029e69734c", {"T-7 Thermal Goggles with Night Vision mount", 15372000}},
        {"601948682627df266209af05", {"UVSR Taiga-1 survival machete", 6887081}},
        {"5b6d9ce188a4501afc1b2b25", {"T H I C C Weapon case", 6904551}},
        {"5c0126f40db834002a125382", {"Red Rebel ice pick", 4811633}},
        {"5c093ca986f7740a1867ab12", {"Secure container Kappa", 4900000}},
        {"59fb023c86f7746d0d4b423c", {"Weapon case", 4955405}},
        {"5857a8bc2459772bad15db29", {"Secure container Gamma", 1850000}},
        {"545cdb794bdc2d3a198b456a", {"6B43 Zabralo-Sh 6A body armor (0/85)", 1666690}},
        {"5bffdd7e0db834001b734a1a", {"Miller Bros. Blades M-2 Tactical Sword", 1570000}},
        {"59fb042886f7746c5005a7b2", {"Items case", 1229994}},
        {"59db794186f77448bc595262", {"Secure container Epsilon", 1100000}},
        {"57347ca924597744596b4e71", {"Graphics card", 886427}},
        {"5b7c710788a4506dec015957", {"Lucky Scav Junk box", 819926}},
        {"5d235bb686f77443f4331278", {"S I C C Organizational pouch", 750000}},
        {"5857a8b324597729ab0a0e7d", {"Secure container Beta", 750000}},
        {"5f60c74e3b85f6263c145586", {"Rys-T bulletproof helmet", 744898}},
        {"5e42c71586f7747f245e1343", {"ULTRA medical storage key", 698891}},
        {"59fafd4b86f7745ca07e1232", {"Key tool", 645416}},
        {"5d8e0e0e86f774321140eb56", {"RB-KPRL key", 649698}},
        {"5e42c81886f7742a01529f57", {"Object #11SR keycard", 568427}},
        {"59fb016586f7746d0d4b423a", {"Money case", 649207}},
        {"5c0530ee86f774697952d952", {"LEDX Skin Transilluminator", 621335}},
        {"5e71f70186f77429ee09f183", {"Twitch Rivals 2020 glasses", 541666}},
        {"5d9f1fa686f774726974a992", {"RB-ST key", 626626}},
        {"5d80cab086f77440535be201", {"RB-MP22 key", 549863}},
        {"5d1b5e94d7ad1a2b865a96b0", {"FLIR RS-32 2.25-9x 35mm 60Hz thermal riflescope", 514238}},
        {"5c093db286f7740a1b2617e3", {"Mr. Holodilnick thermal bag", 513652}},
        {"5d80ccac86f77470841ff452", {"RB-ORB1 key", 448487}},
        {"5bffe7930db834001b734a39", {"Crash Axe", 450000}},
        {"5fca13ca637ee0341a484f46", {"SJ9 TGLabs combat stimulant injector", 414423}},
        {"545cdb794bdc2d3a198b456a", {"6B43 Zabralo-Sh 6A body armor", 434250}},
        {"59faff1d86f7746c51718c9c", {"Physical bitcoin", 382721}},
        {"5a1eaa87fcdbcb001865f75e", {"Trijicon REAP-IR thermal scope", 410330}},
        {"544a11ac4bdc2d470e8b456a", {"Secure container Alpha", 360000}},
        {"5d03775b86f774203e7e0c4b", {"Phased array element", 339435}},
        {"5e4abb5086f77406975c9342", {"LBT 6094A Slick Plate Carrier", 339126}},
        {"5e2af55f86f7746d4159f07c", {"Grenade case", 319724}},
        {"60a283193cb70855c43a381d", {"NFM THOR Integrated Carrier body armor", 327403}},
        {"6038b4b292ec1c3103795a0b", {"LBT 6094A Slick Plate Carrier (Tan)", 309056}},
        {"5aafbcd986f7745e590fff23", {"Medicine case", 322012}},
        {"5c94bbff86f7747ee735c08f", {"TerraGroup Labs access keycard", 300309}},
        {"5d947d3886f774447b415893", {"RB-SMP key", 274475}},
        {"5e4ac41886f77406a511c9a8", {"Ars Arma CPC MOD.2 plate carrier", 326943}},
        {"5c1d0c5f86f7744bb2683cf0", {"TerraGroup Labs keycard (Blue)", 300000}},
        {"5c1e495a86f7743109743dfb", {"TerraGroup Labs keycard (Violet)", 300000}},
        {"590c60fc86f77412b13fddcf", {"Documents case", 314648}},
        {"6038b4ca92ec1c3103795a0d", {"LBT 6094A Slick Plate Carrier (Olive)", 299909}},
        {"5fd4c474dd870108a754b241", {"5.11 Tactical Hexgrid plate carrier", 279197}},
        {"5d80c6c586f77440351beef1", {"RB-OB key", 224152}},
        {"5b44cad286f77402a54ae7e5", {"5.11 Tactical TacTec plate carrier", 286059}},
        {"5c0e625a86f7742d77340f62", {"BNTI Zhuk-6a heavy armor", 277565}},
        {"5d80c8f586f77440373c4ed0", {"RB-OP key", 279765}},
        {"5c12613b86f7743bbe2c3f76", {"Folder with intelligence", 239201}},
        {"5c0e541586f7747fa54205c9", {"6B13 M assault armor (Tan)", 252933}},
        {"5c093e3486f77430cb02e593", {"Dogtag case", 254352}},
        {"5c127c4486f7745625356c13", {"Magazine case", 235030}},
        {"609e860ebd219504d8507525", {"Crye Precision AVS MBAV (Tagilla Edition)", 214034}},
        {"5c0558060db834001b735271", {"GPNVG-18 Night Vision goggles", 313825}},
        {"5d95d6be86f77424444eb3a7", {"RB-PSV2 key", 180515}},
        {"5d03794386f77420415576f5", {"6-STEN-140-M military battery", 218463}},
        {"5780cf7f2459777de4559322", {"Dorm room 314 marked key", 206660}},
        {"5d1b376e86f774252519444e", {"\"Fierce Hatchling\" moonshine", 203409}},
        {"558022b54bdc2dac148b458d", {"EOTech EXPS3 holographic sight", 96771}},
        {"5b44cd8b86f774503d30cba2", {"IOTV Gen4 body armor (full protection)", 209158}},
        {"5ca21c6986f77479963115a7", {"FORT Redut-T5 body armor", 188296}},
        {"5df8a4d786f77412672a1e3b", {"6Sh118 raid backpack", 206767}},
        {"5d08d21286f774736e7c94c3", {"Shturman's stash key", 171239}},
        {"5e9dacf986f774054d6b89f4", {"FORT Defender-2 body armor", 180973}},
        {"60a3c68c37ea821725773ef5", {"CQC Osprey MK4A plate carrier (Protection, MTP)", 204240}},
        {"567143bf4bdc2d1a0f8b4567", {"Pistol case", 188309}},
        {"5f2aa46b878ef416f538b567", {"RFB 7.62x51 18 inch barrel", 173000}},
        {"5c05300686f7746dce784e5d", {"VPX Flash Storage Module", 171452}},
        {"5d1b36a186f7742523398433", {"Metal fuel tank", 166452}},
        {"5e42c83786f7742a021fdf3c", {"Object #21WS keycard", 155008}},
        {"5a16b7e1fcdbcb00165aa6c9", {"Ops-Core FAST multi-hit ballistic face shield", 175122}},
        {"56ea7293d2720b8d4b8b45ba", {"P226 Sight Mount 220-239 rear sight bearing", 165000}},
        {"5ede7b0c6d23e5473e6e8c66", {"RB-RLSA key", 83232}},
        {"5ca20ee186f774799474abc2", {"Vulkan-5 (LShZ-5) heavy helmet", 162242}},
        {"5b44cf1486f77431723e3d05", {"IOTV Gen4 body armor (assault kit)", 176052}},
        {"5e00c1ad86f774747333222c", {"Team Wendy EXFIL Ballistic Helmet (Black)", 164736}},
        {"5aafbde786f774389d0cbc0f", {"Ammunition case", 152820}},
        {"5c0e774286f77468413cc5b2", {"Mystery Ranch Blackjack 50 backpack (Multicam)", 189789}},
        {"5addbfef5acfc400185c2857", {"M14 UTG 4-Point Locking Deluxe mount", 102028}},
        {"5c052e6986f7746b207bc3c9", {"Portable defibrillator", 158082}},
        {"5f5f41476bdad616ad46d631", {"BNTI Korund-VM armor", 143929}},
        {"5ede7a8229445733cb4c18e2", {"RB-PKPM marked key", 152179}},
        {"5a0ee30786f774023b6ee08f", {"Health Resort west wing room 216 key", 146587}},
        {"5fc22d7c187fea44d52eda44", {"SWORD International Mk-18 .338 LM marksman rifle", 144289}},
        {"5a0eb6ac86f7743124037a28", {"Shoreline cottage back door key", 175205}},
        {"5c0e746986f7741453628fe5", {"WARTECH TV-110 plate carrier rig", 163017}},
        {"5c052fb986f7746b2101e909", {"UHF RFID Reader", 147075}},
        {"5ca2151486f774244a3b8d30", {"FORT Redut-M body armor", 143212}},
        {"5b44d0de86f774503d30cba8", {"IOTV Gen4 body armor (high mobility kit)", 152294}},
        {"5d120a28d7ad1a1c8962e295", {"AR-15 DoubleStar ACE 0.5 inch recoil pad", 44688}},
        {"5efde6b4f5448336730dbd61", {"Keycard with a blue marking", 141620}},
        {"5d80cd1a86f77402aa362f42", {"RB-ORB3 key", 101948}},
        {"5d80c88d86f77440556dbf07", {"RB-AM key", 94114}},
        {"5dfa3d2b0dee1b22f862eade", {"KAC PRS/QDC 7.62x51 sound suppressor", 116507}},
        {"5fc23678ab884124df0cd590", {"Mk-18 .338 LM 24 inch barrel", 125740}},
        {"5b4736b986f77405cb415c10", {"TROY QARS 4.2 inch rail", 74901}},
        {"5a78813bc5856700186c4abe", {"M870 Magpul SGA polymer stock", 123148}},
        {"5c1bc5af2e221602b412949b", {"Zenit RK-2 foregrip", 121500}},
        {"59bfe68886f7746004266202", {"AR-15 Vltor MUR-1S 5.56x45 upper receiver", 124153}},
        {"5ab8e79e86f7742d8b372e78", {"BNTI Gzhel-K armor", 123900}},
        {"5d947d4e86f774447b415895", {"RB-KSM key", 134668}},
        {"5d5d87f786f77427997cfaef", {"Ars Arma A18 Skanda plate carrier", 127000}},
        {"59e3639286f7741777737013", {"Bronze lion", 112633}},
        {"5c793fc42e221600114ca25d", {"Strike Industries Advanced Receiver Extension buffer tube (Anodized Red)", 109949}},
        {"59db3a1d86f77429e05b4e92", {"AR-15 Naroh Arms GRAL-S pistol grip", 111270}},
        {"5ea18c84ecf1982c7712d9a2", {"Bastion helmet armor plate", 123789}},
        {"5e81ebcd8e146c7080625e15", {"FN40GL Mk2 grenade launcher", 110000}},
        {"606587252535c57a13424cfd", {"CMMG Mk47 Mutant 7.62x39 assault rifle", 110777}},
        {"5ab8ebf186f7742d8b372e80", {"SSO \"Attack 2\" raid backpack", 128979}},
        {"544a5caa4bdc2d1a388b4568", {"Crye Precision AVS plate carrier", 123562}},
        {"5c0e655586f774045612eeb2", {"Highcom Trooper TFO armor (Multicam) (0/85)", 114404}},
        {"5c0e655586f774045612eeb2", {"Highcom Trooper TFO armor (Multicam)", 120337}},
        {"5b3cadf35acfc400194776a0", {"TT ornated side grips", 105556}},
        {"5c052f6886f7746b1e3db148", {"Military COFDM wireless Signal Transmitter", 105785}},
        {"60a3c70cde5f453f634816a3", {"CQC Osprey MK4A plate carrier (Assault, MTP)", 129570}},
        {"5aa7e276e5b5b000171d0647", {"Altyn assault helmet", 134346}},
        {"5c793fb92e221644f31bfb64", {"Strike Industries Advanced Receiver Extension buffer tube", 111213}},
        {"5df8e085bb49d91fb446d6a8", {"SR-25 Ambidextrous charging handle", 40523}},
        {"5ad5d7d286f77450166e0a89", {"KIBA Arms International outlet outer door key", 96659}},
        {"60a7ad2a2198820d95707a2e", {"Tagilla's welding mask \"UBEY\"", 101045}},
        {"6065878ac9cf8012264142fd", {"Mk47 409mm barrel", 120584}},
        {"5b4329f05acfc47a86086aa1", {"DevTac Ronin ballistic helmet", 101552}},
        {"57c44b372459772d2b39b8ce", {"AS VAL 9x39 suppressed assault rifle", 101506}},
        {"5c78f2492e221600114c9f04", {"AR-15 SAI 14.5 inch QD Rail handguard", 98087}},
        {"5d80c6fc86f774403a401e3c", {"RB-TB key", 95775}},
        {"5751a89d24597722aa0e8db0", {"Golden Star balm", 106036}},
        {"5d1b371186f774253763a656", {"Expeditionary fuel tank", 95662}},
        {"5a13ef7e86f7741290491063", {"Health Resort west wing room 301 key", 99497}},
        {"5addaffe86f77470b455f900", {"KIBA Arms International outlet inner grate door key", 95216}},
        {"5c0e722886f7740458316a57", {"ANA Tactical M1 armored rig", 111189}},
        {"5fc235db2770a0045c59c683", {"Mk-18 18 inch handguard", 97777}},
        {"5a154d5cfcdbcb001a3b00da", {"Ops-Core FAST MT Super High Cut helmet (Black)", 111660}},
        {"5a367e5dc4a282000e49738f", {"Remington R11 RSASS 7.62x51 marksman rifle", 97376}},
        {"5d00ec68d7ad1a04a067e5be", {"JP Enterprises Gas System-5B", 127603}},
        {"5ad7247386f7747487619dc3", {"Goshan cash register key", 103818}},
        {"5a69a2ed8dc32e000d46d1f1", {"AS VAL Rotor 43 pistol grip & buffer tube", 95768}},
        {"5cc700b9e4a949000f0f0f25", {"FN P90 stock", 94444}},
        {"5c48a14f2e2216152006edd7", {"MDR handguard", 93000}},
        {"5f60b34a41e30a4ab12a6947", {"Galvion Caiman Hybrid helmet", 90555}},
        {"5c17a7ed2e2216152142459c", {"Crye Precision AirFrame helmet (Tan)", 105495}},
        {"60a7ad3a0c5cb24b0134664a", {"Tagilla's welding mask \"Gorilla\"", 92071}},
        {"5ac8d6885acfc400180ae7b0", {"Ops-Core FAST MT Super High Cut helmet (Tan)", 102496}},
        {"59ccd11386f77428f24a488f", {"PP-19-01 Vityaz-SN gas tube", 52266}},
        {"5cc701aae4a949000e1ea45c", {"FN P90 5.7x28 10.5 inch barrel", 84384}},
        {"5c05308086f7746b2101e90b", {"Virtex programmable processor", 100318}},
        {"5d0375ff86f774186372f685", {"Military cable", 95268}},
        {"58889d0c2459775bc215d981", {"DVL-10 stock", 70398}},
        {"5d1b2f3f86f774252167a52c", {"FP-100 filter absorber", 94799}},
        {"5d80c78786f774403a401e3e", {"RB-AK key", 75597}},
        {"5d0379a886f77420407aa271", {"OFZ 30x160mm shell", 83932}},
        {"5c0e874186f7745dc7616606", {"Maska-1Shch bulletproof helmet (Killa)", 83442}},
        {"5c12620d86f7743f8b198b72", {"Tetriz portable game console", 83301}},
        {"5d025cc1d7ad1a53845279ef", {"HK Ergo PSG-1 style pistol grip", 82845}},
        {"5d44064fa4b9361e4f6eb8b5", {"Thunder Beast Arms Ultra 5 sound suppressor", 96836}},
        {"5e848cc2988a8701445df1e8", {"TOZ KS-23M 23x75mm pump-action shotgun", 91378}},
        {"5dcbd56fdbd3d91b3e5468d5", {"Desert Tech MDR 7.62x51 assault rifle", 91556}},
        {"59c1383d86f774290a37e0ca", {"5.56x45 Magpul PMAG D-60 60-round magazine", 82635}},
        {"5e01ef6886f77445f643baa4", {"Team Wendy EXFIL Ballistic Helmet (Coyote Tan)", 85283}},
        {"5ea058e01dbce517f324b3e2", {"Tac-Kek Heavy Trooper mask", 93872}},
        {"5da5cdcd86f774529238fb9b", {"RB-RH key", 65208}},
        {"5dcbd6b46ec07c0c4347a564", {"MDR handguard (Black)", 81250}},
        {"5c1267ee86f77416ec610f72", {"Chain with Prokill medallion", 87669}},
        {"55d48a634bdc2d8b2f8b456a", {"Kiba Arms International SPRM rail mount for pump-action shotguns", 101260}},
        {"59bffbb386f77435b379b9c2", {"SilencerCo Hybrid 46 multi-caliber silencer", 82883}},
        {"5c1d0dc586f7744baf2e7b79", {"TerraGroup Labs keycard (Green)", 80000}},
        {"5bd704e7209c4d00d7167c31", {"MP7A2 stock", 65000}},
        {"5d8e0db586f7744450412a42", {"RB-KORL key", 74775}},
        {"60391afc25aff57af81f7085", {"Ratchet wrench", 79182}},
        {"5bcf0213d4351e0085327c17", {"MP7A1 stock", 71389}},
        {"5d2c770c48f0354b4a07c100", {"AK-74 FAB Defense PDC dust cover", 82154}},
        {"5ab8dced86f774646209ec87", {"ANA Tactical M2 armored rig", 84386}},
        {"59f8a37386f7747af3328f06", {"Fortis Shift tactical grip", 75252}},
        {"5af0534a86f7743b6f354284", {"Ophthalmoscope", 77840}},
        {"5c091a4e0db834001d5addc8", {"Maska-1Shch bulletproof helmet (Olive Drab)", 78094}},
        {"5b40e1525acfc4771e1c6611", {"Highcom Striker ULACH IIIA helmet (Black)", 80140}},
        {"5fb64bc92b1b027b1f50bcf2", {"TDI KRISS Vector Gen.2 .45 ACP submachine gun", 83501}},
        {"5d80ccdd86f77474f7575e02", {"RB-ORB2 key", 81469}},
        {"5c1d0f4986f7744bb01837fa", {"TerraGroup Labs keycard (Black)", 75000}},
        {"5fc3f2d5900b1d5091531e57", {"TDI KRISS Vector Gen.2 9x19 submachine gun", 86274}},
        {"5a7880d0c5856700142fdd9d", {"M870 SPS polymer stock", 34718}},
        {"5d43021ca4b9362eab4b5e25", {"Lone Star TX-15 DML 5.56x45 carbine", 76720}},
        {"5c86592b2e2216000e69e77c", {"IEA Mil-Optics 34mm one piece magmount", 66037}},
        {"60926df0132d4d12c81fd9df", {"SilencerCo SAKER ASR 556 5.56x45 sound suppressor", 75028}},
        {"5b7be4895acfc400170e2dd5", {"Magpul M-LOK 4.1 inch rail", 51089}},
        {"5f633f791b231926f2329f13", {"AK-74 thread type JMac Customs RRD-4C multi-caliber muzzle brake", 73793}},
        {"5ab8e79e86f7742d8b372e78", {"BNTI Gzhel-K armor (0/65)", 77212}},
        {"588892092459774ac91d4b11", {"LOBAEV Arms DVL-10 Saboteur .308 bolt-action sniper rifle", 73780}},
        {"5ba26ae8d4351e00367f9bdb", {"B&T Rotex 2 4.6x30 sound suppressor", 82488}},
        {"59eb7ebe86f7740b373438ce", {"VSS/VAL TOZ 6P29M mount", 73757}},
        {"545cdae64bdc2d39198b4568", {"Camelbak Tri-Zip backpack", 78825}},
        {"5ad5db3786f7743568421cce", {"EMERCOM medical unit key", 56481}},
        {"5f3e7801153b8571434a924c", {"M1911A1 .45 ACP National Match barrel", 70000}},
        {"5f3e7823ddc4f03b010e2045", {"M45A1 .45 ACP slide", 69855}},
        {"5d80cb3886f77440556dbf09", {"RB-PSP1 key", 79174}},
        {"5ed51652f6c34d2cc26336a1", {"M.U.L.E. stimulant injector", 67214}},
        {"544a37c44bdc2d25388b4567", {"5.56x45 Surefire MAG5-60 STANAG 60-round magazine", 75960}},
        {"5c1cd46f2e22164bef5cfedb", {"Zenit RK-1 foregrip on B-25U mount", 77199}},
        {"5d8e3ecc86f774414c78d05e", {"RB-GN key", 79908}},
        {"5a34fe59c4a282000b1521a2", {"AAC 762 SDN-6 7.62x51 sound suppressor", 66651}},
        {"5b44c6ae86f7742d1627baea", {"ANA Tactical Beta 2 Battle backpack", 74190}},
        {"5ad5cfbd86f7742c825d6104", {"OLI logistics department office key", 71802}},
        {"5c0e66e2d174af02a96252f4", {"Ops-Core SLAAP armor helmet plate (Tan)", 75115}},
        {"5da743f586f7744014504f72", {"USEC Customs stash key", 69942}},
        {"5cebec00d7f00c065c53522a", {"FN Attenuator 5.7x28 sound suppressor", 72492}},
        {"5c0e534186f7747fa1419867", {"eTG-change regenerative stimulant injector", 69666}},
        {"5c46fbd72e2216398b5a8c9c", {"SVDS 7.62x54R sniper rifle", 58418}},
        {"59c63b4486f7747afb151c1c", {"MP5SD B&T tri-rail ring mount", 148994}},
        {"5b40e2bc5acfc40016388216", {"Highcom Striker ULACH IIIA helmet (Coyote Tan)", 69116}},
        {"5a0eec9686f77402ac5c39f2", {"Health Resort east wing room 310 key", 64812}},
        {"5cfe8010d7ad1a59283b14c6", {"AK 7.62x39 X-47 50-round drum magazine", 65736}},
        {"5d0378d486f77420421a5ff4", {"Military power filter", 63587}},
        {"5d6d3716a4b9361bc8618872", {"BNTI LShZ-2DTM helmet", 67183}},
        {"55d35ee94bdc2d61338b4568", {"AR-15 5.56x45 260mm barrel", 86973}},
        {"5a0eee1486f77402aa773226", {"Health Resort east wing room 328 key", 75234}},
        {"5ea17ca01412a1425304d1c0", {"Diamond Age Bastion helmet", 66644}},
        {"5d0377ce86f774186372f689", {"Iridium military thermal vision module", 67017}},
        {"5d80c66d86f774405611c7d6", {"RB-AO key", 55718}},
        {"609e8540d5c319764c2bc2e9", {"NFM THOR Concealable Vest body armor", 64068}},
        {"5d80cb5686f77440545d1286", {"RB-PSV1 key", 50951}},
        {"5af0548586f7743a532b7e99", {"Ibuprofen painkillers", 64079}},
        {"5d8e15b686f774445103b190", {"HEP station storage room key", 60466}},
        {"609bab8b455afd752b2e6138", {"Torrey Pines Logic T12W thermal reflex sight", 74574}},
        {"5cadfbf7ae92152ac412eeef", {"ASh-12 12.7x55 assault rifle", 61054}},
        {"588200af24597742fa221dfb", {"MP-153 12ga 610mm barrel", 60000}},
        {"560837544bdc2de22e8b456e", {"MP-133 12ga 710mm barrel with rib", 45000}},
        {"590c392f86f77444754deb29", {"SSD drive", 59977}},
        {"5447a9cd4bdc2dbd208b4567", {"Colt M4A1 5.56x45 assault rifle", 59451}},
        {"5ba26586d4351e44f824b340", {"MP7 4.6x30 40-round magazine", 66134}},
        {"5cc82d76e24e8d00134b4b83", {"FN P90 5.7x28 submachine gun", 70409}},
        {"5fc2360f900b1d5091531e19", {"Mk-18 gas block", 59258}},
        {"5c0e57ba86f7747fa141986d", {"6B23-2 armor (Mountain Flora)", 61510}},
        {"5e4abc6786f77406812bd572", {"LBT-2670 Slim Field Med Pack", 58936}},
        {"5a0f0f5886f7741c4e32a472", {"Health Resort warehouse safe key", 62258}},
        {"5888956924597752983e182d", {"DVL-10 M2 .308 660mm barrel", 91176}},
        {"5df8ce05b11454561e39243b", {"Knight's Armament Company SR-25 7.62x51 marksman rifle", 57775}},
        {"5a0dc45586f7742f6b0b73e3", {"Health Resort west wing office room 104 key", 53270}},
        {"5c0e842486f77443a74d2976", {"Maska-1Shch face shield (Killa)", 56264}},
        {"5d440b9fa4b93601354d480c", {"AR-15 5.56x45 20 inch barrel", 67574}},
        {"5e54f79686f7744022011103", {"Pestily plague mask", 57776}},
        {"5c0e51be86f774598e797894", {"6B13 assault armor (Flora)", 57909}},
        {"5d1b371186f774253763a656", {"Expeditionary fuel tank (0/60)", 56879}},
        {"5a0ee37f86f774023657a86f", {"Health Resort west wing room 221 key", 58884}},
        {"5a0ee34586f774023b6ee092", {"Health Resort west wing room 220 key", 59462}},
        {"5aa7e373e5b5b000137b76f0", {"Altyn face shield", 64877}},
        {"5c5db5c62e22160012542255", {"MPX 9x19 14 inch barrel", 60607}},
        {"590c621186f774138d11ea29", {"Secure Flash drive", 56845}},
        {"5bc9bc53d4351e00367fbcee", {"Golden rooster", 56646}},
        {"5b3b99475acfc432ff4dcbee", {"EOTech Vudu 1-6x24 riflescope", 56067}},
        {"5c0e805e86f774683f3dd637", {"3V G Paratus 3-Day Operator's Tactical backpack", 68021}},
        {"5bc9c1e2d4351e00367fbcf0", {"Antique axe", 55616}},
        {"5a13f46386f7741dd7384b04", {"Health Resort west wing room 306 key", 46125}},
        {"5d80c93086f7744036212b41", {"RB-MP11 key", 63298}},
        {"5aa66be6e5b5b0214e506e97", {"Nightforce ATACR 7-35x56 riflescope", 55584}},
        {"5d95d6fa86f77424484aa5e9", {"RB-PSP2 key", 74524}},
        {"5bb20dadd4351e00367faeff", {"HK 416A5 5.56x45 20 inch barrel", 52369}},
        {"5fbe760793164a5b6278efc8", {"SIG Sauer SRD762-QD 7.62x51 sound suppressor", 58924}},
        {"5e4bfc1586f774264f7582d3", {"MSA Gallet TC 800 High Cut combat helmet", 60640}},
        {"59e62cc886f77440d40b52a1", {"AKM bakelite pistol grip", 19351}},
        {"5a13ef0686f7746e5a411744", {"Health Resort west wing room 219 key", 51446}},
        {"5f5e46b96bdad616ad46d613", {"Eberlestock F4 Terminator load bearing backpack (Tiger Stripe)", 66937}},
        {"5ad5d64486f774079b080af8", {"NecrusPharm pharmacy key", 60077}},
        {"5a0f08bc86f77478f33b84c2", {"Health Resort management office safe key", 56867}},
        {"59e3577886f774176a362503", {"Pack of sugar", 61698}},
        {"5fbe7618d6fa9c00c571bb6c", {"SIG Sauer SRD762Ti 7.62x51 sound suppressor", 53369}},
        {"5a0eeb1a86f774688b70aa5c", {"Health Resort west wing room 303 key", 55063}},
        {"5e2aee0a86f774755a234b62", {"Cyclon rechargeable battery", 52646}},
        {"5d0376a486f7747d8050965c", {"Military circuit board", 53812}},
        {"5d1b33a686f7742523398398", {"Purified water", 58705}},
        {"5c0e3eb886f7742015526062", {"6B5-16 Zh-86 \"Uley\" armored rig", 55998}},
        {"5eff09cd30a7dc22fd1ddfed", {"Health Resort east wing room 110 key with a blue tape", 41491}},
        {"5ad7217186f7746744498875", {"OLI cash register key", 53289}},
        {"5a0ec6d286f7742c0b518fb5", {"Health Resort west wing room 205 key", 55108}},
        {"57235b6f24597759bf5a30f1", {"AN/PVS-14 Night Vision Monocular", 71696}},
        {"5ad7242b86f7740a6a3abd43", {"IDEA cash register key", 52663}},
        {"60b0f7057897d47c5b04ab94", {"Loot Lord plushie", 51947}},
        {"5aa7e373e5b5b000137b76f0", {"Altyn face shield (0/50)", 62247}},
        {"5c6175362e221600133e3b94", {"AK 7.62x39 ProMag AK-A-16 73-round drum magazine", 66426}},
        {"5d5d646386f7742797261fd9", {"6B3TM-01M armored rig", 55139}},
        {"5a1ead28fcdbcb001912fa9f", {"UNV DLOC-IRD sight mount", 61526}},
        {"5c488a752e221602b412af63", {"Desert Tech MDR 5.56x45 assault rifle", 55085}},
        {"5a0f006986f7741ffd2fe484", {"Weather station safe key", 52579}},
        {"5d80c95986f77440351beef3", {"RB-MP12 key", 51582}},
        {"5648b62b4bdc2d9d488b4585", {"GP-34 underbarrel grenade launcher", 50900}},
        {"5fbcc1d9016cce60e8341ab3", {"SIG MCX .300 AAC Blackout assault rifle", 56144}},
        {"5bd70322209c4d00d7167b8f", {"HK MP7A2 4.6x30 submachine gun", 55055}},
        {"5a787f7ac5856700177af660", {"M870 12ga 508mm barrel", 42907}},
        {"5a0ee62286f774369454a7ac", {"Health Resort east wing room 209 key", 50499}},
        {"5a17fb9dfcdbcbcae6687291", {"APB detachable wire stock", 34896}},
        {"5a0eedb386f77403506300be", {"Health Resort east wing room 322 key", 52254}},
        {"5df24cf80dee1b22f862e9bc", {"Orsis T-5000M .308 bolt-action sniper rifle", 49004}},
        {"5b40e3f35acfc40016388218", {"Highcom Striker ACHHC IIIA helmet (Black)", 54505}},
        {"5d5d940f86f7742797262046", {"Oakley Mechanism heavy duty backpack (Black)", 48415}},
        {"6034d2d697633951dc245ea6", {"Eberlestock G2 Gunslinger II backpack (Dry Earth)", 57521}},
        {"59faf7ca86f7740dbe19f6c2", {"Roler Submariner gold wrist watch", 51119}},
        {"58949fac86f77409483e16aa", {"MPX single latch charging handle", 50000}},
        {"571a26d524597720680fbe8a", {"TT 7.62x25 116mm barrel", 18342}},
        {"5aafa49ae5b5b00015042a58", {"M1A SA XS Post .125 blade front sight", 21296}},
        {"5ef369b08cef260c0642acaf", {"M1911A1 NcSTAR trigger guard mount", 50000}},
        {"60391a8b3364dc22b04d0ce5", {"Can of thermite", 52739}},
        {"5d80cbd886f77470855c26c2", {"RB-MP13 key", 54576}},
        {"5d440b93a4b9364276578d4b", {"AR-15 5.56x45 18 inch barrel", 49462}},
        {"57838ad32459774a17445cd2", {"VSS Vintorez 9x39 Special Sniper Rifle", 57425}},
        {"5de8f2d5b74cd90030650c72", {"MP9 9x19 sound suppressor", 37564}},
        {"5d6fc78386f77449d825f9dc", {"Gunpowder \"Eagle\"", 48569}},
        {"5c010e350db83400232feec7", {"SP-8 Survival Machete", 52231}},
        {"5dfce88fe9dc277128008b2e", {"SVDS custom dust cover", 46520}},
        {"5c17664f2e2216398b5a7e3c", {"AK Vltor CMRD KeyMod handguard", 55482}},
        {"5f60c85b58eff926626a60f7", {"Rys-T face shield", 49226}},
        {"59e763f286f7742ee57895da", {"Pilgrim tourist backpack", 60005}},
        {"5bb2475ed4351e00853264e3", {"HK 416A5 5.56x45 assault rifle", 48700}},
        {"5a13ee1986f774794d4c14cd", {"Health Resort west wing room 323 key", 59638}},
        {"5c0a2cec0db834001b7ce47d", {"EOTech HHS-1 hybrid sight (Tan)", 51957}},
        {"5d80ca9086f774403a401e40", {"RB-MP21 key", 57281}},
        {"5c178a942e22164bef5ceca3", {"Crye Precision AirFrame Chops", 54363}},
        {"60b0f988c4449e4cb624c1da", {"Evasion armband", 53805}},
        {"5ede47405b097655935d7d16", {"40x46mm M441(HE) grenade", 48646}},
        {"5c1e2a1e86f77431ea0ea84c", {"TerraGroup Labs Manager office room key", 45774}},
        {"5f60cd6cf2bcbb675b00dac6", {"Walker's XCEL 500BT Digital headset", 56528}},
        {"5a0eecf686f7740350630097", {"Health Resort east wing room 313 key", 42715}},
        {"5b40e4035acfc47a87740943", {"Highcom Striker ACHHC IIIA helmet (Olive)", 51691}},
        {"5fc278107283c4046c581489", {"Mk-18 .338 LM upper receiver", 47111}},
        {"5f5e467b0bc58666c37e7821", {"Eberlestock F5 Switchblade backpack (Dry Earth)", 50628}},
        {"5ac66d2e5acfc43b321d4b53", {"AK-103 7.62x39 assault rifle", 48930}},
        {"5c1bc5612e221602b5429350", {"Zenit RK-1 foregrip", 62020}},
        {"57c44e7b2459772d28133248", {"AS VAL rear sight", 46667}},
        {"5a0ec70e86f7742c0b518fba", {"Health Resort west wing room 207 key", 48308}},
        {"5c471cb32e221602b177afaa", {"SVDS 7.62x54R 22 inch barrel", 46131}},
        {"5c07dd120db834001c39092d", {"EOTech HHS-1 hybrid sight", 48012}},
        {"5c0e53c886f7747fa54205c7", {"6B13 assault armor (Digital Flora)", 46737}},
        {"5d4aab30a4b9365435358c55", {"AK Vezhlivyy Strelok VS-24 + VS-33c handguard & gas block combo (White)", 52092}},
        {"5beed0f50db834001c062b12", {"RPK-16 5.45x39 light machine gun", 45008}},
        {"5aa7d193e5b5b000171d063f", {"SSSh-95 Sfera-S helmet", 46289}},
        {"57372ebf2459776862260582", {"5.45x39 PS gs 30 pcs. ammo pack", 33352}},
        {"5c878e9d2e2216000f201903", {"Lantac Dragon 7.62x51 muzzle brake", 62975}},
        {"5c1cdd302e221602b3137250", {"Compact Mount adapter for sights", 1095365}},
        {"5d2369418abbc306c62e0c80", {"Steiner DBAL-PL tactical laser device", 43709}},
        {"55d485be4bdc2d962f8b456f", {"PM 9x18PM 84-round makeshift drum magazine", 43724}},
        {"544a3a774bdc2d3a388b4567", {"Leupold Mark 4 HAMR 4x24mm DeltaPoint hybrid assault scope", 45203}},
        {"5f633f68f5750b524b45f112", {"AK 7.62x39 JMAC RRD-4C muzzle brake", 44585}},
        {"5c1d0d6d86f7744bb2683e1f", {"TerraGroup Labs keycard (Yellow)", 45000}},
        {"6087e570b998180e9f76dc24", {"Superfors DB 2020 Dead Blow Hammer", 45000}},
        {"5ede474b0c226a66f5402622", {"40x46mm M381(HE) grenade", 47169}},
        {"5da46e3886f774653b7a83fe", {"RB-RS key", 43944}},
        {"5e9db13186f7742f845ee9d3", {"LBT-1961A Load Bearing chest rig", 41861}},
        {"5737292724597765e5728562", {"5.45x39 BP gs 120 pcs. ammo pack", 41671}},
        {"5ed5160a87bb8443d10680b5", {"Meldonin injector", 48580}},
        {"5d44334ba4b9362b346d1948", {"AR-15 Radian Weapons Raptor charging handle (Grey)", 44494}},
        {"5aafa857e5b5b00018480968", {"Springfield Armory M1A 7.62x51 carbine", 44761}},
        {"5d4406a8a4b9361e4f6eb8b7", {"Magpul PRS GEN3 stock (Grey)", 50758}},
        {"5c1e2d1f86f77431e9280bee", {"TerraGroup Labs Weapons testing area key", 45855}},
        {"5c066e3a0db834001b7353f0", {"Armasight N-15 Night Vision Goggles", 62224}},
        {"5a0ee4b586f7743698200d22", {"Health Resort east wing room 206 key", 44553}},
        {"5c0000c00db834001a6697fc", {"MP5 3-lug threaded muzzle protector", 67743}},
        {"5a0eeb8e86f77461257ed71a", {"Health Resort west wing room 309 key", 49497}},
        {"5d235a5986f77443f6329bc6", {"Gold skull ring", 45410}},
        {"5e00cfa786f77469dc6e5685", {"TW EXFIL Ear Covers (Black)", 44169}},
        {"5c5db6742e2216000f1b2852", {"MPX 9x19 F5 50-round drum magazine", 40986}},
        {"5ae09bff5acfc4001562219d", {"Mosin 730mm regular barrel", 52777}},
        {"57372a7f24597766fe0de0c1", {"5.45x39 BP gs 120 pcs. ammo pack", 60625}},
        {"5a13f24186f77410e57c5626", {"Health Resort east wing room 222 key", 48175}},
        {"5a13eebd86f7746fd639aa93", {"Health Resort west wing room 218 key", 43441}},
        {"5926f34786f77469195bfe92", {"MP5SD polymer handguard", 38904}},
        {"5df8a42886f77412640e2e75", {"Velocity Systems Multi-Purpose Patrol Vest", 46833}},
        {"5a9fbb84a2750c00137fa685", {"Rotor 43 5.56x45 muzzle brake", 39790}},
        {"5a788068c5856700137e4c8f", {"M870 Magpul MOE handguard", 60346}},
        {"5a0ea64786f7741707720468", {"Health Resort east wing office room 107 key", 37754}},
        {"590de7e986f7741b096e5f32", {"Antique vase", 41949}},
        {"5d6fc87386f77449db3db94e", {"Gunpowder \"Hawk\"", 42591}},
        {"5c0e5bab86f77461f55ed1f3", {"6B23-1 body armor (Digital Flora)", 44460}},
        {"5a78830bc5856700137e4c90", {"M870 12ga 7-shell magazine", 47655}},
        {"5c012ffc0db834001d23f03f", {"Camper axe", 50815}},
        {"58948c8e86f77409493f7266", {"SIG MPX 9x19 submachine gun", 41563}},
        {"5df917564a9f347bc92edca3", {"SR-25 7.62x51 16 inch barrel", 26157}},
        {"5a13f35286f77413ef1436b0", {"Health Resort east wing room 226 key", 45345}},
        {"5733279d245977289b77ec24", {"Car battery", 39638}},
        {"5c0e446786f7742013381639", {"6B5-15 Zh-86 \"Uley\" armored rig", 43263}},
        {"59fafb5d86f774067a6f2084", {"5L propane tank", 45830}},
        {"5a9e81fba2750c00164f6b11", {"9x39 SR3M.130 30-round magazine", 43065}},
        {"60785ce5132d4d12c81fd918", {"MP-155 Ultima top rail", 41389}},
        {"590c37d286f77443be3d7827", {"SAS drive", 40370}},
        {"5648a69d4bdc2ded0b8b457b", {"BlackRock chest rig", 42500}},
        {"5bfd36290db834001966869a", {"Mosin sawn-off sniper stock", 36126}},
        {"5cff9e84d7ad1a049e54ed55", {"Daniel Defense WAVE QD sound suppressor", 41355}},
        {"5f2a9575926fd9352339381f", {"Kel-Tec RFB 7.62x51 carbine", 40659}},
        {"5dfa397fb11454561e39246c", {"SR-25 7.62x51 20 inch barrel", 40300}},
        {"5b7be1265acfc400161d0798", {"SA-58 7.62x51 21 inch barrel", 39693}},
        {"5ac66cb05acfc40198510a10", {"AK-101 5.56x45 assault rifle", 40697}},
        {"57c44dd02459772d2e0ae249", {"AS VAL 9x39 integral barrel-suppressor", 37685}},
        {"592c2d1a86f7746dbe2af32a", {"ANA Tactical Alpha chest rig", 45552}},
        {"5bc9c377d4351e3bac12251b", {"Old firesteel", 39416}},
        {"5a0ee72c86f77436955d3435", {"Health Resort east wing room 213 key", 38038}},
        {"5a9d6d13a2750c00164f6b03", {"Strike Industries KeyMod 6 inch rail", 33776}},
        {"5bc9c049d4351e44f824d360", {"Battered antique book", 38967}},
        {"5d80c60f86f77440373c4ece", {"RB-BK marked key", 40366}},
        {"5cf656f2d7f00c06585fb6eb", {"AK Vezhlivyy Strelok VS-24 + VS-33c handguard & gas block combo", 46632}},
        {"5f60c076f2bcbb675b00dac2", {"Caiman Ballistic Mandible Guard", 46705}},
        {"59e649f986f77411d949b246", {"AKM type Molot gas tube", 36709}},
        {"5b237e425acfc4771e1be0b6", {"AK TROY Industries handguard & gas block combo", 38056}},
        {"5d80c62a86f7744036212b3f", {"RB-VO marked key", 39579}},
        {"59e3647686f774176a362507", {"Wooden clock", 39136}},
        {"60a272cc93ef783291411d8e", {"Hazard 4 Drawbridge backpack", 43179}},
        {"5d03784a86f774203e7e0c4d", {"Military gyrotachometer", 39339}},
        {"5d403f9186f7743cac3f229b", {"Bottle of Dan Jackiel whiskey", 43575}},
        {"5fc382a9d724d907e2077dab", {".338 Lapua Magnum AP", 39650}},
        {"5ba26383d4351e00334c93d9", {"HK MP7A1 4.6x30 submachine gun", 53595}},
        {"5b43575a86f77424f443fe62", {"Fuel conditioner", 38474}},
        {"55d6190f4bdc2d87028b4567", {"Surefire SOCOM556-MINI MONSTER 5.56x45 sound suppressor", 35526}},
        {"5df256570dee1b22f862e9c4", {"T-5000M .308 660mm barrel", 38737}},
        {"5f60b85bbdb8e27dee3dc985", {"Caiman Hybrid Ballistic Applique (Black)", 38403}},
        {"5fca138c2a7b221b2852a5c6", {"xTG-12 antidote injector", 44495}},
        {"5e01ea19e9dc277128008c0b", {"Rotor 43 7.62x54R muzzle brake", 31616}},
        {"55d45f484bdc2d972f8b456d", {"MP-133 custom plastic forestock with rails", 29536}},
        {"5d1b327086f7742525194449", {"Pressure gauge", 38658}},
        {"5fbcc3e4d6fa9c00c571bb58", {"MCX GEN1 upper receiver", 37710}},
        {"57cffce524597763b31685d8", {"Magpul M-LOK AFG tactical grip (Stealth Gray)", 60235}},
        {"5b3b99265acfc4704b4a1afb", {"Nightforce Magmount 30mm rings", 35193}},
        {"5c7955c22e221644f31bfd5e", {"Gemtech ONE multi-caliber sound suppressor", 33616}},
        {"5d1b317c86f7742523398392", {"Hand drill", 37177}},
        {"5bc9bdb8d4351e003562b8a1", {"Silver Badge", 37489}},
        {"5addbac75acfc400194dbc56", {"M1A 7.62x51 22 inch barrel", 38446}},
        {"5d5e9c74a4b9364855191c40", {"MSA ACH TC-2002 MICH Series helmet", 41184}},
        {"5a0ec13bfcdbcb00165aa685", {"AKMN 7.62x39 assault rifle", 35412}},
        {"6034d103ca006d2dca39b3f0", {"Hazard 4 Takedown sling backpack", 39790}},
        {"5e01f31d86f77465cf261343", {"TW EXFIL Ear Covers (Coyote Tan)", 39112}},
        {"5aa7e4a4e5b5b000137b76f2", {"ZSh-1-2M helmet (Black)", 36209}},
        {"5b44d22286f774172b0c9de8", {"BNTI Kirasa-N armor", 39255}},
        {"5ea034f65aad6446a939737e", {"PPSh-41 7.62x25 71-round drum magazine", 37106}},
        {"57adff4f24597737f373b6e6", {"SIG Sauer BRAVO4 4X30 Scope", 38038}},
        {"5fb651dc85f90547f674b6f4", {"Glock .45 ACP KRISS G30 MagEx 30-round magazine", 29831}},
        {"5ac66d015acfc400180ae6e4", {"AK-102 5.56x45 assault rifle", 39672}},
        {"5b4391a586f7745321235ab2", {"WI-FI Camera", 34363}},
        {"5a144bdb86f7741d374bbde0", {"Health Resort east wing room 205 key", 35813}},
        {"5b363dd25acfc4001a598fd2", {"SilencerCo Salvo 12 12ga sound suppressor", 37579}},
        {"5c07a8770db8340023300450", {"AR-15 Noveske Gen.3 5.56x45 upper receiver", 35240}},
        {"578395402459774a256959b5", {"VSS Vintorez dust cover", 32092}},
        {"6087e663132d4d12c81fd96b", {"AK Custom Arms AGS-74 PRO + Sniper Kit pistol grip", 44741}},
        {"5a0ea79b86f7741d4a35298e", {"Health Resort universal utility room key", 34700}},
        {"5beec2820db834001b095426", {"RPK-16 5.45x39 22 inch barrel", 39613}},
        {"5aa7e454e5b5b0214e506fa2", {"ZSh-1-2M helmet (Green)", 37317}},
        {"5c0e9f2c86f77432297fe0a3", {"Blackhawk! Commando Chest Harness (Black)", 33252}},
        {"5b0e794b5acfc47a877359b2", {"AKM/AK-74 Magpul Zhukov-S stock", 33820}},
        {"5d6d3829a4b9361bc8618943", {"LShZ-2DTM face shield", 35587}},
        {"5c0517910db83400232ffee5", {"Valday PS-320 1x/6x scope", 35893}},
        {"6038d614d10cbf667352dd44", {"Hazard 4 Takedown sling backpack (Multicam)", 37418}},
        {"5c0919b50db834001b7ce3b9", {"Maska-1Shch face shield (Olive Drab)", 35036}},
        {"5efaf417aeb21837e749c7f2", {"B-30 handguard with B-31S upper handguard rail", 36693}},
        {"5f63407e1b231926f2329f15", {"VPO-101 Vepr Hunter 7.62x51 Rotor 43 muzzle brake", 33042}},
        {"5a145d4786f7744cbb6f4a12", {"Health Resort east wing room 306 key", 38797}},
        {"5e4d34ca86f774264f758330", {"Walker's Razor digital headset", 39132}},
        {"5c6592372e221600133e47d7", {"5.56x45 MAG5-100 STANAG 100-round magazine", 37792}},
        {"5bc9b9ecd4351e3bac122519", {"Deadlyslob's beard oil", 34987}},
        {"5f745ee30acaeb0d490d8c5b", {"Veritas guitar pick", 34632}},
        {"5b057b4f5acfc4771e1bd3e9", {"Stark SE-5 Express Forward grip", 34030}},
        {"5d5e7d28a4b936645d161203", {"MSA ACH TC-2001 MICH Series helmet", 38886}},
        {"5e2aedd986f7746d404f3aa4", {"GreenBat lithium battery", 37617}},
        {"5a0ee76686f7743698200d5c", {"Health Resort east wing room 216 key", 33286}},
        {"5abcd472d8ce8700166032ae", {"AKMSN shoulder piece (6P4 Sb.1-19)", 19140}},
        {"5d0236dad7ad1a0940739d29", {"SKS FAB Defense UAS stock", 33394}},
        {"5de6556a205ddc616a6bc4f7", {"VPO-215 thread protection cap", 34066}},
        {"5ca2113f86f7740b2547e1d2", {"Vulkan-5 face shield", 35190}},
        {"60b0f6c058e0b0481a09ad11", {"WZ Wallet", 33019}},
        {"5c78f2612e221600114c9f0d", {"AR-15 SAI 10 inch QD Rail handguard", 37030}},
        {"5c0e531d86f7747fa23f4d42", {"SJ6 TGLabs combat stimulant injector", 34011}},
        {"5c5039be2e221602b177c9ff", {"VPO-101 Vepr Hunter gas tube", 33893}},
        {"5b2389515acfc4771e1be0c0", {"Burris AR-P.E.P.R. 30mm ring mount", 35465}},
        {"5f633ff5c444ce7e3c30a006", {"AR-15 Avalanche MOD2 charging handle", 32785}},
        {"5a37ca54c4a282000d72296a", {"JP Enterprises 30mm ring scope mount", 37643}},
        {"5a1452ee86f7746f33111763", {"Health Resort west wing room 222 key", 34228}},
        {"58d268fc86f774111273f8c2", {"Leupold DeltaPoint Reflex Sight", 33065}},
        {"57ac965c24597706be5f975c", {"ELCAN SpecterDR 1x/4x Scope", 35369}},
        {"5bc9b355d4351e6d1509862a", {"#FireKlean gun lube", 25283}},
        {"5b0bbe4e5acfc40dc528a72d", {"DS Arms SA-58 7.62x51 assault rifle", 32927}},
        {"5bfd297f0db834001a669119", {"Mosin 7.62x54R bolt-action infantry rifle", 32332}},
        {"599851db86f77467372f0a18", {"PP-19-01 Vityaz-SN metal skeleton stock", 25702}},
        {"5a7c4850e899ef00150be885", {"6B47 Ratnik-BSh helmet", 34073}},
        {"5f6336bbda967c74a42e9932", {"AR-10 Lancer LCH-7 12.5 inch M-LOK handguard", 38764}},
        {"5755383e24597772cb798966", {"Vaseline balm", 35185}},
        {"5a0f045e86f7745b0f0d0e42", {"Shoreline gas station safe key", 33467}},
        {"5926d3c686f77410de68ebc8", {"MP5 A2 stock", 47123}},
        {"5b4736a986f774040571e998", {"TROY QARS 3.2 inch rail", 47282}},
        {"59f9d81586f7744c7506ee62", {"Vortex RAZOR AMG UH-1 holographic sight", 32006}},
        {"59db7eed86f77461f8380365", {"Trijicon TA51 sight mount", 32889}},
        {"5bd06f5d86f77427101ad47c", {"Slender mask", 21006}},
        {"5a37cb10c4a282329a73b4e7", {"Leupold Mark 4 LR 6.5-20x50 riflescope", 32597}},
        {"5cebec10d7f00c065703d185", {"FN PS90 stock", 32500}},
        {"5cc6ea78e4a949000e1ea3c1", {"FN P90 charging handle", 32497}},
        {"5e54f6af86f7742199090bf3", {"Can of Dr. Lupo's coffee beans", 32334}},
        {"5ab372a310e891001717f0d8", {"M14 TROY S.A.S.S. chassis stock", 29353}},
        {"5addbfbb5acfc400194dbcf7", {"M14 Ultimak M8 Forward Optic mount", 37446}},
        {"5e71fad086f77422443d4604", {"Twitch Rivals 2020 half mask", 32000}},
        {"5bfd36ad0db834001c38ef66", {"Mosin sawn-off stock", 31561}},
        {"55801eed4bdc2d89578b4588", {"SV-98 7.62x54R bolt-action sniper rifle", 28575}},
        {"5cf8f3b0d7f00c00217872ef", {"SOK-12 12/76 MaxRounds Powermag 20-round magazine", 40013}},
        {"5a0dc95c86f77452440fc675", {"Health Resort west wing office room 112 key", 32007}},
        {"5d02797c86f774203f38e30a", {"Surv12 field surgical kit", 33469}},
        {"60b0f561c4449e4cb624c1d7", {"LVNDMARK's rat poison", 31863}},
        {"5e21a3c67e40bd02257a008a", {"AK 7.62x39 Magpul PMAG 30 GEN M3 30-round magazine (Banana)", 30167}},
        {"5addcce35acfc4001a5fc635", {"M14 7.62x51 30-round magazine", 29195}},
        {"57aca93d2459771f2c7e26db", {"ELCAN SpecterDR 1x/4x scope (Flat Dark Earth)", 31186}},
        {"5b432d215acfc4771e1c6624", {"LZSh light helmet", 37770}},
        {"5c1f79a086f7746ed066fb8f", {"TerraGroup Labs Arsenal storage room key", 31840}},
        {"5798a2832459774b53341029", {"Customs plan map", 37435}},
        {"5ae08f0a5acfc408fb1398a1", {"Mosin 7.62x54R bolt-action sniper rifle", 31512}},
        {"5addbf175acfc408fb13965b", {"M1A ProMag Archangel stock", 29103}},
        {"5d2c772c48f0355d95672c25", {"AK TWS Dog Leg Rail dust cover", 33181}},
        {"5b3b713c5acfc4330140bd8d", {"TT-33 7.62x25 TT pistol (Gold)", 33162}},
        {"58491f3324597764bc48fa02", {"EOTech XPS3-0 holographic sight", 35835}},
        {"560d75f54bdc2da74d8b4573", {"7.62x54R SNB 30 pcs. ammo pack", 31204}},
        {"5448ba0b4bdc2d02308b456c", {"Factory emergency exit key", 31323}},
        {"5b2388675acfc4771e1be0be", {"Burris FullField TAC30 1-4x24 riflescope", 31254}},
        {"57372bd3245977670b7cd243", {"5.45x39 BS gs 30 pcs. ammo pack", 138500}},
        {"590de71386f774347051a052", {"Antique teapot", 30398}},
        {"59d6088586f774275f37482f", {"AKM 7.62x39 assault rifle", 29792}},
        {"56ea70acd2720b844b8b4594", {"Hensoldt FF 4-16x56 scope", 31003}},
        {"5a0f068686f7745b0d4ea242", {"Shoreline cottage safe key", 39043}},
        {"590c657e86f77412b013051d", {"Grizzly medical kit", 37438}},
        {"5e85a9f4add9fe03027d9bf1", {"23x75mm \"Zvezda\" flashbang round", 30698}},
        {"5d235b4d86f7742e017bc88a", {"GP coin", 30581}},
        {"5d1b36a186f7742523398433", {"Metal fuel tank (0/100)", 28813}},
        {"590a373286f774287540368b", {"Dry fuel", 28687}},
        {"5ed5166ad380ab312177c100", {"\"Obdolbos\" cocktail injector", 29562}},
        {"5aa2ba71e5b5b000137b758f", {"MSA Sordin Supreme PRO-X/L active headset", 31569}},
        {"590c651286f7741e566b6461", {"Slim diary", 30386}},
        {"5bae13ded4351e44f824bf38", {"Mosin 7.62x54R ProMag Archangel OPFOR 10-round magazine", 27979}},
        {"57372c21245977670937c6c2", {"5.45x39 BT gs 120 pcs. ammo pack", 32963}},
        {"595cfa8b86f77427437e845b", {"AR-15 War Sport LVOA-C handguard (Black)", 31575}},
        {"584924ec24597768f12ae244", {"EOTech XPS3-2 holographic sight", 33766}},
        {"5e54f62086f774219b0f1937", {"Raven figurine", 30001}},
        {"5888945a2459774bf43ba385", {"DVL-10 .308 500mm barrel", 27998}},
        {"5c1262a286f7743f8a69aab2", {"5.45x39 PPBS gs 30 pcs. ammo pack", 67500}},
        {"5739d41224597779c3645501", {"9x19 Pst gzh 16 pcs. ammo pack", 30000}},
        {"5de8e67c4a9f347bc92edbd7", {"MP9-N 9x19 upper receiver", 45606}},
        {"5926f2e086f7745aae644231", {"MP5SD upper receiver", 30967}},
        {"56083be64bdc2d20478b456f", {"MP-133/153 plastic stock", 27320}},
        {"5a957c3fa2750c00137fa5f7", {"AKS-74U CAA XRSU47SU tactical handguard", 30672}},
        {"5c0e6a1586f77404597b4965", {"Belt-A + Belt-B gear rig", 33100}},
        {"5fc4b9b17283c4046c5814d7", {"SilencerCo Omega 45k .45 ACP sound suppressor", 28958}},
        {"5ad5d20586f77449be26d877", {"OLI outlet utility room key", 34081}},
        {"59e3658a86f7741776641ac4", {"Cat figurine", 29633}},
        {"5d1b2fa286f77425227d1674", {"Electric motor", 30337}},
        {"5f4f9eb969cdc30ff33f09db", {"EYE MK.2 professional hand-held compass", 30935}},
        {"5a398b75c4a282000a51a266", {"Ops-Core Picatinny Rail Adapter mount", 65416}},
        {"5bc9b720d4351e450201234b", {"Golden 1GPhone", 28330}},
        {"5e208b9842457a4a7a33d074", {"AK Hexagon DTKP MK.2 7.62x39 sound suppressor", 28820}},
        {"5ea17bbc09aa976f2e7a51cd", {"Surefire SOCOM556-RC2 5.56x45 sound suppressor", 30499}},
        {"5c0e5edb86f77461f55ed1f7", {"BNTI Zhuk-3 press armor", 32862}},
        {"57372c89245977685d4159b1", {"5.45x39 BT gs 30 pcs. ammo pack", 29480}},
        {"5df25b6c0b92095fd441e4cf", {"Orsis T-5000M .308 5-round magazine", 21811}},
        {"5de910da8b6c4240ba2651b5", {"MP9 stock", 30130}},
        {"57cffb66245977632f391a99", {"Magpul M-LOK AFG tactical grip (Black)", 45996}},
        {"5f63405df5750b524b45f114", {"VPO-101 Vepr Hunter SVD-style stock", 26087}},
        {"5a0eed4386f77405112912aa", {"Health Resort east wing room 314 key", 27853}},
        {"5aa7cfc0e5b5b00015693143", {"6B47 Ratnik-BSh helmet with cover (Digital Flora)", 30573}},
        {"57505f6224597709a92585a9", {"Alyonka chocolate bar", 35138}},
        {"5c0696830db834001d23f5da", {"PNV-10T Night Vision Goggles", 39370}},
        {"5e997f0b86f7741ac73993e2", {"Sanitar's bag", 31657}},
        {"606f2696f2cb2e02a42aceb1", {"MP-155 Ultima thermal camera", 29077}},
        {"5ab8e4ed86f7742d8e50c7fa", {"MF-UNTAR body armor", 30870}},
        {"5bfea6e90db834001b7347f3", {"Remington Model 700 .308 bolt-action sniper rifle", 27010}},
        {"5913915886f774123603c392", {"Military checkpoint key", 27882}},
        {"5645bcc04bdc2d363b8b4572", {"Peltor ComTac 2 headset", 28922}},
        {"5fc3e272f8b6a877a729eac5", {"HK UMP .45 ACP submachine gun", 28786}},
        {"5dcbe9431e1f4616d354987e", {"MDR .308 16 inch barrel", 27990}},
        {"5dfe6104585a0c3e995c7b82", {"NcSTAR ADO P4 Sniper 3-9x42 riflescope", 29246}},
        {"6087e0336d0bd7580617bb7a", {"AR-15 Unique-ARs Wing & Skull 12 inch handguard", 29888}},
        {"5644bd2b4bdc2d3b4c8b4572", {"AK-74N 5.45x39 assault rifle", 29698}},
        {"5cc7012ae4a949001252b43e", {"FN P90 EFFEN 90 receiver rail", 24041}},
        {"560838c94bdc2d77798b4569", {"Remington Tactical Choke 12ga", 27440}},
        {"5d80cb8786f774405611c7d9", {"RB-PP key", 36706}},
        {"5cf78496d7f00c065703d6ca", {"Lantac BMD Blast Mitigation Device A3 direct thread adapter", 25063}},
        {"5a0d63621526d8dba31fe3bf", {"PBS-1 7.62x39 sound suppressor", 27516}},
        {"5943eeeb86f77412d6384f6b", {"PWS CQB 74 5.45x39 muzzle brake", 32202}},
        {"5d1b32c186f774252167a530", {"Analog thermometer", 27878}},
        {"5aa66a9be5b5b0214e506e89", {"Nightforce Magmount 34mm rings", 26626}},
        {"5a3501acc4a282000d72293a", {"7.62x51 Magpul PMAG SR-LR GEN M3 20 20-round magazine", 24166}},
        {"5a9fbacda2750c00141e080f", {"Rotor 43 7.62x39 muzzle brake", 25928}},
        {"5a16b9fffcdbcb0176308b34", {"Ops-Core FAST RAC Headset", 28681}},
        {"5a7b4900e899ef197b331a2a", {"UM Tactical UM3 pistol sight mount", 31207}},
        {"55d3632e4bdc2d972f8b4569", {"AR-15 5.56x45 370mm barrel", 28114}},
        {"5d1b385e86f774252167b98a", {"Water filter", 27910}},
        {"5648a7494bdc2d9d488b4583", {"PACA soft armor", 28106}},
        {"593d490386f7745ee97a1555", {"SKS Hexagon 7.62x39 sound suppressor", 26510}},
        {"5c0695860db834001b735461", {"PNV-10T dovetail adapter", 50327}},
        {"57838e1b2459774a256959b1", {"VSS Vintorez rear sight", 27548}},
        {"5ac50da15acfc4001718d287", {"AK-74M dust cover (6P34 0-1)", 24581}},
        {"59d6514b86f774171a068a08", {"AKM wooden stock (6P1 Sb.5)", 21374}},
        {"57dbb57e2459774673234890", {"KAC QDSS NT-4 5.56x45 sound suppressor (Flat Dark Earth)", 27340}},
        {"59fb257e86f7742981561852", {"Zenit DTK-4? 7.62x39 muzzle brake", 26806}},
        {"5ba2657ed4351e0035628ff2", {"MP7 4.6x30 30-round magazine", 34326}},
        {"5cf4e3f3d7f00c06595bc7f0", {"AK 5.45 Design Aggressor handguard", 30722}},
        {"5a32a064c4a28200741e22de", {"SilencerCo Osprey 9 9x19mm sound suppressor", 28527}},
        {"5c6bf4aa2e2216001219b0ae", {"AK US Palm pistol grip", 23192}},
        {"56083e1b4bdc2dc8488b4572", {"SV-98 rear sight", 27059}},
        {"5addccf45acfc400185c2989", {"M14 7.62x51 X-14 50-round drum magazine", 33725}},
        {"5b3b6e495acfc4330140bd88", {"Armasight Vulcan MG 3.5x night vision scope", 26170}},
        {"5df8e053bb49d91fb446d6a6", {"SR-25 charging handle", 17269}},
        {"5ab8dab586f77441cd04f2a2", {"WARTECH MK3 TV-104 chest rig", 26480}},
        {"57838c962459774a1651ec63", {"VSS Vintorez 9x39 integral barrel-suppressor", 31866}},
        {"5926d33d86f77410de68ebc0", {"MP5SD 9x19 sound suppressor", 26709}},
        {"5d3ef698a4b9361182109872", {"Gemtech SFN-57 5.7x28 sound suppressor", 24815}},
        {"5ac66d725acfc43b321d4b60", {"AK-104 7.62x39 assault rifle", 29328}},
        {"57372c56245977685e584582", {"5.45x39 BT gs 120 pcs. ammo pack", 32113}},
        {"5b80242286f77429445e0b47", {"AK Hexagon handguard (Anodized Red)", 27831}},
        {"5a0eebed86f77461230ddb3d", {"Health Resort west wing room 325 key", 30508}},
        {"5ba26b01d4351e0085325a51", {"MP7 flip up front sight", 21636}},
        {"5fd8d28367cb5e077335170f", {"Smoke balaclava", 26963}},
        {"5b3a16655acfc40016387a2a", {"AR-15 Yankee Hill Annihilator multi-caliber flash hider", 25219}},
        {"60a6220e953894617404b00a", {"Stich Profi Chest Rig MK2 (Recon, A-TACS FG)", 27960}},
        {"5b2240bf5acfc40dc528af69", {"AR-15 Radian Weapons Raptor charging handle", 23752}},
        {"5a34fae7c4a2826c6e06d760", {"AR-10 7.62x51 22 inch barrel", 27084}},
        {"6087e2a5232e5a31c233d552", {"AKM/AK-74 ProMag Archangel OPFOR AA47 buttstock", 29542}},
        {"59fafc9386f774067d462453", {"AK 7.62x39 Palm US AK30 30-round magazine (Flat Dark Earth)", 28924}},
        {"590a391c86f774385a33c404", {"Magnet", 22656}},
        {"5b86a0e586f7745b600ccb23", {"Mosin 7.62x54R Bramit sound suppressor", 26592}},
        {"5a7dbfc1159bd40016548fde", {"Hera Arms CQR tactical grip", 26207}},
        {"55d4491a4bdc2d882f8b456e", {"MP-133 12ga 510mm barrel", 24943}},
        {"5d44069ca4b9361ebd26fc37", {"Magpul PRS GEN3 stock", 29784}},
        {"5caf1109ae9215753c44119f", {"ASh-12 12.7x55 20-round magazine", 27719}},
        {"5d2702e88abbc31ed91efc44", {"Remington M700 7.62x51 26 inch stainless steel barrel", 25900}},
        {"5e54f76986f7740366043752", {"Shroud half-mask", 25476}},
        {"57da93632459771cb65bf83f", {"KAC QDSS NT-4 5.56x45 sound suppressor (Black)", 26764}},
        {"5c066ef40db834001966a595", {"Armasight NVG head strap", 50587}},
        {"57f3c6bd24597738e730fa2f", {"PP-91-01 Kedr-B 9x18PM submachine gun", 27096}},
        {"5780cf942459777df90dcb72", {"Dorm room 214 key", 26188}},
        {"59c0ec5b86f77435b128bfca", {"Hexagon 12K 12ga sound suppressor", 26067}},
        {"5ef3448ab37dfd6af863525c", {"M1911A1 .45 ACP Mec-Gar 11-round magazine", 26933}},
        {"5ef1ba28c64c5d0dfc0571a5", {"Mesa Tactical Crosshair Hydraulic buffer tube", 27577}},
        {"5e87076ce2db31558c75a11d", {"M590A1 SpeedFeed short forestock", 15749}},
        {"59e0bed186f774156f04ce84", {"Vltor CASV KeyMod 6 inch rail", 28195}},
        {"564caa3d4bdc2d17108b458e", {"AK 5.45x39 TGP-A muzzle device/suppressor", 25410}},
        {"5af0561e86f7745f5f3ad6ac", {"Powerbank", 26981}},
        {"57c44f4f2459772d2c627113", {"AS VAL dust cover", 27640}},
        {"55d614004bdc2d86028b4568", {"Surefire SOCOM556-MONSTER 5.56x45 sound suppressor", 25209}},
        {"59ecc3dd86f7746dc827481c", {"AK Zenit PT-3 \"Klassika\" stock", 25508}},
        {"5c4eecc32e221602b412b440", {"SV-98 7.62x54R sound suppressor", 25008}},
        {"5ad5ccd186f774446d5706e9", {"OLI administration office key", 22970}},
        {"5bfebc320db8340019668d79", {"Remington M700 7.62x51 20 inch barrel", 28692}},
        {"5d67abc1a4b93614ec50137f", {"FN Five-seveN MK2 5.7x28 pistol (Flat Dark Earth)", 25670}},
        {"5ac733a45acfc400192630e2", {"AK-105 rear sight (6P44 Sb.1-30)", 25000}},
        {"57c5ac0824597754771e88a9", {"March Tactical 3-24x42 FFP optical scope", 23895}},
        {"56dee2bdd2720bc8328b4567", {"MP-153 12ga semi-automatic shotgun", 28741}},
        {"5cdeac42d7f00c000d36ba73", {"Remington M700 Magpul Pro 700 folding stock", 24968}},
        {"5e848d1c264f7c180b5e35a9", {"KS-23 23x75 510mm barrel", 22336}},
        {"57f3c8cc2459773ec4480328", {"PP-91-01 Kedr-B 9x18PM sound suppressor", 12668}},
        {"5bfd37c80db834001d23e842", {"Mosin sniper carbine stock", 13122}},
        {"5d2dc3e548f035404a1a4798", {"Monstrum Compact prism scope 2x32", 27578}},
        {"590c645c86f77412b01304d9", {"Diary", 26105}},
        {"5f6331e097199b7db2128dc2", {"AK TDI X47 tactical handguard rail system", 24561}},
        {"5a7ad74e51dfba0015068f45", {"Glock 9x19 Fischer Development FD917 sound suppressor", 24510}},
        {"5734758f24597738025ee253", {"Golden neck chain", 24041}},
        {"5a398ab9c4a282000c5a9842", {"Ops Core Single Clamp Rail Adapter mount", 65199}},
        {"5d5d85c586f774279a21cbdb", {"Haley Strategic D3CRX Chest Harness", 24745}},
        {"593d493f86f7745e6b2ceb22", {"AK-74 Hexagon 5.45x39 sound suppressor", 23551}},
        {"5a34f7f1c4a2826c6e06d75d", {"AR-10 7.62x51 18 inch barrel", 24081}},
        {"59984ab886f7743e98271174", {"PP-19-01 Vityaz-SN 9x19 submachine gun", 21137}},
        {"603409c80ca681766b6a0fb2", {"NPP KLASS Condor glasses", 26786}},
        {"60098ad7c2240c0fe85c570a", {"AFAK personal tactical first aid kit", 25807}},
        {"5cf6937cd7f00c056c53fb39", {"AR-15 Bulletec ST-6012 5.56x45 muzzle brake", 26774}},
        {"5ab8e9fcd8ce870019439434", {"AKS-74N 5.45x39 assault rifle", 23783}},
        {"5a33e75ac4a2826c6e06d759", {"AR-15 Hera Arms CQR pistol grip-stock", 24889}},
        {"5447ac644bdc2d6c208b4567", {"5.56x45 M855 30 pcs. ammo pack", 24125}},
        {"5a71e4f48dc32e001207fb26", {"Glock ZEV Tech Hex Spartan pistol slide", 26475}},
        {"60a621c49c197e4e8c4455e6", {"Stich Profi Chest Rig MK2 (Assault, A-TACS FG)", 25406}},
        {"609269c3b0e443224b421cc1", {"SilencerCo ASR 51T 5.56x45 flash hider", 22558}},
        {"5de8eac42a78646d96665d91", {"MP9 9x19 30-round magazine", 25514}},
        {"59e6687d86f77411d949b251", {"Molot VPO-209 .366 TKM carbine", 23041}},
        {"57cd379a24597778e7682ecf", {"Kiba Arms Tactical Tomahawk", 24000}},
        {"5e71f6be86f77429f2683c44", {"Twitch Rivals 2020 mask", 24000}},
        {"5926bb2186f7744b1c6c6e60", {"HK MP5 9x19 submachine gun (Navy 3 Round Burst)", 26552}},
        {"5c6165902e22160010261b28", {"SIG Sauer SRD9 9x19mm sound suppressor", 21868}},
        {"5c88f24b2e22160bc12c69a6", {"SVD 7.62x54R 20-round magazine", 26205}},
        {"5c12688486f77426843c7d32", {"Paracord", 25475}},
        {"5b432b2f5acfc4771e1c6622", {"Shattered light armored mask", 27236}},
        {"55d482194bdc2d1d4e8b456b", {"AK-74 5.45x39 6L31 60-round magazine", 20723}},
        {"5c165d832e2216398b5a7e36", {"Peltor Tactical Sport headset", 23599}},
        {"5a145d7b86f7744cbb6f4a13", {"Health Resort east wing room 308 key", 26513}},
        {"5e2192a498a36665e8337386", {"AK KGB MG-47 pistol grip (Anodized Red)", 21475}},
        {"5fd4c60f875c30179f5d04c2", {"Gear Craft GC-BSS-MK1 chest rig", 24129}},
        {"5d1b304286f774253763a528", {"Working LCD", 23423}},
        {"5d4405f0a4b9361e6a4e6bd9", {"AR-15 Lone Star Armory Ion Lite handguard", 17496}},
        {"593d489686f7745c6255d58a", {"AKM Hexagon 7.62x39 sound suppressor", 23769}},
        {"5d122e7bd7ad1a07102d6d7f", {"AR-15 URX 3.1 10.75 inch handguard", 16980}},
        {"5a351711c4a282000b1521a4", {"MP5 9x19 X Products X-5 50-round drum magazine", 30093}},
        {"5f60bf4558eff926626a60f2", {"Caiman Fixed Arm Visor", 22111}},
        {"5b099bb25acfc400186331e8", {"SA-58 Extreme Duty dust cover", 25166}},
        {"5beec8b20db834001961942a", {"RPK-16 buffer tube", 21232}},
        {"544909bb4bdc2d6f028b4577", {"AN/PEQ-15 tactical device", 22591}},
        {"5cc70093e4a949033c734312", {"FN P90 5.7x28 50-round magazine", 27342}},
        {"5c0e533786f7747fa23f4d47", {"Zagustin hemostatic drug injector", 23075}},
        {"59db3acc86f7742a2c4ab912", {"AR-15 Stark AR Rifle grip (Black)", 29468}},
        {"5c0e531286f7747fa54205c2", {"SJ1 TGLabs combat stimulant injector", 24524}},
        {"5e00903ae9dc277128008b87", {"B&T MP9 9x19 submachine gun", 23623}},
        {"5649a2464bdc2d91118b45a8", {"NcStar MPR45 Backup mount", 24032}},
        {"5cbdb1b0ae9215000d50e105", {"AK-74 polymer stock (6P20 Sb.7) Plum", 18345}},
        {"5e848db4681bea2ada00daa9", {"KS-23 wooden stock", 24959}},
        {"5649b0fc4bdc2d17108b4588", {"AK-74 polymer stock (6P20 Sb.7)", 11366}},
        {"5aa2a7e8e5b5b00016327c16", {"USEC baseball cap", 7771}},
        {"57371e4124597760ff7b25f1", {"9x18mm PM PPT gzh", 11348}},
        {"5df8f541c41b2312ea3335e3", {"KAC 7.62x51 20-round steel magazine", 23182}},
        {"5c7954d52e221600106f4cc7", {"Gemtech ONE direct thread mount adapter", 23196}},
        {"57347c2e24597744902c94a1", {"Power supply unit", 25071}},
        {"5e00cdd986f7747473332240", {"TW EXFIL Ballistic helmet face shield (Black)", 23479}},
        {"5d3eb536a4b9363b1f22f8e2", {"FN Five-seveN MK2 front sight", 20541}},
        {"5b7be1125acfc4001876c0e5", {"SA-58 7.62x51 16 inch barrel", 21606}},
        {"5d2703038abbc3105103d94c", {"Remington M700 7.62x51 20 inch stainless steel barrel", 22800}},
        {"60391b0fb847c71012789415", {"TP-200 TNT brick", 22380}},
        {"5a7882dcc5856700177af662", {"M870 12ga 4-shell magazine", 16395}},
        {"603648ff5a45383c122086ac", {"Azimut SS Zhuk chest harness (Black)", 23271}},
        {"5dff8db859400025ea5150d4", {"SVD SAG low sidemount", 22302}},
        {"602e3f1254072b51b239f713", {"STM Arms buffer tube", 21130}},
        {"5d3eb3b0a4b93615055e84d2", {"FN Five-seveN MK2 5.7x28 pistol", 24471}},
        {"5bfe89510db834001808a127", {"FAB Defense buffer tube for AGR-870", 24728}},
        {"5a144dfd86f77445cb5a0982", {"Health Resort west wing room 203 key", 27202}},
        {"5b07db875acfc40dc528a5f6", {"AR-15 Tactical Dynamics Skeletonized pistol grip", 19036}},
        {"5d1c702ad7ad1a632267f429", {"Glock FAB Defense GLR-17 stock", 25613}},
        {"59136e1e86f774432f15d133", {"Dorm room 110 key", 22569}},
        {"6040dd4ddcf9592f401632d2", {"Azimut SS Zhuk Chest Harness (SURPAT)", 23474}},
        {"5aa7d03ae5b5b00016327db5", {"UNTAR helmet", 22944}},
        {"5cc701d7e4a94900100ac4e7", {"FN P90 5.7x28 16 inch barrel", 22300}},
        {"5de65547883dde217541644b", {"VPO-215 .366TKM 23 inch barrel", 12407}},
        {"5ba26b17d4351e00367f9bdd", {"MP7 flip up rear sight", 30746}},
        {"60339954d62c9b14ed777c06", {"STM-9 Gen.2 9x19 carbine", 21911}},
        {"5a32aa8bc4a2826c6e06d737", {"Trijicon RMR reflex sight", 22215}},
        {"5e01f37686f774773c6f6c15", {"TW EXFIL Ballistic helmet face shield (Coyote Tan)", 22530}},
        {"5e340dcdcb6d5863cc5e5efb", {"VOG-25 Khattabka grenade", 23166}},
        {"5c5db6652e221600113fba51", {"MPX 9x19 41-round magazine", 16209}},
        {"5bbde409d4351e003562b036", {"Mosin AIM Sports Recoil pad", 28766}},
        {"58889c7324597754281f9439", {"DVL-10 muzzle device", 22595}},
        {"5ed515f6915ec335206e4152", {"AHF1-M stimulant injector", 21921}},
        {"5fc64ea372b0dd78d51159dc", {"Cultist knife", 20965}},
        {"5df8a2ca86f7740bfe6df777", {"6B2 armor (Flora)", 23531}},
        {"5a7d9122159bd4001438dbf4", {"Glock Dead Ringer Snake Eye rear sight", 26695}},
        {"5cc6ea85e4a949000e1ea3c3", {"FN P90 K&M The Handler charging handle", 18521}},
        {"5b30ac585acfc433000eb79c", {"AK Magpul MOE pistol grip", 26327}},
        {"5bae13bad4351e00320204af", {"Mosin ProMag Archangel OPFOR PRS stock", 16551}},
        {"5a0ea69f86f7741cd5406619", {"Health Resort east wing office room 108 key", 22375}},
        {"5b7d37845acfc400170e2f87", {"SA-58/FAL 7.62x51 British 30-round magazine", 21531}},
        {"5e217ba4c1434648c13568cd", {"AKM/AK-74 Hexagon \"Kocherga\" stock (Anodized Red)", 18490}},
        {"5c1127bdd174af44217ab8b9", {"9x19mm RIP 20-round ammo box", 22463}},
        {"5a16badafcdbcb001865f72d", {"Ops-Core FAST Side Armor", 23388}},
        {"5c1265fc86f7743f896a21c2", {"Broken GPhone X", 21682}},
        {"5b7be46e5acfc400170e2dcf", {"Vltor CASV 5 inch rail", 28537}},
        {"5a0eff2986f7741fd654e684", {"Health Resort west wing room 321 safe key", 22827}},
        {"59fafc5086f7740dbe19f6c3", {"AK 7.62x39 Palm US AK30 30-round magazine (Black)", 25075}},
        {"5894a2c386f77427140b8342", {"MPX 9x19 203mm barrel", 18084}},
        {"5c87a07c2e2216001219d4a2", {"HK E1 stock", 27398}},
        {"57cffcd624597763133760c5", {"Magpul M-LOK AFG tactical grip (Flat Dark Earth)", 37765}},
        {"55d485804bdc2d8c2f8b456b", {"MP-133 12ga 8-shell magazine", 28144}},
        {"5a27b6bec4a282000e496f78", {"SR-1MP 9x21 silencer", 21147}},
        {"57347c5b245977448d35f6e1", {"Bolts", 21994}},
        {"5c1793902e221602b21d3de2", {"Crye Precision AirFrame Ears", 22267}},
        {"5ea02bb600685063ec28bfa1", {"PPSh-41 7.62x25 10.6 inch barrel", 21525}},
        {"56eabf3bd2720b75698b4569", {"Magpul MOE Carbine stock (Black)", 32758}},
        {"5bffdc370db834001d23eca8", {"6Kh5 Bayonet", 18642}},
        {"5888961624597754281f93f3", {"Harris HBR Bipod", 21014}},
        {"5991b51486f77447b112d44f", {"MS2000 Marker", 17031}},
        {"5bed625c0db834001c062946", {"RPK-16 5.45x39 95-round drum magazine", 26156}},
        {"5b44c8ea86f7742d1627baf1", {"Blackhawk! Commando Chest Harness (Coyote Tan)", 23676}},
        {"5ea172e498dacb342978818e", {"AR-15 SureFire FH556RC 5.56x45 flash hider", 18547}},
        {"5c7fb51d2e2216001219ce11", {"AR-15 Surefire SF3P 5.56x45 Flash hider", 23772}},
        {"5a16b8a9fcdbcb00165aa6ca", {"Norotos Titanium Advanced Tactical Mount", 35030}},
        {"5fc2369685fd526b824a5713", {"B5 Systems Precision stock", 22201}},
        {"5a6b5b8a8dc32e001207faf3", {"Glock 9x19 Lone Wolf threaded barrel", 14966}},
        {"5e2af4a786f7746d3f3c3400", {"Ripstop fabric", 24263}},
        {"5fbcbd10ab884124df0cd563", {"SIG Sauer Two Port Brake 7.62x51 muzzle brake", 19834}},
        {"5f6341043ada5942720e2dc5", {"AK Aeroknox Scorpius pistol grip", 23681}},
        {"5ab8f20c86f7745cdb629fb2", {"Ski hat with holes for eyes", 21973}},
        {"5bbdb870d4351e00367fb67d", {"Mosin ATI Monte Carlo stock", 18585}},
        {"570fd6c2d2720bc6458b457f", {"EOTech 553 holographic sight", 22395}},
        {"5f6340d3ca442212f4047eb2", {"Tactical Dynamics aluminum skeletonized vertical grip", 23363}},
        {"58d2912286f7744e27117493", {"Magpul MOE Carbine stock series Rubber Butt-Pad", 29596}},
        {"5d6d3be5a4b9361bc73bc763", {"LSHZ-2DTM Aventail", 20588}},
        {"59fb137a86f7740adb646af1", {"Tromix Monster Claw 12ga muzzle brake", 24439}},
        {"603372f153a60014f970616d", {"STM-9 9x19 14 inch barrel", 12425}},
        {"5d2da1e948f035477b1ce2ba", {"Trijicon SRS-02 reflex sight", 22607}},
        {"5b7be1ca5acfc400170e2d2f", {"SA-58 quad rail full length handguard", 13361}},
        {"5abcbc27d8ce8700182eceeb", {"AKMSN 7.62x39 assault rifle", 20981}},
        {"5d1340cad7ad1a0b0b249869", {"5.56x45 Magpul PMAG GEN M3 W 30 STANAG 30-round magazine (Flat Dark Earth)", 20956}},
        {"5c0e530286f7747fa1419862", {"Propital regenerative stimulant injector", 21491}},
        {"5c878ebb2e2216001219d48a", {"AK 7.62x39 Lantac Dragon muzzle brake & compensator", 19663}},
        {"57cff947245977638e6f2a19", {"AK Magpul MOE AKM handguard (Black)", 19022}},
        {"5c05293e0db83400232fff80", {"Trijicon ACOG TA01NSN 4x32 scope (Black)", 18598}},
        {"5beec9450db83400970084fd", {"RPK-16 rear sight base", 20583}},
        {"5d026791d7ad1a04a067ea63", {"AR-10 Fortis RED Brake 7.62x51 muzzle brake", 21624}},
        {"5c6d85e02e22165df16b81f4", {"HK 416A5 5.56x45 10.6 inch barrel", 13961}},
        {"5c48a2852e221602b21d5923", {"MDR 5.56x45 406mm barrel", 21366}},
        {"5c7e8fab2e22165df16b889b", {"AAC Illusion 9 9x19mm sound suppressor", 19345}},
        {"5e2af02c86f7746d420957d4", {"Pack of chlorine", 18831}},
        {"5b1fa9b25acfc40018633c01", {"Glock 18C 9x19 machine pistol", 23548}},
        {"5d133067d7ad1a33013f95b4", {"KAC URX 3 3 inch rail", 14460}},
        {"5d40407c86f774318526545a", {"Bottle of Tarkovskaya vodka", 19646}},
        {"59f98b4986f7746f546d2cef", {"Serdyukov SR-1MP Gyurza 9x21 pistol", 19583}},
        {"5b07dd285acfc4001754240d", {"Steiner LAS/TAC 2 tactical flashlight", 24066}},
        {"5d3eb4aba4b93650d64e497d", {"FN Five-seveN MK2 rear sight", 17852}},
        {"5a7828548dc32e5a9c28b516", {"Remington Model 870 12ga pump-action shotgun", 21077}},
        {"5a7b4960e899ef197b331a2d", {"Glock Pachmayr tactical rubber grip", 17614}},
        {"5d010d1cd7ad1a59283b1ce7", {"MP5 CAA HX-5 handguard", 17865}},
        {"5ca20d5986f774331e7c9602", {"WARTECH Berkut BB-102 backpack", 20981}},
        {"56deeefcd2720bc8328b4568", {"MP-153 8-shell magazine extension", 20000}},
        {"544a378f4bdc2d30388b4567", {"5.56x45 Magpul PMAG GEN M3 40 STANAG 40-round magazine", 16036}},
        {"55d4af3a4bdc2d972f8b456f", {"AR-15 UTG Low Profile A2 front sight", 6926}},
        {"5df8a77486f77412672a1e3f", {"Christmas tree ornament (Violet)", 20000}},
        {"5f9949d869e2777a0e779ba5", {"Rivals 2020 armband", 20000}},
        {"5f99418230835532b445e954", {"Rivals 2020 cap", 20000}},
        {"5f994730c91ed922dd355de3", {"Rivals 2020 beanie", 20000}},
        {"5d2f25bc48f03502573e5d85", {"MP5K End Cap stock", 19999}},
        {"60a7acf20c5cb24b01346648", {"BOSS cap", 15957}},
        {"5a33a8ebc4a282000c5a950d", {"Alpha Dog Alpha 9 9x19 sound suppressor", 20093}},
        {"5d15cf3bd7ad1a67e71518b2", {"AR-15 Magpul MOE pistol grip (Flat Dark Earth)", 26846}},
        {"5ea03f7400685063ec28bfa8", {"PPSh-41 7.62x25 submachine gun", 20444}},
        {"5cbdc23eae9215001136a407", {"AK 7.62x39 Molot 75-round drum magazine", 24285}},
        {"5ab8e4ed86f7742d8e50c7fa", {"MF-UNTAR body armor (0/50)", 23154}},
        {"5bb20da5d4351e0035629dbf", {"HK 416A5 5.56x45 16.5 inch barrel with flip-up front sight", 20369}},
        {"5bc9be8fd4351e00334cae6e", {"42nd Signature Blend English Tea", 19503}},
        {"5c5db6f82e2216003a0fe914", {"MPX PMM ULSS foldable stock", 15900}},
        {"5b099a765acfc47a8607efe3", {"SA-58 7.62x51 11 inch barrel", 18594}},
        {"5a0f075686f7745bcc42ee12", {"Shoreline store safe key", 20182}},
        {"5d00ef6dd7ad1a0940739b16", {"AR-10 Noveske SWS N6 Split handguard", 20461}},
        {"5b800e9286f7747a8b04f3ff", {"AK Hexagon handguard", 20379}},
        {"5f5f41f56760b4138443b352", {"Direct Action Thunderbolt compact chest rig", 20928}},
        {"590c35a486f774273531c822", {"Shustrilo sealing foam", 15856}},
        {"5d135ecbd7ad1a21c176542e", {"Magpul CTR carbine stock (Flat Dark Earth)", 20475}},
        {"60a23797a37c940de7062d02", {"SIG Sauer ROMEO8T reflex sight", 20544}},
        {"5ac78a9b86f7741cca0bbd8d", {"Signal Jammer", 18846}},
        {"5df916dfbb49d91fb446d6b9", {"AR-10 URX 4 handguard", 21809}},
        {"5a33bab6c4a28200741e22f8", {"Trijicon RMR mount for ACOG scopes", 15131}},
        {"5de8eaadbbaf010b10528a6d", {"MP9 9x19 25-round magazine", 20437}},
        {"5d4405aaa4b9361e6a4e6bd3", {"TX-15 5.56x45 Lightweight upper receiver", 19446}},
        {"5d40419286f774318526545f", {"Metal cutting scissors", 21712}},
        {"606dae0ab0e443224b421bb7", {"MP-155 12ga semi-automatic shotgun", 22946}},
        {"5645bc214bdc2d363b8b4571", {"FORT Kiver-M bulletproof helmet", 20244}},
        {"607ea812232e5a31c233d53c", {"MP-155 Ultima short rail", 20876}},
        {"5c06c6a80db834001b735491", {"SSh-68 steel helmet", 19195}},
        {"58ac1bf086f77420ed183f9f", {"MPX retractable stock pipe adapter", 22389}},
        {"6033fa48ffd42c541047f728", {"Opsmen Earmor M32 headset", 18944}},
        {"5b432c305acfc40019478128", {"GP-5 gas mask", 21793}},
        {"544fb45d4bdc2dee738b4568", {"Salewa first aid kit", 20097}},
        {"5a71e22f8dc32e00094b97f4", {"Glock ZEV Tech HEX Gen3 pistol slide", 20770}},
        {"5648b4534bdc2d3d1c8b4580", {"AK Zenit B-10M handguard with B-19 upper handguard mount", 22141}},
        {"5ea05cf85ad9772e6624305d", {"Tac-Kek FAST MT Helmet", 19996}},
        {"5c471bd12e221602b4129c3a", {"SVDS dust cover", 10437}},
        {"5a1eacb3fcdbcb09800872be", {"Trijicon REAP-IR scope eyecup", 16931}},
        {"5bbdb811d4351e45020113c7", {"Mosin AIM Sports Tri-Rail mount", 15134}},
        {"572b7adb24597762ae139821", {"Scav Vest", 18153}},
        {"58d399e486f77442e0016fe7", {"Aimpoint Micro T-1 reflex sight", 19776}},
        {"5d1b2ffd86f77425243e8d17", {"NIXXOR lens", 19631}},
        {"5ab8ee7786f7742d8f33f0b9", {"VKBO army bag", 22048}},
        {"5c0d2727d174af02a012cf58", {"PSh-97 \"Djeta\" riot helmet", 19389}},
        {"5c920e902e221644f31c3c99", {"P226 9x19 20-round extended magazine", 19420}},
        {"577d141e24597739c5255e01", {"Burris FastFire 3 reflex sight", 19013}},
        {"55802f5d4bdc2dac148b458f", {"AR-15 Magpul MOE pistol grip (Black)", 20135}},
        {"5ed515c8d380ab312177c0fa", {"3-(b-TG) stimulant injector", 19450}},
        {"5ed515ece452db0eb56fc028", {"P22 injector", 19208}},
        {"57ffb0e42459777d047111c5", {"PBS-4 5.45x39 sound suppressor", 18582}},
        {"5e9dcf5986f7746c417435b3", {"LBT-8005A Day Pack backpack", 19375}},
        {"5b7d679f5acfc4001a5c4024", {"SA-58 FAB Defense AG-FAL pistol grip", 16625}},
        {"60a2828e8689911a226117f9", {"Hazard4 Pillbox backpack", 19463}},
        {"5a145ebb86f77458f1796f05", {"Health Resort east wing room 316 key", 24218}},
        {"5bbde41ed4351e003562b038", {"Mosin Tacfire pistol grip", 21791}},
        {"5bb20dcad4351e3bac1212da", {"HK 416A5 low profile gas block", 18667}},
        {"590c2e1186f77425357b6124", {"Toolset", 18747}},
        {"5c6d11152e2216000f2003e7", {"HK 416A5 Strike Industries CRUX 15 inch M-LOK handguard", 20112}},
        {"55d449444bdc2d962f8b456d", {"MP-133 12ga 610mm barrel with rib", 18500}},
        {"544fb5454bdc2df8738b456a", {"Leatherman Multitool", 18681}},
        {"5b800ebc86f774394e230a90", {"Hexagon medium length rail", 19192}},
        {"57c55efc2459772d2c6271e7", {"Hogue Overmolded Rubber Grip (Black)", 15750}},
        {"5a9eb32da2750c00171b3f9c", {"FAB Defense GL-SHOCK buttstock", 18763}},
        {"5de8ea8ffd6b4e6e2276dc35", {"MP9 9x19 20-round magazine", 17555}},
        {"5ed515e03a40a50460332579", {"L1 (Norepinephrine) injector", 18100}},
        {"5ca20abf86f77418567a43f2", {"Dynaforce Triton M43-A chest harness", 19226}},
        {"5c0e2f94d174af029f650d56", {"AR-15 5.56x45 406mm barrel", 18591}},
        {"5d135e83d7ad1a21b83f42d8", {"Magpul CTR Carbine stock", 23642}},
        {"5fbc210bf24b94483f726481", {"MCX gas block", 18333}},
        {"5649b2314bdc2d79388b4576", {"AKM/AK-74 ME4 buffer tube adapter", 15381}},
        {"5c07c5ed0db834001b73571c", {"MP5 Noveske-style muzzle brake & compensator", 20427}},
        {"5649ae4a4bdc2d1b2b8b4588", {"AK Zenit RK-3 pistol grip", 20938}},
        {"5649b1c04bdc2d16268b457c", {"AK-74 wooden stock (6P20 Sb.5)", 11453}},
        {"5c5970672e221602b21d7855", {"SKS 7.62x39 ProMag AALVX 35-round magazine", 13470}},
        {"5aa7e3abe5b5b000171d064d", {"ZSh-1-2M face shield", 19911}},
        {"5afd7ded5acfc40017541f5e", {"SKS TAPCO Intrafuse stock", 23182}},
        {"59ef13ca86f77445fd0e2483", {"Jack-o'-lantern tactical pumpkin helmet", 16264}},
        {"5c07c9660db834001a66b588", {"MP5 End Cap stock", 26757}},
        {"5fbc22ccf24b94483f726483", {"SIG Sauer Taper-LOK muzzle adapter", 19314}},
        {"5bb20d92d4351e00853263eb", {"HK 416A5 5.56x45 11 inch barrel", 18329}},
        {"57cffcdd24597763f5110006", {"Magpul M-LOK AFG tactical grip (Olive Drab)", 18111}},
        {"5de7bd7bfd6b4e6e2276dc25", {"B&T MP9-N 9x19 submachine gun", 19605}},
        {"5e87080c81c4ed43e83cefda", {"M590A1 12ga 8-shell magazine cap", 22440}},
        {"587e02ff24597743df3deaeb", {"Simonov OP-SKS 7.62x39 semi-automatic carbine (Hunting Rifle Version)", 17614}},
        {"5c07c60e0db834002330051f", {"ADAR 2-15 5.56x45 carbine", 18188}},
        {"5ae096d95acfc400185c2c81", {"Mosin rifle standard stock", 16358}},
        {"5a5f1ce64f39f90b401987bc", {"Zenit 2IRS Klesch flashlight + laser designator", 24341}},
        {"5caf187cae92157c28402e43", {"ASh-12 12.7x55 tactical sound suppressor", 19814}},
        {"5c7d55de2e221644f31bff68", {"Aimpoint COMP M4 reflex sight", 17105}},
        {"5c5952732e2216398b5abda2", {"Zenit Perst-3 tactical device", 19142}},
        {"58d3db5386f77426186285a0", {"M67 Hand grenade", 18185}},
        {"59e35de086f7741778269d84", {"Electric drill", 18379}},
        {"5c9a07572e221644f31c4b32", {"AK Magpul Zhukov-U handguard (Black)", 17009}},
        {"56742c324bdc2d150f8b456d", {"Broken GPhone", 18084}},
        {"57c69dd424597774c03b7bbc", {"30mm Scope mount", 16805}},
        {"5c4eec9b2e2216398b5aaba2", {"SV-98 7.62x54R thread adapter", 18550}},
        {"5bfebc250db834001a6694e1", {"Remington M700 7.62x51 26 inch barrel", 16553}},
        {"5cc9a96cd7f00c011c04e04a", {"AK-74 5.45x39 SRVV muzzle brake", 21733}},
        {"5c06595c0db834001a66af6c", {"LA-5B/PEQ tactical device", 17252}},
        {"602a9740da11d6478d5a06dc", {"PL-15 9x19 pistol", 16013}},
        {"59ecc28286f7746d7a68aa8c", {"AKS-74/AKS-74U Zenit PT Lock", 17138}},
        {"5780cfa52459777dfb276eb1", {"Dorm room 220 key", 19057}},
        {"5b7bedd75acfc43d825283f9", {"SA-58/FAL Vltor CASV-FAL handguard", 18389}},
        {"5b2cfa535acfc432ff4db7a0", {"AR-15 Alexander Arms MK10 handguard", 17596}},
        {"590a3b0486f7743954552bdb", {"Printed circuit board", 17717}},
        {"5b46238386f7741a693bcf9c", {"Kiver face shield", 18340}},
        {"57fd23e32459772d0805bcf1", {"Holosun LS321 Tactical device", 16635}},
        {"5e848d2eea0a7c419c2f9bfd", {"KS-23 23x75 700mm barrel", 15792}},
        {"5926dad986f7741f82604363", {"MP5 MFI HK universal low profile scope mount", 18615}},
        {"5d25d0ac8abbc3054f3e61f7", {"Remington M700 AT AICS polymer stock", 17707}},
        {"59e35abd86f7741778269d82", {"Sodium bicarbonate", 17983}},
        {"602a97060ddce744014caf6f", {"PL-15 9x19 sound suppressor", 17046}},
        {"5d4aaa54a4b9365392071170", {"AK TDI AKM-L handguard (Anodized Red)", 17855}},
        {"5c1cdd512e22161b267d91ae", {"Primary Arms Compact prism scope 2.5x", 17292}},
        {"5d02778e86f774203e7dedbe", {"CMS kit", 18825}},
        {"5ea03e9400685063ec28bfa4", {"PPSh-41 stock", 13475}},
        {"60363c0c92ec1c31037959f5", {"GP-7 gas mask", 17012}},
        {"5c501a4d2e221602b412b540", {"VPO-101 Vepr Hunter 7.62x51 carbine", 16194}},
        {"59e7635f86f7742cbf2c1095", {"BNTI Module-3M body armor", 17413}},
        {"5c0e2f26d174af02a9625114", {"ADAR 2-15 5.56x45 upper receiver", 16244}},
        {"5b222d405acfc400153af4fe", {"AK Zenit PT-1 \"Klassika\" stock", 14853}},
        {"5fd4c5477a8d854fa0105061", {"Security vest", 15131}},
        {"5e2af29386f7746d4159f077", {"KEKTAPE duct tape", 17170}},
        {"5dfcd0e547101c39625f66f9", {"SVD SAG MK1 Freefloat Chassis", 18040}},
        {"5b40e61f5acfc4001a599bec", {"USEC baseball cap (Black)", 7964}},
        {"5a7b483fe899ef0016170d15", {"SureFire XC1 tactical flashlight", 17722}},
        {"583990e32459771419544dd2", {"AKS-74UN 5.45x39 assault rifle", 17940}},
        {"5e2af22086f7746d3f3c33fa", {"Tube of Poxeram cold welding", 15796}},
        {"5cc7015ae4a949001152b4c6", {"FN P90 upper receiver top rail", 19656}},
        {"5b7bef9c5acfc43d102852ec", {"SA-58/FAL 7.62x51 X-FAL 50-round drum magazine", 21265}},
        {"59d6272486f77466146386ff", {"AK 7.62x39 Magpul PMAG 30 GEN M3 30-round magazine", 19099}},
        {"5d40412b86f7743cb332ac3a", {"Schaman shampoo", 18513}},
        {"60bf74184a63fc79b60c57f6", {"Bomber Beanie", 17256}},
        {"5894a13e86f7742405482982", {"MPX collapsing/telescoping stock", 40338}},
        {"5839a40f24597726f856b511", {"AKS-74UB 5.45x39 assault rifle", 17458}},
        {"5cdeac22d7f00c000f26168f", {"Remington M700 Magpul Pro 700 chassis", 13845}},
        {"5649af884bdc2d1b2b8b4589", {"AK Zenit B-33 dust cover", 21138}},
        {"59e3596386f774176c10a2a2", {"PAID AntiRoach spray", 17288}},
        {"5b3116595acfc40019476364", {"SIG Sauer ROMEO4 reflex sight", 15520}},
        {"5a718f958dc32e00094b97e7", {"Glock 9x19 SGMT 50-round drum magazine", 20935}},
        {"5ac66d9b5acfc4001633997a", {"AK-105 5.45x39 assault rifle", 17271}},
        {"5926d40686f7740f152b6b7e", {"MP5 A3 old model stock", 17076}},
        {"5ef35bc243cb350a955a7ccd", {"M1911A1 Wilson Ultralight skeletonized hammer", 21892}},
        {"5cf50fc5d7f00c056c53f83c", {"AK-74M CAA AKTS AK74 buffer tube", 17622}},
        {"6034cf5fffd42c541047f72e", {"Umka ?33-SET1 hunter vest", 17133}},
        {"5e32f56fcb6d5863cc5e5ee4", {"VOG-17 Khattabka grenade", 18232}},
        {"5b8403a086f7747ff856f4e2", {"Hexagon medium length rail (Anodized Red)", 15950}},
        {"5ad5d49886f77455f9731921", {"ULTRA power substation utility cabin key", 13403}},
        {"5abccb7dd8ce87001773e277", {"APB 9x18PM silenced machine pistol", 17751}},
        {"5de652c31b7e3716273428be", {"Molot VPO-215 .366 TKM bolt-action rifle", 16573}},
        {"59e35cbb86f7741778269d83", {"Corrugated hose", 13347}},
        {"5e848d99865c0f329958c83b", {"KS-23M polymer pistol grip", 14704}},
        {"587de4282459771bca0ec90b", {"P226 9x19 threaded barrel", 13049}},
        {"577e1c9d2459773cd707c525", {"Printer paper", 15899}},
        {"5d19cd96d7ad1a4a992c9f52", {"MP5 PTR Tri-Rail handguard", 17507}},
        {"5a718da68dc32e000d46d264", {"Glock 9x19 Magpul PMAG GL9 21-round magazine", 19063}},
        {"5c471c842e221615214259b5", {"SVDS gas tube", 16410}},
        {"5839a7742459773cf9693481", {"AKS-74UB dust cover", 15445}},
        {"5caf1041ae92157c28402e3f", {"ASh-12 12.7x55 10-round magazine", 16600}},
        {"5cf518cfd7f00c065b422214", {"AKM/AK-74 CAA AKTS AK buffer tube", 15923}},
        {"57838f9f2459774a150289a0", {"VSS 9x39 6L25 20-round magazine", 14153}},
        {"5af0484c86f7740f02001f7f", {"Majaica coffee", 17066}},
        {"59985a6c86f77414ec448d17", {"PP-19-01 Vityaz-SN dust cover", 11737}},
        {"5d3eb5eca4b9363b1f22f8e4", {"FN Five-seveN 5.7x28 20-round magazine", 15680}},
        {"576167ab2459773cad038c43", {"SOK-12 thread protection tube", 15714}},
        {"5cc9bcaed7f00c011c04e179", {"AR-15 Hera Arms HG-15 pistol grip", 17643}},
        {"5e848dc4e4dbc5266a4ec63d", {"KS-23M wire stock", 14079}},
        {"56ea8180d2720bf2698b456a", {"KAC QDC 5.56x45 flash suppressor kit", 16739}},
        {"5e870397991fd70db46995c8", {"Mossberg 590A1 12ga pump-action shotgun", 17869}},
        {"5a9fbb74a2750c0032157181", {"Rotor 43 .366TKM muzzle brake", 16266}},
        {"5e2af51086f7746d3f3c3402", {"UZRGM grenade fuze", 14969}},
        {"5c9a25172e2216000f20314e", {"AR-15 Daniel Defense RIS II 12.25 handguard", 16338}},
        {"603373004e02ce1eaa358814", {"STM-9 9x19 16 inch barrel", 16763}},
        {"5d4aaa73a4b9365392071175", {"AK TDI AKM-L handguard (Anodized Bronze)", 15690}},
        {"59e7708286f7742cbd762753", {"Ushanka ear flap hat", 15951}},
        {"5fc3e466187fea44d52eda90", {"HK UMP .45 ACP 25-round magazine", 15741}},
        {"57a3459f245977764a01f703", {"VSS/VAL Zenit B-3 ring mount", 17177}},
        {"5d1b3f2d86f774253763b735", {"Disposable syringe", 15502}},
        {"5bb20d9cd4351e00334c9d8a", {"HK 416A5 5.56x45 14.5 inch barrel", 15797}},
        {"5bfeaa0f0db834001b734927", {"Remington M700 .308 Wyatt's Outdoor 10-round magazine", 17038}},
        {"574dad8024597745964bf05c", {"SKS TOZ wooden stock (56-A-231 Sb.5)", 11099}},
        {"5c052a900db834001a66acbd", {"Trijicon ACOG TA01NSN 4x32 scope (Tan)", 15835}},
        {"5cde7b43d7f00c000d36b93e", {"Remington M700 AB Arms MOD*X rail mount", 14504}},
        {"58d2946c86f7744e271174b5", {"Magpul MOE Carbine stock (Foliage Green)", 16928}},
        {"5cc700ede4a949033c734315", {"FN P90 EFFEN 90 upper receiver", 16055}},
        {"5c6d46132e221601da357d56", {"5.56x45 TROY BattleMag STANAG 30-round magazine", 17857}},
        {"5e56991336989c75ab4f03f6", {"SVD modern handguard", 15251}},
        {"5a6b5ed88dc32e000c52ec86", {"Glock 9x19 SAI threaded barrel", 16255}},
        {"5e2af41e86f774755a234b67", {"Cordura polyamide fabric", 17504}},
        {"6034e3d953a60014f970617b", {"AR-15 STM 15 inch M-LOK handguard", 15294}},
        {"5e01e9e273d8eb11426f5bc3", {"SVDS Rotor 43 thread adapter", 12801}},
        {"5a329052c4a28200741e22d3", {"Remington R11 RSASS handguard", 16656}},
        {"590c5a7286f7747884343aea", {"Gunpowder \"Kite\"", 16658}},
        {"5cda9bcfd7f00c0c0b53e900", {"ASh-12 Vertical foregrip", 37021}},
        {"5df35ddddfc58d14537c2036", {"Orsis T-5000M stock", 15599}},
        {"5c0102b20db834001d23eebc", {"Remington RAHG 4 inch rail", 14765}},
        {"5c5db63a2e2216000f1b284a", {"MPX Midwest Industries 14 inch M-LOK handguard", 17147}},
        {"5cde739cd7f00c0010373bd3", {"Remington M700 AB Arms MOD*X GEN 3 stock", 14808}},
        {"5fce0cf655375d18a253eff0", {"Magpul RVG foregrip (Flat Dark Earth)", 16836}},
        {"5cc9ad73d7f00c000e2579d4", {"AK 7.62x39 SRVV muzzle brake & compensator", 16712}},
        {"5c59529a2e221602b177d160", {"MPX Lancer OEM 14 inch M-LOK handguard", 15008}},
        {"56e335e4d2720b6c058b456d", {"Scav backpack", 17513}},
        {"590c31c586f774245e3141b2", {"Pack of nails", 13019}},
        {"5c0548ae0db834001966a3c2", {"AK-101/SLR-106 5.56x45 Circle 10 30-round magazine", 16964}},
        {"5ea16ada09aa976f2e7a51be", {"AR-15 Geissele SMR MK16 13.5 inch M-LOK handguard", 15183}},
        {"5bf3e03b0db834001d2c4a9c", {"AK-74 5.45x39 assault rifle", 16727}},
        {"5ac7655e5acfc40016339a19", {"AK-74M 5.45x39 muzzle brake & compensator (6P20 0-20)", 10103}},
        {"5a0c59791526d8dba737bba7", {"AK GP-25 accessory kit recoil pad", 16993}},
        {"59db7e1086f77448be30ddf3", {"Trijicon ACOG 3.5x35 scope", 15383}},
        {"5af0454c86f7746bf20992e8", {"Aluminum splint", 14889}},
        {"576165642459773c7a400233", {"Saiga 12ga ver.10 12/76 semi-automatic shotgun", 16965}},
        {"5fb6567747ce63734e3fa1dc", {"KRISS Defiance low profile flip-up front sight", 10336}},
        {"5656eb674bdc2d35148b457c", {"40mm VOG-25", 13712}},
        {"5ac4cd105acfc40016339859", {"AK-74M 5.45x39 assault rifle", 16937}},
        {"57347c77245977448d35f6e2", {"Screw nuts", 14711}},
        {"5c793fde2e221601da358614", {"Strike Industries Viper Mod 1 stock", 14557}},
        {"5c10c8fd86f7743d7d706df3", {"Adrenaline injector", 15503}},
        {"5cf12a15d7f00c05464b293f", {"Remington M700 .308 ProMag AA-70 20-round magazine", 13766}},
        {"5737250c2459776125652acc", {"9x18PM PBM gzh 16 pcs. ammo pack", 14388}},
        {"5734773724597737fd047c14", {"Condensed milk", 18597}},
        {"60b0f93284c20f0feb453da7", {"Can of RatCola", 14739}},
        {"573477e124597737dd42e191", {"PC CPU", 16494}},
        {"5a7ad55551dfba0015068f42", {"Glock Aimtech Tiger Shark sight mount", 15133}},
        {"5c18b90d2e2216152142466b", {"Magpul MBUS Gen2 front flip-up sight (Flat Dark Earth)", 12954}},
        {"56deee15d2720bee328b4567", {"MP-153 12ga 4-shell forend cap", 15111}},
        {"5e87071478f43e51ca2de5e1", {"M590A1 12ga 20 inch barrel", 29987}},
        {"5732ee6a24597719ae0c0281", {"Waist pouch", 15000}},
        {"5947f92f86f77427344a76b1", {"AK TAPCO SAW-Style pistol grip (Black)", 13715}},
        {"5a9fb739a2750c003215717f", {"Rotor 43 9x19 muzzle brake", 14489}},
        {"5cf13123d7f00c1085616a50", {"Remington M700 ProMag Archangel polymer stock", 13046}},
        {"5b800ed086f7747baf6e2f9e", {"Hexagon short length rail", 13438}},
        {"5aa2b923e5b5b000137b7589", {"Round frame sunglasses", 15427}},
        {"590a3efd86f77437d351a25b", {"Gas analyzer", 15373}},
        {"5b7d64555acfc4001876c8e2", {"SA-58 BRS stock", 15313}},
        {"587e0531245977466077a0f7", {"OP-SKS wooden stock", 18768}},
        {"56ea8222d2720b69698b4567", {"SV-98 bipod", 10178}},
        {"5d1340b3d7ad1a0b52682ed7", {"5.56x45 Magpul PMAG GEN M3 30 STANAG 30-round magazine (Flat Dark Earth)", 15059}},
        {"5a7ae0c351dfba0017554310", {"Glock 17 9x19 pistol", 14413}},
        {"59fc48e086f77463b1118392", {"Magpul RVG foregrip (Black)", 16610}},
        {"5b30bc285acfc47a8608615d", {"Alexander Arms 10 inch rail", 17937}},
        {"5bd073a586f7747e6f135799", {"Fake mustache", 14037}},
        {"5a16ba61fcdbcb098008728a", {"Ops-Core FAST Gunsight Mandible", 14461}},
        {"574d967124597745970e7c94", {"Simonov SKS 7.62x39 semi-automatic carbine", 13748}},
        {"5c791e872e2216001219c40a", {"Strike Industries Cobra Tactical foregrip", 16432}},
        {"602a95fe4e02ce1eaa358729", {"PL-15 9x19 threaded barrel", 13912}},
        {"5bd073c986f7747f627e796c", {"Kotton beanie", 14404}},
        {"5b7be47f5acfc400170e2dd2", {"Magpul M-LOK 2.5 inch rail", 19038}},
        {"54491c4f4bdc2db1078b4568", {"MP-133 12ga pump-action shotgun", 14443}},
        {"5648b0744bdc2d363b8b4578", {"AK-74 wooden handguard (6P20 Sb.6)", 12417}},
        {"59e36c6f86f774176c10a2a7", {"Power cord", 16155}},
        {"5addc7005acfc4001669f275", {"M14 SAGE International M14ALCS (MOD-0) handguard", 13714}},
        {"5c82342f2e221644f31c060e", {"Zenit-BelOMO PSO-1 4x24 scope", 13251}},
        {"5a800961159bd4315e3a1657", {"Glock GTL 21 tactical flashlight with laser", 15385}},
        {"5c0672ed0db834001b7353f3", {"PP-19-01 Vityaz-SN 9x19 PUFGUN SG-919 30 30-round magazine", 17061}},
        {"57f4c844245977379d5c14d1", {"PP-9 Klin 9x18PMM submachine gun", 15106}},
        {"5a8036fb86f77407252ddc02", {"Shoreline plan map", 16099}},
        {"57486e672459770abd687134", {"OKP-7 reflex sight (Dovetail)", 15653}},
        {"59ff346386f77477562ff5e2", {"AKMS 7.62x39 assault rifle", 15165}},
        {"590c5c9f86f77477c91c36e7", {"WD-40 (400ml)", 14457}},
        {"5a787fadc5856700155a6ca1", {"M870 12ga 660mm vent rib barrel", 14215}},
        {"590c678286f77426c9660122", {"IFAK individual first aid kit", 16191}},
        {"609a63b6e2ff132951242d09", {"Valday Krechet reflex sight", 14299}},
        {"59e89d0986f77427600d226e", {"VPO-209 wooden stock", 10280}},
        {"5a7afa25e899ef00135e31b0", {"Glock Polymer80 PS9 pistol slide", 14122}},
        {"591af28e86f77414a27a9e1d", {"VTAC UVG Tactical grip", 15615}},
        {"58d2664f86f7747fec5834f6", {"DeltaPoint Cross Slot Mount base", 14091}},
        {"5448be9a4bdc2dfd2f8b456a", {"RGD-5 hand grenade", 13768}},
        {"5929a2a086f7744f4b234d43", {"UMTBS 6sh112 Scout-Sniper", 14882}},
        {"6034d0230ca681766b6a0fb5", {"CSA chest rig", 15223}},
        {"5c99f3592e221644fc633070", {"TOZ-106 custom cut Mosin stock", 19479}},
        {"59db3b0886f77429d72fb895", {"AR-15 Stark AR rifle grip (Flat Dark Earth)", 16861}},
        {"595cf16b86f77427440c32e2", {"AR-15 War Sport LVOA-S handguard (Black)", 13905}},
        {"5f3e77f59103d430b93f94c1", {"M1911A1 .45 ACP threaded barrel", 14242}},
        {"58aeac1b86f77457c419f475", {"MPX-SD 9x19 integrated sound suppressor", 13078}},
        {"5aaa5dfee5b5b000140293d3", {"5.56x45 Magpul PMAG GEN M3 30 STANAG 30-round magazine", 16411}},
        {"5926c32286f774616e42de99", {"MP5 Cocking Handle", 70247}},
        {"591c4efa86f7741030027726", {"Axion Kobra EKP-8-18 reflex sight", 14095}},
        {"5bbdb8bdd4351e4502011460", {"AR-10 Odin Works Atlas 7 7.62x51 muzzle brake", 12699}},
        {"5d2f0d8048f0356c925bc3b0", {"HK MP5K 9x19 submachine gun", 15048}},
        {"5fb653962b1b027b1f50bd03", {"KRISS Vector .45 ACP 6 inch barrel", 14960}},
        {"5b04473a5acfc40018632f70", {"AKM/AK-74 FAB Defense UAS stock", 14304}},
        {"5cf67cadd7f00c065a5abab7", {"SKS 7.62x39 Weapon Tuning thread adapter", 16831}},
        {"5b7d63de5acfc400170e2f8d", {"SA-58 SPR stock", 13584}},
        {"55f84c3c4bdc2d5f408b4576", {"AR-15 Daniel Defense RIS II 9.5 handguard (Flat Dark Earth)", 13882}},
        {"5ac72e725acfc400180ae701", {"AK-102 5.56x45 muzzle brake & compensator (6P44 0-20)", 13750}},
        {"5d63d33b86f7746ea9275524", {"Flat screwdriver", 14234}},
        {"5710c24ad2720bc3458b45a3", {"F-1 hand grenade", 14090}},
        {"5a787fdfc5856700142fdd9a", {"M870 12ga cut off 325mm barrell", 14329}},
        {"570fd721d2720bc5458b4596", {"Walther MRS reflex sight", 13220}},
        {"55802d5f4bdc2dac148b458e", {"5.56x45 Magpul PMAG GEN M3 W 30 STANAG 30-round magazine", 16873}},
        {"5b0800175acfc400153aebd4", {"ERGO F93 Pro stock", 15675}},
        {"6065881d1246154cad35d637", {"AR-10 CMMG MK3 RML15 15 inch M-LOK handguard", 14278}},
        {"5bc09a18d4351e003562b68e", {"Magpul MBUS Gen2 rear flip-up sight", 11895}},
        {"5a0eb38b86f774153b320eb0", {"SMW car key", 12155}},
        {"5d123102d7ad1a004e475fe5", {"AR-15 URX 3 8 inch handguard", 12901}},
        {"59d64ec286f774171d1e0a42", {"AKM gas tube (6P1 Sb.1-2)", 10420}},
        {"5a787f25c5856700186c4ab9", {"M870 12ga 355mm barrel", 10984}},
        {"574eb85c245977648157eec3", {"Factory plan map", 14374}},
        {"5d0a3e8cd7ad1a6f6a3d35bd", {"KMZ 1P69 3-10x riflescope", 14001}},
        {"5bc09a30d4351e00367fb7c8", {"Magpul MBUS Gen2 front flip-up sight", 12187}},
        {"5c4eecde2e221602b3140418", {"SV-98 sound suppressor heat shield", 9861}},
        {"5fc23426900b1d5091531e15", {"Mk-18 .338 LM 10-round magazine", 15061}},
        {"5a27b3d0c4a282000d721ec1", {"SR-1MP sound suppressor mount", 11100}},
        {"6086b5731246154cad35d6c7", {"SOK-12 Custom Guns Type-340 handguard", 13304}},
        {"5c1bc7432e221602b412949d", {"Zenit RK-5 foregrip", 15194}},
        {"5a78832ec5856700155a6ca3", {"M870 12ga 10-shell magazine", 23356}},
        {"5947e98b86f774778f1448bc", {"Magpul UBR GEN2 stock (Black)", 13539}},
        {"5f63418ef5750b524b45f116", {"SOK-12 Bravo-18 aluminium handguard", 15487}},
        {"590a386e86f77429692b27ab", {"Damaged hard drive", 12643}},
        {"5d1340bdd7ad1a0e8d245aab", {"5.56x45 Magpul PMAG GEN M3 40 STANAG 40-round magazine (Flat Dark Earth)", 14429}},
        {"5d1c819a86f774771b0acd6c", {"Weapon parts", 13737}},
        {"5f60e6403b85f6263c14558c", {"Beret (Black)", 13426}},
        {"5c82343a2e221644f31c0611", {"Zenit-BelOMO PSO-1M2 4x24 scope", 12361}},
        {"5de8e8dafd6b4e6e2276dc32", {"MP9 9x19 15-round magazine", 17631}},
        {"5a16b672fcdbcb001912fa83", {"Ops-Core FAST Visor", 13375}},
        {"56ea7165d2720b6e518b4583", {"Badger Ordnance Tactical Charging Handle Latch", 17149}},
        {"5aa66c72e5b5b00016327c93", {"Nightforce Magmount 34mm rings with Ruggedized Accessory Platform", 12560}},
        {"56deed6ed2720b4c698b4583", {"MP-153 polymer stock", 15408}},
        {"5d5d8ca986f7742798716522", {"SOE Micro Rig", 11022}},
        {"5caf1691ae92152ac412efb9", {"ASh-12 rear sight carry handle", 13402}},
        {"5a6f5f078dc32e00094b97dd", {"Glock 9x19 Viper Cut pistol slide", 10229}},
        {"5fbbc383d5cb881a7363194a", {"KRISS Vector 9x19 6 inch barrel", 13091}},
        {"5dfa3d7ac41b2312ea33362a", {"KAC Folding Micro rear sight", 11678}},
        {"59bfc5c886f7743bf6794e62", {"PP-19-01 Vityaz-SN 9x19 sound suppressor", 12579}},
        {"576fd4ec2459777f0b518431", {"Zenit-BelOMO PSO-1M2-1 4x24 scope", 11737}},
        {"5c503af12e221602b177ca02", {"VPO-101 Vepr Hunter stock", 9810}},
        {"5c7951452e221644f31bfd5c", {"AK 7.62x39 Venom Tactical Antidote muzzle brake & compensator", 12726}},
        {"5eeb2ff5ea4f8b73c827350b", {"M590A1 tactical rail", 13766}},
        {"5b3a337e5acfc4704b4a19a0", {"Zenit Klesch-2U tactical flashlight", 22191}},
        {"5e87114fe2db31558c75a120", {"M590 ghost ring rear sight", 12378}},
        {"5448fee04bdc2dbc018b4567", {"0.6 liter water bottle", 13368}},
        {"5c6d42cb2e2216000e69d7d1", {"5.56x45 HK 30 STANAG polymer 30-round magazine", 13366}},
        {"5926e16e86f7742f5a0f7ecb", {"MP5 3-lug thread protector", 14831}},
        {"5d443f8fa4b93678dd4a01aa", {"Thunder Beast Arms 30CB 7.62x51 muzzle brake", 14121}},
        {"5648ae314bdc2d3d1c8b457f", {"AK CAA RS47 handguard", 12737}},
        {"60658776f2cb2e02a42ace2b", {"Mk47 254mm barrel", 12670}},
        {"590c595c86f7747884343ad7", {"Gas mask air filter", 12441}},
        {"5b432b965acfc47a8774094e", {"GSSh-01 active headset", 13247}},
        {"57dc2fa62459775949412633", {"AKS-74U 5.45x39 assault rifle", 13134}},
        {"5bd071d786f7747e707b93a3", {"Jason mask", 10017}},
        {"5bf3e0490db83400196199af", {"AKS-74 5.45x39 assault rifle", 14658}},
        {"5a966ec8a2750c00171b3f36", {"MP5 B&T tri-rail receiver mount", 12941}},
        {"593962ca86f774068014d9af", {"Unknown key", 10821}},
        {"5c08f87c0db8340019124324", {"ShPM Firefighter helmet", 9530}},
        {"57372deb245977685d4159b3", {"5.45x39 PRS gs 120 pcs. ammo pack", 11587}},
        {"59bffc1f86f77435b128b872", {"SilencerCo Hybrid 46 Direct Thread Mount adapter", 12125}},
        {"5b3f7c1c5acfc40dc5296b1d", {"PU 3.5x riflescope", 12842}},
        {"5fbbfacda56d053a3543f799", {"MCX .300 BLK 229mm barrel", 12344}},
        {"5cf78720d7f00c06595bc93e", {"Lantac BMD 7.62x51 Blast Mitigation Device", 12027}},
        {"59e7643b86f7742cbf2c109a", {"WARTECH TV-109 + TV-106 chest rig", 12196}},
        {"5e4abfed86f77406a2713cf7", {"Splav Tarzan M22 chest rig", 12807}},
        {"588b56d02459771481110ae2", {"AR-15 Daniel Defense RIS II 9.5 handguard", 13977}},
        {"57c450252459772d28133253", {"AS VAL skeleton stock", 8540}},
        {"573728cc24597765cc785b5d", {"9x18PM SP7 gzh 16 pcs. ammo pack", 13900}},
        {"5c6d450c2e221600114c997d", {"5.56x45 HK PM Gen.2 STANAG 30-round magazine", 13987}},
        {"5ea16d4d5aad6446a939753d", {"AR-15 Geissele ACH charging handle", 12638}},
        {"57372e4a24597768553071c2", {"5.45x39 PRS gs 30 pcs. ammo pack", 9989}},
        {"5947c73886f7747701588af5", {"MFT BUS Stock", 11617}},
        {"590c695186f7741e566b64a2", {"Augmentin antibiotic pills", 15000}},
        {"5827272a24597748c74bdeea", {"SOK-12 Leapers UTG PRO MTU002 Long Top aluminum handguard", 13052}},
        {"5d0a3a58d7ad1a669c15ca14", {"KMZ 1P59 3-10x riflescope", 12374}},
        {"5a16b93dfcdbcbcae6687261", {"AN/PVS-14 Dual Dovetail Mount", 14386}},
        {"5ac72e945acfc43f3b691116", {"AK-105 5.45x39 muzzle brake & compensator (6P44 0-20)", 10914}},
        {"5cff9e5ed7ad1a09407397d4", {"Daniel Defense WAVE 5.56x45 muzzle brake", 11791}},
        {"5cadc2e0ae9215051e1c21e7", {"M9A3 9x19 17-round magazine", 17021}},
        {"588226ef24597767af46e39c", {"Magpul AFG grip (Olive Drab)", 12359}},
        {"59ff3b6a86f77477562ff5ed", {"AKMS shoulder piece (6P4 Sb.1-19)", 13291}},
        {"5cde7afdd7f00c000d36b89d", {"Remington M700 AB Arms MOD*X GEN 3 KeyMod handguard", 13467}},
        {"5aaf9d53e5b5b00015042a52", {"M1A 7.62x51 16 inch barrel", 11375}},
        {"5c0faf68d174af02a96260b8", {"ADAR 2-15 charging handle", 14561}},
        {"5a0071d486f77404e23a12b2", {"AKM wooden pistol grip", 15845}},
        {"5649d9a14bdc2d79388b4580", {"AK Taktika Tula TT01 rear sight Weaver adapter", 13045}},
        {"5df8f535bb49d91fb446d6b0", {"KAC 7.62x51 10-round steel magazine", 12023}},
        {"588226d124597767ad33f787", {"Magpul AFG grip (Black)", 14249}},
        {"5672cb724bdc2dc2088b456b", {"Geiger-Muller counter", 13800}},
        {"57af48872459771f0b2ebf11", {"Hogue Overmolded Rubber Grip (Flat Dark Earth)", 14786}},
        {"5a7ad2e851dfba0016153692", {"Glock 9x19 \"Big Stick\" 33-round magazine", 11898}},
        {"5af04b6486f774195a3ebb49", {"Pliers Elite", 12374}},
        {"5addc7ac5acfc400194dbd90", {"M14 SAGE International M14ALCS (MOD-0) stock", 12390}},
        {"5cf54404d7f00c108840b2ef", {"AK KGB MG-47 pistol grip", 11150}},
        {"5fbbaa86f9986c4cff3fe5f6", {"KRISS Defiance DS150 stock (Black)", 11866}},
        {"5d00ede1d7ad1a0940739a76", {"AR-10 Noveske SWS N6 10.5 inch handguard", 12098}},
        {"59fb375986f7741b681b81a6", {"AK Krebs Custom UFM KeyMod handguard", 12517}},
        {"5c471c6c2e221602b66cd9ae", {"SVDS polymer handguard", 11875}},
        {"5f6372e2865db925d54f3869", {"Ferfrans CQB 5.56x45 muzzle brake", 11592}},
        {"5894a5b586f77426d2590767", {"MPX GEN1 upper receiver", 22570}},
        {"5ab8f85d86f7745cd93a1cf5", {"Shemagh (Green)", 13544}},
        {"5bfd35380db83400232fe5cc", {"Mosin Infantry stock", 11356}},
        {"5c1bc5fb2e221602b1779b32", {"Zenit RK-4 foregrip", 12428}},
        {"5a34fd2bc4a282329a73b4c5", {"AAC Blackout 51T 7.62x51 flash hider", 10888}},
        {"5a27b281c4a28200741e1e52", {"SR-1MP single rail mount", 12058}},
        {"5cf6935bd7f00c06585fb791", {"MPX TACCOM muzzle brake", 11784}},
        {"5c13cd2486f774072c757944", {"Soap", 12834}},
        {"5bb20df1d4351e00347787d5", {"HK 416A5 Quad Rail handguard with flip up front sight", 6390}},
        {"5a16bb52fcdbcb001a3b00dc", {"Wilcox Skull Lock head mount", 13702}},
        {"5d1b39a386f774252339976f", {"Silicone tube", 11526}},
        {"5c6161fb2e221600113fbde5", {"TOZ-106 20ga MC 20-01 Sb.3 5-shot magazine", 11432}},
        {"560d657b4bdc2da74d8b4572", {"Zenit 2P Klesch flashlight + laser designator", 14240}},
        {"5947eab886f77475961d96c5", {"Magpul UBR GEN2 stock (Flat Dark Earth)", 13554}},
        {"606ee5c81246154cad35d65e", {"MP-155 Ultima polymer stock", 10871}},
        {"5c78f26f2e221601da3581d1", {"AR-15 Magpul MOE SL mid length M-LOK handguard", 11051}},
        {"5cc9c20cd7f00c001336c65d", {"NcSTAR Tactical blue laser LAM-Module", 11945}},
        {"5aa2b9ede5b5b000137b758b", {"Kinda cowboy hat", 12085}},
        {"5b099bf25acfc4001637e683", {"SA-58 buffer tube adapter", 18192}},
        {"6034e3cb0ddce744014cb870", {"AR-15 STM 9 inch M-LOK handguard", 11196}},
        {"5c78f2882e22165df16b832e", {"AR-15 SAI JailBrake 5.56x45 muzzle device", 11455}},
        {"5d96141523f0ea1b7f2aacab", {"\"Door Kicker\" Boonie hat", 11341}},
        {"5bfe86df0db834001b734685", {"FAB Defense GLR-16-S stock", 10157}},
        {"593d1fa786f7746da62d61ac", {"SKS UTG SOCOM rail mount", 13019}},
        {"5c6d10e82e221601da357b07", {"HK 416A5 MRS KeyMod 14 inch handguard", 12295}},
        {"5a9d6d00a2750c5c985b5305", {"Strike Industries KeyMod 4 inch rail", 11021}},
        {"5c471bfc2e221602b21d4e17", {"SVDS 7.62x54R muzzle brake & compensator", 12523}},
        {"5c9a26332e2216001219ea70", {"AR-15 Daniel Defense RIS II FSP 9.5 handguard (Flat Dark Earth)", 13180}},
        {"59f9cabd86f7743a10721f46", {"Saiga-9 9x19 carbine", 9491}},
        {"5c48a2c22e221602b313fb6c", {"MDR pistol grip", 11539}},
        {"5947fa2486f77425b47c1a9b", {"AK TAPCO SAW-Style pistol grip (Flat Dark Earth)", 10859}},
        {"57c55f112459772d28133310", {"Hogue Overmolded Rubber Grip (Ghillie Green)", 10053}},
        {"5fbc227aa56d053a3543f79e", {"MCX 12 inch KeyMod handguard", 11695}},
        {"5b7bef5d5acfc43bca7067a3", {"SA-58/FAL 7.62x51 30-round magazine", 12805}},
        {"5e2af37686f774755a234b65", {"SurvL Survivor Lighter", 11352}},
        {"6034e3e20ddce744014cb878", {"AR-15 STM 12 inch M-LOK handguard", 11970}},
        {"57f3a5ae2459772b0e0bf19e", {"PSO scope eyecup", 9565}},
        {"5900b89686f7744e704a8747", {"Woods plan map", 10642}},
        {"5d25af8f8abbc3055079fec5", {"Remington M700 .308 ProMag AA-70 10-round magazine", 10646}},
        {"5c05413a0db834001c390617", {"5.56x45 HK Steel Maritime STANAG 30-round magazine", 12338}},
        {"5f0c892565703e5c461894e9", {"40x46mm M433 (HEDP) grenade", 9316}},
        {"57c55f092459772d291a8463", {"Hogue Overmolded Rubber Grip (Ghillie Earth)", 10318}},
        {"606f263a8900dc2d9a55b68d", {"MP-155 Ultima large recoil pad", 11374}},
        {"5c9a1c422e221600106f69f0", {"AK Magpul Zhukov-U handguard (Plum)", 11926}},
        {"5e81c4ca763d9f754677befa", {"M1911A1 .45 ACP 7-round magazine", 12872}},
        {"57372f7d245977699b53e301", {"5.45x39 US gs 120 pcs. ammo pack", 9828}},
        {"5448ff904bdc2d6f028b456e", {"Army crackers", 11790}},
        {"5ae30e795acfc408fb139a0b", {"M4A1 front sight", 11657}},
        {"5c87ca002e221600114cb150", {"KAC vertical grip", 10519}},
        {"5926d2be86f774134d668e4e", {"MP5 Drum rear sight", 18088}},
        {"59d36a0086f7747e673f3946", {"AKS-74U gas tube", 15770}},
        {"5bb20e58d4351e00320205d7", {"HK Enhanced Tube buffer tube", 11485}},
        {"5c617a5f2e2216000f1e81b3", {"AK Zenit B-10 Handguard", 13645}},
        {"5b84038986f774774913b0c1", {"Hexagon short length rail (Anodized Red)", 12216}},
        {"59387a4986f77401cc236e62", {"Dorm room 114 key", 11659}},
        {"591383f186f7744a4c5edcf3", {"Dorm room 104 key", 10992}},
        {"5aaf8a0be5b5b00015693243", {"M1A 7.62x51 20-round magazine", 13988}},
        {"5b1fa9ea5acfc40018633c0a", {"Glock 18C 9x19 barrel with compensator", 9405}},
        {"5c0e2ff6d174af02a1659d4a", {"ADAR 2-15 wooden stock", 9562}},
        {"5d1f819086f7744b355c219b", {"Daniel Defense WAVE 7.62x51 muzzle brake", 12861}},
        {"5e8f3423fd7471236e6e3b64", {"Premium Kvass \"Norvinskiy Yadreniy\" 0.6L bottle", 11777}},
        {"570fd79bd2720bc7458b4583", {"OKP-7 reflex sight", 11197}},
        {"5649be884bdc2d79388b4577", {"Colt buffer tube", 8135}},
        {"59e3606886f77417674759a5", {"Saline solution", 12001}},
        {"56def37dd2720bec348b456a", {"Surefire X400 Ultra tactical flashlight", 13478}},
        {"5de922d4b11454561e39239f", {"MP9 charging handle", 10500}},
        {"5d3eb5b6a4b9361eab311902", {"FN Five-seveN 5.7x28 barrel", 45089}},
        {"5d3eb44aa4b93650d64e4979", {"FN Five-seveN MK2 pistol slide", 9923}},
        {"5c07df7f0db834001b73588a", {"Freeman crowbar", 10660}},
        {"5734779624597737e04bf329", {"CPU Fan", 9807}},
        {"544fb3f34bdc2d03748b456a", {"Morphine injector", 11185}},
        {"59e3556c86f7741776641ac2", {"Ox bleach", 12587}},
        {"5bfd4cd60db834001c38f095", {"Mosin 7.62x54R sawn-off 220mm barrel", 10146}},
        {"5c503ad32e2216398b5aada2", {"VPO-101 Vepr Hunter 7.62x51 10-round magazine", 11386}},
        {"5cadc190ae921500103bb3b6", {"Beretta M9A3 9x19 pistol", 10731}},
        {"5c9a1c3a2e2216000e69fb6a", {"AK Magpul Zhukov-U handguard (Flat Dark Earth)", 11557}},
        {"5a7c74b3e899ef0014332c29", {"NSPU-M night vision scope", 10483}},
        {"5c5db6b32e221600102611a0", {"MPX Geissele SCH charging handle", 11801}},
        {"5bc5a35cd4351e450201232f", {"Mosin Witt Machine muzzle brake", 10421}},
        {"5c6d5d8b2e221644fc630b39", {"AR-15 STNGR VYPR 10 inch M-LOK handguard", 11206}},
        {"5f36a0e5fbf956000b716b65", {"Colt M45A1 .45 ACP pistol", 11161}},
        {"59e61eb386f77440d64f5daf", {"VPO-136 Vepr KM 7.62x39 muzzle brake & compensator", 11135}},
        {"5afd7e095acfc40017541f61", {"SKS TAPCO Intrafuse buffer tube", 14309}},
        {"5d25a6a48abbc306c62e6310", {"Remington M700 .308 MDT AICS 12-round magazine", 9687}},
        {"5a17fc70fcdbcb0176308b3d", {"APS bakelite side-pieces", 10149}},
        {"5ea16acdfadf1d18c87b0784", {"AR-15 Geissele SMR MK16 9.5 inch M-LOK handguard", 10839}},
        {"57c55f172459772d27602381", {"Hogue Overmolded Rubber Grip (Olive Drab)", 10460}},
        {"593aa4be86f77457f56379f8", {"Dorm room 303 key", 11028}},
        {"57cffddc24597763133760c6", {"AK Magpul MOE AKM handguard (Olive Drab)", 10019}},
        {"5b39f8db5acfc40016387a1b", {"Vltor EMOD stock", 9920}},
        {"5d1b309586f77425227d1676", {"Broken LCD", 10972}},
        {"5c6c2c9c2e2216000f2002e4", {"HK 416A5 TROY Industries M-LOK 13 inch handguard", 10558}},
        {"5938144586f77473c2087145", {"Portable bunkhouse key", 10354}},
        {"5a27bad7c4a282000b15184b", {"SR-1MP quad rail mount", 10121}},
        {"5c78f2792e221600106f4683", {"AR-15 Magpul MOE SL Carbine Length M-LOK handguard", 10858}},
        {"5cf508bfd7f00c056e24104e", {"AK Strike Industries Enhanced Pistol Grip (Flat Dark Earth)", 10149}},
        {"5addc00b5acfc4001669f144", {"M14 Vltor CASV-14 rail system", 9045}},
        {"58d2946386f774496974c37e", {"Magpul MOE Carbine stock (Flat Dark Earth)", 10942}},
        {"5fc23636016cce60e8341b05", {"SilencerCo AC-858 ASR .338 LM Muzzle brake", 14991}},
        {"590c346786f77423e50ed342", {"Xenomorph sealing foam", 13157}},
        {"5a9548c9159bd400133e97b3", {"MP5 TL-99 aluminum handguard", 11272}},
        {"5de8fbad2fbe23140d3ee9c4", {"MP9-N vertical foregrip", 17997}},
        {"5dcbd6dddbd3d91b3e5468de", {"MDR pistol grip (Black)", 11589}},
        {"5beec8ea0db834001a6f9dbf", {"AK-12 pistol grip", 11561}},
        {"5d1b3a5d86f774252167ba22", {"Pile of meds", 10814}},
        {"5e5699df2161e06ac158df6f", {"SVD CAA XRS-DRG handguard", 10840}},
        {"59e0bdb186f774156f04ce82", {"Vltor CASV KeyMod 2 inch rail", 11980}},
        {"5fb6564947ce63734e3fa1da", {"KRISS Defiance low profile flip up rearsight", 9868}},
        {"5b363e1b5acfc4771e1c5e80", {"SilencerCo Salvo 12 thread adapter", 10330}},
        {"5ab8f4ff86f77431c60d91ba", {"Ghost balaclava", 11637}},
        {"5beec1bd0db834001e6006f3", {"RPK-16 5.45x39 15 inch barrel", 10908}},
        {"590c5d4b86f774784e1b9c45", {"Iskra ration pack", 9904}},
        {"59e366c186f7741778269d85", {"Plexiglass piece", 12525}},
        {"5d00f63bd7ad1a59283b1c1e", {"AR-15 Strike Industries Viper Carbine Length M-LOK handguard (FDE)", 9574}},
        {"5dff772da3651922b360bf91", {"VOMZ Pilad 4x32 riflescope", 10096}},
        {"5fc275cf85fd526b824a571a", {".338 Lapua Magnum FMJ", 13102}},
        {"59e5f5a486f7746c530b3ce2", {"AK 7.62x39 Molot 40-round magazine (6P2.Sb-11)", 8810}},
        {"573722e82459776104581c21", {"9x18PM BZhT gzh 16 pcs. ammo pack", 14333}},
        {"544a5cde4bdc2d39388b456b", {"Flyye MBSS backpack", 10388}},
        {"5c7d55f52e221644f31bff6a", {"Aimpoint LRP mount for COMP M4 sights", 10239}},
        {"5d00e0cbd7ad1a6c6566a42d", {"AR-15 Strike Industries Viper Carbine Length M-LOK handguard", 9775}},
        {"59148c8a86f774197930e983", {"Dorm room 204 key", 10052}},
        {"5c6d10fa2e221600106f3f23", {"HK 416A5 Midwest Industries 9 inch M-LOK handguard", 11150}},
        {"590a358486f77429692b2790", {"Rechargeable battery", 10117}},
        {"591af10186f774139d495f0e", {"TROY M7A1 PDW stock (Flat Dark Earth)", 10418}},
        {"56e0598dd2720bb5668b45a6", {"PB 9x18PM silenced pistol", 11744}},
        {"5751487e245977207e26a315", {"Emelya rye croutons", 11785}},
        {"5926c3b286f774640d189b6b", {"MP5 9x19 30-round magazine", 10723}},
        {"544fb62a4bdc2dfb738b4568", {"Russian Army pineapple juice", 10740}},
        {"5a33b2c9c4a282000c5a9511", {"Trijicon RMR low profile mount", 12172}},
        {"57cffe0024597763b03fc60b", {"AK Magpul MOE AKM handguard (Plum)", 10377}},
        {"57347d90245977448f7b7f65", {"Pack of oat flakes", 11362}},
        {"5c18b9192e2216398b5a8104", {"Magpul MBUS Gen2 rear flip-up sight (Flat Dark Earth)", 11165}},
        {"5c7e5f112e221600106f4ede", {"AAC Blackout 51T 5.56x45 flash hider", 10035}},
        {"5783c43d2459774bbe137486", {"Simple wallet", 9817}},
        {"5947db3f86f77447880cf76f", {"Axion Kobra EKP-8-02 reflex sight (Dovetail)", 10167}},
        {"5d0a29fed7ad1a002769ad08", {"KMZ 1P69 Weaver mount", 10922}},
        {"5c0505e00db834001b735073", {"Valday PK-120 (1P87) holographic sight", 11426}},
        {"5bd0716d86f774171822ef4b", {"Misha Mayorov mask", 7276}},
        {"5fbbfabed5cb881a7363194e", {"MCX .300 BLK 171mm barrel", 9631}},
        {"5d120a10d7ad1a4e1026ba85", {"AR-15 DoubleStar ACE SOCOM Gen.4 stock", 11289}},
        {"57347c1124597737fb1379e3", {"Duct tape", 9670}},
        {"5e2af2bc86f7746d3f3c33fc", {"Hunting matches", 9674}},
        {"5a787ebcc5856700142fdd98", {"M870 12ga 508mm barrel with a fixed sight", 10744}},
        {"57cffd8224597763b03fc609", {"AK Magpul MOE AKM handguard (Flat Dark Earth)", 10822}},
        {"54491bb74bdc2d09088b4567", {"ER FULCRUM BAYONET", 10088}},
        {"5b30bc165acfc40016387293", {"Alexander Arms 3 inch rail", 8326}},
        {"5bfd384c0db834001a6691d3", {"Mosin carbine stock", 7348}},
        {"5a33cae9c4a28232980eb086", {"Magpul PRS GEN2 stock (Flat Dark Earth)", 10620}},
        {"5a6b5e468dc32e001207faf5", {"Glock 9x19 Double Diamond threaded barrel", 13197}},
        {"5ac78eaf5acfc4001926317a", {"AK-74M/AK-100 Zenit PT Lock", 12108}},
        {"5c6d710d2e22165df16b81e7", {"AR-15 Surefire WarComp 5.56x45 Flash hider", 10612}},
        {"58aeaaa886f7744fc1560f81", {"MPX-SD 9x19 165mm barrel", 10420}},
        {"591afe0186f77431bd616a11", {"ZB-014 key", 11114}},
        {"5a34fbadc4a28200741e230a", {"JP Enterprises Gas System-6", 10021}},
        {"5c90c3622e221601da359851", {"Zenit B-13V \"Klassika\" dovetail rail platform", 10876}},
        {"5e4abc1f86f774069619fbaa", {"Spiritus Systems Bank Robber chest rig", 11112}},
        {"5c1bc4812e22164bef5cfde7", {"Zenit RK-0 foregrip", 13278}},
        {"6065dc8a132d4d12c81fd8e3", {"CMMG Low Profile gas block", 10350}},
        {"5d123b7dd7ad1a004f01b262", {"KAC URX 3/3.1 stopper panel", 6189}},
        {"57347d8724597744596b4e76", {"Can of squash spread", 10455}},
        {"5b099a9d5acfc47a8607efe7", {"SA-58 quad rail handguard", 10076}},
        {"5c06779c86f77426e00dd782", {"Wires", 9515}},
        {"5f6339d53ada5942720e2dc3", {"Ferfrans CRD Concussion Reduction Device 5.56x45", 11426}},
        {"5b4326435acfc433000ed01d", {"Neoprene mask", 11088}},
        {"5aa2ba46e5b5b000137b758d", {"UX PRO beanie hat", 7372}},
        {"5df8a72c86f77412640e2e83", {"Christmas tree ornament (White)", 10000}},
        {"573727c624597765cc785b5b", {"9x18PM Pst gzh 16 pcs. ammo pack", 10882}},
        {"5c1260dc86f7746b106e8748", {"9x39 BP gs 8 pcs. ammo pack", 11000}},
        {"5c12619186f7743f871c8a32", {"9x39 SPP 8 pcs. ammo pack", 10933}},
        {"57372e1924597768553071c1", {"5.45x39 PRS gs 120 pcs. ammo pack", 10000}},
        {"5cadd940ae9215051e1c2316", {"M9A3 rear sight", 9999}},
        {"5f3e76d86cda304dcc634054", {"M45A1 hammer", 9999}},
        {"606ef0812535c57a13424d20", {"MP-155 Ultima small recoil pad", 11498}},
        {"5c0fafb6d174af02a96260ba", {"ADAR 2-15.56x45 flash hider", 8624}},
        {"57d14d2524597714373db789", {"PP-91 Kedr 9x18PM submachine gun", 11894}},
        {"5913877a86f774432f15d444", {"Gas station storage room key", 10008}},
        {"59e361e886f774176c10a2a5", {"Hydrogen peroxide", 9898}},
        {"5a7ad4af51dfba0013379717", {"Glock Aimtech mount base", 9281}},
        {"57cffe20245977632f391a9d", {"AK Magpul MOE AKM handguard (Stealth Gray)", 10526}},
        {"6065880c132d4d12c81fd8da", {"AR-10 CMMG MK3 RML9 9 inch M-LOK handguard", 10058}},
        {"5f3e78a7fbf956000b716b8e", {"M45A1 Novak Lomount front sight", 9876}},
        {"5fce16961f152d4312622bc9", {"KRISS Defiance DS150 stock (Flat Dark Earth)", 10681}},
        {"59faf98186f774067b6be103", {"Alkaline cleaner for heat exchangers", 11909}},
        {"5cebec38d7f00c00110a652a", {"FN P90 Ring Sight reflex sight", 10107}},
        {"5d25a6538abbc306c62e630d", {"Remington M700 .308 AICS 10-round magazine", 9915}},
        {"5751435d24597720a27126d1", {"Max Energy energy drink", 9960}},
        {"5e2af4d286f7746d4159f07a", {"Aramid fiber fabric", 10418}},
        {"5f3e772a670e2a7b01739a52", {"M45A1 trigger", 9833}},
        {"5c471b7e2e2216152006e46c", {"SVDS rear sight", 10806}},
        {"5fd4c4fa16cac650092f6771", {"DIY IDEA chest rig", 10426}},
        {"5b7d63b75acfc400170e2f8a", {"SA-58/FAL Magpul PRS 2 polymer stock", 10787}},
        {"5aaf8e43e5b5b00015693246", {"M1A SOCOM 16 stock", 9774}},
        {"5d25a7b88abbc3054f3e60bc", {"Remington M700 .308 Magpul PMAG AC 10-round magazine", 10037}},
        {"5fbbc366ca32ed67276c1557", {"KRISS Vector 9x19 5 inch barrel", 9940}},
        {"5bb20d53d4351e4502010a69", {"HK 416A5 5.56x45 upper receiver", 9550}},
        {"5a9d56c8a2750c0032157146", {"AK Strike Industries TRAX 1 handguard", 11407}},
        {"5d0a29ead7ad1a0026013f27", {"KMZ 1P59 Dovetail mount", 9755}},
        {"5e81c6bf763d9f754677beff", {"M1911A1 polymer pistol grip", 7946}},
        {"5c471c2d2e22164bef5d077f", {"SVDS Upper Band", 12536}},
        {"5e569a0156edd02abe09f27d", {"SVD modern top rail", 10129}},
        {"5ab3afb2d8ce87001660304d", {"M1A Smith Enterprise SOCOM 16 7.62x51 threaded muzzle brake & compensator", 9428}},
        {"5a9d6d34a2750c00141e07da", {"AK Strike Industries TRAX 2 handguard extension", 10526}},
        {"5a7b32a2e899ef00135e345a", {"Glock 9x19 Strike Industries G4 slide compensator", 10753}},
        {"5b222d335acfc4771e1be099", {"AKM/AK-74 Zenit PT Lock", 9951}},
        {"587df583245977373c4f1129", {"SKS 7.62x39 ProMag SKS-A5 20-round magazine", 10715}},
        {"5addbfe15acfc4001a5fc58b", {"M14 A.R.M.S. #18 scope mount", 9733}},
        {"57347b8b24597737dd42e192", {"Classic matches", 9904}},
        {"5998517986f7746017232f7e", {"PP-19-01 Vityaz-SN pistol grip", 9431}},
        {"5b30b0dc5acfc400153b7124", {"Holosun HS401G5 reflex sight", 9645}},
        {"5f2aa43ba9b91d26f20ae6d2", {"RFB thread spacer", 9333}},
        {"590a3d9c86f774385926e510", {"Ultraviolet lamp", 11391}},
        {"5b7bee755acfc400196d5383", {"SA-58/FAL Vltor CASV FAS handguard", 10147}},
        {"5beecbb80db834001d2c465e", {"RPK-16 handguard rail", 9504}},
        {"5b7be4575acfc400161d0832", {"Vltor CASV 2 inch rail", 11071}},
        {"5c1bc7752e221602b1779b34", {"Zenit RK-6 foregrip", 9360}},
        {"6076c1b9f2cb2e02a42acedc", {"MP-155 510mm barrel", 9946}},
        {"5d1b313086f77425227d1678", {"Phase control relay", 8449}},
        {"5c010a700db834001d23ef5d", {"P226 Emperor Scorpion pistol slide", 7314}},
        {"5e81c3cbac2bb513793cdc75", {"Colt M1911A1 .45 ACP pistol", 9619}},
        {"590a3cd386f77436f20848cb", {"Energy-saving lamp", 10720}},
        {"56d59948d2720bb7418b4582", {"P226 9x19 15-round magazine", 12583}},
        {"5f3e777688ca2d00ad199d25", {"M45A1 slide lock", 9623}},
        {"584984812459776a704a82a6", {"VOMZ Pilad P1x42 Weaver reflex sight", 9933}},
        {"606587a88900dc2d9a55b659", {"Mk47 Resolute 7.62x39 upper receiver", 9305}},
        {"5e8488fa988a8701445df1e4", {"CALOK-B hemostatic applicator", 11182}},
        {"5a38eecdc4a282329a73b512", {"TOZ-106 002 pistol grip", 5855}},
        {"5eea217fc64c5d0dfc05712a", {"M590A1 Magpul SGA stock", 12269}},
        {"5fc0f9b5d724d907e2077d82", {"MVF001 A3 KeyMod vertical grip (Black)", 9964}},
        {"57347baf24597738002c6178", {"RAM", 9235}},
        {"5e569a2e56edd02abe09f280", {"SVD CAA XD RGL receiver mount", 9581}},
        {"5bc9b156d4351e00367fbce9", {"Jar of DevilDog mayo", 10265}},
        {"5de8fb539f98ac2bc659513a", {"MP9 rear sight", 10544}},
        {"5fc0f9cbd6fa9c00c571bb90", {"SIG Sauer Vertical Foregrip KeyMod (Black)", 9813}},
        {"5e81edc13397a21db957f6a1", {"M1911A1 .45 ACP pistol slide", 9587}},
        {"5fb655b748c711690e3a8d5a", {"KRISS Vector non-folding stock adapter", 9756}},
        {"5addc7db5acfc4001669f279", {"M14 SAGE International M14ALCS (MOD-0) pistol grip", 8192}},
        {"59e6152586f77473dc057aa1", {"Molot VPO-136 Vepr KM 7.62x39 carbine", 9849}},
        {"5f60e784f2bcbb675b00dac7", {"Beret (Olive)", 9471}},
        {"57347d9c245977448b40fa85", {"Can of herring", 10382}},
        {"5beec3e30db8340019619424", {"RPK-16 handguard", 9950}},
        {"56083eab4bdc2d26448b456a", {"SV-98 anti-heat ribbon", 13012}},
        {"590a3c0a86f774385a33c450", {"Spark plug", 8422}},
        {"5d02676dd7ad1a049e54f6dc", {"AR-15 Nordic Components Corvette 5.56x45 compensator", 10311}},
        {"57347d3d245977448f7b7f61", {"Rye croutons", 8531}},
        {"5bed61680db834001d2c45ab", {"AK-12 5.45x39 30-round magazine", 7430}},
        {"5cdeac5cd7f00c000f261694", {"Remington M700 Magpul Pro 700 pistol grip", 7870}},
        {"5bfebc530db834001d23eb65", {"Remington M700 extended multi-slot Weaver rail base", 9867}},
        {"56ea8d2fd2720b7c698b4570", {"AR-15 Windham Weaponry Rail Gas Block", 18124}},
        {"5d1c774f86f7746d6620f8db", {"Radiator helix", 9173}},
        {"5a7033908dc32e000a311392", {"Glock 9x19 Alpha Wolf custom pistol slide", 9169}},
        {"609b9e31506cf869cf3eaf41", {"VOMZ PILAD Target Ring reflex sight", 9156}},
        {"5894a81786f77427140b8347", {"MPX flip-up rear sight", 9226}},
        {"5fc3e4a27283c4046c5814ab", {"HK UMP .45 ACP 8 inch barrel", 9631}},
        {"5d2f213448f0355009199284", {"MP5 9x19 20-round magazine", 13394}},
        {"5c1780312e221602b66cc189", {"KAC Folding rear sight", 7670}},
        {"60098b1705871270cd5352a1", {"Emergency Water Ration", 10291}},
        {"59136a4486f774447a1ed172", {"Dorm guard desk key", 8919}},
        {"57acb6222459771ec34b5cb0", {"Pilad 043-02 dovetail mount", 10107}},
        {"5ab8f39486f7745cd93a1cca", {"Cold Fear Infrared balaclava", 9300}},
        {"5649ab884bdc2ded0b8b457f", {"AK Zenit DTK-1 7.62x39 & 5.45x39 muzzle brake & compensator", 9509}},
        {"5ef32e4d1c1fd62aea6a150d", {"M1911A1 Caspian Arms Trik Trigger", 10166}},
        {"603372d154072b51b239f9e1", {"STM-9 9x19 12 inch barrel", 7884}},
        {"5beec91a0db834001961942d", {"RPK-16 dust cover", 9567}},
        {"57347c93245977448d35f6e3", {"Toothpaste", 11433}},
        {"5de655be4a9f347bc92edb88", {"VPO-215 stock", 9089}},
        {"5bc5a351d4351e003477a414", {"Mosin Texas Precision Products muzzle brake", 8579}},
        {"5a0060fc86f7745793204432", {"AK 7.62x39 aluminium 30-round magazine", 9245}},
        {"5dfa3cd1b33c0951220c079b", {"KAC QDC 7.62x51 flash suppressor kit", 9845}},
        {"606eef756d0bd7580617baf8", {"MP-155 Ultima polymer stock", 7247}},
        {"5a788169c5856700142fdd9e", {"M870 Shockwave Raptor grip", 7607}},
        {"58d2947e86f77447aa070d53", {"Magpul MOE Carbine stock (Stealth Gray)", 10319}},
        {"5cadc431ae921500113bb8d5", {"M9A3 polymer pistol grip", 5747}},
        {"58d2947686f774485c6a1ee5", {"Magpul MOE Carbine stock (Olive Drab)", 9586}},
        {"5b7d645e5acfc400170e2f90", {"SA-58 humpback polymer stock", 5369}},
        {"5d124c0ed7ad1a10d168dd9b", {"KAC URX 3/3.1 long panel (Flat Dark Earth)", 6682}},
        {"588226e62459776e3e094af7", {"Magpul AFG grip (Forest Green)", 9576}},
        {"5be4038986f774527d3fae60", {"Interchange paper map", 9518}},
        {"5ac72e7d5acfc40016339a02", {"AK-103 7.62x39 muzzle brake & compensator", 14604}},
        {"5cde77a9d7f00c000f261009", {"Remington M700 AB Arms buffer tube side folder adapter", 8960}},
        {"607ffb988900dc2d9a55b6e4", {"AR-10 SureFire ProComp 7.62x51 muzzle brake", 8381}},
        {"56d59856d2720bd8418b456a", {"SIG P226R 9x19 pistol", 9498}},
        {"5d5fca1ea4b93635fd598c07", {"Crossbow tactical glasses", 8959}},
        {"5d10b49bd7ad1a1a560708b0", {"AN/PEQ-2 tactical device", 9370}},
        {"5aba639ed8ce8700182ece67", {"APB rear sight", 8888}},
        {"576a581d2459771e7b1bc4f1", {"Yarygin MP-443 Grach 9x19 pistol", 9081}},
        {"5c61a40d2e2216001403158d", {"Zenit B-13 \"Klassika\" dovetail rail platform", 10285}},
        {"5c00076d0db834001d23ee1f", {"P226 Elite Wooden pistol grip", 8015}},
        {"591aef7986f774139d495f03", {"TROY M7A1 PDW stock (Black)", 9816}},
        {"5a38e6bac4a2826c6e06d79b", {"TOZ-106 20ga bolt-action shotgun", 8345}},
        {"5cdd7693d7f00c0010373aa5", {"AR-10 Precision Armanent M11 7.62x51 muzzle brake", 7602}},
        {"56742c2e4bdc2d95058b456d", {"Zibbo lighter", 8812}},
        {"5cf638cbd7f00c06595bc936", {"NPZ USP-1 4x scope", 8604}},
        {"58272b392459774b4c7b3ccd", {"SOK-12 Leapers UTG PRO MTU002 Short Top aluminum handguard", 9173}},
        {"5a966f51a2750c00156aacf6", {"SOK-12 12/76 SAI-02 10-round magazine", 8402}},
        {"5c064c400db834001d23f468", {"LaRue LT101 QD tactical picatinny riser mount", 8197}},
        {"5937ee6486f77408994ba448", {"Machinery key", 9123}},
        {"590c5f0d86f77413997acfab", {"MRE ration pack", 8449}},
        {"5943ee5a86f77413872d25ec", {"PWS CQB 5.56x45 muzzle brake", 9389}},
        {"5c0fa877d174af02a012e1cf", {"Aquamari water bottle with filter", 10639}},
        {"57514643245977207f2c2d09", {"TarCola can", 9033}},
        {"571a28e524597720b4066567", {"TT 7.62x25 makeshift sound suppressor", 8812}},
        {"5a2a57cfc4a2826c6e06d44a", {"RDG-2B smoke grenade", 8122}},
        {"579204f224597773d619e051", {"PM (t) \"Makarov\" 9x18PM pistol", 12505}},
        {"5d2f2d5748f03572ec0c0139", {"MP5K cocking handle", 30757}},
        {"5780d0532459777a5108b9a2", {"Tarcone Director's office key", 8790}},
        {"5f3e7897ddc4f03b010e204a", {"M45A1 Novak Lomount rear sight", 8777}},
        {"5c079ec50db834001966a706", {"TT Razor Arms rubber grip", 7706}},
        {"5b7be2345acfc400196d524a", {"SA-58/FAL AIM Sports Universal KeyMod handguard", 8468}},
        {"606f262c6d0bd7580617bafa", {"MP-155 Ultima medium recoil pad", 9427}},
        {"5a339805c4a2826c6e06d73d", {"AR-15 Magpul MIAD pistol grip (Flat Dark Earth)", 8934}},
        {"573476d324597737da2adc13", {"Malboro Cigarettes", 8376}},
        {"573478bc24597738002c6175", {"Horse figurine", 8586}},
        {"575146b724597720a27126d5", {"Pack of milk", 9624}},
        {"590c311186f77424d1667482", {"Wrench", 9655}},
        {"5cbda392ae92155f3c17c39f", {"AK-100 series polymer handguard", 8393}},
        {"544fb6cc4bdc2d34748b456e", {"Slickers chocolate bar", 10544}},
        {"5c6d11072e2216000e69d2e4", {"HK 416A5 Midwest Industries 13.5 inch M-LOK handguard", 8688}},
        {"5a9685b1a2750c0032157104", {"Glock 9x19 Moto Cut pistol slide", 9288}},
        {"5ae30db85acfc408fb139a05", {"AR-15 Colt M4 Carbine Length handguard", 6866}},
        {"577d128124597739d65d0e56", {"Burris FastFire Weaver Base", 9192}},
        {"5734795124597738002c6176", {"Insulating tape", 7711}},
        {"5b7d693d5acfc43bca706a3d", {"AR-10 2A Armanent X3 7.62x51 compensator", 8830}},
        {"5c5db6302e2216000e5e47f0", {"MPX Midwest Industries 10.5 inch M-LOK handguard", 8114}},
        {"5c06782b86f77426df5407d2", {"Capacitors", 8641}},
        {"5734781f24597737e04bf32a", {"DVD drive", 7946}},
        {"59e0be5d86f7742d48765bd2", {"Vltor CASV KeyMod 4 inch rail", 9007}},
        {"5dfa3d950dee1b22f862eae0", {"KAC Folding Micro front sight", 9283}},
        {"5bc9c29cd4351e003562b8a3", {"Can of sprats", 8325}},
        {"5f3e77b26cda304dcc634057", {"M45A1 .45 ACP 7-round magazine", 10962}},
        {"5a702d198dc32e000b452fc3", {"Glock Alpha Wolf pistol slide", 7729}},
        {"59136f6f86f774447a1ed173", {"Folding car key", 8389}},
        {"5eea21647547d6330471b3c9", {"M590A1 Magpul MOE forestock", 9295}},
        {"5c471ba12e221602b3137d76", {"SVDS front sight", 8469}},
        {"57a9b9ce2459770ee926038d", {"SOK-12 rear sight", 8499}},
        {"56deec93d2720bec348b4568", {"MP-153 12ga 750mm barrel", 8960}},
        {"5bfeb32b0db834001a6694d9", {"Remington M700 Hogue Overmolded Ghillie stock", 12951}},
        {"590c5bbd86f774785762df04", {"WD-40 (100ml)", 8311}},
        {"602e63fb6335467b0c5ac94d", {"STM-9 9x19 upper receiver", 6557}},
        {"5c7fc87d2e221644f31c0298", {"BCM GUNFIGHTER MOD.3 vertical grip", 8392}},
        {"5c471b5d2e221602b21d4e14", {"SVDS polymer stock", 8854}},
        {"5e2aef7986f7746d3f3c33f5", {"Repellent", 9723}},
        {"5addbb6e5acfc408fb1393fd", {"M1A National Match 7.62x51 muzzle brake & compensator", 4837}},
        {"5ae0973a5acfc4001562206c", {"Mosin 7.62x54R 5-round magazine", 6465}},
        {"5d023784d7ad1a049d4aa7f2", {"SKS/VZ-58 FAB Defense AG-58 pistol grip", 7966}},
        {"59e770b986f7742cbd762754", {"Anti-fragmentation glasses", 8379}},
        {"5a80a29286f7742b25692012", {"Shoreline Health Resort plan map", 9675}},
        {"564ca9df4bdc2d35148b4569", {"AK-74 5.45x39 6L18 45-round magazine", 7715}},
        {"5c503d0a2e221602b542b7ef", {"VPO-101 Vepr Hunter dust cover", 11872}},
        {"5e87116b81c4ed43e83cefdd", {"M590A1 polymer stock", 10905}},
        {"5a38ef1fc4a282000b1521f6", {"TOZ-106 stock", 8316}},
        {"5d25a4a98abbc30b917421a4", {"Remington M700 .308 AICS 5-round magazine", 7974}},
        {"57513fcc24597720a31c09a6", {"Vita juice", 10610}},
        {"5d15ce51d7ad1a1eff619092", {"AKS-74U Alfa Arms Goliaf handguard", 8299}},
        {"5bffef760db8340019668fe4", {"P226 Hogue Chain Link pistol grip", 8300}},
        {"5c0102aa0db834001b734ba1", {"Remington RAHG 2 inch rail", 6656}},
        {"5b4335ba86f7744d2837a264", {"Medical bloodset", 8883}},
        {"57ae0171245977343c27bfcf", {"BelOMO PK-06 reflex sight", 8677}},
        {"5ef35f46382a846010715a96", {"M1911A1 STI HEX hammer", 9256}},
        {"588226dd24597767ad33f789", {"Magpul AFG grip (Flat Dark Earth)", 9683}},
        {"5ab24ef9e5b5b00fe93c9209", {"M1A SOCOM 16 upper part", 5781}},
        {"5c0e2f5cd174af02a012cfc9", {"ADAR 2-15 wooden handguard", 8362}},
        {"5a17f98cfcdbcb0980087290", {"APS 9x18PM machine pistol", 9039}},
        {"5913611c86f77479e0084092", {"Trailer park portable cabin key", 7840}},
        {"5bb20dfcd4351e00334c9e24", {"HK 416A5 Extended Quad Rail handguard", 7824}},
        {"5bfebc5e0db834001a6694e5", {"Remington M700 30mm integral ring-mount", 7893}},
        {"5aba62f8d8ce87001943946b", {"APS front sight", 7966}},
        {"5a33ca0fc4a282000d72292f", {"Colt A2 buffer tube", 10702}},
        {"5c5db5b82e2216003a0fe71d", {"MPX 9x19 10.5 inch barrel", 8174}},
        {"5df36948bb49d91fb446d5ad", {"Orsis T-5000M padded handguard grip", 7304}},
        {"5bfe86a20db834001d23e8f7", {"M870 FAB Defense AGR-870 pistol grip", 7817}},
        {"5ac66bea5acfc43b321d4aec", {"AK-103 7.62x39 30-round magazine", 11647}},
        {"587e08ee245977446b4410cf", {"OP-SKS dovetail mount", 8578}},
        {"5894a73486f77426d259076c", {"MPX flip-up front sight", 8141}},
        {"57ffb0062459777a045af529", {"AKS-74U Zenit B-18 Mount", 9000}},
        {"5a6b585a8dc32e5a9c28b4f1", {"Glock 9x19 Alpha Wolf thread protector", 5357}},
        {"5a9fc7e6a2750c0032157184", {"VSS/VAL B-3 mount combo", 9384}},
        {"5d1b392c86f77425243e98fe", {"Light bulb", 8111}},
        {"5b3f7bf05acfc433000ecf6b", {"Mosin Kochetov mount", 9472}},
        {"603618feffd42c541047f771", {"Army cap (Black)", 9967}},
        {"5afd7e445acfc4001637e35a", {"SKS TAPCO Intrafuse kit SAW-Style pistol grip", 6602}},
        {"5cdd7685d7f00c000f260ed2", {"AR-10 Keeno Arms SHREWD 7.62x51 muzzle brake", 8614}},
        {"5ac72e475acfc400180ae6fe", {"AK-74M rear sight (6P20 Sb.2)", 8059}},
        {"5a7893c1c585673f2b5c374d", {"M870 Leapers UTG PRO MTU-028SG rail", 7075}},
        {"5b7d63cf5acfc4001876c8df", {"SA-58 folding stock", 8331}},
        {"578395e82459774a0e553c7b", {"VSS Vintorez wooden stock", 7650}},
        {"5bb20e0ed4351e3bac1212dc", {"AR-15 HK Battle Grip pistol grip with Beavertail", 8010}},
        {"5b4329075acfc400153b78ff", {"Pompon hat", 7735}},
        {"59e7711e86f7746cae05fbe1", {"Kolpak-1S riot helmet", 9117}},
        {"5bb20e49d4351e3bac1212de", {"HK 416A5 flip up rear sight", 7143}},
        {"5d4042a986f7743185265463", {"Long flathead screwdriver", 8069}},
        {"5dfa3d45dfc58d14537c20b0", {"SR-25 Low Profile Gas Block", 10174}},
        {"5a78948ec5856700177b1124", {"M870 XS SHOTRAIL rail with Ghost ring", 8115}},
        {"56083a334bdc2dc8488b4571", {"MP-133/153 plastic pistol grip", 8268}},
        {"58949edd86f77409483e16a9", {"MPX double latch charging handle", 11165}},
        {"5f60e7788adaa7100c3adb49", {"Beret (Blue)", 8846}},
        {"5c48a2a42e221602b66d1e07", {"Desert Tech 5.56x45 flash hider", 7962}},
        {"5ba26acdd4351e003562908e", {"MP7A1 4.6x30 flash hider", 7379}},
        {"5780d0652459777df90dcb74", {"Gas station office key", 8142}},
        {"5a7d90eb159bd400165484f1", {"Glock Dead Ringer Snake Eye front sight", 7423}},
        {"59e358a886f7741776641ac3", {"Clin window cleaner", 8347}},
        {"57347d692459774491567cf1", {"Can of green peas", 8107}},
        {"5e2af00086f7746d3f3c33f7", {"Smoked Chimney drain cleaner", 7689}},
        {"57347da92459774491567cf5", {"Large can of beef stew", 8102}},
        {"5f2aa4464b50c14bcf07acdb", {"RFB thread protection cap", 8537}},
        {"5b3a08b25acfc4001754880c", {"P226 bridge sight mount", 8993}},
        {"588200cf2459774414733d55", {"MP-153 12ga 710mm barrel", 7856}},
        {"590c639286f774151567fa95", {"Vehicle manual", 7518}},
        {"59985a8086f77414ec448d1a", {"PP-19-01 Vityaz-SN dust cover", 7643}},
        {"5ac4c50d5acfc40019262e87", {"Kolpak-1S visor", 9010}},
        {"59d6507c86f7741b846413a2", {"AKM dust cover (6P1 0-1)", 5400}},
        {"5b1fb3e15acfc4001637f068", {"AK 7.62x39 bakelite 40-round magazine", 6990}},
        {"5c6162682e22160010261a2b", {"TOZ-106 dovetail mount", 4572}},
        {"5a9d6d21a2750c00137fa649", {"Strike Industries TRAX bridge rail", 6160}},
        {"57347d7224597744596b4e72", {"Small can of beef stew", 7443}},
        {"5b1fd4e35acfc40018633c39", {"AK 7.62x39 aluminium 10-round magazine", 4903}},
        {"5c1a1cc52e221602b3136e3d", {"Oakley SI M Frame safety glasses", 7213}},
        {"5fb65363d1409e5ca04b54f5", {"KRISS Vector .45 ACP 5 inch barrel", 9424}},
        {"59d64f2f86f77417193ef8b3", {"AK-74 wooden handguard (6P1 Sb.6-1)", 5637}},
        {"5888976c24597754281f93f5", {"DVL-10 M2 handguard", 7857}},
        {"5608379a4bdc2d26448b4569", {"MP-133 12ga 750mm barrel with rib", 7680}},
        {"571a279b24597720b4066566", {"TT 7.62x25 121mm homespun threaded barrel", 7676}},
        {"57dc347d245977596754e7a1", {"AKS-74U metal skeleton stock (6P26 Sb.5)", 8995}},
        {"5ac66c5d5acfc4001718d314", {"AK-101 5.56x45 6L29 30-round magazine", 8367}},
        {"5d440625a4b9361eec4ae6c5", {"Thunder Beast Arms 223CB 5.56x45 muzzle brake", 7686}},
        {"58d39d3d86f77445bb794ae7", {"Aimpoint Micro Standard Mount", 7702}},
        {"5c0009510db834001966907f", {"P226 Stainless Elite pistol slide", 5762}},
        {"5b432f3d5acfc4704b4a1dfb", {"Momex balaclava", 7491}},
        {"5f2aa49f9b44de6b1b4e68d4", {"RFB scope mount rail", 6817}},
        {"56e33634d2720bd8058b456b", {"Duffle bag", 7369}},
        {"59d64fc686f774171b243fe2", {"AKM 7.62x39 muzzle brake & compensator (6P1 0-14)", 5535}},
        {"5d02677ad7ad1a04a15c0f95", {"AR-10 Nordic Components Corvette 7.62x51 muzzle brake", 7299}},
        {"5b31163c5acfc400153b71cb", {"SIG Sauer ROMEO sights mount", 7007}},
        {"5b363dea5acfc4771e1c5e7e", {"SilencerCo 12ga choke adapter", 7721}},
        {"5888988e24597752fe43a6fa", {"DVL-10 .308 10-round magazine", 9678}},
        {"5913651986f774432f15d132", {"VAZ car key", 8003}},
        {"5c1a1e3f2e221602b66cc4c2", {"Fake white beard", 7500}},
        {"55d459824bdc2d892f8b4573", {"AR-15 KAC RIS handguard", 8116}},
        {"5c079ed60db834001a66b372", {"TT DLP Tactical Precision LAM module", 8619}},
        {"5a7c147ce899ef00150bd8b8", {"Vendetta Precision 5.56x45 VP-09 Interceptor muzzle brake", 7620}},
        {"5df35e970b92095fd441e4d2", {"Orsis T-5000M scope mount", 6622}},
        {"57c44fa82459772d2d75e415", {"AS VAL pistol grip", 6962}},
        {"5ef61964ec7f42238c31e0c1", {"M1911A1 Anarchy Outdoors muzzle brake", 7700}},
        {"5bb20e18d4351e00320205d5", {"AR-15 HK Battle Grip pistol grip", 7452}},
        {"55d355e64bdc2d962f8b4569", {"M4A1 5.56x45 upper receiver", 8696}},
        {"5ce69cbad7f00c00b61c5098", {"Remington M700 .308 Magpul PMAG AC 5-round magazine", 6462}},
        {"5f2aa47a200e2c0ee46efa71", {"RFB handguard", 6845}},
        {"5b3f3ade86f7746b6b790d8e", {"Armband (Red)", 4457}},
        {"602e620f9b513876d4338d9a", {"FAB Defense GL-Core buttstock", 7339}},
        {"5ac72e895acfc43b321d4bd5", {"AK-104 7.62x39 muzzle brake & compensator (6P46 0-20)", 8299}},
        {"607d5a891246154cad35d6aa", {"MP-155 walnut stock", 10630}},
        {"55d481904bdc2d8c2f8b456a", {"AK-74 5.45x39 6L26 45-round magazine", 9117}},
        {"5ae099925acfc4001a5fc7b3", {"Mosin rear sight", 5890}},
        {"5fc3e4ee7283c4046c5814af", {"HK UMP polymer stock", 7490}},
        {"5fc0fa362770a0045c59c677", {"MCX flip-up front sight", 7887}},
        {"5672cb124bdc2d1a0f8b4568", {"AA Battery", 7585}},
        {"57d1519e24597714373db79d", {"PP-91 9x18PM 30-round magazine", 8350}},
        {"5bfea7ad0db834001c38f1ee", {"Remington M700 .308 Wyatt's Outdoor 5-round magazine", 7585}},
        {"599860ac86f77436b225ed1a", {"PP-19-01 Vityaz-SN 9x19 30-round magazine", 6408}},
        {"5de653abf76fdc1ce94a5a2a", {"VPO-215 .366 TKM metal 4-round magazine", 6902}},
        {"55d4887d4bdc2d962f8b4570", {"5.56x45 Colt AR-15 STANAG 30-round magazine", 8840}},
        {"588200c224597743990da9ed", {"MP-153 12ga 660mm barrel", 7179}},
        {"5894a51286f77426d13baf02", {"MPX pistol grip", 7468}},
        {"5d024f5cd7ad1a04a067e91a", {"Mosin Arbalet Patriot K+W rail mount", 8528}},
        {"5fbcc429900b1d5091531dd7", {"MCX telescoping stock", 6631}},
        {"5a0f096dfcdbcb0176308b15", {"AKMP system front sight device", 5840}},
        {"5a7d912f159bd400165484f3", {"Glock TruGlo TFX rear sight", 6900}},
        {"5f2aa493cd375f14e15eea72", {"RFB handguard rail mount", 6061}},
        {"5ef3553c43cb350a955a7ccb", {"M1911A1 Wilson Extended slide stop", 7656}},
        {"560837824bdc2d57468b4568", {"MP-133 12ga 750mm barrel", 7062}},
        {"5b7c2d1d5acfc43d1028532a", {"SA-58/FAL 7.62x51 \"MMW\" plastic 20-round magazine", 8479}},
        {"5b3b6dc75acfc47a8773fb1e", {"Armasight Vulcan universal base", 8180}},
        {"59148f8286f7741b951ea113", {"Weapon safe key", 6755}},
        {"5addbfd15acfc40015621bde", {"M14 Mini Scout Mount system", 6892}},
        {"5737256c2459776125652acd", {"9x18mm PMM PstM gzh ammo box, 16 cartridges", 13137}},
        {"5d2c76ed48f03532f2136169", {"AK AKademia Bastion dust cover", 6820}},
        {"5df8a6a186f77412640e2e80", {"Christmas tree ornament (Red)", 7000}},
        {"5cadd919ae921500126a77f3", {"M9A3 front sight", 6999}},
        {"5caf16a2ae92152ac412efbc", {"ASh-12 folding front sight", 9404}},
        {"5f5e45cc5021ce62144be7aa", {"LK 3F Transfer tourist backpack", 7243}},
        {"5b7be4645acfc400170e2dcc", {"Vltor CASV 4 inch rail", 8967}},
        {"56e05b06d2720bb2668b4586", {"PB 9x18PM sound suppressor", 7405}},
        {"5780cf692459777de4559321", {"Dorm room 315 key", 7151}},
        {"5abcbb20d8ce87001773e258", {"M14 Enlarged Military Aperture rear sight", 20290}},
        {"5fb6558ad6f0b2136f2d7eb7", {"KRISS Vector Gen.2 folding stock", 8645}},
        {"5fc4b992187fea44d52edaa9", {"SilencerCo Omega 45k direct thread mount adapter", 7113}},
        {"590c661e86f7741e566b646a", {"Car first aid kit", 6813}},
        {"5b099b965acfc400186331e6", {"SA-58 TAPCO SAW-style pistol grip (Black)", 6853}},
        {"56eabcd4d2720b66698b4574", {"MK12 Low Profile Gas Block", 7428}},
        {"5c17804b2e2216152006c02f", {"KAC Folding front sight", 7778}},
        {"5dfe14f30b92095fd441edaf", {"ETMI-019 shotgun rail mount", 7160}},
        {"5fbc226eca32ed67276c155d", {"MCX 8 inch KeyMod handguard", 5981}},
        {"5df8a58286f77412631087ed", {"TSh-4M-L soft tank crew helmet", 6937}},
        {"6033749e88382f4fab3fd2c5", {"AR-15 MASP Industries Ambidextrous Battle Charging Handle", 6785}},
        {"57e3dba62459770f0c32322b", {"AK-74 textolite pistol grip (6P4 Sb.9)", 5151}},
        {"5f647d9f8499b57dc40ddb93", {"KS-23M 23x75 3-shell magazine cap", 7759}},
        {"5a0c27731526d80618476ac4", {"Zarya stun grenade", 7325}},
        {"5aa2b9aee5b5b00015693121", {"RayBench Hipster Reserve sunglasses", 6042}},
        {"5c5db5fc2e2216000f1b2842", {"MPX Midwest Industries 6.5 inch M-LOK handguard", 6783}},
        {"5bfd4cbe0db834001b73449f", {"Mosin 7.62x54R 514mm carbine barrel", 7348}},
        {"5673de654bdc2d180f8b456d", {"Can of pacific saury", 6754}},
        {"602286df23506e50807090c6", {"PL-15 9x19 16-round magazine", 5644}},
        {"5a788031c585673f2b5c1c79", {"M870 FAB Defense PR870 forestock", 7687}},
        {"5ede475b549eed7c6d5c18fb", {"40x46mm M386 (HE) grenade", 8823}},
        {"57347d5f245977448b40fa81", {"Can of humpback salmon", 6460}},
        {"56742c284bdc2d98058b456d", {"Crickent lighter", 6267}},
        {"5c7d560b2e22160bc12c6139", {"Aimpoint Standard Spacer", 7042}},
        {"5a9ea27ca2750c00137fa672", {"AK Spikes Tactical Dynacomp 7.62x39 muzzle brake & compensator", 7886}},
        {"57ee59b42459771c7b045da5", {"PP-91 Kedr Rotor 43 RIS mount", 8053}},
        {"5c4ee3d62e2216152006f302", {"SV-98 7.62x54R SRVV mk.2.0 compensator", 6555}},
        {"587df3a12459772c28142567", {"SKS 7.62x39 10-round internal box magazine", 7941}},
        {"5d123b70d7ad1a0ee35e0754", {"KAC URX 3/3.1 long panel", 8923}},
        {"5caf17c9ae92150b30006be1", {"ASh-12 12.7x55 muzzle brake", 6726}},
        {"5b3f16c486f7747c327f55f7", {"Armband (White)", 2580}},
        {"5734770f24597738025ee254", {"Strike Cigarettes", 6177}},
        {"5c6d7b3d2e221600114c9b7d", {"AR-15 HK V2 pistol grip", 6319}},
        {"55d484b44bdc2d1d4e8b456d", {"MP-133 12ga 6-shell magazine", 8457}},
        {"5addbffe5acfc4001714dfac", {"M14 SAGE International DCSB mount", 6387}},
        {"5b1faa0f5acfc40dc528aeb5", {"Glock 18C 9x19 pistol slide", 6537}},
        {"5cc70102e4a949035e43ba74", {"FN P90 upper receiver", 6187}},
        {"5751496424597720a27126da", {"Hot Rod energy drink", 7440}},
        {"573475fb24597737fb1379e1", {"Apollon Soyuz cigarettes", 6471}},
        {"56ea6fafd2720b844b8b4593", {"Noveske KX3 5.56x45 flash hider", 5858}},
        {"5b39ffbd5acfc47a8773fb06", {"P226 Hogue rubber pistol grip with finger grooves", 6800}},
        {"57372db0245977685d4159b2", {"5.45x39 PP gs 30 pcs. ammo pack", 6476}},
        {"590c2d8786f774245b1f03f3", {"Screwdriver", 7014}},
        {"5c11046cd174af02a012e42b", {"Wilcox Interface for PVS-7", 7602}},
        {"5fbcc437d724d907e2077d5c", {"MCX thin lightweight stock", 6275}},
        {"58c157c886f774032749fb06", {"TangoDown Stubby BGV-MK46K tactical grip (Stealth Gray)", 5447}},
        {"575062b524597720a31c09a1", {"Green Ice can", 6656}},
        {"5fbcbd02900b1d5091531dd3", {"SIG Sauer Micro Brake 7.62x51 muzzle brake", 6490}},
        {"5dcbe965e4ed22586443a79d", {"Desert Tech .308 flash hider", 6460}},
        {"56083cba4bdc2de22e8b456f", {"MP-133/153 wooden stock", 7787}},
        {"5894a05586f774094708ef75", {"MPX 9x19 30-round magazine", 7720}},
        {"5cc9b815d7f00c000e2579d6", {"AR-15 TROY Claymore 5.56x45 muzzle brake", 5806}},
        {"5a789261c5856700186c65d3", {"M870 Mesa Tactical magazine clamp", 6887}},
        {"5a71e1868dc32e00094b97f3", {"Glock ZEV Tech sight mount cap", 6294}},
        {"55d45d3f4bdc2d972f8b456c", {"MP-133 beechwood forestock", 8328}},
        {"603372b4da11d6478d5a07ff", {"STM-9 9x19 10.5 inch barrel", 6235}},
        {"5d1b198cd7ad1a604869ad72", {"AK TDI AKM-L handguard", 7589}},
        {"609a4b4fe2ff132951242d04", {"VPO-102 Arbalet mount", 6225}},
        {"5d2f261548f03576f500e7b7", {"MP5K 9x19 upper receiver", 7681}},
        {"60338ff388382f4fab3fd2c8", {"STM-9 magwell (Grey)", 6351}},
        {"5d2c829448f0353a5c7d6674", {"WASR-10/63 CAF wooden foregrip", 7576}},
        {"57347cd0245977445a2d6ff1", {"T-Shaped plug", 7155}},
        {"58272d7f2459774f6311ddfd", {"GK-02 12ga muzzle brake", 6897}},
        {"5938603e86f77435642354f4", {"Dorm room 206 key", 6634}},
        {"5780cf9e2459777df90dcb73", {"Dorm room 218 key", 5900}},
        {"5b3baf8f5acfc40dc5296692", {"TT 7.62x25 116mm gilded barrel", 16556}},
        {"59c6633186f7740cf0493bb9", {"AK-74 gas tube", 7430}},
        {"5888996c24597754281f9419", {"DVL-10 M2 muzzle brake", 6398}},
        {"5d123a3cd7ad1a004e476058", {"KAC URX 3/3.1 short panel", 6462}},
        {"57f3c7e024597738ea4ba286", {"PP-91-01 Kedr-B muzzle thread piece", 8444}},
        {"5938504186f7740991483f30", {"Dorm room 203 key", 6071}},
        {"5608373c4bdc2dc8488b4570", {"MP-133 12ga 710mm barrel", 6123}},
        {"57d152ec245977144076ccdf", {"PP-91 ZMZ polymer pistol grip", 8311}},
        {"5d7b6bafa4b93652786f4c76", {"FN Five-seveN MK2 RMR mount", 6640}},
        {"5bb20e70d4351e0035629f8f", {"HK Slim Line Stock", 6796}},
        {"5d1b31ce86f7742523398394", {"Round pliers", 7293}},
        {"5cf79599d7f00c10875d9212", {"Mosin Tiger Rock thread adapter", 5633}},
        {"5b43271c5acfc432ff4dce65", {"Bandana", 5766}},
        {"5addbb825acfc408fb139400", {"M14 JP Enterprises 7.62x51 tactical muzzle brake & compensator", 6436}},
        {"60098af40accd37ef2175f27", {"CAT hemostatic tourniquet", 7662}},
        {"606587bd6d0bd7580617bacc", {"Mk47 ambidextrous charging handle", 6528}},
        {"590c2b4386f77425357b6123", {"Pliers", 7515}},
        {"606587e18900dc2d9a55b65f", {"CMMG buffer tube", 7913}},
        {"5ef5d994dfbc9f3c660ded95", {"M1911A1 Weigand Weig-a-tinny rail mount", 6022}},
        {"571a12c42459771f627b58a0", {"TT-33 7.62x25 TT pistol", 6315}},
        {"5ac72e615acfc43f67248aa0", {"AK-101 5.56x45 muzzle brake & compensator", 6019}},
        {"5ae30bad5acfc400185c2dc4", {"AR-15 rear sight carry handle", 8050}},
        {"573728f324597765e5728561", {"9x18PM SP8 gzh 16 pcs. ammo pack", 6697}},
        {"5b3cbc235acfc4001863ac44", {"Armasight Vulcan MG scope eyecup", 6146}},
        {"5bbdb83fd4351e44f824c44b", {"Mosin Tacfire Tanker Style muzzle brake", 5365}},
        {"58d39b0386f77443380bf13c", {"Aimpoint Micro Spacer High", 5910}},
        {"5beec8c20db834001d2c465c", {"AK-12 stock", 7548}},
        {"5addbb945acfc4001a5fc44e", {"M14 Good Iron 7.62x51 muzzle brake & compensator", 5451}},
        {"591ee00d86f774592f7b841e", {"Axion Kobra dovetail mount", 6728}},
        {"5cf67a1bd7f00c06585fb6f3", {"Mosin Weapon Tuning thread adapter", 6082}},
        {"5a6b59a08dc32e000b452fb7", {"Glock SAI thread protector", 3304}},
        {"5bfd4c980db834001b73449d", {"Mosin carbine rear sight", 5947}},
        {"57ade1442459771557167e15", {"Armacon Baskak stock", 6111}},
        {"5926c0df86f77462f647f764", {"MP5 9x19 upper receiver", 5745}},
        {"5fbcbd6c187fea44d52eda14", {"MCX pistol grip", 6227}},
        {"5bffe7c50db834001d23ece1", {"P226 Axelson tactical Mk.25 pistol slide", 6604}},
        {"560e620e4bdc2d724b8b456b", {"SV-98 muzzle device", 6524}},
        {"5b432be65acfc433000ed01f", {"6B34 anti-fragmentation glasses", 4446}},
        {"5e2af47786f7746d404f3aaa", {"Fleece fabric", 5809}},
        {"57ffa9f4245977728561e844", {"AKS-74U Zenit B-11 handguard", 6093}},
        {"5c471be12e221602b66cd9ac", {"SVDS pistol grip", 5640}},
        {"5c5db6552e2216001026119d", {"MPX 9x19 20-round magazine", 4019}},
        {"5fc4b97bab884124df0cd5e3", {"SilencerCo Omega 45k piston mount adapter", 5908}},
        {"5fce0f9b55375d18a253eff2", {"KRISS Vector side rail", 5356}},
        {"5d2f259b48f0355a844acd74", {"MP5K polymer handguard", 4935}},
        {"5ba264f6d4351e0034777d52", {"MP7 4.6x30 20-round magazine", 5684}},
        {"59e7715586f7742ee5789605", {"Respirator", 5078}},
        {"5a33b652c4a28232996e407c", {"Trijicon RMR high profile mount", 6012}},
        {"5b432b6c5acfc4001a599bf0", {"Deadly Skull mask", 5828}},
        {"6076c87f232e5a31c233d50e", {"?P-155 6-round magazine extension", 6797}},
        {"5cf4fb76d7f00c065703d3ac", {"RTM Pillau tactical foregrip", 5901}},
        {"5df8e4080b92095fd441e594", {"SR-25 7.62x51 upper receiver", 5432}},
        {"5d6d2ef3a4b93618084f58bd", {"RayBench Aviator glasses", 6260}},
        {"5926c36d86f77467a92a8629", {"MP5 Wide Tropical Polymer handguard", 5321}},
        {"57513f9324597720a7128161", {"Grand juice", 6220}},
        {"57616ca52459773c69055192", {"SOK-12 AK-style stock", 4637}},
        {"5ede4739e0350d05467f73e8", {"40x46mm M406 (HE) grenade", 7875}},
        {"5aaa4194e5b5b055d06310a5", {"AK-74 5.45x39 Magpul PMAG 30 GEN M3 30-round magazine", 5232}},
        {"5a0d716f1526d8000d26b1e2", {"AKML 7.62x39 system Izhmash flash hider", 5270}},
        {"5a6b60158dc32e000a31138b", {"Glock 17 9x19 Barrel with compensator", 5471}},
        {"5bfe7fb30db8340018089fed", {"MP-133/153 Taktika Tula 12003 stock adapter", 6662}},
        {"602f85fd9b513876d4338d9c", {"STM-9 magwell", 4378}},
        {"5fbb978207e8a97d1f0902d3", {"KRISS Vector Mk.5 modular rail", 4801}},
        {"544fb37f4bdc2dee738b4567", {"Analgin painkillers", 5621}},
        {"59d790f486f77403cb06aec6", {"Armytek Predator Pro v3 XHP35 HI flashlight", 6615}},
        {"5e569a132642e66b0b68015c", {"SVD CAA DRG L-1 mount rail", 7434}},
        {"6040de02647ad86262233012", {"Army cap (CADPAT)", 7382}},
        {"5ae30c9a5acfc408fb139a03", {"LMT SOPMOD stock", 6706}},
        {"5b4325355acfc40019478126", {"Shemagh (Tan)", 5970}},
        {"5448bd6b4bdc2dfc2f8b4569", {"PM \"Makarov\" 9x18PM pistol", 5525}},
        {"5648b1504bdc2d9d488b4584", {"AK-74 polymer handguard (6P20 Sb.9)", 4211}},
        {"560837154bdc2da74d8b4568", {"MP-133 12ga 660mm barrel with rib", 5501}},
        {"558032614bdc2de7118b4585", {"TangoDown Stubby BGV-MK46K tactical grip (Black)", 6453}},
        {"5b7bebc85acfc43bca706666", {"SA-58/FAL AIM Sports Universal M-LOK handguard", 5484}},
        {"572b7fa524597762b747ce82", {"Lower half-mask", 6633}},
        {"5649ed104bdc2d3d1c8b458b", {"7.62x39 PS gzh 30 pcs. ammo pack", 6979}},
        {"59e35ef086f7741777737012", {"Pack of screws", 6059}},
        {"5f2aa4559b44de6b1b4e68d1", {"RFB 7.62x51 flash hider", 4469}},
        {"58c157be86f77403c74b2bb6", {"TangoDown Stubby BGV-MK46K tactical grip (Flat Dark Earth)", 5501}},
        {"5fb65424956329274326f316", {"KRISS Vector .45 ACP flash hider", 6741}},
        {"5c471c442e221602b542a6f8", {"SVD 7.62x54R 10-round magazine", 5012}},
        {"5d124c01d7ad1a115c7d59fb", {"KAC URX 3/3.1 short panel (Flat Dark Earth)", 5434}},
        {"5ae35b315acfc4001714e8b0", {"M870 Mesa Tactical LEO stock adapter", 6165}},
        {"5bffd7ed0db834001d23ebf9", {"TT PM-Laser DTK-TT muzzle brake", 6247}},
        {"5780d07a2459777de4559324", {"Portable cabin key", 5073}},
        {"5addbba15acfc400185c2854", {"M14 Smith Enterprise Vortex 7.62x51 muzzle brake & compensator", 5185}},
        {"5ef35d2ac64c5d0dfc0571b0", {"M1911A1 hammer", 3405}},
        {"5c61627a2e22160012542c55", {"TOZ-106 scope mount", 4198}},
        {"5cf7acfcd7f00c1084477cf2", {"FN PS90 upper receiver", 5813}},
        {"606587d11246154cad35d635", {"CMMG RipStock buttstock", 5077}},
        {"5bb20de5d4351e0035629e59", {"HK 416A5 Quad Rail handguard", 5264}},
        {"5c0111ab0db834001966914d", {"ME Cylinder 12ga muzzle adapter", 6008}},
        {"5d6d2e22a4b9361bd5780d05", {"Gascan glasses", 5111}},
        {"559ba5b34bdc2d1f1a8b4582", {"SV-98 7.62x54R polymer 10-round magazine", 5021}},
        {"5a32aa0cc4a28232996e405f", {"P226 Trijicon RMR mount", 5708}},
        {"5de8fc0b205ddc616a6bc51b", {"MP9 side rail", 5764}},
        {"5ef1b9f0c64c5d0dfc0571a1", {"M590A1 Mesa Tactical LEO gen.1 stock adapter", 5924}},
        {"5b099ac65acfc400186331e1", {"SA-58/FAL 7.62x51 20-round magazine", 4890}},
        {"6065c6e7132d4d12c81fd8e1", {"AR-10 CMMG SV Brake 7.62x51 muzzle brake", 5471}},
        {"5c5db5962e2216000e5e46eb", {"MPX 9x19 6.5 inch barrel", 5174}},
        {"5c5db5f22e2216000e5e47e8", {"MPX Midwest Industries 4.5 inch M-LOK handguard", 6303}},
        {"5bffcf7a0db83400232fea79", {"TT PM-Laser TT-206 side grips with laser sight", 6782}},
        {"5c0d32fcd174af02a1659c75", {"Pyramex Proximity safety glasses", 5588}},
        {"5909e99886f7740c983b9984", {"USB Adapter", 5050}},
        {"5894a42086f77426d2590762", {"MPX GEN1 handguard", 5003}},
        {"5ea034eb5aad6446a939737b", {"PPSh-41 7.62x25 35-round magazine", 4479}},
        {"55d4b9964bdc2d1d4e8b456e", {"AR-15 A2 pistol grip", 4223}},
        {"5aa2ba19e5b5b00014028f4e", {"Tactical fleece hat", 5724}},
        {"5649ade84bdc2d1b2b8b4587", {"AK polymer pistol grip (6P1 Sb.8)", 5505}},
        {"5bffec120db834001c38f5fa", {"P226 Axelson Tactical MK.25 pistol grip", 6152}},
        {"57d17c5e2459775a5c57d17d", {"Ultrafire WF-501B Flashlight", 5459}},
        {"560836fb4bdc2d773f8b4569", {"MP-133 12ga 660mm barrel", 5005}},
        {"56d5a407d2720bb3418b456b", {"P226R MK25 pistol slide", 6845}},
        {"5df25d3bfd6b4e6e2276dc9a", {"Orsis T-5000M handguard", 5000}},
        {"5df35e59c41b2312ea3334d5", {"Orsis T-5000M aluminium body", 4999}},
        {"5e81ee213397a21db957f6a6", {"M1911A1 front sight", 4333}},
        {"5bb20dbcd4351e44f824c04e", {"HK Extended Latch charging handle", 7470}},
        {"5780cda02459777b272ede61", {"Dorm room 306 key", 4184}},
        {"573474f924597738002c6174", {"Chainlet", 5070}},
        {"573476f124597737e04bf328", {"Wilston cigarettes", 5080}},
        {"5cbda9f4ae9215000e5b9bfc", {"AK-74 polymer handguard (6P20 Sb.9) Plum", 4384}},
        {"57d17e212459775a1179a0f5", {"25mm mount ring", 4200}},
        {"58a5c12e86f7745d585a2b9e", {"MPX GEN1 handguard 4 inch rail", 5162}},
        {"5fc0fa957283c4046c58147e", {"MCX flip-up rear sight", 7003}},
        {"5a7d9104159bd400134c8c21", {"Glock TruGlo TFX front sight", 5421}},
        {"5fbb976df9986c4cff3fe5f2", {"KRISS Vector bottom rail", 5555}},
        {"5cc70146e4a949000d73bf6b", {"FN P90 upper receiver side rail", 4897}},
        {"5c13cef886f774072e618e82", {"Toilet paper", 5196}},
        {"55d448594bdc2d8c2f8b4569", {"MP-133 12ga 610mm barrel", 4902}},
        {"5998597786f77414ea6da093", {"PP-19-01 Vityaz-SN 9x19 muzzle brake/compensator", 6240}},
        {"58949dea86f77409483e16a8", {"MPX A2 9x19 flash hider", 3962}},
        {"5bfe86bd0db83400232fe959", {"FAB Defense protection cap for AGR-870", 7337}},
        {"5e0090f7e9dc277128008b93", {"MP9 9x19 upper receiver", 4880}},
        {"591ae8f986f77406f854be45", {"Yotota car key", 6717}},
        {"59ccfdba86f7747f2109a587", {"AK UltiMAK M1-B gas tube & handguard", 5519}},
        {"5672cb304bdc2dc2088b456a", {"D Size battery", 5487}},
        {"5c503ac82e221602b21d6e9a", {"VPO-101 Vepr Hunter 7.62x51 5-round magazine", 5971}},
        {"5d4041f086f7743cac3f22a7", {"Ortodontox toothpaste", 4868}},
        {"59f99a7d86f7745b134aa97b", {"SR-1MP 9x21 18-round magazine", 4656}},
        {"5fbcbcf593164a5b6278efb2", {"SIG Sauer 7.62x51 3-prong flash hider", 5179}},
        {"602e71bd53a60014f9705bfa", {"AR-15 DLG-123 pistol grip", 4700}},
        {"5c0faeddd174af02a962601f", {"ADAR 2-15 buffer tube", 6468}},
        {"5fbbc3324e8a554c40648348", {"KRISS Vector 9x19 flash hider", 4721}},
        {"5a01c29586f77474660c694c", {"AK 7.62x39 6L10 30-round magazine", 5446}},
        {"5a7037338dc32e000d46d257", {"Glock 9x19 CARVER Custom Decelerator 3 Port compensator", 4928}},
        {"5649aa744bdc2ded0b8b457e", {"AK-74 5.45x39 muzzle brake & compensator (6P20 0-20)", 4117}},
        {"606f26752535c57a13424d22", {"MP-155 Ultima underbarrel mount", 4779}},
        {"5cdeaca5d7f00c00b61c4b70", {"Remington M700 Magpul Pro 700 chassis inline mount", 3985}},
        {"5d40425986f7743185265461", {"Nippers", 5151}},
        {"5df38a5fb74cd90030650cb6", {"Orsis T-5000M pistol grip", 4430}},
        {"5beec3420db834001b095429", {"RPK-16 5.45x39 muzzle brake & compensator", 6027}},
        {"5a6f5e048dc32e00094b97da", {"Glock 9x19 pistol slide", 4106}},
        {"5bc5a372d4351e44f824d17f", {"Mosin AIM Sports MNG rail mount", 6713}},
        {"5c6beec32e221601da3578f2", {"P226 9x19 TJ's Custom compensator", 4967}},
        {"60b52e5bc7d8103275739d67", {"Stich Profi Chimera boonie hat", 5154}},
        {"5e848d51e4dbc5266a4ec63b", {"KS-23M forestock", 5533}},
        {"5a7ad1fb51dfba0013379715", {"Glock 9x19 Lone Wolf LWD-COMP9 compensator", 3862}},
        {"5c0125fc0db834001a669aa3", {"P226 Legion full size pistol slide", 4920}},
        {"5df35e7f2a78646d96665dd4", {"Orsis T-5000M muzzle brake", 5523}},
        {"5e81c519cb2b95385c177551", {"M1911A1 .45 ACP 127mm barrel", 5387}},
        {"55d4ae6c4bdc2d8b2f8b456e", {"High Standard M4SS Stock", 4521}},
        {"603619720ca681766b6a0fc4", {"Army cap (Coyote Tan)", 5323}},
        {"5a7ad0c451dfba0013379712", {"Glock 9x19 Carver Custom 4 Port muzzle brake", 4548}},
        {"6086b5392535c57a13424d70", {"Custom Guns rail guide", 3651}},
        {"5de8f237bbaf010b10528a70", {"MP9 9x19 sound suppressor adapter", 4350}},
        {"5de6558e9f98ac2bc65950fc", {"VPO-215 scope rail mount", 3899}},
        {"58a56f8d86f774651579314c", {"MPX GEN1 handguard 2 inch rail", 5550}},
        {"57513f07245977207e26a311", {"Apple juice", 5268}},
        {"57dc334d245977597164366f", {"AKS-74U dust cover (6P26 Sb.7)", 4219}},
        {"56d5a1f7d2720bb3418b456a", {"P226 9x19 112mm barrel", 6274}},
        {"574db213245977459a2f3f5d", {"SKS rear sight", 4240}},
        {"5d3eb59ea4b9361c284bb4b2", {"FN Five-seveN 5.7x28 threaded barrel", 4200}},
        {"560835c74bdc2dc8488b456f", {"MP-133 12ga 510mm barrel with rib", 17100}},
        {"560836b64bdc2d57468b4567", {"MP-133 12ga 540mm barrel with rib", 4200}},
        {"5649b0544bdc2d1b2b8b458a", {"AK-74 rear sight (6P20 Sb.2)", 3444}},
        {"571659bb2459771fb2755a12", {"AR-15 DI ECS pistol grip (Flat Dark Earth)", 4762}},
        {"5448c1d04bdc2dff2f8b4569", {"5.56x45 Magpul PMAG GEN M3 20 STANAG 20-round magazine", 4396}},
        {"5a6f58f68dc32e000a311390", {"Glock front sight", 4458}},
        {"5d0b5cd3d7ad1a3fe32ad263", {"KMZ 1P59 scope eyecup", 4610}},
        {"5aa2b87de5b5b00016327c25", {"BEAR baseball cap (Green)", 3099}},
        {"5cc700d4e4a949000f0f0f28", {"FN P90 Damage Industries buttpad", 4150}},
        {"5648ac824bdc2ded0b8b457d", {"AK Zenit RP-1 charging handle", 4550}},
        {"5d6d3943a4b9360dbc46d0cc", {"LShZ-2DTM cover", 5174}},
        {"5b3f3af486f774679e752c1f", {"Armband (Blue)", 3190}},
        {"5755356824597772cb798962", {"AI-2 medkit", 4048}},
        {"5448c12b4bdc2d02308b456f", {"PM 9x18PM 90-93 8-round magazine", 4976}},
        {"5ea03e5009aa976f2e7a514b", {"PPSh-41 dust cover", 4708}},
        {"544a38634bdc2d58388b4568", {"AR-15 Colt USGI A2 5.56x45 flash hider", 3264}},
        {"5f3e778efcd9b651187d7201", {"M45A1 polymer pistol grip", 4035}},
        {"60785c0d232e5a31c233d51c", {"MP-155 Ultima pistol grip rubber pad", 4404}},
        {"5addbbb25acfc40015621bd9", {"M14 Yankee Hill Phantom 7.62x51 muzzle brake & compensator", 4012}},
        {"572b7fa124597762b472f9d2", {"Beanie", 5398}},
        {"5c0684e50db834002a12585a", {"TT Hogue-like rubber grip", 3996}},
        {"5ab626e4d8ce87272e4c6e43", {"AKS-74 metal skeletonized stock (6P21 Sb.5)", 29196}},
        {"55d48ebc4bdc2d8c2f8b456c", {"Delta-tek Sprut mount for pump-action shotguns", 6023}},
        {"591382d986f774465a6413a7", {"Dorm room 105 key", 4231}},
        {"5672c92d4bdc2d180f8b4567", {"Dorm room 118 key", 4160}},
        {"5e8708d4ae379e67d22e0102", {"M590 ghost ring front sight", 9371}},
        {"5cbdaf89ae9215000e5b9c94", {"AK-74 5.45x39 6L23 30-round magazine (Plum)", 3637}},
        {"5ac50c185acfc400163398d4", {"AK-74M polymer stock (6P34 Sb.15)", 4973}},
        {"57ffaea724597779f52b3a4d", {"AK Zenit B-12 Mount", 4087}},
        {"5cf50850d7f00c056e24104c", {"AK Strike Industries Enhanced Pistol Grip", 3900}},
        {"560836484bdc2d20478b456e", {"MP-133 12ga 540mm barrel", 3900}},
        {"60228924961b8d75ee233c32", {"PL-15 pistol slide", 3900}},
        {"5914578086f774123569ffa4", {"Dorm room 108 key", 4140}},
        {"5a70366c8dc32e001207fb06", {"Glock Double Diamond flash hider", 4131}},
        {"5fbbc34106bde7524f03cbe9", {"KRISS Vector 9x19 thread protection cap", 3570}},
        {"5de8fbf2b74cd90030650c79", {"MP9 bottom rail", 5035}},
        {"571a282c2459771fb2755a69", {"TT side grips", 4937}},
        {"57dc32dc245977596d4ef3d3", {"AKS-74U wooden handguard (6P26 Sb.6)", 4395}},
        {"5c5db5852e2216003a0fe71a", {"MPX 9x19 4.5 inch barrel", 3800}},
        {"590c2c9c86f774245b1f03f2", {"Construction measuring tape", 4161}},
        {"602a95edda11d6478d5a06da", {"PL-15 9x19 barrel", 3063}},
        {"5c5db6ee2e221600113fba54", {"MPX Maxim Defense CQB telescoping stock", 3750}},
        {"5fb651b52b1b027b1f50bcff", {"Glock .45 ACP 13-round magazine", 4214}},
        {"5abcc328d8ce8700194394f3", {"APB 9x18PM sound suppressor", 3994}},
        {"5d124c1ad7ad1a12227c53a7", {"KAC URX 3/3.1 stopper panel (Flat Dark Earth)", 3744}},
        {"5fc5396e900b1d5091531e72", {"HK UMP side handguard rail", 3296}},
        {"5fc53954f8b6a877a729eaeb", {"HK UMP bottom handguard rail", 3414}},
        {"5998598e86f7740b3f498a86", {"Saiga-9 9x19 muzzle brake/compensator", 4383}},
        {"5cc82796e24e8d000f5859a8", {"FN P90 5.7x28 flash hider", 4501}},
        {"5e81c550763d9f754677befd", {"M1911A1 hammer", 3015}},
        {"5aa2b89be5b5b0001569311f", {"EMERCOM cap", 3138}},
        {"576a7c512459771e796e0e17", {"MP-443 Zenit B-8 mount", 4451}},
        {"5fb6548dd1409e5ca04b54f9", {"KRISS Vector .45 ACP thread protection cap", 4473}},
        {"593858c486f774253a24cb52", {"Pumping station back door key", 3627}},
        {"5a38ee51c4a282000c5a955c", {"TOZ-106 20ga MC 20-01 Sb.3 2-shot magazine", 1753}},
        {"5cadd954ae921500103bb3c2", {"M9A3 Sight Mount rear sight rail", 3600}},
        {"60361b5a9a15b10d96792291", {"Army cap (UCP)", 6425}},
        {"57a349b2245977762b199ec7", {"Pumping station front door key", 3542}},
        {"5bead2e00db834001c062938", {"MPL-50 entrenching tool", 3560}},
        {"5df35ea9c41b2312ea3334d8", {"Orsis T-5000M long length rail", 2953}},
        {"5a705e128dc32e000d46d258", {"Glock 9x19 Alpha Wolf bullnose compensator", 3026}},
        {"5ae099875acfc4001714e593", {"Mosin front sight", 8932}},
        {"5aafa1c2e5b5b00015042a56", {"M1A SOCOM 16 7.62x51 muzzle brake & compensator", 4309}},
        {"5780cf722459777a5108b9a1", {"Dorm room 308 key", 3524}},
        {"5ab8f04f86f774585f4237d8", {"Tactical sling bag", 3633}},
        {"5e21ca18e4d47f0da15e77dd", {"AK 5.56x45 CNC Warrior muzzle device adapter", 3565}},
        {"5a6b592c8dc32e00094b97bf", {"Glock 9x19 Double Diamond thread protector", 4399}},
        {"5cc700cae4a949035e43ba72", {"FN P90 butt pad", 3595}},
        {"57e26ea924597715ca604a09", {"Bars A-2607 Damascus knife", 3988}},
        {"5b7d68af5acfc400170e30c3", {"SA-58 7.62x51 Austrian style muzzle brake", 3303}},
        {"5aaa5e60e5b5b000140293d6", {"5.56x45 Magpul PMAG GEN M3 10 STANAG 10-round magazine", 2372}},
        {"57e26fc7245977162a14b800", {"Bars A-2607 - 95x18 knife", 3540}},
        {"56d5a2bbd2720bb8418b456a", {"P226 polymer pistol grip (Black)", 3300}},
        {"56e33680d2720be2748b4576", {"Transformer Bag", 3302}},
        {"572b7d8524597762b472f9d1", {"Baseball cap", 3844}},
        {"5cadc55cae921500103bb3be", {"M9A3 9x19 pistol slide", 3166}},
        {"5b7d671b5acfc43d82528ddd", {"SA-58/FAL Belgian style handguard", 2983}},
        {"60361a7497633951dc245eb4", {"Army cap (Flora)", 3710}},
        {"55d5f46a4bdc2d1b198b4567", {"AR-15 A2 rear sight", 3417}},
        {"5c503b1c2e221602b21d6e9d", {"VPO-101 Vepr Hunter rear sight", 3128}},
        {"5938994586f774523a425196", {"Dorm room 103 key", 3065}},
        {"5649af094bdc2df8348b4586", {"AK-74 dust cover (6P20 0-1)", 4299}},
        {"59d625f086f774661516605d", {"AK 7.62x39 30-round magazine (issued '55 or later)", 2697}},
        {"57838f0b2459774a256959b2", {"VSS 9x39 6L24 10-round magazine", 2971}},
        {"576169e62459773c69055191", {"SOK-12 polymer handguard (Sb.7-1)", 4795}},
        {"57dc324a24597759501edc20", {"AKS-74U 5.45x39 muzzle brake (6P26 0-20)", 3404}},
        {"572b7f1624597762ae139822", {"Balaclava", 3006}},
        {"5efb0c1bd79ff02a1f5e68d9", {"7.62x51mm M993", 3208}},
        {"5b4327aa5acfc400175496e0", {"MIL-TEC panama hat", 3150}},
        {"607d5aa50494a626335e12ed", {"MP-155 walnut forestock", 6600}},
        {"5a01ad4786f77450561fda02", {"AK Kiba Arms VDM CS gas tube", 2904}},
        {"599860e986f7743bb57573a6", {"PP-19-01 Vityaz-SN rear sight", 2900}},
        {"5ef366938cef260c0642acad", {"M1911A1 Pachmayr American Legend grip #423", 2900}},
        {"564ca99c4bdc2d16268b4589", {"AK-74 5.45x39 6L20 30-round magazine", 2735}},
        {"5b3f3b0186f774021a2afef7", {"Armband (Green)", 3444}},
        {"5a6086ea4f39f99cd479502f", {"7.62x51mm M61", 3007}},
        {"5b099b7d5acfc400186331e4", {"SA-58 7.62x51 3 prong trident flash hider", 3065}},
        {"56d5a661d2720bd8418b456b", {"P226 front sight", 4279}},
        {"57616a9e2459773c7a400234", {"SOK-12 12/76 sb.5 5-round magazine", 3175}},
        {"5ba36f85d4351e0085325c81", {"NSPU-M scope eyecup", 2494}},
        {"5b7d6c105acfc40015109a5f", {"SA-58/FAL standard dust cover", 3553}},
        {"55d44fd14bdc2d962f8b456e", {"AR-15 charging handle", 2655}},
        {"60337f5dce399e10262255d1", {"STM-9 9x19 muzzle brake", 2849}},
        {"544fb3364bdc2d34748b456a", {"Immobilizing splint", 2577}},
        {"5e023d48186a883be655e551", {"7.62x54R BS", 2284}},
        {"57d14e1724597714010c3f4b", {"PP-91 9x18PM 20-round magazine", 2907}},
        {"5aa2b8d7e5b5b00014028f4a", {"Police cap", 4753}},
        {"5a0abb6e1526d8000a025282", {"AK 7.62x39 Taktika Tula muzzle adapter", 2631}},
        {"606eef46232e5a31c233d500", {"MP-155 Ultima pistol grip", 2608}},
        {"5adf23995acfc400185c2aeb", {"MC 20-01 stock", 6739}},
        {"5b7d678a5acfc4001a5c4022", {"SA-58 pistol grip", 2744}},
        {"5cdaa99dd7f00c002412d0b2", {"ASh-12 polymer handguard", 4455}},
        {"576a5ed62459771e9c2096cb", {"MP-443 9x19 18-round magazine", 2455}},
        {"5fb655a72b1b027b1f50bd06", {"KRISS Vector Pistol Sling adapter", 2783}},
        {"5998529a86f774647f44f421", {"Saiga-9 9x19 10-round magazine", 1863}},
        {"571a29dc2459771fb2755a6a", {"TT 7.62x25 tt-105 8-round magazine", 6758}},
        {"55d480c04bdc2d1d4e8b456a", {"AK-74 5.45x39 6L23 30-round magazine", 2609}},
        {"5c0006470db834001a6697fe", {"P226 Emperor Scorpion pistol grip", 2450}},
        {"5a788089c5856700142fdd9c", {"M870 SpeedFeed short handguard", 2411}},
        {"5c05295e0db834001a66acbb", {"Trijicon ACOG backup rear sight", 2400}},
        {"58272b842459774abc128d50", {"SOK-12 CSS rear sight rail mount", 2400}},
        {"576a63cd2459771e796e0e11", {"MP-443 polymer pistol grip", 2730}},
        {"59e898ee86f77427614bd225", {"VPO-209 wooden handguard", 5123}},
        {"5a718b548dc32e000d46d262", {"Glock 9x19 17-round magazine", 2155}},
        {"5751a25924597722c463c472", {"Army bandage", 2289}},
        {"60361b0b5a45383c122086a1", {"Army cap (Desert)", 4197}},
        {"57616c112459773cce774d66", {"SOK-12 dust cover (Sb.0-2)", 6245}},
        {"5c0673fb0db8340023300271", {"PP-19-01 Vityaz-SN 9x19 PUFGUN SG-919 20 20-round magazine", 2388}},
        {"56e05a6ed2720bd0748b4567", {"PB bakilte side grips", 3058}},
        {"59e770f986f7742cbe3164ef", {"Army cap", 2280}},
        {"601aa3d2b2bcb34913271e6d", {"7.62x39mm MAI AP", 2279}},
        {"56d5a77ed2720b90418b4568", {"P226 rear sight", 2407}},
        {"5c1127d0d174af29be75cf68", {"12/70 RIP 5 shell ammo box", 4541}},
        {"5dff77c759400025ea5150cf", {"UTG 25mm ring mount", 3165}},
        {"55d4837c4bdc2d1d4e8b456c", {"AK-74/Saiga 5.45x39 10-round magazine", 1965}},
        {"5df35eb2b11454561e3923e2", {"Orsis T-5000M medium length rail", 3086}},
        {"5ba26835d4351e0035628ff5", {"4.6x30mm AP SX", 2206}},
        {"5a38ed75c4a28232996e40c6", {"TOZ-106 20ga MC 20-01 Sb.3 4-shot magazine", 2806}},
        {"601949593ae8f707c4608daa", {"5.56x45mm SSA AP", 2189}},
        {"5bfd4cc90db834001d23e846", {"Mosin 7.62x54R sawn-off 200mm barrel", 2100}},
        {"59e6227d86f77440d64f5dc2", {"VPO-136 Vepr KM wooden stock", 2566}},
        {"59e6449086f7746c9f75e822", {"AKM Molot dust cover", 5318}},
        {"54527ac44bdc2d36668b4567", {"5.56x45mm M855A1", 2040}},
        {"5a17fb03fcdbcbcae668728f", {"APS 9x18PM 20-round magazine", 3227}},
        {"5b7bed205acfc400161d08cc", {"SA-58/FAL original Austrian handguard", 2539}},
        {"5a71e0fb8dc32e00094b97f2", {"Glock ZEV Tech rear sight", 2000}},
        {"5bf3f59f0db834001a6fa060", {"RPK-16 rear sight", 14370}},
        {"5b40e5e25acfc4001a599bea", {"BEAR baseball cap (Black)", 4092}},
        {"5efb0da7a29a85116f6ea05f", {"9x19mm PBP gzh", 1814}},
        {"5fc382b6d6fa9c00c571bbc3", {".338 Lapua Magnum TAC-X", 1830}},
        {"557ff21e4bdc2d89578b4586", {"Tactical glasses", 2551}},
        {"5aa2b986e5b5b00014028f4c", {"Dundukk sport sunglasses", 2257}},
        {"5b3f7c005acfc4704b4a1de8", {"PU 3.5x ring mount", 1877}},
        {"5efb0cabfb3e451d70735af5", {".45 ACP AP", 1755}},
        {"5cc80f38e4a949001152b560", {"5.7x28mm SS190", 2002}},
        {"5a6b5f868dc32e000a311389", {"Glock 17 9x19 barrel", 3031}},
        {"5649ad3f4bdc2df8348b4585", {"AK bakelite pistol grip (6P4 Sb.8V)", 4675}},
        {"59e690b686f7746c9f75e848", {"5.56x45mm M995", 1953}},
        {"544fb25a4bdc2dfb738b4567", {"Aseptic bandage", 1879}},
        {"5ba2678ad4351e44f824b344", {"4.6x30mm FMJ SX", 1611}},
        {"5cadf6eeae921500134b2799", {"12.7x55 mm PS12B", 2055}},
        {"5e85a9a6eacf8c039e4e2ac1", {"23x75mm \"Shrapnel-10\" buckshot", 1718}},
        {"5fc382c1016cce60e8341b20", {".338 Lapua Magnum UPZ", 1048}},
        {"5b7bef1e5acfc43d82528402", {"SA-58/FAL 7.62x51 10-round magazine", 2166}},
        {"5fd20ff893a8961fc660a954", {".300 AAC Blackout AP", 1732}},
        {"5882163224597757561aa920", {"MP-153 12ga 7-shell magazine extension", 1663}},
        {"5cadc1c6ae9215000f2775a4", {"M9A3 9x19 threaded barrel", 1660}},
        {"5addba3e5acfc4001669f0ab", {"M1A SA National Match .062 Blade front sight", 1628}},
        {"5c11279ad174af029d64592b", {"5.56x45 Warmageddon 20 pcs. ammo pack", 2057}},
        {"5ede475339ee016e8c534742", {"40x46mm M576 (MP-APERS) grenade", 1595}},
        {"5cf79389d7f00c10941a0c4d", {"Mosin Custom thread adapter", 1500}},
        {"5c07b36c0db834002a1259e9", {"P226 Meprolight TRU-DOT Night front sight", 1500}},
        {"5e81c6a2ac2bb513793cdc7f", {"M1911A1 trigger", 1167}},
        {"5e831507ea0a7c419c2f9bd9", {"Esmarch tourniquet", 1398}},
        {"5a608bf24f39f98ffc77720e", {"7.62x51mm M62", 1532}},
        {"5b0bc22d5acfc47a8607f085", {"SA-58 Holland type rear sight", 1420}},
        {"5c07b3850db834002330045b", {"P226 Meprolight TRU-DOT Night rear sight", 1400}},
        {"5e023d34e8a400319a28ed44", {"7.62x54R BT gzh", 1483}},
        {"591c4e1186f77410354b316e", {"Axion Kobra sight shade", 2418}},
        {"59e0d99486f7744a32234762", {"7.62x39mm BP gzh", 1225}},
        {"5c0d688c86f77413ae3407b2", {"9x39mm BP gs", 1264}},
        {"5a71e0048dc32e000c52ecc8", {"Glock ZEV Tech front sight", 1300}},
        {"5efb0fc6aeb21837e749c801", {".45 ACP Hydra-Shok", 1027}},
        {"5cc80f53e4a949000e1ea4f8", {"5.7x28mm L191", 1305}},
        {"5f647f31b6238e5dd066e196", {"23x75mm Shrapnel-25 buckshot", 1329}},
        {"57c9a89124597704ee6faec1", {"P226 Combat pistol grip (Flat Dark Earth)", 1247}},
        {"5882163824597757561aa922", {"MP-153 12ga 6-shell magazine extension", 1221}},
        {"5ea2a8e200685063ec28c05a", {".45 ACP RIP", 1542}},
        {"56dff026d2720bb8668b4567", {"5.45x39mm BS gs", 1098}},
        {"5d6e68a8a4b9360b6c0d54e2", {"12/70 AP-20 Slug", 1232}},
        {"5cc80f67e4a949035e43bbba", {"5.7x28mm SB193", 1644}},
        {"5cf639aad7f00c065703d455", {"NPZ USP-1 scope eyecup", 1475}},
        {"5cffa483d7ad1a049e54ef1c", {"100 rounds belt", 1030}},
        {"5c0d5e4486f77478390952fe", {"5.45x39mm PPBS gs \"Igolnik\"", 990}},
        {"5c0d668f86f7747ccb7f13b2", {"9x39mm SPP gs", 1030}},
        {"57372d1b2459776862260581", {"5.45x39 PP gs 120 pcs. ammo pack", 1000}},
        {"57372ac324597767001bc261", {"5.45x39 BP gs 30 pcs. ammo pack", 1000}},
        {"57372f5c24597769917c0131", {"5.45x39 T gs 30 pcs. ammo pack", 1000}},
        {"573724b42459776125652ac2", {"9x18PM P gzh 16 pcs. ammo pack", 1000}},
        {"5737273924597765dd374461", {"9x18PM PSO gzh 16 pcs. ammo pack", 1000}},
        {"5737266524597761006c6a8c", {"9x18mm PM PRS gs ammo box, 16 cartridges", 1000}},
        {"5737280e24597765cc785b5c", {"9x18PM PSV 16 pcs. ammo pack", 1000}},
        {"5737287724597765e1625ae2", {"9x18PM RG028 gzh 16 pcs. ammo pack", 1000}},
        {"57372e73245977685d4159b4", {"5.45x39 PS gs 120 pcs. ammo pack", 1000}},
        {"5737260b24597761224311f2", {"9x18mm PM PPT gzh ammo box, 16 cartridges", 1000}},
        {"5737300424597769942d5a01", {"5.45x39 US gs 120 pcs. ammo pack", 1000}},
        {"5737330a2459776af32363a1", {"5.45x39 FMJ 30 pcs. ammo pack", 1000}},
        {"5737339e2459776af261abeb", {"5.45x39 HP 30 pcs. ammo pack", 1000}},
        {"57372ee1245977685d4159b5", {"5.45x39 T gs 120 pcs. ammo pack", 1000}},
        {"573733c72459776b0b7b51b0", {"5.45x39 SP 30 pcs. ammo pack", 1000}},
        {"57372b832459776701014e41", {"5.45x39 BP gs 120 pcs. ammo pack", 1000}},
        {"57372bad245977670b7cd242", {"5.45x39 BS gs 120 pcs. ammo pack", 1000}},
        {"57372f2824597769a270a191", {"5.45x39 T gs 120 pcs. ammo pack", 1000}},
        {"573726d824597765d96be361", {"9x18PM PS gs PPO 16 pcs. ammo pack", 1000}},
        {"57372d4c245977685a3da2a1", {"5.45x39 PP gs 120 pcs. ammo pack", 1000}},
        {"57372e94245977685648d3e1", {"5.45x39 PS gs 120 pcs. ammo pack", 1000}},
        {"57372fc52459776998772ca1", {"5.45x39 US gs 120 pcs. ammo pack", 1000}},
        {"5c925fa22e221601da359b7b", {"9x19mm AP 6.3", 1015}},
        {"5a26ac0ec4a28200741e1e18", {"9x21mm BT gzh", 787}},
        {"5e85aa1a988a8701445df1f5", {"23x75mm \"Barrikada\" slug", 1551}},
        {"5d70e500a4b9364de70d38ce", {"30x29 mm VOG-30", 980}},
        {"60228a850ddce744014caf69", {"PL-15 extended front sight", 950}},
        {"602293f023506e50807090cb", {"PL-15 extended rear sight", 950}},
        {"59e6284f86f77440d569536f", {"VPO-136 Vepr KM wooden handguard", 2405}},
        {"5882163e24597758206fee8c", {"MP-153 12ga 5-shell magazine extension", 902}},
        {"60229948cacb6b0506369e27", {"PL-15 rear sight", 900}},
        {"59e5d83b86f7745aed03d262", {"AK 7.62x39 ribbed metal 10-round magazine", 787}},
        {"5d6e68c4a4b9361b93413f79", {"12/70 shell with .50 BMG bullet", 1919}},
        {"59e6318286f77444dd62c4cc", {"AK bakelite pistol grip", 4890}},
        {"5ba26844d4351e00334c9475", {"4.6x30mm Subsonic SX", 1336}},
        {"59e77a2386f7742ee578960a", {"7.62x54R PS", 865}},
        {"560d61e84bdc2da74d8b4571", {"7.62x54R SNB", 829}},
        {"59e6906286f7746c9f75e847", {"5.56x45mm M856A1", 940}},
        {"60228a76d62c9b14ed777a66", {"PL-15 front sight", 800}},
        {"59d650cf86f7741b846413a4", {"AKM rear sight (6P1 Sb.2-1)", 3081}},
        {"5c0d56a986f774449d5de529", {"9x19mm RIP", 747}},
        {"57a0e5022459774d1673f889", {"9x39 mm SP6 gs", 793}},
        {"5cc80f8fe4a949033b0224a2", {"5.7x28mm SS197SR", 843}},
        {"5fbcc640016cce60e8341acc", {"MCX charging handle", 733}},
        {"5d6e68dea4b9361bcc29e659", {"12/70 Dual Sabot Slug", 325}},
        {"58dd3ad986f77403051cba8f", {"7.62x51mm M80", 652}},
        {"5efb0e16aeb21837e749c7ff", {"9x19mm QuakeMaker", 557}},
        {"5a6f5d528dc32e00094b97d9", {"Glock rear sight", 604}},
        {"5e81ee4dcb2b95385c177582", {"M1911A1 rear sight", 604}},
        {"59f32c3b86f77472a31742f0", {"Dogtag USEC", 600}},
        {"59f32bb586f774757e1e8442", {"Dogtag BEAR", 600}},
        {"59e8a00d86f7742ad93b569c", {"VPO-209 thread protector", 600}},
        {"5d270ca28abbc31ee25ee821", {"Remington M700 thread protection cap (Stainless steel)", 600}},
        {"5aba637ad8ce87001773e17f", {"APS rear sight", 600}},
        {"5cc80f79e4a949033c7343b2", {"5.7x28mm SS198LF", 653}},
        {"5cadf6ddae9215051e1c23b2", {"12.7x55 mm PS12", 655}},
        {"56dff061d2720bb5668b4567", {"5.45x39mm BT gs", 597}},
        {"5f0596629e22f464da6bbdd9", {".366 TKM AP-M", 527}},
        {"5e023e88277cce2b522ff2b1", {"7.62x51mm Ultra Nosler", 462}},
        {"5b3f3b0e86f7746752107cda", {"Armband (Yellow)", 621}},
        {"5a43957686f7742a2c2f11b0", {"Santa's hat", 500}},
        {"5a43943586f77416ad2f06e2", {"Ded Moroz hat", 500}},
        {"5cadc390ae921500126a77f1", {"M9A3 thread protection cap", 4077}},
        {"5d270b3c8abbc3105335cfb8", {"Remington M700 thread protection cap", 500}},
        {"59e8977386f77415a553c453", {"VPO-209 rear sight", 688}},
        {"573719df2459775a626ccbc2", {"9x18mm PM PBM gzh", 448}},
        {"5a269f97c4a282000b151807", {"9x21mm PS gzh", 528}},
        {"5e81f423763d9f754677bf2e", {".45 ACP Match FMJ", 444}},
        {"5a0eb980fcdbcb001a3b00a6", {"AKMB system rear sight", 471}},
        {"5a0ed824fcdbcb0176308b0d", {"AKMP system rear sight device", 470}},
        {"59e4d3d286f774176a36250a", {"7.62x39mm HP", 408}},
        {"5cc86840d7f00c002412c56c", {"5.7x28mm R37.X", 425}},
        {"5efb0d4f4bc50b58e81710f3", {".45 ACP Lasermatch FMJ", 521}},
        {"5736026a245977644601dc61", {"7.62x25mm TT P gl", 405}},
        {"587de5ba2459771c0f1e8a58", {"P226 thread protection cap", 400}},
        {"5a38ebd9c4a282000d722a5b", {"20/70 7.5mm Buckshot", 187}},
        {"5a3c16fe86f77452b62de32a", {"9x19mm Luger CCI", 442}},
        {"57371aab2459775a77142f22", {"9x18mm PMM PstM gzh", 362}},
        {"573725b0245977612125bae2", {"9x18mm PM Ppe gzh ammo box, 16 cartridges", 13234}},
        {"5cc86832d7f00c000d3a6e6c", {"5.7x28mm R37.F", 407}},
        {"573718ba2459775a75491131", {"9x18mm PM BZhT gzh", 391}},
        {"5d6e6a5fa4b93614ec501745", {"20/70 Devastator Slug", 368}},
        {"5d6e67fba4b9361bc73bc779", {"12/70 6.5mm Express buckshot", 471}},
        {"60194943740c5d77f6705eea", {"5.56x45mm MK 318 Mod 0 (SOST)", 366}},
        {"5a26ac06c4a282000c5a90a8", {"9x21mm PE gzh", 298}},
        {"57372140245977611f70ee91", {"9x18mm PM SP7 gzh", 400}},
        {"56dfef82d2720bbd668b4567", {"5.45x39mm BP gs", 343}},
        {"54527a984bdc2d4e668b4567", {"5.56x45mm M855", 321}},
        {"5d6e6911a4b9361bd5780d52", {"12/70 Flechette", 418}},
        {"5d6e68e6a4b9361c140bcfe0", {"12/70 FTX Custom Lite Slug", 262}},
        {"5d6e6806a4b936088465b17e", {"12/70 8.5mm \"Magnum\" Buckshot", 368}},
        {"5d6e6a42a4b9364f07165f52", {"20/70 \"Poleva-6u\" slug", 220}},
        {"5e81c539cb2b95385c177553", {"M1911A1 slide stop", 300}},
        {"5e023cf8186a883be655e54f", {"7.62x54R T-46M", 320}},
        {"5887431f2459777e1612938f", {"7.62x54R LPS gzh", 287}},
        {"5cadf6e5ae921500113bb973", {"12.7x55 mm PS12A", 322}},
        {"59e4d24686f7741776641ac7", {"7.62x39mm US gzh", 457}},
        {"5c0d591486f7744c505b416f", {"12/70 RIP", 408}},
        {"57a0dfb82459774d3078b56c", {"9x39 mm SP5 gs", 250}},
        {"59e6658b86f77411d949b250", {".366 TKM Geksa", 197}},
        {"5fbe3ffdf8b6a877a729ea82", {".300 AAC Blackout BCP FMJ", 261}},
        {"5d6e68d1a4b93622fe60e845", {"12/70 SuperFormance HP Slug", 207}},
        {"5a26abfac4a28232980eabff", {"9x21mm P gzh", 224}},
        {"56d59d3ad2720bdb418b4577", {"9x19mm Pst gzh", 323}},
        {"573720e02459776143012541", {"9x18mm PM RG028 gzh", 242}},
        {"59e68f6f86f7746c9f75e846", {"5.56x45mm M856", 222}},
        {"5d6e6891a4b9361bd473feea", {"12/70 \"Poleva-3\" Slug", 135}},
        {"5c0d5ae286f7741e46554302", {"5.56x45mm Warmageddon", 213}},
        {"5737218f245977612125ba51", {"9x18mm PM SP8 gzh", 234}},
        {"5737207f24597760ff7b25f2", {"9x18mm PM PSV", 200}},
        {"5d6e689ca4b9361bc8618956", {"12/70 \"Poleva-6u\" Slug", 272}},
        {"5d6e68b3a4b9361bca7e50b5", {"12/70 Copper Sabot Premier HP Slug", 192}},
        {"57371b192459775a9f58a5e0", {"9x18mm PM PPe gzh", 3798}},
        {"573601b42459776410737435", {"7.62x25mm TT LRN", 160}},
        {"5d6e6a53a4b9361bd473feec", {"20/70 \"Poleva-3\" slug", 160}},
        {"5e023e53d4353e3302577c4c", {"7.62x51mm BCP FMJ", 126}},
        {"57371f8d24597761006c6a81", {"9x18mm PM PSO gzh", 102}},
        {"5d6e6a05a4b93618084f58d0", {"20/70 Star Slug", 201}},
        {"569668774bdc2da2298b4568", {"Euros", 142}},
        {"56dff2ced2720bb4668b4567", {"5.45x39mm PP gs", 152}},
        {"5e023e6e34d52a55c3304f71", {"7.62x51mm TCW SP", 125}},
        {"5696686a4bdc2da3298b456a", {"Dollars", 123}},
        {"5c3df7d588a4501f290594e5", {"9x19mm T gzh", 120}},
        {"59e6918f86f7746c9f75e849", {"5.56x45mm MK 255 Mod 0 (RRLP)", 118}},
        {"5ba26812d4351e003201fef1", {"4.6x30mm Action SX", 148}},
        {"59e655cb86f77411dc52a77b", {".366 TKM Eko", 141}},
        {"56dff3afd2720bba668b4567", {"5.45x39mm PS gs", 97}},
        {"5d6e6869a4b9361c140bcfde", {"12/70 Grizzly 40 Slug", 93}},
        {"5656d7c34bdc2d9d198b4587", {"7.62x39mm PS gzh", 92}},
        {"59e6920f86f77411d82aa167", {"5.56x45mm FMJ", 106}},
        {"56dff216d2720bbd668b4568", {"5.45x39mm HP", 102}},
        {"5735ff5c245977640e39ba7e", {"7.62x25mm TT FMJ43", 72}},
        {"59e4cf5286f7741778269d8a", {"7.62x39mm T-45M1 gzh", 94}},
        {"56dff4ecd2720b5f5a8b4568", {"5.45x39mm US gs", 69}},
        {"573603562459776430731618", {"7.62x25mm TT Pst gzh", 70}},
        {"59e6927d86f77411da468256", {"5.56x45mm HP", 86}},
        {"573602322459776445391df1", {"7.62x25mm TT LRNPC", 68}},
        {"56dff421d2720b5f5a8b4567", {"5.45x39mm SP", 76}},
        {"573603c924597764442bd9cb", {"7.62x25mm TT PT gzh", 63}},
        {"58864a4f2459770fcc257101", {"9x19mm PSO gzh", 797}},
        {"58820d1224597753c90aeb13", {"12/70 Lead slug", 59}},
        {"5735fdcd2459776445391d61", {"7.62x25mm TT AKBS", 49}},
        {"5737201124597760fc4431f1", {"9x18mm PM Pst gzh", 176}},
        {"59e6542b86f77411dc52a77a", {".366 TKM FMJ", 44}},
        {"5d6e695fa4b936359b35d852", {"20/70 5.6mm Buckshot", 100}},
        {"560d5e524bdc2d25448b4571", {"12/70 7mm buckshot", 43}},
        {"57371eb62459776125652ac1", {"9x18mm PM PRS gs", 39}},
        {"5d6e69c7a4b9360b6c0d54e4", {"20/70 7.3mm Buckshot", 62}},
        {"5d6e6772a4b936088465b17c", {"12/70 5.25mm Buckshot", 35}},
        {"56dff0bed2720bb0668b4567", {"5.45x39mm FMJ", 41}},
        {"57371f2b24597761224311f1", {"9x18mm PM PS gs PPO", 38}},
        {"56dff4a2d2720bbd668b456a", {"5.45x39mm T gs", 31}},
        {"56dff338d2720bbd668b4569", {"5.45x39mm PRS gs", 35}},
        {"5d6e69b9a4b9361bc8618958", {"20/70 6.2mm Buckshot", 107}},
        {"573719762459775a626ccbc1", {"9x18mm PM P gzh", 49}},
        {"5449016a4bdc2d6f028b456f", {"Roubles", 0}},


gabbo200 6th November 2021 01:53 AM

Is it writing to stamina still safe?

icetencer 6th November 2021 02:01 AM

Quote:

Originally Posted by gabbo200 (Post 3288154)
Is it writing to stamina still safe?

my buddy has infinite stamina currently and hes not banned so :motiass:

bhehe6813 6th November 2021 03:18 AM

Quote:

Originally Posted by gabbo200 (Post 3288154)
Is it writing to stamina still safe?

Yes, safe. Perhaps let yourself become exhausted so that you are still sending exhausted packets occassionally :)

gabbo200 6th November 2021 03:52 AM

Quote:

Originally Posted by bhehe6813 (Post 3288208)
Yes, safe. Perhaps let yourself become exhausted so that you are still sending exhausted packets occassionally :)

Until stamina reaches 0 or just until the stamina bar becomes red? It�s better just to replace stamina or do I have to write into hands stamina and oxygen too?

Thank you guys for your feedback! (:

cxtgirl 6th November 2021 05:45 PM

does anyone know how to find and null materials by using the material dictionary?

Code:

const auto renderer = driver->read<uintptr_t>( player.address + 0x398 ); // rendererArray

const auto material_dictionary = driver->read<uintptr_t>( renderer + 0x140 );


RonaldWeezly 7th November 2021 03:10 PM

Anyone got the address of loot list? Has it changed or have I fucked something up?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

cxtgirl 7th November 2021 03:17 PM

Quote:

Originally Posted by RonaldWeezly (Post 3289491)
Anyone got the address of loot list? Has it changed or have I fucked something up?

gameworld + 0x60

bhehe6813 7th November 2021 03:47 PM

Quote:

Originally Posted by gabbo200 (Post 3288222)
Until stamina reaches 0 or just until the stamina bar becomes red? It�s better just to replace stamina or do I have to write into hands stamina and oxygen too?

Thank you guys for your feedback! (:

I do when red.

hollow 10th November 2021 09:35 AM

https://i.imgur.com/qk7MtaL.png

are they shitposting? almost nothing changed in terms of structure

Code:

EFT.GameWorld.Grenades = 0xE8

EFT.Player.Profile = 0x498
EFT.Player.Physical = 0x4A8

EFT.Player._healthController = 0x4D0
EFT.Player._inventoryController = 0x4E0
EFT.Player._handsController = 0x4E8

EFT.ClientFirearmController.OnlineShotList = 0x2F0

EFT.InventoryLogic.Weapon._magSlotCache = 0xA8

GOM: 0x17F2CE8

RangeMachine 10th November 2021 11:58 AM

Code:

namespace game_object_manager
{
        const offset_t tagged_object_ = 0x18;
        const offset_t last_tagged_object_ = 0x10;
        const offset_t active_object_ = 0x28;
        const offset_t last_active_object_ = 0x20;
}

namespace camera
{
        const offset_t view_matrix_ = 0xdc;
        const offset_t view_fov_ = 0x15c;
        const offset_t aspect_ratio_ = 0x4c8;
}


krembo 10th November 2021 12:31 PM

New GOM sig:
Code:

0x74 0x15 0x48 0x8B 0x05 ?? ?? ?? ?? 0x66 0x83 0xF9 0x05 0x48 0x8D

failnoobgamer 10th November 2021 01:24 PM

Whats the new offsets to get position of grenade

nvm fixed it

sep333 10th November 2021 01:37 PM

unity::obtain_objects(*reinterpret_cast<void**>(OFFSET::uGameManager), true, E("GameWorld"));
unity::obtain_objects(*reinterpret_cast<void**>(OFFSET::uGameManager), false, E("FPS Camera"));
Has this failed

RangeMachine 10th November 2021 01:45 PM

Quote:

Originally Posted by sep333 (Post 3292046)
unity::obtain_objects(*reinterpret_cast<void**>(OFFSET::uGameManager), true, E("GameWorld"));
unity::obtain_objects(*reinterpret_cast<void**>(OFFSET::uGameManager), false, E("FPS Camera"));
Has this failed

Look at stuff I posted about GameObjectManager.

sep333 10th November 2021 02:04 PM

Quote:

Originally Posted by RangeMachine (Post 3292051)
Look at stuff I posted about GameObjectManager.

Thank you friend. I forgot that you have to enter the game to generate GameWorld. and [I�m very friendly]

numagomedov 10th November 2021 02:05 PM

anyone have new camera manager inside UnityPlayer.dll? 48 8B 15 ? ? ? ? 48 8B 4A 10 broke after this update
talking about Escape from Tarkov Reversal, Structs and Offsets

nvm found it is 0x1792540 now

anyones ESP / game lagging hard after this update? I updated all accordingly out of nowhere fps drops to hell
also game takes 11gb of memory wtf

aeonixlegit 10th November 2021 06:27 PM

does something related to player & item position has changed?
i was using for players: bonematrix ] 0x20 ] 0x10 ] 0x38 ] 0xb0 (vec3)
and for items: itemprofile ] 0x30 ] 0x30] 0x8 ] 0x38 ] 0bx0 (vec3)

numagomedov 10th November 2021 06:41 PM

Quote:

Originally Posted by aeonixlegit (Post 3292257)
does something related to player & item position has changed?
i was using for players: bonematrix ] 0x20 ] 0x10 ] 0x38 ] 0xb0 (vec3)
and for items: itemprofile ] 0x30 ] 0x30] 0x8 ] 0x38 ] 0bx0 (vec3)

no only all above

ZeusLord 10th November 2021 06:45 PM

Code:

IsLocalPlayer = 0x7bb

numagomedov 10th November 2021 06:46 PM

Quote:

Originally Posted by ZeusLord (Post 3292273)
Code:

IsLocalPlayer = 0x7bb

whats wrong about player + 0x18?

ZeusLord 10th November 2021 06:49 PM

Quote:

Originally Posted by numagomedov (Post 3292274)
whats wrong about player + 0x18?

iirc a few pages back it's been revealed that +0x18 may not always be true when looting/other conditions so it's better to use the 0x7bb one as it's the variable the game actually sets for if it's your local player or not.

numagomedov 10th November 2021 06:50 PM

Quote:

Originally Posted by ZeusLord (Post 3292278)
iirc a few pages back it's been revealed that +0x18 may not always be true when looting/other conditions so it's better to use the 0x7bb one as it's the variable the game actually sets for if it's your local player or not.

I didnt really know thanks my man :motiass:
Thanks for adding reputation to this user. May you be lucky enough to receive the same Reputation back in turn.

Aresn11 10th November 2021 06:54 PM

Quote:

Originally Posted by aeonixlegit (Post 3292257)
does something related to player & item position has changed?
i was using for players: bonematrix ] 0x20 ] 0x10 ] 0x38 ] 0xb0 (vec3)
and for items: itemprofile ] 0x30 ] 0x30] 0x8 ] 0x38 ] 0bx0 (vec3)

it's no longer at 0xB0, it's shifted to 0x90

RonaldWeezly 10th November 2021 06:56 PM

Quote:

Originally Posted by ZeusLord (Post 3292273)
Code:

IsLocalPlayer = 0x7bb

How do you locate this every update?

Aresn11 10th November 2021 06:58 PM

Quote:

Originally Posted by RonaldWeezly (Post 3292285)
How do you locate this every update?

by using the "mono dissect" in cheat engine

numagomedov 10th November 2021 06:58 PM

Quote:

Originally Posted by RonaldWeezly (Post 3292285)
How do you locate this every update?

check EFT.Player inside mono dump:
7bb : bool_26 (type: System.Boolean)


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

RonaldWeezly 10th November 2021 07:08 PM

Quote:

Originally Posted by numagomedov (Post 3292292)
check EFT.Player inside mono dump:
7bb : bool_26 (type: System.Boolean)

You guys have way too much time :clit:

Quote:

Originally Posted by numagomedov (Post 3292292)
check EFT.Player inside mono dump:
7bb : bool_26 (type: System.Boolean)

You guys have way too much time :clit:

Xed0s 10th November 2021 07:14 PM

Someone have issue to fix swapchain resizing in new eft unity version?
When I change window mode to fullscreen - render was hidded, but when I change to window mode - render shows and works fine, wtf? Everything worked fine in fullscreen before game update...

numagomedov 10th November 2021 07:15 PM

Quote:

Originally Posted by Xed0s (Post 3292305)
Someone have issue to fix swapchain resizing in new eft unity version?
When I change window mode to fullscreen - render was hidded, but when I change to window mode - render shows and works fine, wtf? Everything worked fine in fullscreen before game update...

i have same issue my visuals just start lagging out what the fuck are they doing?? everything worked here fine too before game update

cxtgirl 10th November 2021 08:23 PM

did gom update this patch or no

BeginnerMono 10th November 2021 08:30 PM

Code:

fireport = 0xE0
was 0xE8

Billharvard 10th November 2021 09:25 PM

Quote:

Originally Posted by cxtgirl (Post 3292485)
did gom update this patch or no

Check out the following:

Quote:

Originally Posted by hollow (Post 3291945)
https://i.imgur.com/qk7MtaL.png

are they shitposting? almost nothing changed in terms of structure

Code:

EFT.GameWorld.Grenades = 0xE8

EFT.Player.Profile = 0x498
EFT.Player.Physical = 0x4A8

EFT.Player._healthController = 0x4D0
EFT.Player._inventoryController = 0x4E0
EFT.Player._handsController = 0x4E8

EFT.ClientFirearmController.OnlineShotList = 0x2F0

EFT.InventoryLogic.Weapon._magSlotCache = 0xA8

GOM: 0x17F2CE8


niceone1 10th November 2021 10:51 PM

Is anyone else missing the object
Code:

FPS Camera
(i know that the tagged/active objects did shift)?

Edit:

Thanks @OnyxSoftware, i got the "junk" entries in the wrong order.

Code:

struct {
        DWORD64 junk1 = NULL;
        DWORD64 taggedObjectLastEntry = NULL;
        DWORD64 taggedObjectFirstEntry = NULL;
        DWORD64 junk2 = NULL;
        DWORD64 activeObjectLastEntry = NULL;
        DWORD64 activeObjectFirstEntry = NULL;
} LinkedListPtr;

That is looking way better now:
Code:

Tagged | 0x273F63A8950 | FPS Camera | 61
Component | 0x2710B0B0040 | UnityEngine.Transform
Component | 0x273F2C9D0B0 | UnityEngine.Camera
Component | 0x273F7531500 | SSAAPropagator
Component | 0x273F63A8A00 | HBAO
Component | 0x273F63A8B70 | CustomGlobalFog
Component | 0x273FA9995F0 | TOD_Scattering
Component | 0x273FA999760 | Undithering
Component | 0x273FA9998D0 | PostEffects.ContactShadows
Component | 0x273FA999A40 | VolumetricLightRenderer
Component | 0x273FA999BB0 | CandelaSSRR
Component | 0x273FA999D20 | BSG.CameraEffects.NightVision
Component | 0x273F6E6FFE0 | ThermalVision
Component | 0x273F6E70150 | UnityStandardAssets.ImageEffects.Bloom
Component | 0x273F6E702C0 | UltimateBloom
Component | 0x273F6E70430 | UnityStandardAssets.CinematicEffects.AmbientOcclusion
Component | 0x273F6E705A0 | PrismEffects
Component | 0x273F6E70710 | UnityStandardAssets.ImageEffects.BloomAndFlares
Component | 0x2710019EB80 | CC_Vintage
Component | 0x2710019ECF0 | UnityStandardAssets.ImageEffects.Antialiasing
Component | 0x2710019EE60 | DesaturateEffect
Component | 0x2710019F140 | ChromaticAberration
Component | 0x2710019F2B0 | FastBlur
Component | 0x273FAF824A0 | DeathFade
Component | 0x273FAF82610 | BloodOnScreen
Component | 0x273FAF82780 | PostprocessGrayscale
Component | 0x273FAF828F0 | DistortCameraFX
Component | 0x273FAF82A60 | EffectsController
Component | 0x273FAF82BD0 | CC_BleachBypass
Component | 0x273FA891750 | CC_ContrastVignette
Component | 0x273FA8918C0 | CC_DoubleVision
Component | 0x273FA891A30 | CC_HueFocus
Component | 0x273FA891BA0 | CC_RadialBlur
Component | 0x273FA891D10 | CC_Sharpen
Component | 0x273FA891E80 | CC_Technicolor
Component | 0x273F636A6C0 | CC_BrightnessContrastGamma
Component | 0x273F636A830 | BSG.CameraEffects.TextureMask
Component | 0x273F636A9A0 | UnityStandardAssets.ImageEffects.BloomAndFlares
Component | 0x273F636AB10 | UnityStandardAssets.ImageEffects.Tonemapping
Component | 0x273F636AC80 | RainScreenDrops
Component | 0x273F636ADF0 | ScreenWater
Component | 0x273F636AF60 | SSAOMask
Component | 0x273F33AC2C0 | UnityStandardAssets.ImageEffects.DepthOfField
Component | 0x273F33AC430 | VisorEffect
Component | 0x273F33AC5A0 | GrenadeFlashScreenEffect
Component | 0x273F33AC710 | EyeBurn
Component | 0x273F33AC880 | HysteresisFilter
Component | 0x273F33AC9F0 | UnityEngine.Rendering.PostProcessing.PostProcessLayer
Component | 0x273F33ACB60 | InventoryBlur
Component | 0x273F5119840 | GradingPostFX
Component | 0x273F51199B0 | AreaLightManager
Component | 0x273F5119B20 | SSAA
Component | 0x2710056B940 | CC_FastVignette
Component | 0x2710B0AFCE0 | CC_Blend
Component | 0x2710B0AFE50 | CC_Blend
Component | 0x2710056C180 | CC_Wiggle
Component | 0x2710056C2F0 | UnityStandardAssets.ImageEffects.MotionBlur
Component | 0x2710056C480 | SSAAImpl
Component | 0x273FA8876C0 | EFT.CameraControl.CameraLodBiasController
Component | 0x273FA887830 | AudioSourceCulling
Component | 0x273FCC837A0 | NVIDIA.Reflex
Component | 0x273FE4E99D0 | GPUInstancer.GPUInstancerHiZOcclusionGenerator


pupuwayne 11th November 2021 01:24 AM

Quote:

Originally Posted by Aresn11 (Post 3292284)
it's no longer at 0xB0, it's shifted to 0x90

What's the class name of this?

And what is class name exactly in this chain?

Code:

itemprofile ] 0x30 ] 0x30] 0x8 ] 0x38 ] 0x90
Thanks a lot!!

Billharvard 11th November 2021 01:34 AM

Anyone have the new INPUT_MANAGER? Or is it still the same @ 0x0156C448

hollow 11th November 2021 02:51 AM

Quote:

Originally Posted by RonaldWeezly (Post 3292300)
You guys have way too much time :clit:

but clicking "analyze" on the getter/setter takes 5 seconds?..
https://i.imgur.com/EMeVzWG.png

ZeusLord 11th November 2021 02:52 AM

Quote:

Originally Posted by hollow (Post 3292862)
but clicking "analyze" on the getter/setter takes 5 seconds?..
https://i.imgur.com/EMeVzWG.png


Shh we spend all day looking at dnspy

OnyxSoftware 11th November 2021 05:47 AM

Quote:

Originally Posted by niceone1 (Post 3292740)
Is anyone else missing the object
Code:

FPS Camera
(i know that the tagged/active objects did shift)?



Dont suppose you figured this out yet, having the same issue

Quote:

Originally Posted by niceone1 (Post 3292740)
Is anyone else missing the object
Code:

FPS Camera
(i know that the tagged/active objects did shift)?

Okay after sometime debuging and messing around this is what fixed not finding the camera for me

Code:

bool init_game() {
    auto active_objects = rpm<std::array<uint64_t, 2>>(gom + 0x020); //CHANGED THIS

    if (!active_objects[0] || !active_objects[1])
        return false;

    game_world = GetObjectFromList(active_objects[1], active_objects[0], ("GameWorld"));

    if (!game_world)
        return false;

    local_game_world = rpm<uintptr_t>(rpm<uintptr_t>(rpm<uintptr_t>(game_world + 0x30) + 0x18) + 0x28);

    if (!local_game_world)
        return false;

    auto tagged_objects = rpm<std::array<uint64_t, 2>>(gom + 0x8); //CHANGED THIS


    fps_camera = GetObjectFromList(tagged_objects[1], tagged_objects[0], ("FPS Camera"));

    if (!fps_camera)
        return false;

    return true;
}

and then this..
Code:

  {
        uint64_t temp = fps_camera;
        temp = rpm<uint64_t>(temp + 0x30);
        // SPDLOG_INFO("Temp 1 : {0:X}", temp);

        temp = rpm<uint64_t>(temp + 0x18);
        //SPDLOG_INFO("Temp 2 0x%X", temp);

        matrix = rpm<VMatrix>(temp + 0xDC); // CHANGED FROM 0xD8
        //SPDLOG_INFO("View Matrix : {}", matrix);
    }


hollow 11th November 2021 08:56 AM

Quote:

Originally Posted by niceone1 (Post 3292740)
Is anyone else missing the object
Code:

FPS Camera
(i know that the tagged/active objects did shift)?

there�s an issue somewhere in your code, post the way you get object from list

asmfreak 11th November 2021 09:17 AM

devs are clueless about how to manage updates they updated unityplayer.dll again
new GOM - 0x17F1CE8
new Camera Objects - 0x1791540

hollow 11th November 2021 09:23 AM

Quote:

Originally Posted by asmfreak (Post 3293028)
devs are clueless about how to manage updates they updated unityplayer.dll again
new GOM - 0x17F1CE8
new Camera Objects - 0x1791540

did any assembly-csharp offsets change?

asmfreak 11th November 2021 09:25 AM

Quote:

Originally Posted by hollow (Post 3293034)
did any assembly-csharp offsets change?

just checking now i will let you know :)

nothing was changed wtf?

hollow 11th November 2021 09:36 AM

gMainWindow = 0x17D7E78
d3d11 swapchain: 0x17D5408 ] + 0x3E0 ]

RonaldWeezly 11th November 2021 12:07 PM

Quote:

Originally Posted by hollow (Post 3292862)
but clicking "analyze" on the getter/setter takes 5 seconds?..
https://i.imgur.com/EMeVzWG.png

How'd you then get the offset for that var? Look at the name lol

hollow 11th November 2021 12:16 PM

Quote:

Originally Posted by RonaldWeezly (Post 3293120)
How'd you then get the offset for that var? Look at the name lol

:think:
https://i.imgur.com/GNDnRPu.png

montroisiemecon 11th November 2021 01:09 PM

Quote:

Originally Posted by hollow (Post 3293123)

you must have 2000 iq my good sir can you teach me dnspy???


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

sep333 11th November 2021 02:27 PM

Player+0x28]+0x48]
Now the player's movement speed can't be obtained. Does anyone know what's going on

bhehe6813 11th November 2021 04:10 PM

Quote:

Originally Posted by montroisiemecon (Post 3293148)
you must have 2000 iq my good sir can you teach me dnspy???

Agreed, does hollow offer courses on dnspy?

RonaldWeezly 11th November 2021 05:19 PM

Quote:

Originally Posted by hollow (Post 3293123)

What program is that? Or are you just looking at CE dump?

Quote:

Originally Posted by hollow (Post 3293123)

What program is that? Or are you just looking at CE dump?

ZeusLord 11th November 2021 05:20 PM

Quote:

Originally Posted by RonaldWeezly (Post 3293344)
What program is that? Or are you just looking at CE dump?



What program is that? Or are you just looking at CE dump?


He�s just looking at the CE mono dump.

cxtgirl 11th November 2021 07:18 PM

would anyone know why players health doesn't update if i hit them through armour.

pattyz 11th November 2021 09:29 PM

Quick question regarding BSG launcher HWID bans:

Am I good to go after I formatted my PC and downloaded shit to new boot? or do they rely on more stuff than OS informations and registries?

ZeusLord 11th November 2021 10:14 PM

Quote:

Originally Posted by pattyz (Post 3293561)
Quick question regarding BSG launcher HWID bans:

Am I good to go after I formatted my PC and downloaded shit to new boot? or do they rely on more stuff than OS informations and registries?


I would say after formatting either write a spoofer or buy a good one and that way you are good on the launcher and for Battleeye just in case you get banned again if you�re gonna continue cheating.

pattyz 11th November 2021 11:02 PM

Quote:

Originally Posted by ZeusLord (Post 3293593)
I would say after formatting either write a spoofer or buy a good one and that way you are good on the launcher and for Battleeye just in case you get banned again if you�re gonna continue cheating.

Thanks, this doesn't actually answer to my question though, I'm not going to run any 3rd party spoofers on my dev PC and I wanted to do emu tarkov stuff on it, but as example SPT-Aki requires BSGLauncher valid stuff which you can only obtain by downloading from launcher.

ZeusLord 11th November 2021 11:05 PM

Quote:

Originally Posted by pattyz (Post 3293634)
Thanks, this doesn't actually answer to my question though, I'm not going to run any 3rd party spoofers on my dev PC and I wanted to do emu tarkov stuff on it, but as example SPT-Aki requires BSGLauncher valid stuff which you can only obtain by downloading from launcher.


Yeah my bad wasn�t really an answer more of an opinion but in the sense of the right answer there was a launcher that had the hwid stuff bypassed on here dunno if that works anymore but maybe you could figure out how they did it and implement that. Or bypass the spt-aki shit there�s a few ways you could go about it.

pattyz 11th November 2021 11:34 PM

Quote:

Originally Posted by ZeusLord (Post 3293637)
Yeah my bad wasn�t really an answer more of an opinion but in the sense of the right answer there was a launcher that had the hwid stuff bypassed on here dunno if that works anymore but maybe you could figure out how they did it and implement that. Or bypass the spt-aki shit there�s a few ways you could go about it.

Thanks again for response, just wanted to quickly as from UC if anyone knows what they grab in launcher, so I can install the game from there. I didn't get banned on the account I logged in so I think I'm fine.

ZeusLord 11th November 2021 11:49 PM

Quote:

Originally Posted by pattyz (Post 3293655)
Thanks again for response, just wanted to quickly as from UC if anyone knows what they grab in launcher, so I can install the game from there. I didn't get banned on the account I logged in so I think I'm fine.


Yeah probably sorry I could�ve responded with a little more information but I�m not home I just wanted to give ya a general idea. Have a good one though.

JackTheRat 11th November 2021 11:58 PM

Quote:

Originally Posted by pattyz (Post 3293655)
Thanks again for response, just wanted to quickly as from UC if anyone knows what they grab in launcher, so I can install the game from there. I didn't get banned on the account I logged in so I think I'm fine.

You can inspect the source of the launcher with dnspy and have a look for yourself. Last time I checked, it was a bunch of bios, mainboard, cpu and os identifiers. You can see your generated hwid by having a look in eft's tmp folder on your banned system and compare it with your new one (or compare with one computed by a tool emulating the launchers algorithm (i've made one for v0.12.11.0.13074 but not sure if still up to date)).

RonaldWeezly 12th November 2021 09:23 AM

Quote:

Originally Posted by RangeMachine (Post 3292001)
Code:

namespace game_object_manager
{
        const offset_t tagged_object_ = 0x18;
        const offset_t last_tagged_object_ = 0x10;
        const offset_t active_object_ = 0x28;
        const offset_t last_active_object_ = 0x20;
}

namespace camera
{
        const offset_t view_matrix_ = 0xdc;
        const offset_t view_fov_ = 0x15c;
        const offset_t aspect_ratio_ = 0x4c8;
}


Are you certain this is correct? Some other people are contradicting you with saying GOM is like:

Code:

struct GameObjectManager
{
  uint64_t Junk;
  uint64_t LastTagged;
  uint64_t FirstTagged;
  uint64_t Junk;
  uint64_t LastActive;
  uint64_t FirstActive;
}

which would put LastTagged at 0x8, not 0x10

RangeMachine 12th November 2021 10:05 AM

Quote:

Originally Posted by RonaldWeezly (Post 3293906)
Are you certain this is correct? Some other people are contradicting you with saying GOM is like:

Code:

struct GameObjectManager
{
  uint64_t Junk;
  uint64_t LastTagged;
  uint64_t FirstTagged;
  uint64_t Junk;
  uint64_t LastActive;
  uint64_t FirstActive;
}

which would put LastTagged at 0x8, not 0x10

Yea probably, i use only actives

TTMDragon 12th November 2021 10:54 AM

Anyone noticed the camera fov works differently in the newer version of unity? Including scaling of the weapon optics camera.

Code:



fov_x 0xAC -> 0xB0
fov_y 0x98 -> 0x9C


Azhora 12th November 2021 02:48 PM

Quote:

Originally Posted by numagomedov (Post 3292063)
anyone have new camera manager inside UnityPlayer.dll? 48 8B 15 ? ? ? ? 48 8B 4A 10 broke after this update
talking about Escape from Tarkov Reversal, Structs and Offsets

nvm found it is 0x1792540 now

anyones ESP / game lagging hard after this update? I updated all accordingly out of nowhere fps drops to hell
also game takes 11gb of memory wtf

Do you have a new signature for Camera Manager?

EDIT:
Code:

48 8B 05 ?? ?? ?? ?? 48 8B E9 8B 48
Best I could come up with

cxtgirl 12th November 2021 05:43 PM

Quote:

Originally Posted by RonaldWeezly (Post 3293906)
Are you certain this is correct? Some other people are contradicting you with saying GOM is like:

Code:

struct GameObjectManager
{
  uint64_t Junk;
  uint64_t LastTagged;
  uint64_t FirstTagged;
  uint64_t Junk;
  uint64_t LastActive;
  uint64_t FirstActive;
}

which would put LastTagged at 0x8, not 0x10

use a struct like this:
Code:

struct game_object_manager
{
        uintptr_t junk_1;
        uintptr_t last_tagged;
        uintptr_t tagged_objects;
        uintptr_t junk_2;
        uintptr_t last_active;
        uintptr_t active_objects;
};

then read it like this:
Code:

const auto active_objects = driver->read<std::array<uintptr_t, 2>>( gom + offsetof( game_object_manager, last_active ) );

const auto game_world_object = get_from_list( active_objects[ 0 ], active_objects[ 1 ], "GameWorld" );

get_from_list is the same one everyone uses i assume

Xed0s 12th November 2021 06:01 PM

Someone fix internal drawing in fullscreen mode? Because now render works only in windowed mode.

xPasters 12th November 2021 08:11 PM

Quote:

Originally Posted by cxtgirl (Post 3294190)
use a struct like this:
Code:

struct game_object_manager
{
        uintptr_t junk_1;
        uintptr_t last_tagged;
        uintptr_t tagged_objects;
        uintptr_t junk_2;
        uintptr_t last_active;
        uintptr_t active_objects;
};

then read it like this:
Code:

const auto active_objects = driver->read<std::array<uintptr_t, 2>>( gom + offsetof( game_object_manager, last_active ) );

const auto game_world_object = get_from_list( active_objects[ 0 ], active_objects[ 1 ], "GameWorld" );

get_from_list is the same one everyone uses i assume

You have just basically posted his struct but in snake case lol?

cxtgirl 12th November 2021 09:02 PM

Quote:

Originally Posted by xPasters (Post 3294313)
You have just basically posted his struct but in snake case lol?

he asked which to use and then gave an example so i reconfirmed him on his example and also showed him how to properly use it


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

krembo 12th November 2021 11:02 PM

Quote:

Originally Posted by RonaldWeezly (Post 3293906)
~

His original offsets are correct.
Working both for objects and cameras.

Quote:

struct GameObjectManager
{
char pad_a[0x10];
uint64_t LastTagged;
uint64_t FirstTagged;
uint64_t LastActive;
uint64_t FirstActive;
}

Xed0s 13th November 2021 08:50 AM

Why simple WndProc swap crash eft after 10+ minutes playing? Using SetWindowLongPtr.

edit: Swapchain resetting can be fix?

EasyAntiCheater 13th November 2021 09:17 AM

Can someone explain why my GameWorld keeps returning 0? here's the code

Code:

ULONG64 FindObject(std::string Name, ULONG64 gom)
{

        ULONG64 buffer = *(ULONG64 *)(gom + 0x18);
        int loop_count = 150;
        for (int i = 0; buffer && i < loop_count; i++)
        {
                ULONG64 object_ptr = *(ULONG64 *)(buffer + 0x10);
                ULONG64 object_name_ptr = *(ULONG64 *)(object_ptr + 0x60);
                char buf[256] = { 0 };
                ReadMemory((const void *)object_name_ptr, &buf, 256);
                auto object_name = buf;
                if (object_name == Name)
                {
                        buffer = object_ptr;
                        //std::cout << Name << " found: " << buffer << std::endl;
                        //buffer = buffer_temp;
                        return buffer;
                }
                buffer = *(ULONG64 *)(buffer + 0x8);
        }
        return 0;
}


krembo 13th November 2021 11:49 AM

Quote:

Originally Posted by EasyAntiCheater (Post 3294696)
Can someone explain why my GameWorld keeps returning 0? here's the code

Code:

ULONG64 FindObject(std::string Name, ULONG64 gom)
{

        ULONG64 buffer = *(ULONG64 *)(gom + 0x18);
        int loop_count = 150;
        for (int i = 0; buffer && i < loop_count; i++)
        {
                ULONG64 object_ptr = *(ULONG64 *)(buffer + 0x10);
                ULONG64 object_name_ptr = *(ULONG64 *)(object_ptr + 0x60);
                char buf[256] = { 0 };
                ReadMemory((const void *)object_name_ptr, &buf, 256);
                auto object_name = buf;
                if (object_name == Name)
                {
                        buffer = object_ptr;
                        //std::cout << Name << " found: " << buffer << std::endl;
                        //buffer = buffer_temp;
                        return buffer;
                }
                buffer = *(ULONG64 *)(buffer + 0x8);
        }
        return 0;
}


Increase the loop_count, i'm doing 5000 max, but it's usually at the firs 500.

RonaldWeezly 13th November 2021 01:00 PM

Quote:

Originally Posted by hollow (Post 3291945)
https://i.imgur.com/qk7MtaL.png

are they shitposting? almost nothing changed in terms of structure

Code:

EFT.GameWorld.Grenades = 0xE8

EFT.Player.Profile = 0x498
EFT.Player.Physical = 0x4A8

EFT.Player._healthController = 0x4D0
EFT.Player._inventoryController = 0x4E0
EFT.Player._handsController = 0x4E8

EFT.ClientFirearmController.OnlineShotList = 0x2F0

EFT.InventoryLogic.Weapon._magSlotCache = 0xA8

GOM: 0x17F2CE8

GOM is != 0x17F2CE8

GOM == 0x17F1CE8

hollow 13th November 2021 01:09 PM

Quote:

Originally Posted by RonaldWeezly (Post 3294796)
GOM is != 0x17F2CE8

GOM == 0x17F1CE8

yes, because there was an update

RonaldWeezly 13th November 2021 02:02 PM

Quote:

Originally Posted by hollow (Post 3294805)
yes, because there was an update

Oh okay, I never noticed (I just assumed you were using the sig therefore never faced any issues)

Anyone tried doing some sort of "Fly"? Perhaps also a zoom is possible if FOV is set to something small?

mexxi 13th November 2021 02:23 PM

after update I manage to get everything related to players etc but my FPS camera keeps returning 0, did the tagged offset change?

Currently I get active & tagged objects this way:
Code:

if(Type == ListType::Active)
                        Driver::ReadBytes(BaseGom + 0x18, &Objects, sizeof(uint64_t) * 2);

                if (Type == ListType::Tagged)
                        Driver::ReadBytes(BaseGom, &Objects, sizeof(uint64_t) * 2);

EDIT: Managed to find camera by adding +0x8 to tagged

RonaldWeezly 13th November 2021 03:15 PM

Anyone got experience invoking mono methods which have been compiled at runtime?

My code:
Code:

            void* EFTPlayerToggleProne = Mono::CompileFunction("Assembly-CSharp", "EFT", "Player", "ToggleProne");
           
            if (EFTPlayerToggleProne != nullptr) // attempt to call now
                reinterpret_cast<void(__fastcall*)(uint64_t)>(EFTPlayerToggleProne)(CacheManager->LocalPlayer.Base);

Real function in Assembly-CSharp:
Code:

                public virtual void ToggleProne()
                {
                        if (!this.MovementContext.IsAnimatorInteractionOn)
                        {
                                this.CurrentState.Prone();
                        }
                }

This causes a Unity Crash.

LowkeyCharmzz 13th November 2021 06:23 PM

Quote:

Originally Posted by RonaldWeezly (Post 3294843)
Oh okay, I never noticed (I just assumed you were using the sig therefore never faced any issues)

Anyone tried doing some sort of "Fly"? Perhaps also a zoom is possible if FOV is set to something small?

for fly you can set free fall time (in movement context) to negative and you will go up, and 0 or -0.01f (don�t remember which) for staying at the same height

mexxi 13th November 2021 08:24 PM

Player->MovementContext->vector2_0x20C == Player viewangles for aimbot? I'm writing into them and it does change my view angles but it throws it to extremely strange places, does anyone have a solution?

cxtgirl 13th November 2021 09:03 PM

Quote:

Originally Posted by mexxi (Post 3295117)
Player->MovementContext->vector2_0x20C == Player viewangles for aimbot? I'm writing into them and it does change my view angles but it throws it to extremely strange places, does anyone have a solution?

Code:

driver->write<glm::vec3>( movement_context + 0x20C, aim_angle );

mexxi 13th November 2021 09:21 PM

Quote:

Originally Posted by cxtgirl (Post 3295135)
Code:

driver->write<glm::vec3>( movement_context + 0x20C, aim_angle );

Exactly how I do it, thanks for clarifying. Could you please tell me how you clamp & normalize your angles before you set them? I get my Fireport position which is valid, I grab the players head in aim loop and draw a dot on it, it draws perfectly on there, but when I try to set my angles onto the target, it throws my aim into some random position. This is my aimbot loop code:

Code:

AimData::Position = AimData::Target->GetBonePosition(BodyPart::Head);

                        CMovementContext* MovementContext = Game::LocalPlayer->GetMovementContext();

                        if (!MovementContext)
                        {
                                std::this_thread::sleep_for(std::chrono::milliseconds(125));
                                continue;
                        }

                        Vector3 Fireport = Game::LocalPlayer->GetWeaponProcedural()->GetFirearmController()->GetFireportPosition();

                        if (Toggle::Aim::Memory)
                        {
                                Vector2 LocalAngles = MovementContext->GetViewAngles();

                                Vector2 CalculatedAngle = Math::CalcAngle(Fireport, AimData::Position) - LocalAngles;
                                Vector2 AngleToAim = CalculatedAngle + LocalAngles;

                                if (!AngleToAim.x || !AngleToAim.y || isnan(AngleToAim.x) || isnan(AngleToAim.y))
                                        continue;

                                AngleToAim.Normalize();

                                if (GetAsyncKeyState(VK_XBUTTON2) & 0x8000)
                                        MovementContext->SetViewAngles(AngleToAim);
                        }

Normalize function:
Code:

void Normalize()
        {
                if (x > 360.f)
                        x -= 360.f;
                if (x < -360.f)
                        x += 360.f;

                if (y > 360.f)
                        y -= 360.f;
                if (y < -360.f)
                        y += 360.f;
        }


cxtgirl 13th November 2021 09:25 PM

Quote:

Originally Posted by mexxi (Post 3295145)
snip

Code:

class aimbot_c
{
public:
    void run( uintptr_t local_address )
    {
        for ( auto& player : cache.get_players( ) )
        {
            const auto hands_controller = driver->read<uintptr_t>( local_address + 0x4E8 );
            const auto fireport = driver->read_chain<uintptr_t>( hands_controller, { 0xE0, 0x10 } );

            const auto fireport_pos = get_position( fireport );
       
            const auto aim_angle = calc_angle( fireport_pos, player.head_pos );

            const auto out = world_to_screen( player.head_pos );
            const auto wnd = glm::vec2( GetSystemMetrics( SM_CXSCREEN ), GetSystemMetrics( SM_CYSCREEN ) );

            const auto first = fabsf( wnd.x / 2 - out.x );
            const auto second = fabsf( wnd.y / 2 - out.y );
            const auto fin = first + second;

            if ( fin >= 50 )
                continue;

            const auto movement_context = driver->read<uintptr_t>( local_address + 0x40 );

            if ( GetAsyncKeyState( 0x06 ) )
                driver->write<glm::vec3>( movement_context + 0x20C, aim_angle );
        }
    }

private:
    static auto calc_angle( const glm::vec3 from, const glm::vec3 to ) -> glm::vec3
    {
        auto delta = from - to;
        constexpr auto r2d = 57.2957795131f;
        constexpr auto d2r = 0.01745329251f;

        const auto pitch = std::asin( delta.y / glm::length( delta ) );
        const auto yaw = -std::atan2( delta.x, -delta.z );

        return glm::vec3{ yaw, pitch, 0.0f } *r2d;
    }
};

this is all i do, its not perfect but it works as a basic aimbot

EasyAntiCheater 13th November 2021 09:29 PM

Can someone release their "GetObjectFromList" function? My friend and I have been trying and looping objects works fine in the menu but soon as you click the "Escape From Tarkov" button it's an instant crash... even when we're not looping the objects into the console.

mexxi 13th November 2021 09:46 PM

Quote:

Originally Posted by cxtgirl (Post 3295147)
snip

so you don't clamp / normalize any angles?

EasyAntiCheater 13th November 2021 10:49 PM

How are you guys getting player screen positions in mono

I'm using this
Code:

                Vector3 ScreenPosition = GameUtils.WorldPointToScreenPoint(gamePlayer.Player.Transform.position);
and my esp positioning is all broken

RonaldWeezly 14th November 2021 12:19 AM

Quote:

Originally Posted by mexxi (Post 3295117)
Player->MovementContext->vector2_0x20C == Player viewangles for aimbot? I'm writing into them and it does change my view angles but it throws it to extremely strange places, does anyone have a solution?

Correct offset,
you're just calculating aimbot wrong.

Quote:

Originally Posted by LowkeyCharmzz (Post 3295047)
for fly you can set free fall time (in movement context) to negative and you will go up, and 0 or -0.01f (don’t remember which) for staying at the same height

Thank you, it works!

-0.01f slightly increases the height every few frames, zero keeps it still.
I like!

Container paste for those having issues (took me a wild few guesses to get this right haha):
Code:

        ImVec3 GetPosition(uint64_t InteractivePointer)
        {
            auto ContainerTransform = Mem::ReadChain<uint64_t>(InteractivePointer, { 0x10, 0x30, 0x30, 0x8, 0x28 });

            if (ContainerTransform)
                return NativeCalls::GetPosition(ContainerTransform);

            return ImVec3(0.f, 0.f, 0.f);
        }

        std::vector<std::pair<std::string, std::string>> GetItemsInContainer(uint64_t GridDictionary)
        {
            uint64_t DictionaryEntries = Mem::Read<uint64_t>(GridDictionary + 0x18);
            int32_t DictionarySize = Mem::Read<int32_t>(GridDictionary + 0x40);

            if (DictionarySize <= 0 || DictionarySize > 200 || !DictionaryEntries)
                return {};

            std::vector<std::pair<std::string, std::string>> ContainerItems;

            for (int32_t i = 0; i < DictionarySize; i++)
            {
                // DictionaryEntry -> ItemTemplate (0x40) -> ItemId (0x50)

                auto PMonoItemID = Mem::ReadChain<Mono::MonoString*>(DictionaryEntries, { (uint64_t)(0x28 + (0x18 * i)), 0x40, 0x50 });

                if (!PMonoItemID)
                    continue;

                auto ItemID = PMonoItemID->StringSTL(24);

                std::pair<std::string, int32_t> ItemInfo = Items::GetItemInfo(ItemID);
                if (ItemInfo.second && ItemInfo.second >= Globals->Settings.Visuals.Loot.MinimumPrice.Value)
                    ContainerItems.push_back({ ItemInfo.first, Items::FormatPrice(ItemInfo.second) });
            }

            return ContainerItems;
        }

Grenade position changed somewhere, anyone got the corresponding structs for any of these offsets?
I didn't document them when I wrote this (I forgor) xd

Code:

    bool CachedGrenade::Update(uint64_t Base)
    {
        this->Position = Mem::ReadChain<ImVec3>(Base, { 0x10, 0x30, 0x30, 0x8, 0x38, 0xB0 });
        return !(this->Position.x == 0.f && this->Position.y == 0.f && this->Position.z == 0.f);
    }


cxtgirl 14th November 2021 08:39 AM

Quote:

Originally Posted by mexxi (Post 3295156)
so you don't clamp / normalize any angles?

no i dont, its a good practice to do so my cheat is very wip, i dont think normalising them would be breaking your aimbot though

Quote:

Originally Posted by RonaldWeezly (Post 3295225)
Grenade position changed somewhere, anyone got the corresponding structs for any of these offsets?
I didn't document them when I wrote this (I forgor) xd

Code:

    bool CachedGrenade::Update(uint64_t Base)
    {
        this->Position = Mem::ReadChain<ImVec3>(Base, { 0x10, 0x30, 0x30, 0x8, 0x38, 0xB0 });
        return !(this->Position.x == 0.f && this->Position.y == 0.f && this->Position.z == 0.f);
    }


0xB0 changed to 0x90

swh4641 14th November 2021 08:52 AM

all the cameras are gone, only FPS Camera is left


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

pattyz 14th November 2021 08:56 AM

is silent aim possible as an external on EFT? On Rust it's possible & easy so thought it could be possible here aswell

swh4641 14th November 2021 09:26 AM

Quote:

Originally Posted by pattyz (Post 3295439)
is silent aim possible as an external on EFT? On Rust it's possible & easy so thought it could be possible here aswell

it is possible but you need use 1% of your brain to find out one

pattyz 14th November 2021 10:44 AM

Quote:

Originally Posted by swh4641 (Post 3295449)
it is possible but you need use 1% of your brain to find out one

Okay, nice to know. I saw ShotDirection in WeaponProceduralAnims, is this smthing I should look into?

swh4641 14th November 2021 11:19 AM

Quote:

Originally Posted by pattyz (Post 3295494)
Okay, nice to know. I saw ShotDirection in WeaponProceduralAnims, is this smthing I should look into?

detek blyat

pattyz 14th November 2021 11:30 AM

Quote:

Originally Posted by swh4641 (Post 3295524)
detek blyat

why do you have to answer like you are shitposting? Your previous answer was horrendous dogshit.

beepboop5 14th November 2021 12:04 PM

Quote:

Originally Posted by RonaldWeezly (Post 3294897)
Anyone got experience invoking mono methods which have been compiled at runtime?

My code:
Code:

            void* EFTPlayerToggleProne = Mono::CompileFunction("Assembly-CSharp", "EFT", "Player", "ToggleProne");
           
            if (EFTPlayerToggleProne != nullptr) // attempt to call now
                reinterpret_cast<void(__fastcall*)(uint64_t)>(EFTPlayerToggleProne)(CacheManager->LocalPlayer.Base);

Real function in Assembly-CSharp:
Code:

                public virtual void ToggleProne()
                {
                        if (!this.MovementContext.IsAnimatorInteractionOn)
                        {
                                this.CurrentState.Prone();
                        }
                }

This causes a Unity Crash.

Research into how to actually call mono functions.

mono_method_get_unmanaged_thunk takes in a MonoMethod* and allows you to call the function as you desire (note: non-static methods take a this* to the class the method resides in as its first arg and you must use __stdcall convention)

otherwise your other option is to grab the MonoMethod* and invoke it via mono_runtime_invoke.

feel free to ask any other questions.

RonaldWeezly 14th November 2021 02:30 PM

Quote:

Originally Posted by beepboop5 (Post 3295556)
Research into how to actually call mono functions.

mono_method_get_unmanaged_thunk takes in a MonoMethod* and allows you to call the function as you desire (note: non-static methods take a this* to the class the method resides in as its first arg and you must use __stdcall convention)

otherwise your other option is to grab the MonoMethod* and invoke it via mono_runtime_invoke.

feel free to ask any other questions.

I was informed that it is perfectly fine to just compile the method and invoke it natively. I passed a this* to the method (clearly the player pointer) yet I still crashed. Perhaps it's because I didn't use the __stdcall convention?

hst 14th November 2021 02:54 PM

Quote:

Originally Posted by pattyz (Post 3295494)
Okay, nice to know. I saw ShotDirection in WeaponProceduralAnims, is this smthing I should look into?

Look at the shots list inside handscontroller.

hollow 14th November 2021 03:07 PM

Quote:

Originally Posted by hst (Post 3295670)
Look at the shots list inside handscontroller.

shot list is in ClientFirearmController and _handsController in EFT.Player isn't always that.
first check that it actually is (i.e. if local player is holding a gun)

beepboop5 14th November 2021 05:07 PM

Quote:

Originally Posted by RonaldWeezly (Post 3295650)
I was informed that it is perfectly fine to just compile the method and invoke it natively. I passed a this* to the method (clearly the player pointer) yet I still crashed. Perhaps it's because I didn't use the __stdcall convention?

no idea why you bother compiling the entire method when its only a little harder to call the function from the runtime but anyways...

and yea you must use the __stdcall convention (mono_runtime_invoke takes care of all of this crap for you)

RonaldWeezly 14th November 2021 11:36 PM

Quote:

Originally Posted by beepboop5 (Post 3295774)
no idea why you bother compiling the entire method when its only a little harder to call the function from the runtime but anyways...

and yea you must use the __stdcall convention (mono_runtime_invoke takes care of all of this crap for you)

Lovely stuff.

I want to stick away from mono_runtime_invoke because (afaik) it is VEH hooked by BE and used for observations... I doubt they will place VEH hooks on every compiled method.

pattyz 15th November 2021 09:36 AM

Quote:

Originally Posted by hst (Post 3295670)
Look at the shots list inside handscontroller.

Am I going to the right direction?

Player->HandsController->ClientFirearmController->List_0x2F0

Reading through the list and grabbing Direction_0xA0 and using that to write to the target player.

Also, since going through Player->ProceduralWeaponAnimations->FirearmController->List_0x08 leads the same place I wanted to read that, but I can see it's a static field, is this a better way to go?

montroisiemecon 15th November 2021 01:04 PM

Quote:

Originally Posted by pattyz (Post 3296232)
Am I going to the right direction?

Player->HandsController->ClientFirearmController->List_0x2F0

Reading through the list and grabbing Direction_0xA0 and using that to write to the target player.

Also, since going through Player->ProceduralWeaponAnimations->FirearmController->List_0x08 leads the same place I wanted to read that, but I can see it's a static field, is this a better way to go?

Don't do wild guesses

Take your time

Reverse the code properly, find out what is sent to server, how is it computed, how can you interfere with it to get to your objectives

Then test, and if it doesn't work, come back and we will help you out

Right now you are getting babysitted

nxyexiong 15th November 2021 03:09 PM

anyone got the new GetPosition of transform?

edit: okay its just me being dumb, its not changed

beepboop5 15th November 2021 06:04 PM

Quote:

Originally Posted by RonaldWeezly (Post 3296020)
Lovely stuff.

I want to stick away from mono_runtime_invoke because (afaik) it is VEH hooked by BE and used for observations... I doubt they will place VEH hooks on every compiled method.

use mono_method_get_unmanaged_thunk instead and treat it as a function pointer (no idea if BE VEH hooks it, and honestly i dont really mind since battleye is being emulated for me)

RonaldWeezly 15th November 2021 07:20 PM

Quote:

Originally Posted by beepboop5 (Post 3296546)
use mono_method_get_unmanaged_thunk instead and treat it as a function pointer (no idea if BE VEH hooks it, and honestly i dont really mind since battleye is being emulated for me)

Lovely stuff, thanks.

Brabra1262 16th November 2021 05:18 AM

Quote:

Originally Posted by hst (Post 3295670)
Look at the shots list inside handscontroller.

there is a way easier way that's way more efficient

numagomedov 16th November 2021 02:03 PM

Quote:

Originally Posted by Brabra1262 (Post 3296898)
there is a way easier way that's way more efficient

care to elobrate more?

Brabra1262 16th November 2021 04:38 PM

Quote:

Originally Posted by numagomedov (Post 3297151)
care to elobrate more?

look in templates

anyways does anyone have the updated camera position? it used to be 0xb0 offset from visual state.

shaliuno 16th November 2021 06:16 PM

Quote:

Originally Posted by Brabra1262 (Post 3297251)
look in templates

anyways does anyone have the updated camera position? it used to be 0xb0 offset from visual state.

0x90 ?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

LowkeyCharmzz 16th November 2021 08:27 PM

did timescale shift?

pattyz 16th November 2021 11:39 PM

Quote:

Originally Posted by LowkeyCharmzz (Post 3297419)
did timescale shift?

It's the same.

LowkeyCharmzz 17th November 2021 12:10 AM

Quote:

Originally Posted by pattyz (Post 3297526)
It's the same.

hmm weird, first time back on in a couple weeks and it doesnt seem to work.

montroisiemecon 17th November 2021 01:25 PM

Quote:

Originally Posted by pattyz (Post 3297526)
It's the same.

It changed in the last updates

pattyz 17th November 2021 03:23 PM

Quote:

Originally Posted by montroisiemecon (Post 3297916)
It changed in the last updates

(s)...

Thought he asked if it shifted from the most recent patch / update wtf u even call it in this shit game.

LowkeyCharmzz 17th November 2021 09:02 PM

Quote:

Originally Posted by montroisiemecon (Post 3297916)
It changed in the last updates

thanks

hollow 18th November 2021 11:56 AM

for those who don't want to use GetAsyncKeyState/GetCursorPos:
Code:

struct input_manager
{
    bool get_mouse_button(int keycode)
    {
        auto a1 = keycode;
       
        auto v3 = uintptr_t(this);
        auto v4 = ((1 << ((a1 + 67) & 0x1F)) & *(uint32_t*)(4 * ((unsigned __int64)(int)(a1 + 323) >> 5)
            + *((uint64_t*)v3 + 11))) != 0
            || ((1 << ((a1 + 67) & 0x1F)) & *(uint32_t*)(4 * ((unsigned __int64)(int)(a1 + 323) >> 5)
                + *((uint64_t*)v3 + 15))) != 0;

        return v4;
    }
   
    bool get_key(KeyCode keycode)
    {
        auto v1 = (int)keycode;
       
        auto v3 = uintptr_t(this);
        auto v4 = ((1 << (v1 & 0x1F)) & *(uint32_t*)(4 * (v1 >> 5) + *(uint64_t*)(v3 + 88))) != 0
            || ((1 << (v1 & 0x1F)) & *(uint32_t*)(4 * (v1 >> 5) + *(uint64_t*)(v3 + 120))) != 0;

        return v4;
    }

    float get_mouse_x()
    {
        return *(float*)(uintptr_t(this) + 192);
    }

    float get_mouse_y()
    {
        return *(float*)(uintptr_t(this) + 196);
    }
};

enum class KeyCode
{
        // Token: 0x04000552 RID: 1362
        None,
        // Token: 0x04000553 RID: 1363
        Backspace = 8,
        // Token: 0x04000554 RID: 1364
        Delete = 127,
        // Token: 0x04000555 RID: 1365
        Tab = 9,
        // Token: 0x04000556 RID: 1366
        Clear = 12,
        // Token: 0x04000557 RID: 1367
        Return,
        // Token: 0x04000558 RID: 1368
        Pause = 19,
        // Token: 0x04000559 RID: 1369
        Escape = 27,
        // Token: 0x0400055A RID: 1370
        Space = 32,
        // Token: 0x0400055B RID: 1371
        Keypad0 = 256,
        // Token: 0x0400055C RID: 1372
        Keypad1,
        // Token: 0x0400055D RID: 1373
        Keypad2,
        // Token: 0x0400055E RID: 1374
        Keypad3,
        // Token: 0x0400055F RID: 1375
        Keypad4,
        // Token: 0x04000560 RID: 1376
        Keypad5,
        // Token: 0x04000561 RID: 1377
        Keypad6,
        // Token: 0x04000562 RID: 1378
        Keypad7,
        // Token: 0x04000563 RID: 1379
        Keypad8,
        // Token: 0x04000564 RID: 1380
        Keypad9,
        // Token: 0x04000565 RID: 1381
        KeypadPeriod,
        // Token: 0x04000566 RID: 1382
        KeypadDivide,
        // Token: 0x04000567 RID: 1383
        KeypadMultiply,
        // Token: 0x04000568 RID: 1384
        KeypadMinus,
        // Token: 0x04000569 RID: 1385
        KeypadPlus,
        // Token: 0x0400056A RID: 1386
        KeypadEnter,
        // Token: 0x0400056B RID: 1387
        KeypadEquals,
        // Token: 0x0400056C RID: 1388
        UpArrow,
        // Token: 0x0400056D RID: 1389
        DownArrow,
        // Token: 0x0400056E RID: 1390
        RightArrow,
        // Token: 0x0400056F RID: 1391
        LeftArrow,
        // Token: 0x04000570 RID: 1392
        Insert,
        // Token: 0x04000571 RID: 1393
        Home,
        // Token: 0x04000572 RID: 1394
        End,
        // Token: 0x04000573 RID: 1395
        PageUp,
        // Token: 0x04000574 RID: 1396
        PageDown,
        // Token: 0x04000575 RID: 1397
        F1,
        // Token: 0x04000576 RID: 1398
        F2,
        // Token: 0x04000577 RID: 1399
        F3,
        // Token: 0x04000578 RID: 1400
        F4,
        // Token: 0x04000579 RID: 1401
        F5,
        // Token: 0x0400057A RID: 1402
        F6,
        // Token: 0x0400057B RID: 1403
        F7,
        // Token: 0x0400057C RID: 1404
        F8,
        // Token: 0x0400057D RID: 1405
        F9,
        // Token: 0x0400057E RID: 1406
        F10,
        // Token: 0x0400057F RID: 1407
        F11,
        // Token: 0x04000580 RID: 1408
        F12,
        // Token: 0x04000581 RID: 1409
        F13,
        // Token: 0x04000582 RID: 1410
        F14,
        // Token: 0x04000583 RID: 1411
        F15,
        // Token: 0x04000584 RID: 1412
        Alpha0 = 48,
        // Token: 0x04000585 RID: 1413
        Alpha1,
        // Token: 0x04000586 RID: 1414
        Alpha2,
        // Token: 0x04000587 RID: 1415
        Alpha3,
        // Token: 0x04000588 RID: 1416
        Alpha4,
        // Token: 0x04000589 RID: 1417
        Alpha5,
        // Token: 0x0400058A RID: 1418
        Alpha6,
        // Token: 0x0400058B RID: 1419
        Alpha7,
        // Token: 0x0400058C RID: 1420
        Alpha8,
        // Token: 0x0400058D RID: 1421
        Alpha9,
        // Token: 0x0400058E RID: 1422
        Exclaim = 33,
        // Token: 0x0400058F RID: 1423
        DoubleQuote,
        // Token: 0x04000590 RID: 1424
        Hash,
        // Token: 0x04000591 RID: 1425
        Dollar,
        // Token: 0x04000592 RID: 1426
        Percent,
        // Token: 0x04000593 RID: 1427
        Ampersand,
        // Token: 0x04000594 RID: 1428
        Quote,
        // Token: 0x04000595 RID: 1429
        LeftParen,
        // Token: 0x04000596 RID: 1430
        RightParen,
        // Token: 0x04000597 RID: 1431
        Asterisk,
        // Token: 0x04000598 RID: 1432
        Plus,
        // Token: 0x04000599 RID: 1433
        Comma,
        // Token: 0x0400059A RID: 1434
        Minus,
        // Token: 0x0400059B RID: 1435
        Period,
        // Token: 0x0400059C RID: 1436
        Slash,
        // Token: 0x0400059D RID: 1437
        Colon = 58,
        // Token: 0x0400059E RID: 1438
        Semicolon,
        // Token: 0x0400059F RID: 1439
        Less,
        // Token: 0x040005A0 RID: 1440
        Equals,
        // Token: 0x040005A1 RID: 1441
        Greater,
        // Token: 0x040005A2 RID: 1442
        Question,
        // Token: 0x040005A3 RID: 1443
        At,
        // Token: 0x040005A4 RID: 1444
        LeftBracket = 91,
        // Token: 0x040005A5 RID: 1445
        Backslash,
        // Token: 0x040005A6 RID: 1446
        RightBracket,
        // Token: 0x040005A7 RID: 1447
        Caret,
        // Token: 0x040005A8 RID: 1448
        Underscore,
        // Token: 0x040005A9 RID: 1449
        BackQuote,
        // Token: 0x040005AA RID: 1450
        A,
        // Token: 0x040005AB RID: 1451
        B,
        // Token: 0x040005AC RID: 1452
        C,
        // Token: 0x040005AD RID: 1453
        D,
        // Token: 0x040005AE RID: 1454
        E,
        // Token: 0x040005AF RID: 1455
        F,
        // Token: 0x040005B0 RID: 1456
        G,
        // Token: 0x040005B1 RID: 1457
        H,
        // Token: 0x040005B2 RID: 1458
        I,
        // Token: 0x040005B3 RID: 1459
        J,
        // Token: 0x040005B4 RID: 1460
        K,
        // Token: 0x040005B5 RID: 1461
        L,
        // Token: 0x040005B6 RID: 1462
        M,
        // Token: 0x040005B7 RID: 1463
        N,
        // Token: 0x040005B8 RID: 1464
        O,
        // Token: 0x040005B9 RID: 1465
        P,
        // Token: 0x040005BA RID: 1466
        Q,
        // Token: 0x040005BB RID: 1467
        R,
        // Token: 0x040005BC RID: 1468
        S,
        // Token: 0x040005BD RID: 1469
        T,
        // Token: 0x040005BE RID: 1470
        U,
        // Token: 0x040005BF RID: 1471
        V,
        // Token: 0x040005C0 RID: 1472
        W,
        // Token: 0x040005C1 RID: 1473
        X,
        // Token: 0x040005C2 RID: 1474
        Y,
        // Token: 0x040005C3 RID: 1475
        Z,
        // Token: 0x040005C4 RID: 1476
        LeftCurlyBracket,
        // Token: 0x040005C5 RID: 1477
        Pipe,
        // Token: 0x040005C6 RID: 1478
        RightCurlyBracket,
        // Token: 0x040005C7 RID: 1479
        Tilde,
        // Token: 0x040005C8 RID: 1480
        Numlock = 300,
        // Token: 0x040005C9 RID: 1481
        CapsLock,
        // Token: 0x040005CA RID: 1482
        ScrollLock,
        // Token: 0x040005CB RID: 1483
        RightShift,
        // Token: 0x040005CC RID: 1484
        LeftShift,
        // Token: 0x040005CD RID: 1485
        RightControl,
        // Token: 0x040005CE RID: 1486
        LeftControl,
        // Token: 0x040005CF RID: 1487
        RightAlt,
        // Token: 0x040005D0 RID: 1488
        LeftAlt,
        // Token: 0x040005D1 RID: 1489
        LeftCommand = 310,
        // Token: 0x040005D2 RID: 1490
        LeftApple = 310,
        // Token: 0x040005D3 RID: 1491
        LeftWindows,
        // Token: 0x040005D4 RID: 1492
        RightCommand = 309,
        // Token: 0x040005D5 RID: 1493
        RightApple = 309,
        // Token: 0x040005D6 RID: 1494
        RightWindows = 312,
        // Token: 0x040005D7 RID: 1495
        AltGr,
        // Token: 0x040005D8 RID: 1496
        Help = 315,
        // Token: 0x040005D9 RID: 1497
        Print,
        // Token: 0x040005DA RID: 1498
        SysReq,
        // Token: 0x040005DB RID: 1499
        Break,
        // Token: 0x040005DC RID: 1500
        Menu,
        // Token: 0x040005DD RID: 1501
        Mouse0 = 323,
        // Token: 0x040005DE RID: 1502
        Mouse1,
        // Token: 0x040005DF RID: 1503
        Mouse2,
        // Token: 0x040005E0 RID: 1504
        Mouse3,
        // Token: 0x040005E1 RID: 1505
        Mouse4,
        // Token: 0x040005E2 RID: 1506
        Mouse5,
        // Token: 0x040005E3 RID: 1507
        Mouse6,
        // Token: 0x040005E4 RID: 1508
        JoystickButton0,
        // Token: 0x040005E5 RID: 1509
        JoystickButton1,
        // Token: 0x040005E6 RID: 1510
        JoystickButton2,
        // Token: 0x040005E7 RID: 1511
        JoystickButton3,
        // Token: 0x040005E8 RID: 1512
        JoystickButton4,
        // Token: 0x040005E9 RID: 1513
        JoystickButton5,
        // Token: 0x040005EA RID: 1514
        JoystickButton6,
        // Token: 0x040005EB RID: 1515
        JoystickButton7,
        // Token: 0x040005EC RID: 1516
        JoystickButton8,
        // Token: 0x040005ED RID: 1517
        JoystickButton9,
        // Token: 0x040005EE RID: 1518
        JoystickButton10,
        // Token: 0x040005EF RID: 1519
        JoystickButton11,
        // Token: 0x040005F0 RID: 1520
        JoystickButton12,
        // Token: 0x040005F1 RID: 1521
        JoystickButton13,
        // Token: 0x040005F2 RID: 1522
        JoystickButton14,
        // Token: 0x040005F3 RID: 1523
        JoystickButton15,
        // Token: 0x040005F4 RID: 1524
        JoystickButton16,
        // Token: 0x040005F5 RID: 1525
        JoystickButton17,
        // Token: 0x040005F6 RID: 1526
        JoystickButton18,
        // Token: 0x040005F7 RID: 1527
        JoystickButton19,
        // Token: 0x040005F8 RID: 1528
        Joystick1Button0,
        // Token: 0x040005F9 RID: 1529
        Joystick1Button1,
        // Token: 0x040005FA RID: 1530
        Joystick1Button2,
        // Token: 0x040005FB RID: 1531
        Joystick1Button3,
        // Token: 0x040005FC RID: 1532
        Joystick1Button4,
        // Token: 0x040005FD RID: 1533
        Joystick1Button5,
        // Token: 0x040005FE RID: 1534
        Joystick1Button6,
        // Token: 0x040005FF RID: 1535
        Joystick1Button7,
        // Token: 0x04000600 RID: 1536
        Joystick1Button8,
        // Token: 0x04000601 RID: 1537
        Joystick1Button9,
        // Token: 0x04000602 RID: 1538
        Joystick1Button10,
        // Token: 0x04000603 RID: 1539
        Joystick1Button11,
        // Token: 0x04000604 RID: 1540
        Joystick1Button12,
        // Token: 0x04000605 RID: 1541
        Joystick1Button13,
        // Token: 0x04000606 RID: 1542
        Joystick1Button14,
        // Token: 0x04000607 RID: 1543
        Joystick1Button15,
        // Token: 0x04000608 RID: 1544
        Joystick1Button16,
        // Token: 0x04000609 RID: 1545
        Joystick1Button17,
        // Token: 0x0400060A RID: 1546
        Joystick1Button18,
        // Token: 0x0400060B RID: 1547
        Joystick1Button19,
        // Token: 0x0400060C RID: 1548
        Joystick2Button0,
        // Token: 0x0400060D RID: 1549
        Joystick2Button1,
        // Token: 0x0400060E RID: 1550
        Joystick2Button2,
        // Token: 0x0400060F RID: 1551
        Joystick2Button3,
        // Token: 0x04000610 RID: 1552
        Joystick2Button4,
        // Token: 0x04000611 RID: 1553
        Joystick2Button5,
        // Token: 0x04000612 RID: 1554
        Joystick2Button6,
        // Token: 0x04000613 RID: 1555
        Joystick2Button7,
        // Token: 0x04000614 RID: 1556
        Joystick2Button8,
        // Token: 0x04000615 RID: 1557
        Joystick2Button9,
        // Token: 0x04000616 RID: 1558
        Joystick2Button10,
        // Token: 0x04000617 RID: 1559
        Joystick2Button11,
        // Token: 0x04000618 RID: 1560
        Joystick2Button12,
        // Token: 0x04000619 RID: 1561
        Joystick2Button13,
        // Token: 0x0400061A RID: 1562
        Joystick2Button14,
        // Token: 0x0400061B RID: 1563
        Joystick2Button15,
        // Token: 0x0400061C RID: 1564
        Joystick2Button16,
        // Token: 0x0400061D RID: 1565
        Joystick2Button17,
        // Token: 0x0400061E RID: 1566
        Joystick2Button18,
        // Token: 0x0400061F RID: 1567
        Joystick2Button19,
        // Token: 0x04000620 RID: 1568
        Joystick3Button0,
        // Token: 0x04000621 RID: 1569
        Joystick3Button1,
        // Token: 0x04000622 RID: 1570
        Joystick3Button2,
        // Token: 0x04000623 RID: 1571
        Joystick3Button3,
        // Token: 0x04000624 RID: 1572
        Joystick3Button4,
        // Token: 0x04000625 RID: 1573
        Joystick3Button5,
        // Token: 0x04000626 RID: 1574
        Joystick3Button6,
        // Token: 0x04000627 RID: 1575
        Joystick3Button7,
        // Token: 0x04000628 RID: 1576
        Joystick3Button8,
        // Token: 0x04000629 RID: 1577
        Joystick3Button9,
        // Token: 0x0400062A RID: 1578
        Joystick3Button10,
        // Token: 0x0400062B RID: 1579
        Joystick3Button11,
        // Token: 0x0400062C RID: 1580
        Joystick3Button12,
        // Token: 0x0400062D RID: 1581
        Joystick3Button13,
        // Token: 0x0400062E RID: 1582
        Joystick3Button14,
        // Token: 0x0400062F RID: 1583
        Joystick3Button15,
        // Token: 0x04000630 RID: 1584
        Joystick3Button16,
        // Token: 0x04000631 RID: 1585
        Joystick3Button17,
        // Token: 0x04000632 RID: 1586
        Joystick3Button18,
        // Token: 0x04000633 RID: 1587
        Joystick3Button19,
        // Token: 0x04000634 RID: 1588
        Joystick4Button0,
        // Token: 0x04000635 RID: 1589
        Joystick4Button1,
        // Token: 0x04000636 RID: 1590
        Joystick4Button2,
        // Token: 0x04000637 RID: 1591
        Joystick4Button3,
        // Token: 0x04000638 RID: 1592
        Joystick4Button4,
        // Token: 0x04000639 RID: 1593
        Joystick4Button5,
        // Token: 0x0400063A RID: 1594
        Joystick4Button6,
        // Token: 0x0400063B RID: 1595
        Joystick4Button7,
        // Token: 0x0400063C RID: 1596
        Joystick4Button8,
        // Token: 0x0400063D RID: 1597
        Joystick4Button9,
        // Token: 0x0400063E RID: 1598
        Joystick4Button10,
        // Token: 0x0400063F RID: 1599
        Joystick4Button11,
        // Token: 0x04000640 RID: 1600
        Joystick4Button12,
        // Token: 0x04000641 RID: 1601
        Joystick4Button13,
        // Token: 0x04000642 RID: 1602
        Joystick4Button14,
        // Token: 0x04000643 RID: 1603
        Joystick4Button15,
        // Token: 0x04000644 RID: 1604
        Joystick4Button16,
        // Token: 0x04000645 RID: 1605
        Joystick4Button17,
        // Token: 0x04000646 RID: 1606
        Joystick4Button18,
        // Token: 0x04000647 RID: 1607
        Joystick4Button19,
        // Token: 0x04000648 RID: 1608
        Joystick5Button0,
        // Token: 0x04000649 RID: 1609
        Joystick5Button1,
        // Token: 0x0400064A RID: 1610
        Joystick5Button2,
        // Token: 0x0400064B RID: 1611
        Joystick5Button3,
        // Token: 0x0400064C RID: 1612
        Joystick5Button4,
        // Token: 0x0400064D RID: 1613
        Joystick5Button5,
        // Token: 0x0400064E RID: 1614
        Joystick5Button6,
        // Token: 0x0400064F RID: 1615
        Joystick5Button7,
        // Token: 0x04000650 RID: 1616
        Joystick5Button8,
        // Token: 0x04000651 RID: 1617
        Joystick5Button9,
        // Token: 0x04000652 RID: 1618
        Joystick5Button10,
        // Token: 0x04000653 RID: 1619
        Joystick5Button11,
        // Token: 0x04000654 RID: 1620
        Joystick5Button12,
        // Token: 0x04000655 RID: 1621
        Joystick5Button13,
        // Token: 0x04000656 RID: 1622
        Joystick5Button14,
        // Token: 0x04000657 RID: 1623
        Joystick5Button15,
        // Token: 0x04000658 RID: 1624
        Joystick5Button16,
        // Token: 0x04000659 RID: 1625
        Joystick5Button17,
        // Token: 0x0400065A RID: 1626
        Joystick5Button18,
        // Token: 0x0400065B RID: 1627
        Joystick5Button19,
        // Token: 0x0400065C RID: 1628
        Joystick6Button0,
        // Token: 0x0400065D RID: 1629
        Joystick6Button1,
        // Token: 0x0400065E RID: 1630
        Joystick6Button2,
        // Token: 0x0400065F RID: 1631
        Joystick6Button3,
        // Token: 0x04000660 RID: 1632
        Joystick6Button4,
        // Token: 0x04000661 RID: 1633
        Joystick6Button5,
        // Token: 0x04000662 RID: 1634
        Joystick6Button6,
        // Token: 0x04000663 RID: 1635
        Joystick6Button7,
        // Token: 0x04000664 RID: 1636
        Joystick6Button8,
        // Token: 0x04000665 RID: 1637
        Joystick6Button9,
        // Token: 0x04000666 RID: 1638
        Joystick6Button10,
        // Token: 0x04000667 RID: 1639
        Joystick6Button11,
        // Token: 0x04000668 RID: 1640
        Joystick6Button12,
        // Token: 0x04000669 RID: 1641
        Joystick6Button13,
        // Token: 0x0400066A RID: 1642
        Joystick6Button14,
        // Token: 0x0400066B RID: 1643
        Joystick6Button15,
        // Token: 0x0400066C RID: 1644
        Joystick6Button16,
        // Token: 0x0400066D RID: 1645
        Joystick6Button17,
        // Token: 0x0400066E RID: 1646
        Joystick6Button18,
        // Token: 0x0400066F RID: 1647
        Joystick6Button19,
        // Token: 0x04000670 RID: 1648
        Joystick7Button0,
        // Token: 0x04000671 RID: 1649
        Joystick7Button1,
        // Token: 0x04000672 RID: 1650
        Joystick7Button2,
        // Token: 0x04000673 RID: 1651
        Joystick7Button3,
        // Token: 0x04000674 RID: 1652
        Joystick7Button4,
        // Token: 0x04000675 RID: 1653
        Joystick7Button5,
        // Token: 0x04000676 RID: 1654
        Joystick7Button6,
        // Token: 0x04000677 RID: 1655
        Joystick7Button7,
        // Token: 0x04000678 RID: 1656
        Joystick7Button8,
        // Token: 0x04000679 RID: 1657
        Joystick7Button9,
        // Token: 0x0400067A RID: 1658
        Joystick7Button10,
        // Token: 0x0400067B RID: 1659
        Joystick7Button11,
        // Token: 0x0400067C RID: 1660
        Joystick7Button12,
        // Token: 0x0400067D RID: 1661
        Joystick7Button13,
        // Token: 0x0400067E RID: 1662
        Joystick7Button14,
        // Token: 0x0400067F RID: 1663
        Joystick7Button15,
        // Token: 0x04000680 RID: 1664
        Joystick7Button16,
        // Token: 0x04000681 RID: 1665
        Joystick7Button17,
        // Token: 0x04000682 RID: 1666
        Joystick7Button18,
        // Token: 0x04000683 RID: 1667
        Joystick7Button19,
        // Token: 0x04000684 RID: 1668
        Joystick8Button0,
        // Token: 0x04000685 RID: 1669
        Joystick8Button1,
        // Token: 0x04000686 RID: 1670
        Joystick8Button2,
        // Token: 0x04000687 RID: 1671
        Joystick8Button3,
        // Token: 0x04000688 RID: 1672
        Joystick8Button4,
        // Token: 0x04000689 RID: 1673
        Joystick8Button5,
        // Token: 0x0400068A RID: 1674
        Joystick8Button6,
        // Token: 0x0400068B RID: 1675
        Joystick8Button7,
        // Token: 0x0400068C RID: 1676
        Joystick8Button8,
        // Token: 0x0400068D RID: 1677
        Joystick8Button9,
        // Token: 0x0400068E RID: 1678
        Joystick8Button10,
        // Token: 0x0400068F RID: 1679
        Joystick8Button11,
        // Token: 0x04000690 RID: 1680
        Joystick8Button12,
        // Token: 0x04000691 RID: 1681
        Joystick8Button13,
        // Token: 0x04000692 RID: 1682
        Joystick8Button14,
        // Token: 0x04000693 RID: 1683
        Joystick8Button15,
        // Token: 0x04000694 RID: 1684
        Joystick8Button16,
        // Token: 0x04000695 RID: 1685
        Joystick8Button17,
        // Token: 0x04000696 RID: 1686
        Joystick8Button18,
        // Token: 0x04000697 RID: 1687
        Joystick8Button19
};

input manager is:
Code:

auto manager_context = (uintptr_t*)(uintptr_t(unityplayer_base) + 0x17F1AA0); // _QWORD qword_17F1AA0[48]
input = (input_manager*)manager_context[1];


pattyz 18th November 2021 02:15 PM

Is instant hit patched or am I just hearing rumors?

montroisiemecon 18th November 2021 03:11 PM

Quote:

Originally Posted by pattyz (Post 3298695)
Is instant hit patched or am I just hearing rumors?

Why don't you try it yourself and let us know?

pattyz 18th November 2021 06:02 PM

Quote:

Originally Posted by montroisiemecon (Post 3298726)
Why don't you try it yourself and let us know?

I asked solely based on what I've heard from other people and they're telling it's causing bans on occassion or patched. I don't feel like dumping my account when asking on UC is free. Are you post count farming or just generally retarded? Kind regards!

LowkeyCharmzz 18th November 2021 06:48 PM

Quote:

Originally Posted by pattyz (Post 3298847)
I asked solely based on what I've heard from other people and they're telling it's causing bans on occassion or patched. I don't feel like dumping my account when asking on UC is free. Are you post count farming or just generally retarded? Kind regards!

its not patched, and i have no problem with bans

montroisiemecon 18th November 2021 07:25 PM

Quote:

Originally Posted by pattyz (Post 3298847)
I asked solely based on what I've heard from other people and they're telling it's causing bans on occassion or patched. I don't feel like dumping my account when asking on UC is free. Are you post count farming or just generally retarded? Kind regards!

if you base yourself on "i've heard that somewhere", allow me to wonder who is the retard here

tolessthan350gt 18th November 2021 09:45 PM

new timescale address: 0x17F1AD8 ] 0xfc
new fov address: fps camera + 0x30 ] 0x18 ] 0x15c

Tonyx97 18th November 2021 10:53 PM

Does anyone know where to find the fucking map name in online matches? GameWorld contains invalid name in both online and offline, and "location" field in EFT.Player is only valid offline...

pattyz 18th November 2021 11:18 PM

Quote:

Originally Posted by LowkeyCharmzz (Post 3298877)
its not patched, and i have no problem with bans

Thanks for clarifying, added it into my cheat and owned kidz from 500m with 9mm pistol :smileeek:

Xed0s 19th November 2021 09:21 AM

Quote:

Originally Posted by hollow (Post 3298620)
for those who don't want to use GetAsyncKeyState/GetCursorPos:
Code:

struct input_manager
{
    bool get_mouse_button(int keycode)
    {
        auto a1 = keycode;
       
        auto v3 = uintptr_t(this);
        auto v4 = ((1 << ((a1 + 67) & 0x1F)) & *(uint32_t*)(4 * ((unsigned __int64)(int)(a1 + 323) >> 5)
            + *((uint64_t*)v3 + 11))) != 0
            || ((1 << ((a1 + 67) & 0x1F)) & *(uint32_t*)(4 * ((unsigned __int64)(int)(a1 + 323) >> 5)
                + *((uint64_t*)v3 + 15))) != 0;

        return v4;
    }
   
    bool get_key(KeyCode keycode)
    {
        auto v1 = (int)keycode;
       
        auto v3 = uintptr_t(this);
        auto v4 = ((1 << (v1 & 0x1F)) & *(uint32_t*)(4 * (v1 >> 5) + *(uint64_t*)(v3 + 88))) != 0
            || ((1 << (v1 & 0x1F)) & *(uint32_t*)(4 * (v1 >> 5) + *(uint64_t*)(v3 + 120))) != 0;

        return v4;
    }

    float get_mouse_x()
    {
        return *(float*)(uintptr_t(this) + 192);
    }

    float get_mouse_y()
    {
        return *(float*)(uintptr_t(this) + 196);
    }
};

enum class KeyCode
{
        // Token: 0x04000552 RID: 1362
        None,
        // Token: 0x04000553 RID: 1363
        Backspace = 8,
        // Token: 0x04000554 RID: 1364
        Delete = 127,
        // Token: 0x04000555 RID: 1365
        Tab = 9,
        // Token: 0x04000556 RID: 1366
        Clear = 12,
        // Token: 0x04000557 RID: 1367
        Return,
        // Token: 0x04000558 RID: 1368
        Pause = 19,
        // Token: 0x04000559 RID: 1369
        Escape = 27,
        // Token: 0x0400055A RID: 1370
        Space = 32,
        // Token: 0x0400055B RID: 1371
        Keypad0 = 256,
        // Token: 0x0400055C RID: 1372
        Keypad1,
        // Token: 0x0400055D RID: 1373
        Keypad2,
        // Token: 0x0400055E RID: 1374
        Keypad3,
        // Token: 0x0400055F RID: 1375
        Keypad4,
        // Token: 0x04000560 RID: 1376
        Keypad5,
        // Token: 0x04000561 RID: 1377
        Keypad6,
        // Token: 0x04000562 RID: 1378
        Keypad7,
        // Token: 0x04000563 RID: 1379
        Keypad8,
        // Token: 0x04000564 RID: 1380
        Keypad9,
        // Token: 0x04000565 RID: 1381
        KeypadPeriod,
        // Token: 0x04000566 RID: 1382
        KeypadDivide,
        // Token: 0x04000567 RID: 1383
        KeypadMultiply,
        // Token: 0x04000568 RID: 1384
        KeypadMinus,
        // Token: 0x04000569 RID: 1385
        KeypadPlus,
        // Token: 0x0400056A RID: 1386
        KeypadEnter,
        // Token: 0x0400056B RID: 1387
        KeypadEquals,
        // Token: 0x0400056C RID: 1388
        UpArrow,
        // Token: 0x0400056D RID: 1389
        DownArrow,
        // Token: 0x0400056E RID: 1390
        RightArrow,
        // Token: 0x0400056F RID: 1391
        LeftArrow,
        // Token: 0x04000570 RID: 1392
        Insert,
        // Token: 0x04000571 RID: 1393
        Home,
        // Token: 0x04000572 RID: 1394
        End,
        // Token: 0x04000573 RID: 1395
        PageUp,
        // Token: 0x04000574 RID: 1396
        PageDown,
        // Token: 0x04000575 RID: 1397
        F1,
        // Token: 0x04000576 RID: 1398
        F2,
        // Token: 0x04000577 RID: 1399
        F3,
        // Token: 0x04000578 RID: 1400
        F4,
        // Token: 0x04000579 RID: 1401
        F5,
        // Token: 0x0400057A RID: 1402
        F6,
        // Token: 0x0400057B RID: 1403
        F7,
        // Token: 0x0400057C RID: 1404
        F8,
        // Token: 0x0400057D RID: 1405
        F9,
        // Token: 0x0400057E RID: 1406
        F10,
        // Token: 0x0400057F RID: 1407
        F11,
        // Token: 0x04000580 RID: 1408
        F12,
        // Token: 0x04000581 RID: 1409
        F13,
        // Token: 0x04000582 RID: 1410
        F14,
        // Token: 0x04000583 RID: 1411
        F15,
        // Token: 0x04000584 RID: 1412
        Alpha0 = 48,
        // Token: 0x04000585 RID: 1413
        Alpha1,
        // Token: 0x04000586 RID: 1414
        Alpha2,
        // Token: 0x04000587 RID: 1415
        Alpha3,
        // Token: 0x04000588 RID: 1416
        Alpha4,
        // Token: 0x04000589 RID: 1417
        Alpha5,
        // Token: 0x0400058A RID: 1418
        Alpha6,
        // Token: 0x0400058B RID: 1419
        Alpha7,
        // Token: 0x0400058C RID: 1420
        Alpha8,
        // Token: 0x0400058D RID: 1421
        Alpha9,
        // Token: 0x0400058E RID: 1422
        Exclaim = 33,
        // Token: 0x0400058F RID: 1423
        DoubleQuote,
        // Token: 0x04000590 RID: 1424
        Hash,
        // Token: 0x04000591 RID: 1425
        Dollar,
        // Token: 0x04000592 RID: 1426
        Percent,
        // Token: 0x04000593 RID: 1427
        Ampersand,
        // Token: 0x04000594 RID: 1428
        Quote,
        // Token: 0x04000595 RID: 1429
        LeftParen,
        // Token: 0x04000596 RID: 1430
        RightParen,
        // Token: 0x04000597 RID: 1431
        Asterisk,
        // Token: 0x04000598 RID: 1432
        Plus,
        // Token: 0x04000599 RID: 1433
        Comma,
        // Token: 0x0400059A RID: 1434
        Minus,
        // Token: 0x0400059B RID: 1435
        Period,
        // Token: 0x0400059C RID: 1436
        Slash,
        // Token: 0x0400059D RID: 1437
        Colon = 58,
        // Token: 0x0400059E RID: 1438
        Semicolon,
        // Token: 0x0400059F RID: 1439
        Less,
        // Token: 0x040005A0 RID: 1440
        Equals,
        // Token: 0x040005A1 RID: 1441
        Greater,
        // Token: 0x040005A2 RID: 1442
        Question,
        // Token: 0x040005A3 RID: 1443
        At,
        // Token: 0x040005A4 RID: 1444
        LeftBracket = 91,
        // Token: 0x040005A5 RID: 1445
        Backslash,
        // Token: 0x040005A6 RID: 1446
        RightBracket,
        // Token: 0x040005A7 RID: 1447
        Caret,
        // Token: 0x040005A8 RID: 1448
        Underscore,
        // Token: 0x040005A9 RID: 1449
        BackQuote,
        // Token: 0x040005AA RID: 1450
        A,
        // Token: 0x040005AB RID: 1451
        B,
        // Token: 0x040005AC RID: 1452
        C,
        // Token: 0x040005AD RID: 1453
        D,
        // Token: 0x040005AE RID: 1454
        E,
        // Token: 0x040005AF RID: 1455
        F,
        // Token: 0x040005B0 RID: 1456
        G,
        // Token: 0x040005B1 RID: 1457
        H,
        // Token: 0x040005B2 RID: 1458
        I,
        // Token: 0x040005B3 RID: 1459
        J,
        // Token: 0x040005B4 RID: 1460
        K,
        // Token: 0x040005B5 RID: 1461
        L,
        // Token: 0x040005B6 RID: 1462
        M,
        // Token: 0x040005B7 RID: 1463
        N,
        // Token: 0x040005B8 RID: 1464
        O,
        // Token: 0x040005B9 RID: 1465
        P,
        // Token: 0x040005BA RID: 1466
        Q,
        // Token: 0x040005BB RID: 1467
        R,
        // Token: 0x040005BC RID: 1468
        S,
        // Token: 0x040005BD RID: 1469
        T,
        // Token: 0x040005BE RID: 1470
        U,
        // Token: 0x040005BF RID: 1471
        V,
        // Token: 0x040005C0 RID: 1472
        W,
        // Token: 0x040005C1 RID: 1473
        X,
        // Token: 0x040005C2 RID: 1474
        Y,
        // Token: 0x040005C3 RID: 1475
        Z,
        // Token: 0x040005C4 RID: 1476
        LeftCurlyBracket,
        // Token: 0x040005C5 RID: 1477
        Pipe,
        // Token: 0x040005C6 RID: 1478
        RightCurlyBracket,
        // Token: 0x040005C7 RID: 1479
        Tilde,
        // Token: 0x040005C8 RID: 1480
        Numlock = 300,
        // Token: 0x040005C9 RID: 1481
        CapsLock,
        // Token: 0x040005CA RID: 1482
        ScrollLock,
        // Token: 0x040005CB RID: 1483
        RightShift,
        // Token: 0x040005CC RID: 1484
        LeftShift,
        // Token: 0x040005CD RID: 1485
        RightControl,
        // Token: 0x040005CE RID: 1486
        LeftControl,
        // Token: 0x040005CF RID: 1487
        RightAlt,
        // Token: 0x040005D0 RID: 1488
        LeftAlt,
        // Token: 0x040005D1 RID: 1489
        LeftCommand = 310,
        // Token: 0x040005D2 RID: 1490
        LeftApple = 310,
        // Token: 0x040005D3 RID: 1491
        LeftWindows,
        // Token: 0x040005D4 RID: 1492
        RightCommand = 309,
        // Token: 0x040005D5 RID: 1493
        RightApple = 309,
        // Token: 0x040005D6 RID: 1494
        RightWindows = 312,
        // Token: 0x040005D7 RID: 1495
        AltGr,
        // Token: 0x040005D8 RID: 1496
        Help = 315,
        // Token: 0x040005D9 RID: 1497
        Print,
        // Token: 0x040005DA RID: 1498
        SysReq,
        // Token: 0x040005DB RID: 1499
        Break,
        // Token: 0x040005DC RID: 1500
        Menu,
        // Token: 0x040005DD RID: 1501
        Mouse0 = 323,
        // Token: 0x040005DE RID: 1502
        Mouse1,
        // Token: 0x040005DF RID: 1503
        Mouse2,
        // Token: 0x040005E0 RID: 1504
        Mouse3,
        // Token: 0x040005E1 RID: 1505
        Mouse4,
        // Token: 0x040005E2 RID: 1506
        Mouse5,
        // Token: 0x040005E3 RID: 1507
        Mouse6,
        // Token: 0x040005E4 RID: 1508
        JoystickButton0,
        // Token: 0x040005E5 RID: 1509
        JoystickButton1,
        // Token: 0x040005E6 RID: 1510
        JoystickButton2,
        // Token: 0x040005E7 RID: 1511
        JoystickButton3,
        // Token: 0x040005E8 RID: 1512
        JoystickButton4,
        // Token: 0x040005E9 RID: 1513
        JoystickButton5,
        // Token: 0x040005EA RID: 1514
        JoystickButton6,
        // Token: 0x040005EB RID: 1515
        JoystickButton7,
        // Token: 0x040005EC RID: 1516
        JoystickButton8,
        // Token: 0x040005ED RID: 1517
        JoystickButton9,
        // Token: 0x040005EE RID: 1518
        JoystickButton10,
        // Token: 0x040005EF RID: 1519
        JoystickButton11,
        // Token: 0x040005F0 RID: 1520
        JoystickButton12,
        // Token: 0x040005F1 RID: 1521
        JoystickButton13,
        // Token: 0x040005F2 RID: 1522
        JoystickButton14,
        // Token: 0x040005F3 RID: 1523
        JoystickButton15,
        // Token: 0x040005F4 RID: 1524
        JoystickButton16,
        // Token: 0x040005F5 RID: 1525
        JoystickButton17,
        // Token: 0x040005F6 RID: 1526
        JoystickButton18,
        // Token: 0x040005F7 RID: 1527
        JoystickButton19,
        // Token: 0x040005F8 RID: 1528
        Joystick1Button0,
        // Token: 0x040005F9 RID: 1529
        Joystick1Button1,
        // Token: 0x040005FA RID: 1530
        Joystick1Button2,
        // Token: 0x040005FB RID: 1531
        Joystick1Button3,
        // Token: 0x040005FC RID: 1532
        Joystick1Button4,
        // Token: 0x040005FD RID: 1533
        Joystick1Button5,
        // Token: 0x040005FE RID: 1534
        Joystick1Button6,
        // Token: 0x040005FF RID: 1535
        Joystick1Button7,
        // Token: 0x04000600 RID: 1536
        Joystick1Button8,
        // Token: 0x04000601 RID: 1537
        Joystick1Button9,
        // Token: 0x04000602 RID: 1538
        Joystick1Button10,
        // Token: 0x04000603 RID: 1539
        Joystick1Button11,
        // Token: 0x04000604 RID: 1540
        Joystick1Button12,
        // Token: 0x04000605 RID: 1541
        Joystick1Button13,
        // Token: 0x04000606 RID: 1542
        Joystick1Button14,
        // Token: 0x04000607 RID: 1543
        Joystick1Button15,
        // Token: 0x04000608 RID: 1544
        Joystick1Button16,
        // Token: 0x04000609 RID: 1545
        Joystick1Button17,
        // Token: 0x0400060A RID: 1546
        Joystick1Button18,
        // Token: 0x0400060B RID: 1547
        Joystick1Button19,
        // Token: 0x0400060C RID: 1548
        Joystick2Button0,
        // Token: 0x0400060D RID: 1549
        Joystick2Button1,
        // Token: 0x0400060E RID: 1550
        Joystick2Button2,
        // Token: 0x0400060F RID: 1551
        Joystick2Button3,
        // Token: 0x04000610 RID: 1552
        Joystick2Button4,
        // Token: 0x04000611 RID: 1553
        Joystick2Button5,
        // Token: 0x04000612 RID: 1554
        Joystick2Button6,
        // Token: 0x04000613 RID: 1555
        Joystick2Button7,
        // Token: 0x04000614 RID: 1556
        Joystick2Button8,
        // Token: 0x04000615 RID: 1557
        Joystick2Button9,
        // Token: 0x04000616 RID: 1558
        Joystick2Button10,
        // Token: 0x04000617 RID: 1559
        Joystick2Button11,
        // Token: 0x04000618 RID: 1560
        Joystick2Button12,
        // Token: 0x04000619 RID: 1561
        Joystick2Button13,
        // Token: 0x0400061A RID: 1562
        Joystick2Button14,
        // Token: 0x0400061B RID: 1563
        Joystick2Button15,
        // Token: 0x0400061C RID: 1564
        Joystick2Button16,
        // Token: 0x0400061D RID: 1565
        Joystick2Button17,
        // Token: 0x0400061E RID: 1566
        Joystick2Button18,
        // Token: 0x0400061F RID: 1567
        Joystick2Button19,
        // Token: 0x04000620 RID: 1568
        Joystick3Button0,
        // Token: 0x04000621 RID: 1569
        Joystick3Button1,
        // Token: 0x04000622 RID: 1570
        Joystick3Button2,
        // Token: 0x04000623 RID: 1571
        Joystick3Button3,
        // Token: 0x04000624 RID: 1572
        Joystick3Button4,
        // Token: 0x04000625 RID: 1573
        Joystick3Button5,
        // Token: 0x04000626 RID: 1574
        Joystick3Button6,
        // Token: 0x04000627 RID: 1575
        Joystick3Button7,
        // Token: 0x04000628 RID: 1576
        Joystick3Button8,
        // Token: 0x04000629 RID: 1577
        Joystick3Button9,
        // Token: 0x0400062A RID: 1578
        Joystick3Button10,
        // Token: 0x0400062B RID: 1579
        Joystick3Button11,
        // Token: 0x0400062C RID: 1580
        Joystick3Button12,
        // Token: 0x0400062D RID: 1581
        Joystick3Button13,
        // Token: 0x0400062E RID: 1582
        Joystick3Button14,
        // Token: 0x0400062F RID: 1583
        Joystick3Button15,
        // Token: 0x04000630 RID: 1584
        Joystick3Button16,
        // Token: 0x04000631 RID: 1585
        Joystick3Button17,
        // Token: 0x04000632 RID: 1586
        Joystick3Button18,
        // Token: 0x04000633 RID: 1587
        Joystick3Button19,
        // Token: 0x04000634 RID: 1588
        Joystick4Button0,
        // Token: 0x04000635 RID: 1589
        Joystick4Button1,
        // Token: 0x04000636 RID: 1590
        Joystick4Button2,
        // Token: 0x04000637 RID: 1591
        Joystick4Button3,
        // Token: 0x04000638 RID: 1592
        Joystick4Button4,
        // Token: 0x04000639 RID: 1593
        Joystick4Button5,
        // Token: 0x0400063A RID: 1594
        Joystick4Button6,
        // Token: 0x0400063B RID: 1595
        Joystick4Button7,
        // Token: 0x0400063C RID: 1596
        Joystick4Button8,
        // Token: 0x0400063D RID: 1597
        Joystick4Button9,
        // Token: 0x0400063E RID: 1598
        Joystick4Button10,
        // Token: 0x0400063F RID: 1599
        Joystick4Button11,
        // Token: 0x04000640 RID: 1600
        Joystick4Button12,
        // Token: 0x04000641 RID: 1601
        Joystick4Button13,
        // Token: 0x04000642 RID: 1602
        Joystick4Button14,
        // Token: 0x04000643 RID: 1603
        Joystick4Button15,
        // Token: 0x04000644 RID: 1604
        Joystick4Button16,
        // Token: 0x04000645 RID: 1605
        Joystick4Button17,
        // Token: 0x04000646 RID: 1606
        Joystick4Button18,
        // Token: 0x04000647 RID: 1607
        Joystick4Button19,
        // Token: 0x04000648 RID: 1608
        Joystick5Button0,
        // Token: 0x04000649 RID: 1609
        Joystick5Button1,
        // Token: 0x0400064A RID: 1610
        Joystick5Button2,
        // Token: 0x0400064B RID: 1611
        Joystick5Button3,
        // Token: 0x0400064C RID: 1612
        Joystick5Button4,
        // Token: 0x0400064D RID: 1613
        Joystick5Button5,
        // Token: 0x0400064E RID: 1614
        Joystick5Button6,
        // Token: 0x0400064F RID: 1615
        Joystick5Button7,
        // Token: 0x04000650 RID: 1616
        Joystick5Button8,
        // Token: 0x04000651 RID: 1617
        Joystick5Button9,
        // Token: 0x04000652 RID: 1618
        Joystick5Button10,
        // Token: 0x04000653 RID: 1619
        Joystick5Button11,
        // Token: 0x04000654 RID: 1620
        Joystick5Button12,
        // Token: 0x04000655 RID: 1621
        Joystick5Button13,
        // Token: 0x04000656 RID: 1622
        Joystick5Button14,
        // Token: 0x04000657 RID: 1623
        Joystick5Button15,
        // Token: 0x04000658 RID: 1624
        Joystick5Button16,
        // Token: 0x04000659 RID: 1625
        Joystick5Button17,
        // Token: 0x0400065A RID: 1626
        Joystick5Button18,
        // Token: 0x0400065B RID: 1627
        Joystick5Button19,
        // Token: 0x0400065C RID: 1628
        Joystick6Button0,
        // Token: 0x0400065D RID: 1629
        Joystick6Button1,
        // Token: 0x0400065E RID: 1630
        Joystick6Button2,
        // Token: 0x0400065F RID: 1631
        Joystick6Button3,
        // Token: 0x04000660 RID: 1632
        Joystick6Button4,
        // Token: 0x04000661 RID: 1633
        Joystick6Button5,
        // Token: 0x04000662 RID: 1634
        Joystick6Button6,
        // Token: 0x04000663 RID: 1635
        Joystick6Button7,
        // Token: 0x04000664 RID: 1636
        Joystick6Button8,
        // Token: 0x04000665 RID: 1637
        Joystick6Button9,
        // Token: 0x04000666 RID: 1638
        Joystick6Button10,
        // Token: 0x04000667 RID: 1639
        Joystick6Button11,
        // Token: 0x04000668 RID: 1640
        Joystick6Button12,
        // Token: 0x04000669 RID: 1641
        Joystick6Button13,
        // Token: 0x0400066A RID: 1642
        Joystick6Button14,
        // Token: 0x0400066B RID: 1643
        Joystick6Button15,
        // Token: 0x0400066C RID: 1644
        Joystick6Button16,
        // Token: 0x0400066D RID: 1645
        Joystick6Button17,
        // Token: 0x0400066E RID: 1646
        Joystick6Button18,
        // Token: 0x0400066F RID: 1647
        Joystick6Button19,
        // Token: 0x04000670 RID: 1648
        Joystick7Button0,
        // Token: 0x04000671 RID: 1649
        Joystick7Button1,
        // Token: 0x04000672 RID: 1650
        Joystick7Button2,
        // Token: 0x04000673 RID: 1651
        Joystick7Button3,
        // Token: 0x04000674 RID: 1652
        Joystick7Button4,
        // Token: 0x04000675 RID: 1653
        Joystick7Button5,
        // Token: 0x04000676 RID: 1654
        Joystick7Button6,
        // Token: 0x04000677 RID: 1655
        Joystick7Button7,
        // Token: 0x04000678 RID: 1656
        Joystick7Button8,
        // Token: 0x04000679 RID: 1657
        Joystick7Button9,
        // Token: 0x0400067A RID: 1658
        Joystick7Button10,
        // Token: 0x0400067B RID: 1659
        Joystick7Button11,
        // Token: 0x0400067C RID: 1660
        Joystick7Button12,
        // Token: 0x0400067D RID: 1661
        Joystick7Button13,
        // Token: 0x0400067E RID: 1662
        Joystick7Button14,
        // Token: 0x0400067F RID: 1663
        Joystick7Button15,
        // Token: 0x04000680 RID: 1664
        Joystick7Button16,
        // Token: 0x04000681 RID: 1665
        Joystick7Button17,
        // Token: 0x04000682 RID: 1666
        Joystick7Button18,
        // Token: 0x04000683 RID: 1667
        Joystick7Button19,
        // Token: 0x04000684 RID: 1668
        Joystick8Button0,
        // Token: 0x04000685 RID: 1669
        Joystick8Button1,
        // Token: 0x04000686 RID: 1670
        Joystick8Button2,
        // Token: 0x04000687 RID: 1671
        Joystick8Button3,
        // Token: 0x04000688 RID: 1672
        Joystick8Button4,
        // Token: 0x04000689 RID: 1673
        Joystick8Button5,
        // Token: 0x0400068A RID: 1674
        Joystick8Button6,
        // Token: 0x0400068B RID: 1675
        Joystick8Button7,
        // Token: 0x0400068C RID: 1676
        Joystick8Button8,
        // Token: 0x0400068D RID: 1677
        Joystick8Button9,
        // Token: 0x0400068E RID: 1678
        Joystick8Button10,
        // Token: 0x0400068F RID: 1679
        Joystick8Button11,
        // Token: 0x04000690 RID: 1680
        Joystick8Button12,
        // Token: 0x04000691 RID: 1681
        Joystick8Button13,
        // Token: 0x04000692 RID: 1682
        Joystick8Button14,
        // Token: 0x04000693 RID: 1683
        Joystick8Button15,
        // Token: 0x04000694 RID: 1684
        Joystick8Button16,
        // Token: 0x04000695 RID: 1685
        Joystick8Button17,
        // Token: 0x04000696 RID: 1686
        Joystick8Button18,
        // Token: 0x04000697 RID: 1687
        Joystick8Button19
};

input manager is:
Code:

auto manager_context = (uintptr_t*)(uintptr_t(unityplayer_base) + 0x17F1AA0); // _QWORD qword_17F1AA0[48]
input = (input_manager*)manager_context[1];


or we can use spoof call/sys call

JackTheRat 19th November 2021 10:03 AM

Quote:

Originally Posted by Xed0s (Post 3299376)
BE check it and u got clapped.

BE checks what? This literally just reads some memory or am I blind?
Why would this get you clapped faster then basically anything else?

krembo 19th November 2021 12:37 PM

Quote:

Originally Posted by Xed0s (Post 3299376)
BE check it and u got clapped.

Check what? he is only reading memory

Xed0s 19th November 2021 01:12 PM

Oh yea, I'm was blinded as fuck, there no calls to funcs, sorry. Is spoof call detected in tarkov? (not public shit like FF 23/FF 26/FF E3)

hollow 19th November 2021 01:37 PM

Quote:

Originally Posted by Xed0s (Post 3299376)
or we can use spoof call/sys call

not sure why you�d do that when using unity input manager is both faster and safer


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

buddgaf 19th November 2021 11:37 PM

Quote:

Originally Posted by Tonyx97 (Post 3299082)
Does anyone know where to find the fucking map name in online matches? GameWorld contains invalid name in both online and offline, and "location" field in EFT.Player is only valid offline...

there's probably a better way to do it but i get the exfils and then determine which map i'm on based on which ones are present.

brunph 20th November 2021 02:44 PM

Quote:

Originally Posted by Xed0s (Post 3299489)
Oh yea, I'm was blinded as fuck, there no calls to funcs, sorry. Is spoof call detected in tarkov? (not public shit like FF 23/FF 26/FF E3)

iirc it can be undetected if done correctly, the be shellcode i have my hands on checks for the following gadgets: FF 23, FF 26, FF 27, FF 65, FF E3
they also perform some other checks. the shellcode is possibly a bit outdated so they could have introduced some more checks.

Reaper243 20th November 2021 04:07 PM

Did item position stuff change?

Tonyx97 21st November 2021 01:00 AM

Quote:

Originally Posted by buddgaf (Post 3299897)
there's probably a better way to do it but i get the exfils and then determine which map i'm on based on which ones are present.

Literally what I did after asking and getting no reply at all lmao xd.

pattyz 21st November 2021 01:30 PM

After extensive research, trial & error and headache I simply couldn't replicate working silent aimbot out of shotlist.

Code:

if (Toggle::Aim::Silent)
            {
                CShotList* ShotList = Firearm->GetShotList();

                if (!ShotList)
                    return;

                uint32_t SizeOfShotList = ShotList->GetSizeOfShotList();

                for (int i = 0; i < SizeOfShotList; i++)
                {
                    CShotProjectile* Projectile = ShotList->GetProjectile(i);

                    if (!Projectile)
                        return;

                    Vector3 Direction = (AimData::Position - AimData::FireportPosition);
                    Direction.Normalize();

                    //if (GetAsyncKeyState(VK_XBUTTON2) & 0x8000)
                    Projectile->SetDirection(Direction);
                }
            }

Also looked into _shotDirection in ProceduralWeaponAnimations, but it seems like x & z axises are nulled and only Y is returning so this won't work either.

I would highly appreciate any hint towards EXTERNAL silent aimbot (targeting player without local viewangle locking).

RonaldWeezly 21st November 2021 03:00 PM

Code:


        void* InvokeFunction(std::string Assembly, std::string Namespace, std::string Class, std::string FunctionName, void* Args)
        {
                if (void* LocatedAssembly = mono_image_loaded(Assembly.c_str()))
                {
                        if (void* Klass = mono_class_from_name(LocatedAssembly, Namespace.c_str(), Class.c_str()))
                        {
                                if (void* MonoMethod = mono_class_get_method_from_name(Klass, FunctionName.c_str(), -1))
                                {
                                        return mono_runtime_invoke(MonoMethod, nullptr, Args, nullptr);
                                }
                        }
                }

                return nullptr;
        }



// call
            void* Args[1];
            Args[0] = (void*)CacheManager->LocalPlayer.Base;
            Mono::InvokeFunction("Assembly-CSharp", "EFT", "Player", "Jump", Args);

Not working... any ideas? (returns nullptr and does nothing)

LowkeyCharmzz 21st November 2021 09:56 PM

anyone getting a ton of unity crashes lately? especially when trying to load into raid

ZeusLord 21st November 2021 09:59 PM

Quote:

Originally Posted by LowkeyCharmzz (Post 3301580)
anyone getting a ton of unity crashes lately? especially when trying to load into raid


No I haven�t had any crashes in quite some time everything seems to run smooth and fine for me not sure about anyone else though.

brunph 21st November 2021 10:11 PM

Quote:

Originally Posted by LowkeyCharmzz (Post 3301580)
anyone getting a ton of unity crashes lately? especially when trying to load into raid

i'm having some crashes related to the game renderer, haven't managed to figure them out yet.

Respecter 22nd November 2021 06:16 PM

Quote:

Originally Posted by Xed0s (Post 3299489)
Oh yea, I'm was blinded as fuck, there no calls to funcs, sorry. Is spoof call detected in tarkov? (not public shit like FF 23/FF 26/FF E3)

Yes, obviously

Xed0s 23rd November 2021 05:56 AM

Quote:

Originally Posted by Respecter (Post 3302217)
Yes, obviously

Bruh, it cannot be real, BE checks sucks if u use good spoof caller.

brunph 23rd November 2021 07:17 AM

Quote:

Originally Posted by Xed0s (Post 3302565)
Bruh, it cannot be real, BE checks sucks if u use good spoof caller.


They are real, but they aren�t active at all times. It gets activated for a short time when the shellcode gets loaded. Chances are you are already being flagged and they aren�t taking it as enough for a ban.

AuxifyCheats 23rd November 2021 10:16 PM

Anyone got latest GOM ?

progamer321 24th November 2021 01:33 AM

Quote:

Originally Posted by AuxifyCheats (Post 3303035)
Anyone got latest GOM ?

0x17F1CE8

Btw you can download the PDB for the unityplayer.dll that Tarkov uses

http://symbolserver.unity3d.com/UnityPlayer_Win64_mono_x64.pdb/5EF8B28C6B4F4A57AD22F7ED5C52604E1/UnityPlayer_Win64_mono_x64.pd_

download this from unitys symbol server and rename the file extension to ".cab" then extract with WinRAR

You can now load it in ida (File->Load File->PDB File->Chose extracted file) to get all names from the PDB

bhehe6813 25th November 2021 01:32 AM

Quote:

Originally Posted by Tonyx97 (Post 3299082)
Does anyone know where to find the fucking map name in online matches? GameWorld contains invalid name in both online and offline, and "location" field in EFT.Player is only valid offline...

The one in GameWorld works...

It's at 0x20, here's the map:


Code:


        public static Dictionary<string, string> QuestMapNameToIdMap = new Dictionary<string, string>() {
            {"Woods", "5704e3c2d2720bac5b8b4567"},
            {"Shoreline", "5704e554d2720bac5b8b456e" },
            {"RezervBase", "5704e5fad2720bc05b8b4567"},
            {"Laboratory", "5b0fc42d86f7744a585f9105" },
            {"Interchange", "5714dbc024597771384a510d" },
            {"factory4_day", "55f2d3fd4bdc2d5f408b4567" },
            {"factory4_night", "59fc81d786f774390775787e" },
            {"bigmap", "56f40101d2720b2a4d8b45d6" }
        };

I use it in my quest marker code which still works..

Code:

lock (QuestDictionary.QuestMarkerMap) {
                                    if (QuestDictionary.QuestMarkerMap.ContainsKey(id)) {
                                        QuestDictionary.Quest markerMap = QuestDictionary.QuestMarkerMap[id];
                                        string currentId = World.CurrentLocationId;
                                        string locationId = "";
                                        try {
                                            locationId = QuestDictionary.QuestMapNameToIdMap[currentId];
                                        } catch {
                                            continue;
                                        }
                                        if (locationId == markerMap.LocationId) {
                                            foreach (QuestWorldMarker marker in markerMap.Markers) {
                                                if (!questMarkers.Any(o => o.Name == marker.Name)) {
                                                    if (QuestDictionary.MarkerNameToLocationMap.ContainsKey(marker.Name)) {
                                                        Vector3 location = QuestDictionary.MarkerNameToLocationMap[marker.Name];
                                                        questMarkers.Add(new QuestWorldMarker(marker.Name, location));
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }


random1407 25th November 2021 02:27 AM

You Guys Are Amazing
 
I just wanted to pop in and say that this is my first real insight into the world of disassembling ANYTHING. I am in awe of your conversations and although I'm not a newb to coding *I think*, this disassembly stuff is something else.

Love reading through the agony posts and the responses from the community. I can't wait to get my fingers stuck into the basics myself but massive shout out to The Gods iB07 and Brut7 who are just unreal at this stuff (clearly).

I'm only on page 2 and I'm just mesmerized by the intelligence in here.

I hope one day I'll become half the legend that you guys are .... massive respect.

New to the community and hope to be here for the long-haul. Keep up the great work guys and thanks for taking the time to read my appreciation post.

- random1407

Reaper243 25th November 2021 03:07 AM

Anybody have the angle rotation offset inside of movement context to make direction line esp?

Edit: it's 0x364

Tonyx97 25th November 2021 09:26 AM

Quote:

Originally Posted by bhehe6813 (Post 3303985)
The one in GameWorld works...

It's at 0x20, here's the map:


Code:


        public static Dictionary<string, string> QuestMapNameToIdMap = new Dictionary<string, string>() {
            {"Woods", "5704e3c2d2720bac5b8b4567"},
            {"Shoreline", "5704e554d2720bac5b8b456e" },
            {"RezervBase", "5704e5fad2720bc05b8b4567"},
            {"Laboratory", "5b0fc42d86f7744a585f9105" },
            {"Interchange", "5714dbc024597771384a510d" },
            {"factory4_day", "55f2d3fd4bdc2d5f408b4567" },
            {"factory4_night", "59fc81d786f774390775787e" },
            {"bigmap", "56f40101d2720b2a4d8b45d6" }
        };

I use it in my quest marker code which still works..

Code:

lock (QuestDictionary.QuestMarkerMap) {
                                    if (QuestDictionary.QuestMarkerMap.ContainsKey(id)) {
                                        QuestDictionary.Quest markerMap = QuestDictionary.QuestMarkerMap[id];
                                        string currentId = World.CurrentLocationId;
                                        string locationId = "";
                                        try {
                                            locationId = QuestDictionary.QuestMapNameToIdMap[currentId];
                                        } catch {
                                            continue;
                                        }
                                        if (locationId == markerMap.LocationId) {
                                            foreach (QuestWorldMarker marker in markerMap.Markers) {
                                                if (!questMarkers.Any(o => o.Name == marker.Name)) {
                                                    if (QuestDictionary.MarkerNameToLocationMap.ContainsKey(marker.Name)) {
                                                        Vector3 location = QuestDictionary.MarkerNameToLocationMap[marker.Name];
                                                        questMarkers.Add(new QuestWorldMarker(marker.Name, location));
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }


Ye I didn't test that one online, I assumed it wasn't working anymore because it doesn't work offline :risitas:

Xed0s 25th November 2021 11:59 AM

How to fix renderer in fullscene? Present not called after changing window mode to fullscreen, in IDA unity recreates swapchain for fullscreen mode, anyone know issue?

ilahigod31 25th November 2021 12:16 PM

Scope matrix?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

pyronkiz 25th November 2021 01:57 PM

Quote:

Originally Posted by Xed0s (Post 3304285)
How to fix renderer in fullscene? Present not called after changing window mode to fullscreen, in IDA unity recreates swapchain for fullscreen mode, anyone know issue?

I had the same problem, and all I had to do was check if the swapchain was different, and reset all my rendering things.

Reaper243 26th November 2021 06:41 AM

Quote:

Originally Posted by DuOreng (Post 3267358)
Some offsets, will update with more.

Using these for weapons works fine

Code:

Active Weapon Item - 0x60
Weapon Template (Item Template) - 0x40
Weapon Template + 0x50  - Name is still this


You got the latest offsets for active weapon from handcontroller/itemcontroller?

Edit: nvm it didn't change

Did they remove Corpses from LootList? did they move it to AllLoot or something? I can't seem to find corpses in LootList

TJ888 26th November 2021 08:42 AM

Quote:

Originally Posted by Reaper243 (Post 3304977)
Did they remove Corpses from LootList? did they move it to AllLoot or something? I can't seem to find corpses in LootList

No, if you aren't drawing corpses then perhaps one of your nullptr checks due to a bad offset is skipping them.

xzackcc 27th November 2021 01:45 PM

Quote:

Originally Posted by Reaper243 (Post 3304977)
You got the latest offsets for active weapon from handcontroller/itemcontroller?

Edit: nvm it didn't change

Did they remove Corpses from LootList? did they move it to AllLoot or something? I can't seem to find corpses in LootList

Just updated my cheat after 3 months of inactivity. Corpses work fine, same GUID (55d7217a4bdc2d86028b456d), it's not a child of a container and sits inside the lootlist @ 0x60.

Reaper243 28th November 2021 10:14 AM

Quote:

Originally Posted by xzackcc (Post 3305958)
Just updated my cheat after 3 months of inactivity. Corpses work fine, same GUID (55d7217a4bdc2d86028b456d), it's not a child of a container and sits inside the lootlist @ 0x60.

Edit: nvm fixed, the way I was iterating the loot list was the issue

xzackcc 28th November 2021 03:06 PM

Quote:

Originally Posted by Tonyx97 (Post 3299082)
Does anyone know where to find the fucking map name in online matches? GameWorld contains invalid name in both online and offline, and "location" field in EFT.Player is only valid offline...

good thing i'm back to eft.
its located in localgameworld + 0x20 (unity string, so ptr + 0x14)


another question; scope stuff did change apparently, does anyone know what exactly changed?

Reaper243 29th November 2021 03:32 AM

Anyone having issues with multi search? I'm just nulling out the array count of the SearchOperations, it used to work couple months ago but not anymore.

SearchOperations: 0x110
SearchOperations Array: 0x50 + 0x18 for count

Xed0s 29th November 2021 03:38 AM

Quote:

Originally Posted by Reaper243 (Post 3307131)
Anyone having issues with multi search? I'm just nulling out the array count of the SearchOperations, it used to work couple months ago but not anymore.

SearchOperations: 0x110
SearchOperations Array: 0x50 + 0x18 for count

BSG fixed this method.

Reaper243 29th November 2021 03:39 AM

Quote:

Originally Posted by Xed0s (Post 3307135)
BSG fixed this method.

Ah that makes sense, how are people still doing it?

TJ888 29th November 2021 04:51 AM

Quote:

Originally Posted by xzackcc (Post 3306675)
another question; scope stuff did change apparently, does anyone know what exactly changed?

Since the Unity 2019 upgrade, they slightly changed the GameObjectManager as you are likely already aware, so now it looks like this-
Code:

struct GameObjectManager {
        ListNode<GameObject> LastTaggedNode // 0x0
        ListNode<GameObject> TaggedNodes // 0x8
        ListNode<GameObject> LastMainCameraTaggedNode // 0x10
        ListNode<GameObject> MainCameraTaggedNodes // 0x18
        ListNode<GameObject> LastActiveNode // 0x20
        ListNode<GameObject> ActiveNodes // 0x28
}

ActiveNodes is where you get GameWorld
MainCameraTaggedNodes is now where you get FPS Camera
and finally, TaggedNodes is where you get the Optical Camera (BaseOpticCamera(Clone))

I recommend traversing TaggedNodes backwards (Start with LastTaggedNode and go backwards in the List) to get the Optical Camera, as typically it is near the end if not already the last.

Previously there was some scuffed pointer chain in FPS Camera that could get you to the Optical Camera, or you use to be able to use the AllCameras Manager, but from what I could tell, they both don't work in live games anymore.

The way I determine if you are to use the Optical Camera is to first check IsAiming, and if it is true, check your current sights' current optical zoom level, and if it's >1.f, I use the Optical Camera. For me it works every time, I can cycle between multiple scopes and change their magnification (1x to 4x for e.g.), and the W2S behaves correctly every time.

CloudApps 4th December 2021 04:38 PM

hello im making my first eft cheat and im stuck at getting the player health and name, can someone help?

hollow 4th December 2021 05:55 PM

Quote:

Originally Posted by CloudApps (Post 3311092)
hello im making my first eft cheat and im stuck on getting the player position, could you guys point me in the right direction?

pointing you in the right direction:
Code:

auto bone_list = player_instance->get_body()->get_skeleton_root_joint()->get_values();
read + 0x10] + 0x38] for any transform in that list, then at 0x90 you'll have the player origin
or use your favorite pasted GetPosition function to get bone position

CloudApps 4th December 2021 07:41 PM

Quote:

Originally Posted by hollow (Post 3311147)
pointing you in the right direction:
Code:

auto bone_list = player_instance->get_body()->get_skeleton_root_joint()->get_values();
read + 0x10] + 0x38] for any transform in that list, then at 0x90 you'll have the player origin
or use your favorite pasted GetPosition function to get bone position

i would like to understand how it works before using it, so im going to investigate it, thanks anyway for your help + rep :D

Wesiscool205 5th December 2021 04:43 AM

this is a really noob question, but i started on tarkov yesterday and cant seem to find exactly where players are stored and how i can know its an instance of a player. i have made a few classes and have my own way of looping thru linked lists stored inside of the GOM and getting the GameWorld pointer (im assuming players are stored there)

YES i have already searched this thread and havent found anything useful. any help?

ecthirune 5th December 2021 07:33 AM

Quote:

Originally Posted by Wesiscool205 (Post 3311523)
this is a really noob question, but i started on tarkov yesterday and cant seem to find exactly where players are stored and how i can know its an instance of a player. i have made a few classes and have my own way of looping thru linked lists stored inside of the GOM and getting the GameWorld pointer (im assuming players are stored there)

YES i have already searched this thread and havent found anything useful. any help?

Search "player list"

Promptitude 5th December 2021 11:24 AM

Has the camera structure changed recently? I haven't updated my cheat in a few months but seems like the view matrix and FOV are wrong. I'm using 0xD8 for view matrix and 0x158 for FOV.
I've got FPS Camera correctly unless there's now multiple.

Here's the W2S code:
Code:

{
    if (view_matrix_dirty)
    {
        CameraEntity fps_camera = driver->Read<CameraEntity>(Globals::fps_camera);
        Globals::current_fov = fps_camera.fov;

        view_matrix = fps_camera.ViewMatrix.transpose();
        view_matrix_dirty = false;
    }

    const Utils::vector3 translation = { view_matrix[3][0], view_matrix[3][1], view_matrix[3][2] };
    const Utils::vector3 up = { view_matrix[1][0], view_matrix[1][1], view_matrix[1][2] };
    const Utils::vector3 right = { view_matrix[0][0], view_matrix[0][1], view_matrix[0][2] };

    const auto w = translation.dot_product(world) + view_matrix[3][3];

    if (w < 0.1f)
        return false;

    auto x = right.dot_product(world) + view_matrix[0][3];
    auto y = up.dot_product(world) + view_matrix[1][3];

    screen.x = (Globals::screen_size.right / 2) * (1.f + x / w);
    screen.y = (Globals::screen_size.bottom / 2) * (1.f - y / w);

    return true;
}


hollow 5th December 2021 01:36 PM

Quote:

Originally Posted by Wesiscool205 (Post 3311523)
this is a really noob question, but i started on tarkov yesterday and cant seem to find exactly where players are stored and how i can know its an instance of a player. i have made a few classes and have my own way of looping thru linked lists stored inside of the GOM and getting the GameWorld pointer (im assuming players are stored there)

YES i have already searched this thread and havent found anything useful. any help?

Code:

auto registered_players = objects::game_world->get_registered_players();

mono::list* get_registered_players()
{
        return *(mono::list**)(uintptr_t(this) + 0x80);
}

there are only players in that list, not sure if you HAVE to check if they're alive though, but:
Code:

if (player_instance->get_is_dead_already() || !player_instance->get_health_controller()->get_is_alive())
        continue;

bool get_is_dead_already()
{
        return *(bool*)(uintptr_t(this) + 0x67c);
}

struct health_controller
{
        bool get_is_alive()
        {
                return *(bool*)(uintptr_t(this) + 0x84);
        }
};
health_controller* get_health_controller()
{
        return *(health_controller**)(uintptr_t(this) + 0x4d0);
}

Quote:

Originally Posted by Promptitude (Post 3311674)
Has the camera structure changed recently? I haven't updated my cheat in a few months but seems like the view matrix and FOV are wrong. I'm using 0xD8 for view matrix and 0x158 for FOV.
I've got FPS Camera correctly unless there's now multiple.

viewmatrix is 0xDC and fov is 0x15C

xzackcc 5th December 2021 05:20 PM

Quote:

Originally Posted by TJ888 (Post 3307173)
Since the Unity 2019 upgrade, they slightly changed the GameObjectManager as you are likely already aware, so now it looks like this-
Code:

struct GameObjectManager {
        ListNode<GameObject> LastTaggedNode // 0x0
        ListNode<GameObject> TaggedNodes // 0x8
        ListNode<GameObject> LastMainCameraTaggedNode // 0x10
        ListNode<GameObject> MainCameraTaggedNodes // 0x18
        ListNode<GameObject> LastActiveNode // 0x20
        ListNode<GameObject> ActiveNodes // 0x28
}

ActiveNodes is where you get GameWorld
MainCameraTaggedNodes is now where you get FPS Camera
and finally, TaggedNodes is where you get the Optical Camera (BaseOpticCamera(Clone))

I recommend traversing TaggedNodes backwards (Start with LastTaggedNode and go backwards in the List) to get the Optical Camera, as typically it is near the end if not already the last.

Previously there was some scuffed pointer chain in FPS Camera that could get you to the Optical Camera, or you use to be able to use the AllCameras Manager, but from what I could tell, they both don't work in live games anymore.

The way I determine if you are to use the Optical Camera is to first check IsAiming, and if it is true, check your current sights' current optical zoom level, and if it's >1.f, I use the Optical Camera. For me it works every time, I can cycle between multiple scopes and change their magnification (1x to 4x for e.g.), and the W2S behaves correctly every time.

little late to reply cuz weeks been busy af.
works, thanks :)
https://i.imgur.com/sOP27Ii.png

Wesiscool205 5th December 2021 07:01 PM

Quote:

Originally Posted by hollow (Post 3311772)
Code:

auto registered_players = objects::game_world->get_registered_players();

mono::list* get_registered_players()
{
        return *(mono::list**)(uintptr_t(this) + 0x80);
}


ok so i didnt know this before, but registered players is stored in localgameworld correct? so how do i get localgameworld? is it stored in "GameWorld"?

again another noob question lol. also is the list of players a normal list of pointers or am i looking for a linked list?

xzackcc 5th December 2021 07:56 PM

Quote:

Originally Posted by Wesiscool205 (Post 3312051)
ok so i didnt know this before, but registered players is stored in localgameworld correct? so how do i get localgameworld? is it stored in "GameWorld"?

again another noob question lol. also is the list of players a normal list of pointers or am i looking for a linked list?

just open assembly csharp dll in dnspy and you'll see how the classes connect to each other.


as for the localgameworld: GameWorld + 0x30] 0x18] 0x28] = localgameworld
and gameworld can be obtained by the active object list which sits at GOM + 0x28], last active object is at GOM + 0x20]

it's structs like @TJ888 posted:
Code:

struct GameObjectManager {
        ListNode<GameObject> LastTaggedNode // 0x0
        ListNode<GameObject> TaggedNodes // 0x8
        ListNode<GameObject> LastMainCameraTaggedNode // 0x10
        ListNode<GameObject> MainCameraTaggedNodes // 0x18
        ListNode<GameObject> LastActiveNode // 0x20
        ListNode<GameObject> ActiveNodes // 0x28
}



All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

tin1300 6th December 2021 07:22 AM

Haven't been on EFT in a while, does this seem right?
Code:


struct unity_transform
{
        char pad_0[0x10];
        void* transform;
};

void GetBoneByID(uint64_t m_player, int id, geo::vec3_t& out)
{
        static std::vector<uint64_t> temp{ 0xA8, 0x28, 0x28, 0x10 };
        const auto m_array = process::memory::read_chain(m_player, temp);

        const auto player = *reinterpret_cast<unity_transform**>(std::uintptr_t(m_array) + (0x20 + (id * 8)));

        out = get_position(player->transform);
       
}

geo::vec3_t get_position(void* transform)
{
        if (!transform)
                return {};

        geo::vec3_t position{};

        static const auto get_position_injected = reinterpret_cast<uint64_t(__fastcall*)(void*, geo::vec3_t&)>(UNITYBASE + 0xDECFA0);

        get_position_injected(transform, position);

        return position;
}

Is Matrix now FPS_world_object -> 0x30 ] 0x18 ] 0xDC?

hollow 6th December 2021 09:55 AM

Quote:

Originally Posted by TJ888 (Post 3307173)
check your current sights' current optical zoom level

are you using SightComponent->some class->Zooms for that? having my doubts this exact chain would work on, say, vudu scope

TJ888 6th December 2021 11:48 AM

Quote:

Originally Posted by hollow (Post 3312502)
are you using SightComponent->some class->Zooms for that? having my doubts this exact chain would work on, say, vudu scope

Correct and it does work on the Vudu scope without any additional edge case coding. Just tested right now after never using the scope before-

Screenshots-

imkeez 6th December 2021 12:14 PM

how can i get offset for Input manager, Unity Object List and Unity Camera List?

SupremeSkill 6th December 2021 05:24 PM

how can i get sigs for cam manager

hollow 6th December 2021 05:35 PM

Quote:

Originally Posted by imkeez (Post 3312562)
how can i get offset for Input manager, Unity Object List and Unity Camera List?

input manager is index 1 in manager context:
Code:

                auto manager_context = (uintptr_t*)(uintptr_t(unityplayer_base) + 0x17F1AA0); // _QWORD qword_17F1AA0[48]
                input = (input_manager*)manager_context[1];

camera manager is 0x1791540, GOM is 0x17F1CE8

if you want ready to paste code for input manager:
https://www.unknowncheats.me/forum/3...-post5247.html

CloudApps 6th December 2021 09:00 PM

Quote:

Originally Posted by hollow (Post 3312758)
input manager is index 1 in manager context:
Code:

                auto manager_context = (uintptr_t*)(uintptr_t(unityplayer_base) + 0x17F1AA0); // _QWORD qword_17F1AA0[48]
                input = (input_manager*)manager_context[1];

camera manager is 0x1791540, GOM is 0x17F1CE8

if you want ready to paste code for input manager:
https://www.unknowncheats.me/forum/3...-post5247.html

do you know about external silent aim, im trying to get it to work by snapping the view angle on the enemy and setting it back on the old view angle but its very junky

JasonSnell 7th December 2021 10:04 PM

What function is everyone using for Raycasting? Ive tried a couple funcs from UnityPlayer already but i dont seem to get much luck, could just be me or the pdb im using is wrong, currently using the PDB for 2019.4.32(28 Oct, 2021 update) which im sure is the current ver

Any information would be nice ty

tin1300 8th December 2021 02:05 AM

12/7/2021
 
Thank you UC for all your contributions.

If you're new to EFT and want to go C++ internal here's a quick summary of what you need

Code:

uintptr_t get_position_injected =UNITYBASE + 0xDECFA0
uintptr_t RegisteredPlayers = 0x80;
uintptr_t game_object_manager = 0x17F1CE8;
struct game_object_manager
        {

                uint64_t  junk_1;
                uint64_t  last_tagged;
                uint64_t  tagged_objects;
                uint64_t  junk_2;
                uint64_t  last_active;
                uint64_t  active_objects;
               
        };
** You can check my previous post for Ex. on getting bone location

Thanks Frankie11

Code:

const auto game_object_manager = Mem::read<uintptr_t>(UNITYBASE + engine::static_offsets::game_object_manager);
                const auto active_objects = Mem::read<std::array<uint64_t, 2>>(game_object_manager + offsetof(engine::game_object_manager, last_active));
                const auto game_world_object = engine::game_objects::get_from_list(active_objects[1], active_objects[0], "GameWorld");
                const auto localgameworld = process::memory::read_chain(game_world_object, { 0x30, 0x18, 0x28 }); // Local Game World

                const auto tagged_objects = Mem::read<std::array<uint64_t, 2>>(game_object_manager + offsetof(engine::game_object_manager, last_tagged));
                const auto Fps_world_object = engine::game_objects::get_from_list(tagged_objects[1], tagged_objects[0], "FPS Camera");
                const auto cameracom = process::memory::read_chain(Fps_world_object, { 0x30, 0x18 });

                G::MATRIX = Mem::read<geo::mat4x4_t>(cameracom + 0xDC);
                uint64_t onlineusers = Mem::read<uint64_t>(localgameworld + RegisteredPlayers);
                int player_count = Mem::read<int>(onlineusers + 0x18);


Code:

uint64_t listbase = Mem::read<uint64_t>(onlineusers + 0x10); //n);
uint64_t entity = Mem::read<uint64_t>(listbase + (0x20 + (i * 8)));



Does anyone experience random crashes hooking Wndproc with SetWindowLongPtrA?

hollow 8th December 2021 02:12 AM

Quote:

Originally Posted by tin1300 (Post 3313932)
Does anyone experience random crashes hooking Wndproc with SetWindowLongPtrA?

yes, from my testing it's related to battleye

TJ888 8th December 2021 03:18 AM

Quote:

Originally Posted by tin1300 (Post 3313932)
Does anyone experience random crashes hooking Wndproc with SetWindowLongPtrA?

Quote:

Originally Posted by hollow (Post 3313935)
yes, from my testing it's related to battleye

Actually, the answer is what I gave here- Window Message Processing Hook Unstable
But you are correct in that Battleye does randomly place VEH on CallWindowProcW with one of their shellcodes, so be careful about that as well, but that isn't related to the crashing.

hollow 8th December 2021 04:50 AM

Quote:

Originally Posted by TJ888 (Post 3313968)
Actually, the answer is what I gave here- Window Message Processing Hook Unstable
But you are correct in that Battleye does randomly place VEH on CallWindowProcW with one of their shellcodes, so be careful about that as well, but that isn't related to the crashing.

i haven�t crashed a single time when i was replacing wndproc on emulator, in my mind the only thing that�s different should�ve been the presence of battleye

TJ888 8th December 2021 04:55 AM

Quote:

Originally Posted by hollow (Post 3313990)
i haven�t crashed a single time when i was replacing wndproc on emulator, in my mind the only thing that�s different should�ve been the presence of battleye

:shrug:
Maybe it is BattlEye related, but doing what I suggested in the other thread works 100% to not get crashes.

shmiga123 8th December 2021 05:40 AM

Hello guys i am started making cheat on c# who can says how i can get current health player i some thinks is from bodypart or health controller.

cxtgirl 8th December 2021 06:59 AM

Quote:

Originally Posted by shmiga123 (Post 3313999)
Hello guys i am started making cheat on c# who can says how i can get current health player i some thinks is from bodypart or health controller.

get all the bodyparts and then add their health together

POFPE 8th December 2021 09:36 AM

Has BSG removed the bullet speed detection? Four pages ago, I heard rumors that the instant hit works without detection. I used instant hit by editing speedfactor, but i got banned. I wonder if BSG remove speed detection or new way to process it.

xzackcc 8th December 2021 05:05 PM

Quote:

Originally Posted by POFPE (Post 3314070)
Has BSG removed the bullet speed detection? Four pages ago, I heard rumors that the instant hit works without detection. I used instant hit by editing speedfactor, but i got banned. I wonder if BSG remove speed detection or new way to process it.

using it daily, no bans so far.

shmiga123 8th December 2021 09:21 PM

hello guys i trying make visible check who can correct me i trying doing that likes geting from player class isvisible and using pointview but is dosent work for me.

nikobelic29 8th December 2021 11:59 PM

Quote:

Originally Posted by shmiga123 (Post 3314514)
hello guys i trying make visible check who can correct me i trying doing that likes geting from player class isvisible and using pointview but is dosent work for me.

https://www.unknowncheats.me/forum/2...-post2097.html

Do this within the main thread

hst 9th December 2021 12:32 AM

Quote:

Originally Posted by tin1300 (Post 3313932)
snip

Cool to see someone using my old internal sdk. But I would call GameObject.Find instead of using the GOM internally then you have no need for using any static offsets in that sdk.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

POFPE 9th December 2021 07:42 AM

Quote:

Originally Posted by xzackcc (Post 3314307)
using it daily, no bans so far.

by speedfactor?

xzackcc 9th December 2021 09:28 AM

Quote:

Originally Posted by POFPE (Post 3314867)
by speedfactor?

-->
Quote:

Originally Posted by POFPE (Post 3314070)
I used instant hit by editing speedfactor, but i got banned. I wonder if BSG remove speed detection or new way to process it.

yes.

POFPE 9th December 2021 03:20 PM

Quote:

Originally Posted by xzackcc (Post 3314904)
-->


yes.

Thanks for kind reply.
By the way, Is it still possible to pierce the wall through the Penetration JIT function patch? I just tested it, but it's not working. Did BSG add VisCheck or RayCast Check? Or is there any other way to do it?

shmiga123 9th December 2021 05:51 PM

guys how i can do silent aim i know i can use body rotation but my friend says i do this with shot, shoot i tryed use shot direction but my bullets fly dick knows where, who can says what a method i can use for it.

progamer321 9th December 2021 07:25 PM

Quote:

Originally Posted by shmiga123 (Post 3315180)
guys how i can do silent aim i know i can use body rotation but my friend says i do this with shot, shoot i tryed use shot direction but my bullets fly dick knows where, who can says what a method i can use for it.

_shotDirection works, find how the game utilises it

JasonSnell 9th December 2021 11:25 PM

Quote:

Originally Posted by POFPE (Post 3315083)
Thanks for kind reply.
By the way, Is it still possible to pierce the wall through the Penetration JIT function patch? I just tested it, but it's not working. Did BSG add VisCheck or RayCast Check? Or is there any other way to do it?

That got patched a hot while ago, try find a way around it.

POFPE 10th December 2021 11:21 AM

Can anyone share the W2S for the optical camera ? It's been a while since I came back. I think a lot has changed(OpticCamera(clone) not found).

xzackcc 10th December 2021 12:49 PM

Quote:

Originally Posted by POFPE (Post 3315773)
Can anyone share the W2S for the optical camera ? It's been a while since I came back. I think a lot has changed(OpticCamera(clone) not found).

literally 2 pages ago,
https://www.unknowncheats.me/forum/3...-post5290.html

POFPE 10th December 2021 01:02 PM

Quote:

Originally Posted by xzackcc (Post 3315808)

yeah, i already saw and I checked GetCurrentOpticZoom() on dnspy.
but I am on external, so I cant call function. So I wanna ask someone to get value on external.
or do i need to shellcoding for them?
+
I found some other way to process it externally.
Can any1 lemme know
Camera FOV
AspectRatio
isActive(camera it was 0x39)
offsets? I cant find it on Dnspy.

xzackcc 10th December 2021 03:17 PM

Quote:

Originally Posted by POFPE (Post 3315810)
yeah, i already saw and I checked GetCurrentOpticZoom() on dnspy.
but I am on external, so I cant call function. So I wanna ask someone to get value on external.
or do i need to shellcoding for them?
+
I found some other way to process it externally.
Can any1 lemme know
Camera FOV
AspectRatio
isActive(camera it was 0x39)
offsets? I cant find it on Dnspy.

im external as well and am not using the internal function.
just check the fov of camera and optics in reclass, then decide when to set camera or optics depending on the fov value. that's it basically.



as from what i see in dnspy, instead of calling the function, why don't you recreate it yourself?
Code:

public float GetCurrentOpticZoom()
                {
                        float[] array = this.\uE000.Zooms[this.SelectedScope];
                        if (array.Length == 0)
                        {
                                return 0f;
                        }
                        return array[this.SelectedScopeMode];
                }

this here
Code:

this.\uE000.Zooms[this.SelectedScope];
can be obtained by
Code:

20 : \uE000 (type: \uE822)
// which is
public interface \uE822
{
        // Token: 0x17001272 RID: 4722
        // (get) Token: 0x06008DE6 RID: 36326
        int ScopesCount { get; }

        // Token: 0x17001273 RID: 4723
        // (get) Token: 0x06008DE7 RID: 36327
        int[] ModesCount { get; }

        // Token: 0x17001274 RID: 4724
        // (get) Token: 0x06008DE8 RID: 36328
        float[][] Zooms { get; }

        // Token: 0x17001275 RID: 4725
        // (get) Token: 0x06008DE9 RID: 36329
        float[][] AimSensitivity { get; }

        // Token: 0x17001276 RID: 4726
        // (get) Token: 0x06008DEA RID: 36330
        int[][] CalibrationDistances { get; }

        // Token: 0x17001277 RID: 4727
        // (get) Token: 0x06008DEB RID: 36331
        string CustomAimPlane { get; }
}

and
Code:

38 : SelectedScope (type: System.Int32)
// is just a int.

and the function itself returns the following:
Code:

30 : ScopesSelectedModes (type: System.Int32[])
// which is a part of EFT.InventoryLogic.SightComponent as well.


POFPE 11th December 2021 01:45 AM

Quote:

Originally Posted by xzackcc (Post 3315887)
im external as well and am not using the internal function.
just check the fov of camera and optics in reclass, then decide when to set camera or optics depending on the fov value. that's it basically.



as from what i see in dnspy, instead of calling the function, why don't you recreate it yourself?
Code:

public float GetCurrentOpticZoom()
                {
                        float[] array = this.\uE000.Zooms[this.SelectedScope];
                        if (array.Length == 0)
                        {
                                return 0f;
                        }
                        return array[this.SelectedScopeMode];
                }

this here
Code:

this.\uE000.Zooms[this.SelectedScope];
can be obtained by
Code:

20 : \uE000 (type: \uE822)
// which is
public interface \uE822
{
        // Token: 0x17001272 RID: 4722
        // (get) Token: 0x06008DE6 RID: 36326
        int ScopesCount { get; }

        // Token: 0x17001273 RID: 4723
        // (get) Token: 0x06008DE7 RID: 36327
        int[] ModesCount { get; }

        // Token: 0x17001274 RID: 4724
        // (get) Token: 0x06008DE8 RID: 36328
        float[][] Zooms { get; }

        // Token: 0x17001275 RID: 4725
        // (get) Token: 0x06008DE9 RID: 36329
        float[][] AimSensitivity { get; }

        // Token: 0x17001276 RID: 4726
        // (get) Token: 0x06008DEA RID: 36330
        int[][] CalibrationDistances { get; }

        // Token: 0x17001277 RID: 4727
        // (get) Token: 0x06008DEB RID: 36331
        string CustomAimPlane { get; }
}

and
Code:

38 : SelectedScope (type: System.Int32)
// is just a int.

and the function itself returns the following:
Code:

30 : ScopesSelectedModes (type: System.Int32[])
// which is a part of EFT.InventoryLogic.SightComponent as well.


https://i.imgur.com/MX3R7by.png
I looked at sightcomp + 0x20 (\uE822), and only the method was found(get_Zooms). My cheat is C++, so it's hard to implement my own function (because my skills are not good).

xzackcc 11th December 2021 01:54 AM

Quote:

Originally Posted by POFPE (Post 3316340)
https://i.imgur.com/MX3R7by.png
I looked at sightcomp + 0x20 (\uE822), and only the method was found(get_Zooms). My cheat is C++, so it's hard to implement my own function (because my skills are not good).

So from my understanding, you can't get to GetCurrentOpticZoom() from your offset chain?
Just to make sure we're on the same page, would you show me the way you get the Optic and where you end up grabbing stuff like FOV, Aspect Ratio and so on, please?

POFPE 11th December 2021 02:02 AM

Quote:

Originally Posted by xzackcc (Post 3316346)
So from my understanding, you can't get to GetCurrentOpticZoom() from your offset chain?
Just to make sure we're on the same page, would you show me the way you get the Optic and where you end up grabbing stuff like FOV, Aspect Ratio and so on, please?

EDIT: ok nvm, sorry I was retarded. I just need some AspectRatio Offsets right now, fov is on 0x15C and I get fov successfully. I thought all things pushed +4 so I tested ratio with 0x4CC but I cant get value(0). can anyone give me aspectratio offset?

TJ888 11th December 2021 09:16 AM

Quote:

Originally Posted by xzackcc (Post 3315887)
im external as well and am not using the internal function.
just check the fov of camera and optics in reclass, then decide when to set camera or optics depending on the fov value. that's it basically.

It isn't even necessary to check fov values and whatnot to determined to use OpticCamera or not, as I discussed in my previous post. Basically this is what I do and it will always use the right ViewMatrix for any sight and any zoom level you are using (psuedocode):

Code:

if (isAiming && currentWeapon->GetCurrentAimingMod()->GetCurrentOpticZoom() > 1.f) {
        viewMatrix = opticCamera->GetViewMatrix();
else
        viewMatrix = fpsCamera->GetViewMatrix();

The two functions to look at in dnspy are get_CurrentAimingMod and GetCurrentOpticZoom, doing them externally is easy, but it will just require a little bit of code to correctly implement.


Quote:

Originally Posted by CloudApps (Post 3316534)
~snip~
since the new update this doesnt work anymore

https://www.unknowncheats.me/forum/3...-post5290.html

POFPE 11th December 2021 12:59 PM

Quote:

Originally Posted by TJ888 (Post 3316555)
It isn't even necessary to check fov values and whatnot to determined to use OpticCamera or not, as I discussed in my previous post. Basically this is what I do and it will always use the right ViewMatrix for any sight and any zoom level you are using (psuedocode):

Code:

if (isAiming && currentWeapon->GetCurrentAimingMod()->GetCurrentOpticZoom() > 1.f) {
        viewMatrix = opticCamera->GetViewMatrix();
else
        viewMatrix = fpsCamera->GetViewMatrix();

The two functions to look at in dnspy are get_CurrentAimingMod and GetCurrentOpticZoom, doing them externally is easy, but it will just require a little bit of code to correctly implement.


https://www.unknowncheats.me/forum/3...-post5290.html

thx. I successfully implement Improved W2S. +rep

When there is more than one enemy in the FOV, is there a way to target a nearby enemy? No matter how much I think about it, I don't know what to do. I'd appreciate it if you could give me an idea for my stupid brain.

LowkeyCharmzz 11th December 2021 08:34 PM

Quote:

Originally Posted by POFPE (Post 3316680)
thx. I successfully implement Improved W2S. +rep

When there is more than one enemy in the FOV, is there a way to target a nearby enemy? No matter how much I think about it, I don't know what to do. I'd appreciate it if you could give me an idea for my stupid brain.

just sort by distance or closest to middle of screen?

eldev 12th December 2021 01:38 AM

Has anything changed in checking that it is a lootable container? I returned after 3 months of inactivity and it seems this check no longer works.

Here is what I do to check the container
Code:

itemOwner = itemPtr + 0x10] + 0x28] + 0x108
if (itemOwner != 0) { //reading grids/slots shit

Previously, itemOwner was always 0 for non-containers, but now I always get a valid pointer. And the reading of container items works, but it seems I can no longer check the type of the object.

xzackcc 12th December 2021 01:46 AM

Quote:

Originally Posted by eldev (Post 3317261)
Has anything changed in checking that it is a lootable container? I returned after 3 months of inactivity and it seems this check no longer works.

Here is what I do to check the container
Code:

itemOwner = itemPtr + 0x10] + 0x28] + 0x108
if (itemOwner != 0) { //reading grids/slots shit

Previously, itemOwner was always 0 for non-containers, but now I always get a valid pointer. And the reading of container items works, but it seems I can no longer check the type of the object.


Code:

// old
uint64_t item_container = kernel->read_memory<uint64_t>(item_owner + 0x98);
// new
uint64_t item_container = kernel->read_memory<uint64_t>(item_owner + 0xa0);


eldev 12th December 2021 02:00 AM

Quote:

Originally Posted by xzackcc (Post 3317263)
Code:

// old
uint64_t item_container = kernel->read_memory<uint64_t>(item_owner + 0x98);
// new
uint64_t item_container = kernel->read_memory<uint64_t>(item_owner + 0xa0);


I'll clarify - reading container items works well for me, my question was how to check that this is a container, and not just an item

POFPE 12th December 2021 03:00 AM

Quote:

Originally Posted by eldev (Post 3317267)
I'll clarify - reading container items works well for me, my question was how to check that this is a container, and not just an item

Code:

#ifndef _ITEM_SHIT
struct ItemProfile
{
        char pad_0000[40]; //0x0000
        ULONG64 Interactive; //0x0028
        ULONG64 GameObject; //0x0030
        char pad_0038[16]; //0x0038
};

struct Interactive
{
        char pad_0000[16]; //0x0000
        ULONG64 item_pointer; //0x0010
        char pad_0018[56]; //0x0018
        ULONG64 Item; //0x0050
        char pad_0058[176]; //0x0058
        ULONG64 RE_ItemOwner; //0x0108
};

struct GameObject
{
        char pad_0000[48]; //0x0000
        ULONG64 TransformOne; //0x0030
        char pad_0038[40]; //0x0038
        char ObjectName[8]; //0x0060       
};

struct TransformOne
{
        char pad_0000[8]; //0x0000
        ULONG64 TransformTwo; //0x0008
};

struct TransformTwo
{
        char pad_0000[40]; //0x0000
        ULONG64 TransformContainer; //0x0038
};

struct TransformContainer
{
        char pad_0000[16]; //0x0000
        ULONG64 TransformData; //0x0010
};

iteminteractive->Reitemowner != 0
The structure didn't change for 4 months and it works well.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

virtualalloc 12th December 2021 01:47 PM

how come there is mentions of bsg banning windows keys in multiple threads on the forum. if one decompiles their launcher you can easily see what they check. they grab the installation timestamp.

https://i.imgur.com/bG12KB0.png

they grab some other stuff as well but this seems to contradict that they ban windows keys.

EliteProducer 12th December 2021 01:48 PM

Game just pushed it's new update. 12.12

montroisiemecon 12th December 2021 01:55 PM

Quote:

Originally Posted by EliteProducer (Post 3317562)
Game just pushed it's new update. 12.12

thanks sherlock

fusionpak 12th December 2021 02:15 PM

12.12 dumped via unispect (ty Razchek)

https://ghostbin.com/pbBoi

Aresn11 12th December 2021 02:19 PM

Player Profile - 0x04B0
Hands Controller - 0x0500
WeaponLn - 0x0150
Physical - 0x04C0
Stamina - 0x0038
Fatigue - 0x00A8
_pointOfView - 0x0194
_magSlotCache - 0x0B0
_isDeadAlready - 0x06A0
IsLocalPlayer - 0x07F3

edit: Viewangles now at 0x022C

POFPE 12th December 2021 02:43 PM

Is there a way to zero the probability of overheating or burning? I just opened the dnspy and checked the procedure, but I couldn't find any related functions.
playerinfo changed
Code:

struct PlayerInfo
{
        char pad_0000[16]; //0x0000
        ULONG64 UnityEngineString_Nickname; //0x10
        ULONG64 UnityEngineString_GroupId; //0x18
        ULONG64 UnityEngineString_EntryPoint; //0x20
        char pad_0030[16]; //0x28
        ULONG64 RE_Settings; //0x38
        char pad_0048[24]; //0x0048
        int32_t Side; //0x0058
        int32_t RegistrationDate; //0x005C
        float SavageLockTime; //0x0060
        char pad_0064[4]; //0x0064
        int32_t NicknameChangeDate; //0x0068
        bool IsStreamerModeAvailable; //0x006C
        char pad_006D[3]; //0x006D
        int32_t MemberCategory; //0x0070
        int32_t Experience; //0x0074
        char pad_0078[28]; //0x0078
}; //Size: 0x0094


eldev 12th December 2021 03:32 PM

HealthController - 0x4E8
InventoryController - 0x4F8

.triX 12th December 2021 04:16 PM

Did they change any web request headers?
Having issues pulling profile data.

xzackcc 12th December 2021 04:30 PM

while everyone, including me, is updating the classes .. does anyone have the new GOM & camera ptr?


-> mono dump (CE style):
https://ghostbin.com/iVEnQ

BraydenEGC 12th December 2021 04:35 PM

Quote:

Originally Posted by xzackcc (Post 3317669)
~snip~

There was no unity update with .12.12.

numagomedov 12th December 2021 04:35 PM

Quote:

Originally Posted by xzackcc (Post 3317669)
while everyone, including me, is updating the classes .. does anyone have the new GOM & camera ptr?


-> mono dump (CE style):
https://ghostbin.com/iVEnQ

neither GOM nor Camera PTR changed..

xzackcc 12th December 2021 04:42 PM

Quote:

Originally Posted by BraydenEGC (Post 3317673)
There was no unity update with .12.12.

Quote:

Originally Posted by numagomedov (Post 3317674)
neither GOM nor Camera PTR changed..

oh lol. good to know, i just went straight into dumping the mono classes without realising what the update is about.
thanks for clarification!

numagomedov 12th December 2021 05:07 PM

Quote:

Originally Posted by Aresn11 (Post 3317580)
Player Profile - 0x04B0
Hands Controller - 0x0500
WeaponLn - 0x0150
Physical - 0x04C0
Stamina - 0x0038
Fatigue - 0x00A8
_pointOfView - 0x0194
_magSlotCache - 0x0B0
_isDeadAlready - 0x06A0
IsLocalPlayer - 0x07F3

edit: Viewangles now at 0x022C

Viewangles doesn't seem to be correct

xzackcc 12th December 2021 05:08 PM

Quote:

Originally Posted by numagomedov (Post 3317691)
Viewangles doesn't seem to be correct

they are correct.

numagomedov 12th December 2021 05:11 PM

Quote:

Originally Posted by xzackcc (Post 3317695)
they are correct.

you are correct, fireport changed to: 0xe8

hollow 12th December 2021 05:14 PM

Quote:

Originally Posted by numagomedov (Post 3317698)
you are correct, fireport changed to: 0xe8

is there any reason people aren't using fireport in pwa->handscontainer? it literally never changes

CloudApps 12th December 2021 06:29 PM

getting player info
 
have some questions:
question 1: how to get player hold weapon name?
question 2: how to get bullets in current mag ?

hollow 12th December 2021 06:38 PM

Quote:

Originally Posted by CloudApps (Post 3317754)
have some questions:
question 1: how to get player hold weapon name?
question 2: how to get bullets in current mag ?

1. hands controller + 0x60 is weapon in hands
2. _magSlotCache

JasonSnell 12th December 2021 06:43 PM

Quote:

Originally Posted by numagomedov (Post 3317691)
Viewangles doesn't seem to be correct

EFT::MovementState::MovementContext = 0x40
MovementContext::ViewAngles = 0x22C

CloudApps 12th December 2021 06:47 PM

Quote:

Originally Posted by hollow (Post 3317761)
1. hands controller + 0x60 is weapon in hands
2. _magSlotCache

thanks i'll try that


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

LowkeyCharmzz 12th December 2021 06:50 PM

bullet speedfactor = 0x168

recoil stuff (ShotEffector + ___) :

XY = 0x40
Z = 0x48
Degree = 0x50
Direction= 0x58
Radian = 0x64

AimSwayMax = ProceduralWeapon + 0x20C

CloudApps 12th December 2021 06:58 PM

External Thermal Vision
 
i was looking at the offsets and i saw "ThermalVisionComponent"
if its what i think it is how to enable it ? i don't see any booleon

EFT.Player + 0x448

failnoobgamer 12th December 2021 07:40 PM

Did AimIndex change? used to be 0xB0 ] 0x28, updated it to 0xB8 ] 0x28 but doesnt seem to be correct

*Edit* - Fixed

Reaper243 12th December 2021 07:44 PM

Player Info -> Nickname: 0x10
Player Info -> Settings: 0x38

overboostaltima 12th December 2021 07:48 PM

Quote:

Originally Posted by CloudApps (Post 3317780)
i was looking at the offsets and i saw "ThermalVisionComponent"
if its what i think it is how to enable it ? i don't see any booleon

EFT.Player + 0x448


Code:

void nightvision()

    if (nvON == 0)
    {
        Sleep(200);
        nvON = 1;
        std::cout << "nv " << nvON << std::endl;
        if (!fps_camera)return;
        auto nVision = GetComponentFromGameObject(fps_camera, "NightVision");
        if (!nVision)return;

        wpm<bool>(nVision + 0xCC, true);
        wpm(nVision + 0xB0, 0.f);
        wpm(nVision + 0xB8, 0.f);
        goto end1;
       
    }

    if (nvON == 1)
    {
        Sleep(200);
        nvON = 0;
        std::cout << "nv " << nvON << std::endl;
        if (!fps_camera)return;
        auto nVision = GetComponentFromGameObject(fps_camera, "NightVision");
        if (!nVision)return;

        wpm<bool>(nVision + 0xCC, false);

        wpm(nVision + 0xB0, 0.f);
        wpm(nVision + 0xB8, 0.f);
        goto end1;
        Sleep(200);
    }
end1:;
}


CloudApps 12th December 2021 07:54 PM

Quote:

Originally Posted by overboostaltima (Post 3317823)
Code:

void nightvision()

    if (nvON == 0)
    {
        Sleep(200);
        nvON = 1;
        std::cout << "nv " << nvON << std::endl;
        if (!fps_camera)return;
        auto nVision = GetComponentFromGameObject(fps_camera, "NightVision");
        if (!nVision)return;

        wpm<bool>(nVision + 0xCC, true);
        wpm(nVision + 0xB0, 0.f);
        wpm(nVision + 0xB8, 0.f);
        goto end1;
       
    }

    if (nvON == 1)
    {
        Sleep(200);
        nvON = 0;
        std::cout << "nv " << nvON << std::endl;
        if (!fps_camera)return;
        auto nVision = GetComponentFromGameObject(fps_camera, "NightVision");
        if (!nVision)return;

        wpm<bool>(nVision + 0xCC, false);

        wpm(nVision + 0xB0, 0.f);
        wpm(nVision + 0xB8, 0.f);
        goto end1;
        Sleep(200);
    }
end1:;
}


i do not know if that is external or internal

im external, if there is anyway you can give me the GetComponentFromGameObject it can be cool :wave:

JasonSnell 12th December 2021 08:00 PM

Found wy

overboostaltima 12th December 2021 08:04 PM

Quote:

Originally Posted by CloudApps (Post 3317828)
i do not know if that is external or internal

im external, if there is anyway you can give me the GetComponentFromGameObject it can be cool :wave:


External too.
Code:

uint64_t GetComponentFromGameObject(uint64_t gom2, const char* compname)
{
        char Name[256];
        uint64_t яички = rpm<uint64_t>(gom2 + 0x30);
        if (!яички)return 0;

        for (int i = 0x8; i < 0x1000; i += 0x10)
        {
                uint64_t Поля = rpm<uint64_t>(rpm<uint64_t>(яички + i) + 0x28);
                if (!Поля)return 0;
                uint64_t NameChain = rpm<uintptr_t>(rpm<uintptr_t>(rpm<uintptr_t>(Поля)) + 0x48);
                if (!NameChain)return 0;
                rpmBuffer<char>(NameChain, Name, 256);
                if (strcmp(Name, compname) == 0)
                {
                        return Поля;
                }
        }

        return 0;
}

It seems my fast mags are broken , does anyone know what changed?

Code:

//Broken

    uint64_t SkillClass = rpm<uint64_t>(rpm<uint64_t>(local_player.entity + offsets::Player_Profile_offset) + 0x60);
        wpm<float>(rpm<uint64_t>(SkillClass + 0x190) + 0x28, 85.f); //Mag
        wpm<float>(rpm<uint64_t>(SkillClass + 0x170) + 0x28, 85.f); //Mag
        wpm<float>(rpm<uint64_t>(SkillClass + 0x178) + 0x28, 85.f); //Mag


CloudApps 12th December 2021 08:12 PM

thermal dont work

xzackcc 12th December 2021 08:13 PM

Quote:

Originally Posted by CloudApps (Post 3317828)
i do not know if that is external or internal

im external, if there is anyway you can give me the GetComponentFromGameObject it can be cool :wave:

Code:

std::uint64_t get_object_component(std::uint64_t obj, std::string classname) {
                // component list
                std::uint64_t comps = kernel->read_memory< std::uint64_t >(obj + 0x30);
                // might need de/increase depending on parent class
                for (int i = 0; i < 50; i++) {
                        // returning field if name matches
                        std::uint64_t field = kernel->read_chain< std::uint64_t >(comps, { (ull)0x8 + (i * 0x10), 0x28 });
                        // in-processor dereference for pointer -> classname
                        uint64_t dref_ptr = kernel->read_chain< std::uint64_t >(field, { 0x0, 0x0, 0x48 });
                        // actual object name
                        std::string obj_name = kernel->read_string(dref_ptr);
                        // compare to arg passed
                        if (obj_name.find(classname) != std::string::npos) {
                                return field;
                        }
                       
                }
                return 0;
        }


overboostaltima 12th December 2021 08:17 PM

Quote:

Originally Posted by Aresn11 (Post 3317580)
Player Profile - 0x04B0
Hands Controller - 0x0500
WeaponLn - 0x0150
Physical - 0x04C0
Stamina - 0x0038
Fatigue - 0x00A8
_pointOfView - 0x0194
_magSlotCache - 0x0B0
_isDeadAlready - 0x06A0
IsLocalPlayer - 0x07F3

edit: Viewangles now at 0x022C

+rep, thank you

CloudApps 12th December 2021 08:17 PM

Quote:

Originally Posted by xzackcc (Post 3317843)
Code:

std::uint64_t get_object_component(std::uint64_t obj, std::string classname) {
                // component list
                std::uint64_t comps = kernel->read_memory< std::uint64_t >(obj + 0x30);
                // might need de/increase depending on parent class
                for (int i = 0; i < 50; i++) {
                        // returning field if name matches
                        std::uint64_t field = kernel->read_chain< std::uint64_t >(comps, { (ull)0x8 + (i * 0x10), 0x28 });
                        // in-processor dereference for pointer -> classname
                        uint64_t dref_ptr = kernel->read_chain< std::uint64_t >(field, { 0x0, 0x0, 0x48 });
                        // actual object name
                        std::string obj_name = kernel->read_string(dref_ptr);
                        // compare to arg passed
                        if (obj_name.find(classname) != std::string::npos) {
                                return field;
                        }
                       
                }
                return 0;
        }



what is ull?

Quote:

Originally Posted by overboostaltima (Post 3317833)
External too.
Code:

uint64_t GetComponentFromGameObject(uint64_t gom2, const char* compname)
{
        char Name[256];
        uint64_t яички = rpm<uint64_t>(gom2 + 0x30);
        if (!яички)return 0;

        for (int i = 0x8; i < 0x1000; i += 0x10)
        {
                uint64_t Поля = rpm<uint64_t>(rpm<uint64_t>(яички + i) + 0x28);
                if (!Поля)return 0;
                uint64_t NameChain = rpm<uintptr_t>(rpm<uintptr_t>(rpm<uintptr_t>(Поля)) + 0x48);
                if (!NameChain)return 0;
                rpmBuffer<char>(NameChain, Name, 256);
                if (strcmp(Name, compname) == 0)
                {
                        return Поля;
                }
        }

        return 0;
}

It seems my fast mags are broken , does anyone know what changed?

Code:

//Broken

    uint64_t SkillClass = rpm<uint64_t>(rpm<uint64_t>(local_player.entity + offsets::Player_Profile_offset) + 0x60);
        wpm<float>(rpm<uint64_t>(SkillClass + 0x190) + 0x28, 85.f); //Mag
        wpm<float>(rpm<uint64_t>(SkillClass + 0x170) + 0x28, 85.f); //Mag
        wpm<float>(rpm<uint64_t>(SkillClass + 0x178) + 0x28, 85.f); //Mag


your get object from list dont work

LowkeyCharmzz 12th December 2021 09:02 PM

Quote:

Originally Posted by overboostaltima (Post 3317833)
External too.
Code:

uint64_t GetComponentFromGameObject(uint64_t gom2, const char* compname)
{
        char Name[256];
        uint64_t яички = rpm<uint64_t>(gom2 + 0x30);
        if (!яички)return 0;

        for (int i = 0x8; i < 0x1000; i += 0x10)
        {
                uint64_t Поля = rpm<uint64_t>(rpm<uint64_t>(яички + i) + 0x28);
                if (!Поля)return 0;
                uint64_t NameChain = rpm<uintptr_t>(rpm<uintptr_t>(rpm<uintptr_t>(Поля)) + 0x48);
                if (!NameChain)return 0;
                rpmBuffer<char>(NameChain, Name, 256);
                if (strcmp(Name, compname) == 0)
                {
                        return Поля;
                }
        }

        return 0;
}

It seems my fast mags are broken , does anyone know what changed?

Code:

//Broken

    uint64_t SkillClass = rpm<uint64_t>(rpm<uint64_t>(local_player.entity + offsets::Player_Profile_offset) + 0x60);
        wpm<float>(rpm<uint64_t>(SkillClass + 0x190) + 0x28, 85.f); //Mag
        wpm<float>(rpm<uint64_t>(SkillClass + 0x170) + 0x28, 85.f); //Mag
        wpm<float>(rpm<uint64_t>(SkillClass + 0x178) + 0x28, 85.f); //Mag


mag drills works fine. For Skills + 0x190 why are you writing a float to a bool? anyways if the bullets wont even unload, then lower the 85f to like 50f

bhehe6813 12th December 2021 09:21 PM

Initial velocity silent aim not working anymore. There's a new trajectory info array.

overboostaltima 12th December 2021 10:14 PM

Quote:

Originally Posted by LowkeyCharmzz (Post 3317875)
mag drills works fine. For Skills + 0x190 why are you writing a float to a bool? anyways if the bullets wont even unload, then lower the 85f to like 50f

Its weird mine broke. How are you getting skills?

Thank you

xzackcc 12th December 2021 10:24 PM

Quote:

Originally Posted by CloudApps (Post 3317846)
what is ull?

seriously, that is up to you to discover. remove it and see what your compiler tells you.

CloudApps 12th December 2021 10:51 PM

Quote:

Originally Posted by xzackcc (Post 3317908)
seriously, that is up to you to discover. remove it and see what your compiler tells you.

i did fix it when i removed it a long time ago.. problem, it still dont work, after debugging i found out that the problem is that when i read the name of the object it returns GameObject and some other objects but no "NightVision"

xzackcc 12th December 2021 11:11 PM

Quote:

Originally Posted by CloudApps (Post 3317928)
i did fix it when i removed it a long time ago.. problem, it still dont work, after debugging i found out that the problem is that when i read the name of the object it returns GameObject and some other objects but no "NightVision"

show your code cuz my code i sent you works perfectly fine.

LowkeyCharmzz 12th December 2021 11:11 PM

Quote:

Originally Posted by overboostaltima (Post 3317905)
Its weird mine broke. How are you getting skills?

Thank you

profile + 0x60

CloudApps 12th December 2021 11:25 PM

what happened to GameWorld? i cant have access to it anymore since the new update


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

overboostaltima 12th December 2021 11:48 PM

Quote:

Originally Posted by LowkeyCharmzz (Post 3317945)
profile + 0x60

Yeah thats what I have

Code:

uint64_t Skill = rpm<uint64_t>(rpm<uint64_t>(lplayer.entity + offsets::Player_Profile_offset) + 0x60);


        wpm<float>(rpm<uint64_t>(SkillClass + 0x190) + 0x28, 85.f); //Mag Check
        wpm<float>(rpm<uint64_t>(SkillClass + 0x178) + 0x28, 85.f); //Unload 3
        wpm<float>(rpm<uint64_t>(SkillClass + 0x170) + 0x28, 85.f); //Load Speed


Are the values too high? I write only once... Worked in previous patch... do I need to infinite loop this now?

LowkeyCharmzz 12th December 2021 11:54 PM

Quote:

Originally Posted by overboostaltima (Post 3317961)
Yeah thats what I have

Code:

uint64_t Skill = rpm<uint64_t>(rpm<uint64_t>(lplayer.entity + offsets::Player_Profile_offset) + 0x60);


        wpm<float>(rpm<uint64_t>(SkillClass + 0x190) + 0x28, 85.f); //Mag Check
        wpm<float>(rpm<uint64_t>(SkillClass + 0x178) + 0x28, 85.f); //Unload 3
        wpm<float>(rpm<uint64_t>(SkillClass + 0x170) + 0x28, 85.f); //Load Speed


Are the values too high? I write only once... Worked in previous patch... do I need to infinite loop this now?

write once per raid is all that is needed, what exactly is the problem, is it just same as normal, or is the mag not unloading

cxtgirl 13th December 2021 12:07 AM

Quote:

Originally Posted by LowkeyCharmzz (Post 3317773)
bullet speedfactor = 0x168

recoil stuff (ShotEffector + ___) :

XY = 0x40
Z = 0x48
Degree = 0x50
Direction= 0x58
Radian = 0x64

AimSwayMax = ProceduralWeapon + 0x20C

you can jut do ShotEffector->intensity = 0.f to null recoil in one write

overboostaltima 13th December 2021 01:00 AM

Quote:

Originally Posted by LowkeyCharmzz (Post 3317966)
write once per raid is all that is needed, what exactly is the problem, is it just same as normal, or is the mag not unloading

unload works, but load doesnt.

LowkeyCharmzz 13th December 2021 01:08 AM

Quote:

Originally Posted by overboostaltima (Post 3317989)
unload works, but load doesnt.

if it just isnt loading any bullets then lower the float your writing

DuOreng 13th December 2021 03:20 AM

Anyone got latest of these?

Code:

    Vector3 GetCameraRotation()
        {
                uint64_t Camera = ReadChain(Address, { 0x8, 0x38 });
                return Memory::read<Vector3>(Camera + 0xC0);
        }

        Vector3 GetCameraLocation()
        {
                uint64_t Camera = ReadChain(Address, { 0x8, 0x38 });
                return Memory::read<Vector3>(Camera + 0xB0);
        }

        Matrix4f GetCameraMatrix()
        {
                uint64_t Camera = Memory::read<int64_t>(Address + 0x18);
                return Memory::read<Matrix4f>(Camera + 0xDC);
        }

*Edit* - Fixed

Wesiscool205 13th December 2021 04:58 AM

thanks to @hollow and @xzackcc and everyone on this forum i was able to get my hack working. just one more thing im having trouble finding, where is a model name or something like that to differentiate between scavs and players? i found something about it but i couldnt find where its at on CE. sorry for asking so much on this forum lol never hacked a unity game this shit wack

oh yea and thanks @TJ888 for the contributions

ZeusLord 13th December 2021 05:01 AM

Quote:

Originally Posted by Wesiscool205 (Post 3318094)
~

Check the player's side ID to determine if they are usec, bear, or savage, and then if they are savage check if registration date is > 0 and if it is then they are a player scav if not it's an AI.

CloudApps 13th December 2021 07:14 AM

problem getting the player entity
 
i have a problem getting the player entity since the new update here is my code:

Code:

address::online_users = kernel::Read<uint64_t>(address::local_game_world + 0x80);
                address::list_base = kernel::Read<uint64_t>(address::online_users + offsetof(structs::list_base, base));

               

                address::player_count = kernel::Read<int32_t>(address::online_users + 0x18);
                for (int i = 0; i < address::player_count; i++)
                {
                        uint64_t player_buffer = kernel::Read<uint64_t>(address::list_base + (offsetof(structs::list_internal, entry) + (i * 8)));

the structs:

class list_internal
{
public:
char pad_0x0000[0x20]; //0x0000
uintptr_t* entry; //0x0020
}; //Size=0x0028

class list_base
{
public:
char pad_0x0000[0x10]; //0x0000
list_internal* base; //0x0010
__int32 itemCount; //0x0018
}; //Size=0x001C

*Edit* - Fixed

vendeta228 13th December 2021 09:41 AM

hello everyone, do you have any gom Pattern???

serge 13th December 2021 09:49 AM

anyone know what happened to SpeedRetardation inside of AmmoTemplate? it's gone this patch and i'm too lazy to look at the bullet functions it was used in.

also, here are some additional offsets that someone may find useful.
Code:

LocalPlayer { 0x40, 0x3B0 } //bOnGround
Physical + 0x148 //Stance (0=Prone, 1=Crouch, 2=Standing)
ProceduralWeapon, { 0x28, 0xB8 } //bADS
ProceduralWeapon + 0x179 //bScopedIn
ProceduralWeapon + 0x348 //fScopeZeroRange


failnoobgamer 13th December 2021 10:28 AM

Quote:

Originally Posted by serge (Post 3318157)
anyone know what happened to SpeedRetardation inside of AmmoTemplate? it's gone this patch and i'm too lazy to look at the bullet functions it was used in.

also, here are some additional offsets that someone may find useful.
Code:

LocalPlayer { 0x40, 0x3B0 } //bOnGround
Physical + 0x148 //Stance (0=Prone, 1=Crouch, 2=Standing)
ProceduralWeapon, { 0x28, 0xB8 } //bADS
ProceduralWeapon + 0x179 //bScopedIn
ProceduralWeapon + 0x348 //fScopeZeroRange


They changed how bullet drop is calculated so it has been removed, BulletMassGram and BulletDiameterMilimeters was added to ammo template which is used to calculate the bullet drop now.

From the patch notes
Code:

7. Improved the mechanics of external ammo ballistics. Now, when calculating the flight trajectory and energy, the initial speed, bullet weight, bullet diameter, its shape and ballistic coefficient are taken into account. Previously, only the initial velocity and bullet weight were taken into account.
You can go find ballistics calculator and see the functions FormTrajectory and PredictedTrajectoryCalculation for bullet drop prediction

serge 13th December 2021 10:37 AM

Quote:

Originally Posted by failnoobgamer (Post 3318173)
They changed how bullet drop is calculated so it has been removed, BulletMassGram and BulletDiameterMilimeters was added to ammo template which is used to calculate the bullet drop now.

From the patch notes
Code:

7. Improved the mechanics of external ammo ballistics. Now, when calculating the flight trajectory and energy, the initial speed, bullet weight, bullet diameter, its shape and ballistic coefficient are taken into account. Previously, only the initial velocity and bullet weight were taken into account.
You can go find ballistics calculator and see the functions FormTrajectory and PredictedTrajectoryCalculation for bullet drop prediction

ah word, i saw those in the ammo template but i never took a look at the patch notes.
i used SpeedRetardation to make my bullets have no drop instead of doing bullet drop predictions.
i guess ill just take a look at another time and create a new method for no bullet drop

TJ888 13th December 2021 11:34 AM

Quote:

Originally Posted by Wesiscool205 (Post 3318094)
thanks to @hollow and @xzackcc and everyone on this forum i was able to get my hack working. just one more thing im having trouble finding, where is a model name or something like that to differentiate between scavs and players? i found something about it but i couldnt find where its at on CE. sorry for asking so much on this forum lol never hacked a unity game this shit wack

oh yea and thanks @TJ888 for the contributions

What you are looking for is PlayerSide, which is an enum named EPlayerSide that specifies if someone is Usec(1), Bear(2), or Savage/Scav (4).

On alive players, this can be found in Player->Profile->Info->Side.
On corpses, it is just an obfuscated variable with type EPlayerSide.

If you aren't already, use dnSpy alongside an offset dump to help majorly in finding offsets you want, and what obfuscated variables and classes are.

xzackcc 13th December 2021 01:00 PM

Quote:

Originally Posted by Wesiscool205 (Post 3318094)
thanks to @hollow and @xzackcc and everyone on this forum i was able to get my hack working. just one more thing im having trouble finding, where is a model name or something like that to differentiate between scavs and players? i found something about it but i couldnt find where its at on CE. sorry for asking so much on this forum lol never hacked a unity game this shit wack

oh yea and thanks @TJ888 for the contributions

like @TJ888 said.

you would want to filter teammates as well (if you continue working on your cheat), so here is some extra stuff for you to discover:

Code:

// team check
if (auto local_grp = G::localplayer.cachesystem.PlayerProfile->PlayerInfo()->GroupId() != "") {
                                                                        if (utilities::string_is(entity.PlayerProfile()->PlayerInfo()->GroupId().c_str(), local_grp.c_str()))
                                                                                entity.is_teammate = true;
}

PlayerProfile being:
Code:

struct CPlayerProfile
{
public:
        // 10 : Id (type: System.String)
        std::string Id()
        {
                return GSDK::Unity::UnityEngineString((uint64_t)this + 0x0010);
        }

        // 18 : AccountId (type: System.String)
        std::string AccountId()
        {
                return GSDK::Unity::UnityEngineString((uint64_t)this + 0x0018);
        }

        // 20 : PetId (type: System.String)
        std::string PetId()
        {
                return GSDK::Unity::UnityEngineString((uint64_t)this + 0x0020);
        }

        // 60 : Skills (type: \uE646)
        CSkills* Skills()
        {
                return kernel->read_memory<CSkills*>((uint64_t)this + 0x0060);
        }

        // 28 : Info (type: \uE62C)
        CPlayerInfo* PlayerInfo()
        {
                return kernel->read_memory<CPlayerInfo*>((uint64_t)this + 0x0028);
        }

        // 48 : Inventory (type: \uE93F)
        CPlayerInventory* Inventory()
        {
                return kernel->read_memory<CPlayerInventory*>((uint64_t)this + 0x0048);
        }
};

PlayerInfo being:
Code:

struct CPlayerInfo
{
public:

        // 10 : Nickname (type: std::string)
        std::string Nickname() {
                return GSDK::Unity::UnityEngineString((uint64_t)this + 0x10);
        }

        // 58 : Side (type: EFT.EPlayerSide)
        int32_t Side() {
                return kernel->read_memory< int32_t >((uint64_t)this + 0x58);
        }

        // 5c : RegistrationDate (type: int32_t)
        int32_t RegistrationDate() {
                return kernel->read_memory< int32_t >((uint64_t)this + 0x5c);
        }

        // 60 : SavageLockTime (type: double)
        double SavageLockTime() {
                return kernel->read_memory< double >((uint64_t)this + 0x60);
        }

        // 18 : GroupId (type: std::string)
        std::string GroupId() {
                if (auto ptr = zkernel->read_memory<uint64_t>((uint64_t)this + 0x0018))
                        return GSDK::Unity::UnityEngineString(ptr, PTR_DEREFFED);
                else
                        return "";
        }

        // 20 : EntryPoint (type: std::string)
        std::string EntryPoint() {
                return GSDK::Unity::UnityEngineString((uint64_t)this + 0x20);
        }

        // 28 : Voice (type: std::string)
        std::string Voice() {
                return GSDK::Unity::UnityEngineString((uint64_t)this + 0x28);
        }

        // 68 : NicknameChangeDate (type: int32_t)
        int32_t NicknameChangeDate() {
                return kernel->read_memory< int32_t >((uint64_t)this + 0x68);
        }

        // 6c : IsStreamerModeAvailable (type: bool)
        bool IsStreamerModeAvailable() {
                return kernel->read_memory< bool >((uint64_t)this + 0x6c);
        }

        // 38 : Settings (type: unknown_uE623)
        CSettings* Settings() {
                return kernel->read_memory< CSettings* >((uint64_t)this + 0x38);
        }

        // 70 : MemberCategory (type: EMemberCategory)
        int32_t MemberCategory() {
                return kernel->read_memory< int32_t >((uint64_t)this + 0x70);
        }

        // 74 : unknown_uE001 (type: int32_t)
        int32_t unknown_uE001() {
                return kernel->read_memory< int32_t >((uint64_t)this + 0x74);
        }

        std::string SideString()
        {
                switch (this->Side())
                {
                case 0x1:
                        return "PMC (USEC)";
                case 0x2:
                        return "PMC (BEAR)";
                case 0x4:
                        return "SCAV";
                default:
                        return "UNKNOWN";
                }
                return "UNKNOWN";
        }

        std::string MemberCategoryString()
        {
                switch (this->MemberCategory())
                {
                case 0:
                        return "Default";
                case 1:
                        return "Developer";
                case 2:
                        return "UniqueId";
                case 4:
                        return "Trader";
                case 8:
                        return "Group";
                case 16:
                        return "System";
                case 32:
                        return "Chat Moderator";
                case 64:
                        return "Chat Moderator (+ Permanent Ban)";
                case 128:
                        return "UnitText";
                case 256:
                        return "Sherpa";
                case 512:
                        return "Emissary";
                default:
                        return "UNKNOWN";
                }
                return "UNKNOWN";
        }
};

have fun.

cxtgirl 13th December 2021 01:12 PM

anyone know how to get shortname for held weapons externally?

xzackcc 13th December 2021 01:50 PM

Quote:

Originally Posted by cxtgirl (Post 3318248)
anyone know how to get shortname for held weapons externally?

Just guessing but this would be the shortname for your weapon.
Code:

_handsController (type: EFT.Player.AbstractHandsController) @ 0x500 ->
EFT.InventoryLogic.Item @ 0x60 ->
<Template>k__BackingField (type: EFT.InventoryLogic.ItemTemplate) @ 0x40 ->
ShortName (type: System.String) @ 0x18


EliteProducer 13th December 2021 02:37 PM

Code:

uint64_t Template = ReadChain(item.instance, { 0x10, 0x28, 0x50, 0x38 });
uint64_t EngineString = read<uint64_t>(Template + 0x50);

Has anyone got an updated Item Template chain? This one seems to be out of date. I've looked all over with no luck.

CloudApps 13th December 2021 03:11 PM

i have a problem getting the player entity since the new update here is my code:

Code:
Code:

address::online_users = kernel::Read<uint64_t>(address::local_game_world + 0x80);
                address::list_base = kernel::Read<uint64_t>(address::online_users + offsetof(structs::list_base, base));
 
               
 
                address::player_count = kernel::Read<int32_t>(address::online_users + 0x18);
                for (int i = 0; i < address::player_count; i++)
                {
                        uint64_t player_buffer = kernel::Read<uint64_t>(address::list_base + (offsetof(structs::list_internal, entry) + (i * 8)));
                }

the structs:

Code:

class list_internal
{
public:
char pad_0x0000[0x20]; //0x0000
uintptr_t* entry; //0x0020
}; //Size=0x0028

class list_base
{
public:
char pad_0x0000[0x10]; //0x0000
list_internal* base; //0x0010
__int32 itemCount; //0x0018
}; //Size=0x001C

*Edit* - Fixed

virii72 13th December 2021 03:16 PM

Quote:

Originally Posted by EliteProducer (Post 3318297)
Code:

uint64_t Template = ReadChain(item.instance, { 0x10, 0x28, 0x50, 0x38 });
uint64_t EngineString = read<uint64_t>(Template + 0x50);

Has anyone got an updated Item Template chain? This one seems to be out of date. I've looked all over with no luck.

Try { 0x10, 0x28, 0x50, 0x40 }.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

CloudApps 13th December 2021 03:48 PM

getting player health
 
My get health function isn't working anymorea fter the update? does anyone know why?

Code:

float get_health()
        {
                uint64_t m_pHealthController = kernel::Read<uint64_t>(entity + offsets::m_health_controller);
                uint64_t m_pHealthBody = kernel::Read<uint64_t>(m_pHealthController + 0x50);
                uint64_t m_pBodyController = kernel::Read<uint64_t>(m_pHealthBody + 0x18);

                for (int i = 0; i <= 7; i++) {

                        auto body_part = kernel::Read<uintptr_t>(m_pBodyController + 0x30 + (i * 0x18));
                        auto health_container = kernel::Read<uintptr_t>(body_part + 0x10);
                        auto health = kernel::Read<float>(health_container + 0x10);
                        auto health_max = kernel::Read<float>(health_container + 0x14);

                        health = kernel::Read<float>(health_container + 0x10);
                        float hp = 0.f;
                        hp += health;
                        health = hp / health_max * 100;

                        return health;
                }
        }


HELOHELO121 13th December 2021 04:09 PM

Quote:

Originally Posted by xzackcc (Post 3318269)
Just guessing but this would be the shortname for your weapon.
Code:

_handsController (type: EFT.Player.AbstractHandsController) @ 0x500 ->
EFT.InventoryLogic.Item @ 0x60 ->
<Template>k__BackingField (type: EFT.InventoryLogic.ItemTemplate) @ 0x40 ->
ShortName (type: System.String) @ 0x18


ShortNames aren't stored there you need to create a map with each item id and it's corresponding shortname, there's about a thousand posts on how to automatically collect this info

swh4641 13th December 2021 06:21 PM

Quote:

Originally Posted by CloudApps (Post 3318343)
My get health function isn't working anymorea fter the update? does anyone know why?

Code:

float get_health()
        {
                uint64_t m_pHealthController = kernel::Read<uint64_t>(entity + offsets::m_health_controller);
                uint64_t m_pHealthBody = kernel::Read<uint64_t>(m_pHealthController + 0x50);
                uint64_t m_pBodyController = kernel::Read<uint64_t>(m_pHealthBody + 0x18);

                for (int i = 0; i <= 7; i++) {

                        auto body_part = kernel::Read<uintptr_t>(m_pBodyController + 0x30 + (i * 0x18));
                        auto health_container = kernel::Read<uintptr_t>(body_part + 0x10);
                        auto health = kernel::Read<float>(health_container + 0x10);
                        auto health_max = kernel::Read<float>(health_container + 0x14);

                        health = kernel::Read<float>(health_container + 0x10);
                        float hp = 0.f;
                        hp += health;
                        health = hp / health_max * 100;

                        return health;
                }
        }


how about you stop asking useless questions every day and start paying for the fixes

K3ntux 13th December 2021 07:18 PM

Hey, could anyone tell me where the view matrix is at, I am currently reading here:
[CODE]
FPS Camera + 0x30] + 0x18]
/CODE]
People say the viewmatrix is at 0xd8, I see it there in reclass and have validated that I am getting the correct address but when I draw using that matrix, everything is messed up on my screen... Perhaps people could share their W2S external function or lead me to where the view matrix is at if I am wrong.

xzackcc 13th December 2021 07:40 PM

Quote:

Originally Posted by HELOHELO121 (Post 3318353)
ShortNames aren't stored there you need to create a map with each item id and it's corresponding shortname, there's about a thousand posts on how to automatically collect this info

expected it, thats how my item esp worked before. now using my api info to grab all that stuff.
@cxtgirl: you'd need to grab the bsg id (string) and compare it to some sort of a map/vector with items in there to get accurate namings. if you like, i can share the recent json api so you at least get some good results. pm me if interested.

Quote:

Originally Posted by CloudApps (Post 3318343)
My get health function isn't working anymorea fter the update? does anyone know why?

Code:

float get_health()
        {
                uint64_t m_pHealthController = kernel::Read<uint64_t>(entity + offsets::m_health_controller);
                uint64_t m_pHealthBody = kernel::Read<uint64_t>(m_pHealthController + 0x50);
                uint64_t m_pBodyController = kernel::Read<uint64_t>(m_pHealthBody + 0x18);

                for (int i = 0; i <= 7; i++) {

                        auto body_part = kernel::Read<uintptr_t>(m_pBodyController + 0x30 + (i * 0x18));
                        auto health_container = kernel::Read<uintptr_t>(body_part + 0x10);
                        auto health = kernel::Read<float>(health_container + 0x10);
                        auto health_max = kernel::Read<float>(health_container + 0x14);

                        health = kernel::Read<float>(health_container + 0x10);
                        float hp = 0.f;
                        hp += health;
                        health = hp / health_max * 100;

                        return health;
                }
        }


you're literally asking for everything on every single page. how about some troubleshooting, debugging and reversing your minor issues?
questionable how you got your kernel module to work while failing the basics.

Wesiscool205 13th December 2021 09:04 PM

Quote:

Originally Posted by CloudApps (Post 3318343)
My get health function isn't working anymorea fter the update? does anyone know why?

Code:

float get_health()
        {
                uint64_t m_pHealthController = kernel::Read<uint64_t>(entity + offsets::m_health_controller);
                uint64_t m_pHealthBody = kernel::Read<uint64_t>(m_pHealthController + 0x50);
                uint64_t m_pBodyController = kernel::Read<uint64_t>(m_pHealthBody + 0x18);

                for (int i = 0; i <= 7; i++) {

                        auto body_part = kernel::Read<uintptr_t>(m_pBodyController + 0x30 + (i * 0x18));
                        auto health_container = kernel::Read<uintptr_t>(body_part + 0x10);
                        auto health = kernel::Read<float>(health_container + 0x10);
                        auto health_max = kernel::Read<float>(health_container + 0x14);

                        health = kernel::Read<float>(health_container + 0x10);
                        float hp = 0.f;
                        hp += health;
                        health = hp / health_max * 100;

                        return health;
                }
        }


pretty sure that will return the health after the first iteration of the for loop, skipping all the other body parts lol

swh4641 13th December 2021 09:44 PM

what changed with grenades?

HELOHELO121 13th December 2021 10:12 PM

Is this path from FPS Camera to the optic camera entity's view matrix still accurate? It's no longer working for me.
camera + 0x70] + 0x10] + 0x30] + 0x18] + 0xD8]

CloudApps 13th December 2021 10:14 PM

what is the new offset of player velocity i cant find it with uinspect or cheat engine or dnspy

xzackcc 13th December 2021 10:17 PM

Quote:

Originally Posted by CloudApps (Post 3318629)
what is the new offset of player velocity i cant find it with uinspect or cheat engine or dnspy

2 minutes of the superfeature "searchbar"

Quote:

Originally Posted by montroisiemecon (Post 2984272)
It is true, the Velocity at 0xD8 doesnt work on player PMC.
I recompute velocity on my program, just keep last pos in memory and velocity = (current_pos - last_pos) / frame_time.

To avoid weird velocity jumps, i do cur_velocity = 1/2 cur_velocity + 1/2 previous_velocity



Do you have IDA?


serge 13th December 2021 10:20 PM

Quote:

Originally Posted by HELOHELO121 (Post 3318627)
Is this path from FPS Camera to the optic camera entity's view matrix still accurate? It's no longer working for me.
camera + 0x70] + 0x10] + 0x30] + 0x18] + 0xD8]

0xDC
this changed some patch more than a month ago

CloudApps 13th December 2021 10:35 PM

getting player ammo in gun
 
how to get player bullets in gun? i found that _MagCacheSlot but it doesn't seem to be the number its a pointer for an other class that i cant find the ammo count??

hollow 13th December 2021 10:43 PM



bsg checklist:
1) add inertia
2) allow cheaters to disable inertia

K3ntux 13th December 2021 10:51 PM

View Matrix
 
Quote:

Originally Posted by serge (Post 3318635)
0xDC
this changed some patch more than a month ago

is the normal viewmatrix at
fps camera + 0x30] + 0x18] + 0xD8
Perhaps you missed my post above but yeah cant get it working

gabbo200 13th December 2021 11:37 PM

Quote:

Originally Posted by CloudApps (Post 3317780)
i was looking at the offsets and i saw "ThermalVisionComponent"
if its what i think it is how to enable it ? i don't see any booleon

EFT.Player + 0x448

Did you manage to solve this? what GetComponentFromGameObject() worked for you?

xzackcc 13th December 2021 11:55 PM

Quote:

Originally Posted by gabbo200 (Post 3318679)
Did you manage to solve this? what GetComponentFromGameObject() worked for you?

you first get the pointer to "FPS Camera", from the fps camera object you can get the components which is most likely what you're looking for.

thermal: "ThermalVision"
night: "NightVision"
visor: "VisorEffect"

to get object components:
Code:

std::uint64_t get_object_component(std::uint64_t obj, std::string classname) {
                // component list
                std::uint64_t comps = kernel->read_memory< std::uint64_t >(obj + 0x30);
                // might need de/increase depending on parent class
                for (int i = 0; i < 50; i++) {
                        // returning field if name matches
                        std::uint64_t field = kernel->read_chain< std::uint64_t >(comps, { (ull)0x8 + (i * 0x10), 0x28 });
                        // in-processor dereference for pointer -> classname
                        uint64_t dref_ptr = kernel->read_chain< std::uint64_t >(field, { 0x0, 0x0, 0x48 });
                        // actual object name
                        std::string obj_name = kernel->read_string(dref_ptr);
                        // compare to arg passed
                        if (obj_name.find(classname) != std::string::npos) {
                                return field;
                        }
                       
                }
                return 0;
        }

as for thermal vision, you'd end up with the pointer to that object and then read/write the following from the ThermalVision class

Code:

                                d0 : On (type: System.Boolean)
                                d1 : IsNoisy (type: System.Boolean)
                                d2 : IsFpsStuck (type: System.Boolean)
                                d3 : IsMotionBlurred (type: System.Boolean)
                                d4 : IsGlitch (type: System.Boolean)
                                d5 : IsPixelated (type: System.Boolean)
                                18 : ThermalVisionUtilities (type: ThermalVisionUtilities)
                                20 : StuckFpsUtilities (type: StuckFPSUtilities)
                                28 : MotionBlurUtilities (type: MotionBlurUtilities)
                                30 : GlitchUtilities (type: GlitchUtilities)
                                38 : PixelationUtilities (type: PixelationUtilities)
                                40 : TextureMask (type: BSG.CameraEffects.TextureMask)
                                48 : SwitchComponentsOn (type: UnityEngine.MonoBehaviour[])
                                50 : SwitchComponentsOff (type: UnityEngine.MonoBehaviour[])
                                d8 : ChromaticAberrationThermalShift (type: System.Single)
                                58 : BlackFlashGoingToOn (type: UnityEngine.AnimationCurve)
                                60 : BlackFlashGoingToOff (type: UnityEngine.AnimationCurve)
                                68 : SwitchOn (type: UnityEngine.AudioClip)
                                70 : SwitchOff (type: UnityEngine.AudioClip)
                                dc : UnsharpRadiusBlur (type: System.Single)
                                e0 : UnsharpBias (type: System.Single)
                                78 : \uE000 (type: \uE3D2)
                                e4 : \uE001 (type: System.Nullable<System.Boolean>)
                                e6 : \uE002 (type: System.Boolean)
                                80 : \uE003 (type: UnityEngine.Rendering.CommandBuffer)
                                88 : \uE004 (type: UnityEngine.Rendering.CommandBuffer)
                                90 : \uE005 (type: UnityEngine.Material)
                                98 : \uE006 (type: UnityEngine.Camera)
                                a0 : \uE007 (type: \uE3C4)
                                a8 : \uE008 (type: \uE3C2)
                                b0 : \uE009 (type: \uE3C1)
                                b8 : \uE00A (type: \uE3C3)
                                c0 : \uE00B (type: VolumetricLightRenderer)
                                c8 : \uE00C (type: ChromaticAberration)
                                e8 : \uE00D (type: System.Single)
                                ec : \uE00E (type: System.Single)


LowkeyCharmzz 14th December 2021 12:45 AM

Quote:

Originally Posted by K3ntux (Post 3318655)
is the normal viewmatrix at
fps camera + 0x30] + 0x18] + 0xD8
Perhaps you missed my post above but yeah cant get it working

0xD8 moved to 0xDC as he said

K3ntux 14th December 2021 12:50 AM

Quote:

Originally Posted by LowkeyCharmzz (Post 3318726)
0xD8 moved to 0xDC as he said

Ok, I tried but still not work I think my w2s func is wrong do you have one I could use for testing

HELOHELO121 14th December 2021 01:21 AM

Quote:

Originally Posted by serge (Post 3318635)
0xDC
this changed some patch more than a month ago

Hmm it still doesn't work, the viewmatrix isn't ever populated and the if statements sometimes fail. It seems different every tick oddly enough. addr is the address of fps camera btw
Code:

                if (aiming) {
                        addr = FindCameraByName(name);
                        if (ULONG64 opticCameraManager = Mem->Read<ULONG64>(addr + 0x70)) {
                                if (ULONG64 templateCamera = Mem->Read<ULONG64>(opticCameraManager + 0x10)) {
                                        if (ULONG64 opticCameraObject = Mem->Read<ULONG64>(templateCamera + 0x30)) {
                                                if (ULONG64 opticCameraEntity = Mem->Read<ULONG64>(opticCameraObject + 0x18)) {
                                                        viewMatrix = Mem->Read<mat4x4>(opticCameraEntity + 0xDC);


TJ888 14th December 2021 02:42 AM

Quote:

Originally Posted by HELOHELO121 (Post 3318744)
Hmm it still doesn't work, the viewmatrix isn't ever populated and the if statements sometimes fail. It seems different every tick oddly enough. addr is the address of fps camera btw
Code:

                if (aiming) {
                        addr = FindCameraByName(name);
                        if (ULONG64 opticCameraManager = Mem->Read<ULONG64>(addr + 0x70)) {
                                if (ULONG64 templateCamera = Mem->Read<ULONG64>(opticCameraManager + 0x10)) {
                                        if (ULONG64 opticCameraObject = Mem->Read<ULONG64>(templateCamera + 0x30)) {
                                                if (ULONG64 opticCameraEntity = Mem->Read<ULONG64>(opticCameraObject + 0x18)) {
                                                        viewMatrix = Mem->Read<mat4x4>(opticCameraEntity + 0xDC);


Answered a number of pages ago- https://www.unknowncheats.me/forum/3...-post5290.html


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

bhehe6813 14th December 2021 03:18 AM

Quote:

Originally Posted by HELOHELO121 (Post 3318744)
Hmm it still doesn't work, the viewmatrix isn't ever populated and the if statements sometimes fail. It seems different every tick oddly enough. addr is the address of fps camera btw
Code:

                if (aiming) {
                        addr = FindCameraByName(name);
                        if (ULONG64 opticCameraManager = Mem->Read<ULONG64>(addr + 0x70)) {
                                if (ULONG64 templateCamera = Mem->Read<ULONG64>(opticCameraManager + 0x10)) {
                                        if (ULONG64 opticCameraObject = Mem->Read<ULONG64>(templateCamera + 0x30)) {
                                                if (ULONG64 opticCameraEntity = Mem->Read<ULONG64>(opticCameraObject + 0x18)) {
                                                        viewMatrix = Mem->Read<mat4x4>(opticCameraEntity + 0xDC);


Why are you finding the camera multiple times? You're already writing monkey code.

Read the camera ONCE. Read the optical camera ONCE. Switch between them based on 15 different options depending on which you like best, TJ888s method is good.

If the if statements fail it's likely because your FindCameraByName is spaghetti. If I were to guess FindCameraByName pulls the object from the object list. This is incredibly intensive, you do not want to retrieve this more than once. Also it's likely your FindCameraByName skips an element which is why it "sometimes" works.

Quote:

Originally Posted by TJ888 (Post 3307173)
Since the Unity 2019 upgrade, they slightly changed the GameObjectManager as you are likely already aware, so now it looks like this-
Code:

struct GameObjectManager {
        ListNode<GameObject> LastTaggedNode // 0x0
        ListNode<GameObject> TaggedNodes // 0x8
        ListNode<GameObject> LastMainCameraTaggedNode // 0x10
        ListNode<GameObject> MainCameraTaggedNodes // 0x18
        ListNode<GameObject> LastActiveNode // 0x20
        ListNode<GameObject> ActiveNodes // 0x28
}

ActiveNodes is where you get GameWorld
MainCameraTaggedNodes is now where you get FPS Camera
and finally, TaggedNodes is where you get the Optical Camera (BaseOpticCamera(Clone))

I recommend traversing TaggedNodes backwards (Start with LastTaggedNode and go backwards in the List) to get the Optical Camera, as typically it is near the end if not already the last.

Previously there was some scuffed pointer chain in FPS Camera that could get you to the Optical Camera, or you use to be able to use the AllCameras Manager, but from what I could tell, they both don't work in live games anymore.

The way I determine if you are to use the Optical Camera is to first check IsAiming, and if it is true, check your current sights' current optical zoom level, and if it's >1.f, I use the Optical Camera. For me it works every time, I can cycle between multiple scopes and change their magnification (1x to 4x for e.g.), and the W2S behaves correctly every time.

You can pull the FPS camera out of the tagged object list.

HELOHELO121 14th December 2021 03:24 AM

Quote:

Originally Posted by bhehe6813 (Post 3318804)
If the if statements fail it's likely because your FindCameraByName is spaghetti. If I were to guess FindCameraByName pulls the object from the object list. This is incredibly intensive, you do not want to retrieve this more than once. Also it's likely your FindCameraByName skips an element which is why it "sometimes" works.

It gets FPS camera from the camera manager, not the tagged object list.

Quote:

Originally Posted by TJ888 (Post 3307173)
Previously there was some scuffed pointer chain in FPS Camera that could get you to the Optical Camera, or you use to be able to use the AllCameras Manager, but from what I could tell, they both don't work in live games anymore.

AllCameras is still 100% working otherwise my W2S wouldn't work at all

bhehe6813 14th December 2021 04:54 AM

Minefields on Lighthouse

Code:

                // 2021/12/13 autogenerated
                new List<Tuple<string,Vector3>>(){
                    new Tuple<string,Vector3>("Mine",new Vector3(-108.7005f,18.35f, -159.9383f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-147.4911f, 39.03f, 169.8742f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-125.4808f, 42.69f, 46.4108f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-227.9976f, 13.94f, -520.8323f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-5.1225f, 7.4f, -424.614f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-143.94f, 5.4f, -482.2339f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(94.3422f, 3.82f, -593.3541f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-148.9896f, 40.28f, 134.6519f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-322.7883f, 30.83f, -565.4965f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-111.733f, 27.35f, 251.9084f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-304.5605f, 25.08f, -462.9617f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-139.1587f, 7.4f, -450.7613f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-242.2297f, 18.1f, -478.8835f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-311.8793f, 34f, -511.2196f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(94.5647f, 9.73f, -664.7939f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-238.0395f, 13.19f, -659.7361f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-399.3923f, 33.08f, -531.7814f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(52.592f, 7.4f, -468.8979f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(49.4f, 21.505f, -1004.75f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-107.438f, 31.99f, 143.3868f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-551.0999f, 43.8f, -393.55f)),
                    new Tuple<string,Vector3>("Mine", new Vector3(-130.2222f, 35.9f, 147.0727f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-117.9405f, 35.9f, 137.4876f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(40.4702f, 7.4f, -404.0539f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-105.1f, 21.505f, -1007.75f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-118.6287f, 7.4f, -433.2413f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-55.2664f, 7.4f, -433.3537f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-99.8424f, 18.32f, 213.1985f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-226.7844f, 11.59f, -712.8016f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(75.5828f, 11.61f, -419.8874f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-137.951f, 29.65f, -50.4971f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-48.3788f, 14.43f, 5.5676f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-331.39f, 33.6f, -523.8537f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-251.1489f, 16.27f, -646.1941f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(57.7336f, 7.4f, -522.3037f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(90.7865f, 6.83f, -496.1239f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-119.3728f, 42.69f, 64.5561f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-147.4379f, 34.15f, -0.8767f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-115.1492f, 31.99f, 163.5725f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-330.2926f, 39.67f, -490.8548f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-169.6096f, 33.31f, 279.9024f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-59.4863f, 14.21f, 207.3462f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-448.7f, 22.8f, -785.8f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-36.3973f, 10.66f, 169.4037f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(30.3556f, 12.3f, -750.6716f)),
                }

Mines that have active exploders (I'm not sure why the other 30 are not active) (The parent of a Minefield is a MinefieldExploder / MinefieldView)

Code:

                    // 2021/12/14 autogenerated
                    new Tuple<string,Vector3>("Mine",new Vector3(-500.6f, 43.8f, -515.35f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-551.0999f, 43.8f, -393.55f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(49.4f, 21.505f, -1004.75f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-105.1f, 21.505f, -1007.75f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(52.592f, 7.4f, -468.8979f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(57.7336f, 7.4f, -522.3037f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-5.1225f, 7.4f, -424.614f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(40.4702f, 7.4f, -404.0539f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(75.5828f, 11.61f, -419.8874f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(30.3556f, 12.3f, -750.6716f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-227.9976f, 13.94f, -520.8323f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-242.2297f, 18.1f, -478.8835f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-331.39f, 33.6f, -523.8537f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-330.2926f, 39.67f, -490.8548f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-143.94f, 5.4f, -482.2339f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-139.1587f, 7.4f, -450.7613f)),


POFPE 14th December 2021 05:03 AM

anyone has quest item location? or how to know item is quest or not?

CloudApps 14th December 2021 07:00 AM

Quote:

Originally Posted by gabbo200 (Post 3318679)
Did you manage to solve this? what GetComponentFromGameObject() worked for you?

no it didn't

gabbo200 14th December 2021 07:05 AM

Quote:

Originally Posted by CloudApps (Post 3318891)
no it didn't

You did not? What issue are you getting? I�ve just made it work with the info you gave me

CloudApps 14th December 2021 07:13 AM

Quote:

Originally Posted by gabbo200 (Post 3318895)
You did not? What issue are you getting? I�ve just made it work with the info you gave me

talking about thermal vision not night vision, night vision works but not thermal

gabbo200 14th December 2021 07:30 AM

Quote:

Originally Posted by CloudApps (Post 3318897)
talking about thermal vision not night vision, night vision works but not thermal

I didn�t even test night vision. Thermal is working just fine on my end.

Mareek 14th December 2021 08:23 AM

Quote:

Originally Posted by CloudApps (Post 3318897)
talking about thermal vision not night vision, night vision works but not thermal

Show us how you write thermal vision.

Wesiscool205 14th December 2021 08:57 AM

Quote:

Originally Posted by xzackcc

have fun.

thanks a lot for the classes and information, dont worry im not trashing this project, lots of fun lol and thanks to @TJ888 + @ZeusLord

https://i.imgur.com/sqzKMjO.png

added thermal vision, since you also said how to get that on here

POFPE 14th December 2021 09:05 AM

Has anyone had a problem 0 damage bullets due to no recoil(editing mask to 0, alligntozero) & speedfactor(using 7.f) since the update? I hit 10 head to scav, but h didnt dead. and i checked it, it said hitted bullet was 0.(This kind of problem keeps coming up.)

cxtgirl 14th December 2021 09:25 AM

Quote:

Originally Posted by xzackcc (Post 3318269)
Just guessing but this would be the shortname for your weapon.
Code:

_handsController (type: EFT.Player.AbstractHandsController) @ 0x500 ->
EFT.InventoryLogic.Item @ 0x60 ->
<Template>k__BackingField (type: EFT.InventoryLogic.ItemTemplate) @ 0x40 ->
ShortName (type: System.String) @ 0x18


yea thats pretty obvious lol dont know how i missed that, thanks though <33

Quote:

Originally Posted by POFPE (Post 3318940)
Has anyone had a problem 0 damage bullets due to no recoil(editing mask to 0, alligntozero) & speedfactor(using 7.f) since the update? I hit 10 head to scav, but h didnt dead. and i checked it, it said hitted bullet was 0.(This kind of problem keeps coming up.)

aren't you meant to write mask to 1 not 0?

POFPE 14th December 2021 09:46 AM

Quote:

Originally Posted by cxtgirl (Post 3318946)
yea thats pretty obvious lol dont know how i missed that, thanks though <33



aren't you meant to write mask to 1 not 0?

yeah write to 1. sorry

Promptitude 14th December 2021 10:55 AM

Quote:

Originally Posted by CloudApps (Post 3318897)
talking about thermal vision not night vision, night vision works but not thermal

For thermal vision the offset to turn it on is 0xD0 and the component name is "ThermalVision".
If you want to remove the effects, then 0xD1 to 0xD5 are all booleans which need to be set to false.

[D0] On : Boolean
[D1] IsNoisy : Boolean
[D2] IsFpsStuck : Boolean
[D3] IsMotionBlurred : Boolean
[D4] IsGlitch : Boolean
[D5] IsPixelated : Boolean

cxtgirl 14th December 2021 12:00 PM

Quote:

Originally Posted by hollow (Post 3318646)


bsg checklist:
1) add inertia
2) allow cheaters to disable inertia

in which class is the inertia value you modified located?

Quote:

Originally Posted by CloudApps (Post 3318897)
talking about thermal vision not night vision, night vision works but not thermal

Code:

const auto thermal = get_object_component( get_camera( ), "ThermalVision" );
driver->write<bool>( thermal + 0xD0, true );

driver->write<bool>( thermal + 0xD1, false );
driver->write<bool>( thermal + 0xD2, false );
driver->write<bool>( thermal + 0xD3, false );
driver->write<bool>( thermal + 0xD4, false );
driver->write<bool>( thermal + 0xD5, false );

you could iterate through them to make it less ugly looking but it works

DuOreng 14th December 2021 02:04 PM

Quote:

Originally Posted by POFPE (Post 3318940)
Has anyone had a problem 0 damage bullets due to no recoil(editing mask to 0, alligntozero) & speedfactor(using 7.f) since the update? I hit 10 head to scav, but h didnt dead. and i checked it, it said hitted bullet was 0.(This kind of problem keeps coming up.)

Hmm, have not checked but they probably validate on the server now then a lot of games do this.

nikobelic29 14th December 2021 04:33 PM

Quote:

Originally Posted by POFPE (Post 3318940)
Has anyone had a problem 0 damage bullets due to no recoil(editing mask to 0, alligntozero) & speedfactor(using 7.f) since the update? I hit 10 head to scav, but h didnt dead. and i checked it, it said hitted bullet was 0.(This kind of problem keeps coming up.)

I am also getting this issue, though I think it is due to speedfactor judging by the lack of discussion on this matter

TJ888 14th December 2021 04:47 PM

Quote:

Originally Posted by bhehe6813 (Post 3318804)
You can pull the FPS camera out of the tagged object list.

You may as well use the MainCameraTaggedNodes because there is typically only 1 thing in there which is FPSCamera, meaning you don't have to go deep down the LinkedList.
But each to their own, don't have to change it because I told you to.

Quote:

Originally Posted by HELOHELO121 (Post 3318807)
It gets FPS camera from the camera manager, not the tagged object list.



AllCameras is still 100% working otherwise my W2S wouldn't work at all

Pretty sure there is no OpticCamera in there though in live matches, only FPSCamera last time I checked. Unless if you are also getting OpticCamera from it as well (or it was added back in one of the patches recently), then idk.
But without OpticCamera, enjoy having a weird W2S using anything but 1x sights.

LowkeyCharmzz 14th December 2021 04:49 PM

Quote:

Originally Posted by POFPE (Post 3318940)
Has anyone had a problem 0 damage bullets due to no recoil(editing mask to 0, alligntozero) & speedfactor(using 7.f) since the update? I hit 10 head to scav, but h didnt dead. and i checked it, it said hitted bullet was 0.(This kind of problem keeps coming up.)

also having this issue, sometimes it works, sometimes it doesn’t. It’s the speed factor though, not no recoil

CloudApps 14th December 2021 04:54 PM

Quote:

Originally Posted by POFPE (Post 3318940)
Has anyone had a problem 0 damage bullets due to no recoil(editing mask to 0, alligntozero) & speedfactor(using 7.f) since the update? I hit 10 head to scav, but h didnt dead. and i checked it, it said hitted bullet was 0.(This kind of problem keeps coming up.)

dont use speedfactor


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

HELOHELO121 14th December 2021 05:02 PM

Quote:

Originally Posted by TJ888 (Post 3319208)
But without OpticCamera, enjoy having a weird W2S using anything but 1x sights.

It adds an extra layer of challenge ;)

CloudApps 14th December 2021 05:46 PM

could someone help me about getting the bullet numbers in a mag

i couldn't get more advanced then the _CachedMagSlot

TJ888 14th December 2021 06:13 PM

Quote:

Originally Posted by CloudApps (Post 3319260)
could someone help me about getting the bullet numbers in a mag

i couldn't get more advanced then the _CachedMagSlot

Then you didn't try very hard if all you got to was reading _magSlotCache and nothing else.

Look at GetCurrentMagazine() in EFT.InventoryLogic.Weapon for how they get the magazine and then look at get_Count in the Magazine class for how to get the ammo count from the magazine.
Then you should also look at get_ChamberAmmoCount in EFT.InventoryLogic.Weapon to get the chambered ammo count. Then add the chambered ammo count to your magazine's ammo count for the total ammo currently loaded in a gun.

Now you know how the game gets the magazine ammo count and the guns chambered ammo count, using a mono offset dump you can use those offsets to implement it in your hack.

Or search this forum as there is already a spoonfed answer.

nikobelic29 14th December 2021 06:15 PM

Quote:

Originally Posted by CloudApps (Post 3319260)
could someone help me about getting the bullet numbers in a mag

i couldn't get more advanced then the _CachedMagSlot

https://www.unknowncheats.me/forum/3...-post4881.html

Search

shmiga123 14th December 2021 06:26 PM

Quote:

Originally Posted by CloudApps (Post 3319260)
could someone help me about getting the bullet numbers in a mag

i couldn't get more advanced then the _CachedMagSlot

weapon.GetCurrentMagazine().Cartridges.Count;

CloudApps 14th December 2021 06:28 PM

Quote:

Originally Posted by TJ888 (Post 3319275)
Then you didn't try very hard if all you got to was reading _magSlotCache and nothing else.

Look at GetCurrentMagazine() in EFT.InventoryLogic.Weapon for how they get the magazine and then look at get_Count in the Magazine class for how to get the ammo count from the magazine.
Then you should also look at get_ChamberAmmoCount in EFT.InventoryLogic.Weapon to get the chambered ammo count. Then add the chambered ammo count to your magazine's ammo count for the total ammo currently loaded in a gun.

Now you know how the game gets the magazine ammo count and the guns chambered ammo count, using a mono offset dump you can use those offsets to implement it in your hack.

Or search this forum as there is already a spoonfed answer.

cant hook, im external

TJ888 14th December 2021 07:16 PM

Quote:

Originally Posted by CloudApps (Post 3319285)
cant hook, im external

I didn't tell you to hook or call the mono function or did you not care to read my message at all.
I told you to look at how it's implemented so you implement it yourself using offsets dump externally.

37ed1 14th December 2021 07:21 PM

Quote:

Originally Posted by CloudApps (Post 3319285)
cant hook, im external

Turns out you also can't read, don't expect to be spoon fed here.

cxtgirl 14th December 2021 07:42 PM

Quote:

Originally Posted by CloudApps (Post 3319285)
cant hook, im external

no part of their message mentioned hooking :p

did anything change with this little patch?

xzackcc 14th December 2021 09:23 PM

Quote:

Originally Posted by CloudApps (Post 3319260)
could someone help me about getting the bullet numbers in a mag

i couldn't get more advanced then the _CachedMagSlot

This is the last time I'm gonna help you. The reason why I'm helping you is this awesome community (and gamedeception back in days) that helped me with everything to get into game cheating, reversing and many other things which I wouldn't have knowledge of today.

Me and many others in this thread have spent a lot of time reversing EFT and/or unity in general.
We sat down for hours and hours to get what we display almost daily in this thread. The way you're asking and keep asking for stuff is seemingly unthankful for the work other very nice people had to go through and share for free.
You, on the other hand don't see this forum as a community, you see us almost like a soap dispenser that provides you with what you specificly ask for without thinking how you could solve it yourself. That attitude won't get you anywhere, not only on this plattform but also in your life.
Start thinking about it.

Don't expect me (and others apparently) to help you with the basics anymore.

Alright, let's get you to your lovely ammo count ..
Since you're external, you're (usually) limited to what the mono dump and dnspy gives you, so ..
you first go to your localplayer's Firearmcontroller
Code:

// 80 : unknown_uE011 (type: EFT.Player.FirearmController)
CFirearmController* unknown_uE011() {
        return kernel->read_memory< CFirearmController* >((uint64_t)this + 0x80);
}

the class Firearmcontroller looks like this for you:
Code:

                                90 : \uE003 (type: System.Collections.Generic.List<.<EFT.InventoryLogic.Weapon.EMalfunctionSource,System.Single,EFT.InventoryLogic.Weapon.EMalfunctionSource>>)
                                98 : \uE004 (type: System.Collections.Generic.List<.<EFT.InventoryLogic.Weapon.EMalfunctionState,System.Single,EFT.InventoryLogic.Weapon.EMalfunctionState>>)
                                a0 : \uE008 (type: System.Action)
                                a8 : \uE009 (type: System.Action<EFT.Player.FirearmController>)
                                b0 : \uE00A (type: System.Func<UnityEngine.RaycastHit,System.Boolean>)
                                b8 : \uE00B (type: WeaponPrefab)
                                130 : \uE00C (type: System.Boolean)
                                c0 : \uE00D (type: \uE5FB)
                                c8 : \uE00E (type: \uE646)
                                131 : \uE00F (type: System.Boolean)
                                132 : \uE010 (type: System.Boolean)
                                133 : \uE011 (type: System.Boolean)
                                134 : \uE012 (type: System.Single)
                                138 : \uE013 (type: System.Boolean)
                                13c : \uE014 (type: System.Single)
                                140 : \uE015 (type: System.Int32)
                                d0 : \uE016 (type: WeaponSoundPlayer)
                                144 : _blindfire (type: System.Boolean)
                                145 : _isAiming (type: System.Boolean)
                                148 : _aimingSens (type: System.Single)
                                d8 : \uE001 (type: FirearmsAnimator)
                                e0 : BallisticsCalculator (type: \uEA3C)
                                e8 : Fireport (type: EFT.BifacialTransform)
                                f0 : MultiBarrelsFireports (type: EFT.BifacialTransform[])
                                f8 : GunBaseTransform (type: UnityEngine.Transform)
                                14c : CurrentChamberIndex (type: System.Int32)
                                150 : WeaponLn (type: System.Single)
                                154 : \uE002 (type: System.Boolean)
                                155 : \uE017 (type: System.Boolean)
                                156 : AimingInterruptedByOverlap (type: System.Boolean)
                                158 : \uE018 (type: System.Single)
                                15c : \uE019 (type: System.Single)
                                160 : HipInaccuracy (type: System.Single)
                                100 : AimingDevices (type: \uE900)
                                164 : \uE01A (type: System.Single)
                                168 : _speedFactor (type: System.Single)
                                108 : \uE01B (type: \uE356)
                                110 : \uE01C (type: \uE356)
                                118 : \uE01D (type: \uEA32)
                                120 : CCV (type: \uE300)
                                128 : \uE01E (type: System.Action)

which is extended by the following class, named ItemHandsController
Code:

229d49bba48 : EFT.Player+ItemHandsController
                        static fields
                        fields
                                40 : _objectInHandsAnimator (type: FirearmsAnimator)
                                48 : \uE02A (type: System.Collections.Generic.Dictionary<System.Type,EFT.Player.>)
                                50 : _controllerObject (type: UnityEngine.GameObject)
                                58 : _handsHierarchy (type: TransformLinks)
                                60 : \uE02B (type: EFT.InventoryLogic.Item)
                                68 : \uE02C (type: System.Collections.Generic.Dictionary<System.Type,EFT.Player.ItemHandsController.OperationFactoryDelegate>)
                                70 : _player (type: EFT.Player)
                                78 : CompassState (type: \uEB07)
                                80 : Logger (type: EFT.Player.ItemHandsController.HandsControllerLogger)
                                88 : \uE02D (type: EFT.Player.)

in this class, you see
Code:

60 : \uE02B (type: EFT.InventoryLogic.Item)
grab this pointer and you end up in EFT.InventoryLogic.Item (who would've expected it?)
Code:

229d427ddc0 : EFT.InventoryLogic.Item
                        static fields
                                0 : <ItemNoHashComparer>k__BackingField (type: System.Collections.Generic.IEqualityComparer<EFT.InventoryLogic.Item>)
                                8 : Replacements (type: System.Collections.Generic.Dictionary<System.Enum,System.String>)
                        fields
                                50 : UnlimitedCount (type: System.Boolean)
                                54 : BuyRestrictionMax (type: System.Int32)
                                58 : BuyRestrictionCurrent (type: System.Int32)
                                5c : StackObjectsCount (type: System.Int32)
                                60 : Version (type: System.Int32)
                                10 : Id (type: System.String)
                                18 : OriginalAddress (type: EFT.InventoryLogic.ItemAddress)
                                20 : Components (type: System.Collections.Generic.List<EFT.InventoryLogic.IItemComponent>)
                                28 : _toStringCache (type: System.String)
                                30 : CurrentAddress (type: EFT.InventoryLogic.ItemAddress)
                                38 : ChildrenChanged (type: \uEAFF)
                                40 : <Template>k__BackingField (type: EFT.InventoryLogic.ItemTemplate)
                                64 : SpawnedInSession (type: System.Boolean)
                                48 : Attributes (type: System.Collections.Generic.List<>)

now, since we're in the Firearmcontroller, this class is extended by EFT.InventoryLogic.Weapon, here:
Code:

229d4987230 : EFT.InventoryLogic.Weapon
                        static fields
                                0 : _preallocatedMods (type: System.Collections.Generic.List<EFT.InventoryLogic.Mod>)
                        fields
                                78 : Repairable (type: EFT.InventoryLogic.RepairableComponent)
                                80 : Foldable (type: EFT.InventoryLogic.FoldableComponent)
                                88 : FireMode (type: EFT.InventoryLogic.FireModeComponent)
                                90 : Chambers (type: EFT.InventoryLogic.Slot[])
                                98 : _opticCalibrationPoints (type: UnityEngine.Vector3[])
                                a0 : _trajectoryInfos (type: \uEA41)
                                a8 : MalfState (type: EFT.InventoryLogic.Weapon.)
                                b0 : _magSlotCache (type: EFT.InventoryLogic.Slot)
                                b8 : AimIndex (type: \uEB07)
                                d0 : CompatibleAmmo (type: System.Boolean)
                                d1 : Armed (type: System.Boolean)
                                c0 : OnMalfunctionValidate (type: System.Func<EFT.InventoryLogic.Weapon.EMalfunctionState,System.Boolean>)
                                d2 : CylinderHammerClosed (type: System.Boolean)
                                c8 : _shellsInChambers (type: EFT.InventoryLogic.AmmoTemplate[])

We want the following:
Code:

b0 : _magSlotCache (type: EFT.InventoryLogic.Slot)
we are in EFT.InventoryLogic.Slot now, here:
Code:

229d427eba8 : EFT.InventoryLogic.Slot
                        static fields
                        fields
                                10 : Id (type: System.String)
                                50 : Required (type: System.Boolean)
                                18 : _reactiveContainedItem (type: \uEB07)
                                20 : ConflictingSlots (type: System.Collections.Generic.Dictionary<System.String,EFT.InventoryLogic.Slot>)
                                28 : BlockerSlots (type: System.Collections.Generic.List<EFT.InventoryLogic.Slot>)
                                30 : _cachedSlotName (type: System.String)
                                51 : Deleted (type: System.Boolean)
                                38 : <ContainedItem>k__BackingField (type: EFT.InventoryLogic.Item)
                                40 : <ParentItem>k__BackingField (type: EFT.InventoryLogic.Item)
                                54 : <MergeContainerWithChildren>k__BackingField (type: EFT.InventoryLogic.EParentMergeType)
                                48 : <Filters>k__BackingField (type: EFT.InventoryLogic.ItemFilter[])

since we don't want the parent, nor the id/slotname, we go for the ContainedItem at 0x38:
Code:

38 : <ContainedItem>k__BackingField (type: EFT.InventoryLogic.Item)
at this point, we are back in the EFT.InventoryLogic.Item class, but this time we go to another class extension to grab the following:
Code:

88 : \uE002 (type: EFT.InventoryLogic.StackSlot)
where does that come from you may ask? well, this is the class which is an extension of EFT.InventoryLogic.Item
Code:

229d4993cf0 : \uE8CB
                        static fields
                                0 : \uE000 (type: System.String[])
                        fields
                                78 : Tag (type: EFT.InventoryLogic.TagComponent)
                                80 : \uE001 (type: System.String[])
                                88 : \uE002 (type: EFT.InventoryLogic.StackSlot)

and finally we got the MaxCount at 0x38:
Code:

229d48f1c28 : EFT.InventoryLogic.StackSlot
                        static fields
                        fields
                                38 : MaxCount (type: System.Int32)
                                10 : _items (type: System.Collections.Generic.List<EFT.InventoryLogic.Item>)
                                18 : _deserializationList (type: System.Collections.Generic.SortedList<System.Int32,EFT.InventoryLogic.Item>)
                                20 : <ID>k__BackingField (type: System.String)
                                28 : <Filters>k__BackingField (type: EFT.InventoryLogic.ItemFilter[])
                                30 : <ParentItem>k__BackingField (type: EFT.InventoryLogic.Item)

alright, since you have the maximal count of the StackSlot-"Slot", you may get the bullets inside that class. If this isn't enough, here is how you grab (stack-wise) all the bullets and get a total of how many bullets you got in your mag:
we know the maximal count, but we also see something else interesting in the StackSlot class, do you see it? Nope, it's not ParentItem, it's called _items:
Code:

10 : _items (type: System.Collections.Generic.List<EFT.InventoryLogic.Item>)
What do we get here? A generic list .. i'll skip how this list works exactly but you may keep this in mind:
Code:

// the size of System.Collections.Generic.List is located at 0x18
// the pointer to items starts at 0x20. since it's a pointer, items within a list are placed on every 8th byte - so first (0) would be at 0x20, second (1) sits at 0x28 , third at 0x30 (2) and so on ..

alright, so to get the first item from a generic list we first go to the pointer where the list is located, in this class it's _items (0x10), then we go to 0x20. (for size you'd read std::int32_t at 0x18)
since the list is a EFT.InventoryLogic.Item, we once again got to the same class but this time it's neither a weapon, nor a magazine, it's a bullet-"stack".
what looks like it would hold the count of the bullet-"stack" in the following list?
Code:

229d427ddc0 : EFT.InventoryLogic.Item
                        static fields
                                0 : <ItemNoHashComparer>k__BackingField (type: System.Collections.Generic.IEqualityComparer<EFT.InventoryLogic.Item>)
                                8 : Replacements (type: System.Collections.Generic.Dictionary<System.Enum,System.String>)
                        fields
                                50 : UnlimitedCount (type: System.Boolean)
                                54 : BuyRestrictionMax (type: System.Int32)
                                58 : BuyRestrictionCurrent (type: System.Int32)
                                5c : StackObjectsCount (type: System.Int32)
                                60 : Version (type: System.Int32)
                                10 : Id (type: System.String)
                                18 : OriginalAddress (type: EFT.InventoryLogic.ItemAddress)
                                20 : Components (type: System.Collections.Generic.List<EFT.InventoryLogic.IItemComponent>)
                                28 : _toStringCache (type: System.String)
                                30 : CurrentAddress (type: EFT.InventoryLogic.ItemAddress)
                                38 : ChildrenChanged (type: \uEAFF)
                                40 : <Template>k__BackingField (type: EFT.InventoryLogic.ItemTemplate)
                                64 : SpawnedInSession (type: System.Boolean)
                                48 : Attributes (type: System.Collections.Generic.List<>)

Nope, it's not UnlimitedCount. it's
Code:

5c : StackObjectsCount (type: System.Int32)
Congratulation, you just got the first bullet-stack. Now, what happens if you have different bullet types in your mag? Well, loop through the generic list (0x20 + (i * 0x8)) and sum StackObjectsCount for each pointer in the list.


The result:
Video: https://streamable.com/ttq3oo
Screenshot:
https://i.imgur.com/LTwYomD.png


I seriously HOPE this helps you LEARNING instead of begging and pasting.

cxtgirl 14th December 2021 09:48 PM

Quote:

Originally Posted by xzackcc (Post 3319419)
-snip

very informative and helpful post, also i love the custom hud you've made

POFPE 14th December 2021 10:30 PM

Quote:

Originally Posted by xzackcc (Post 3319419)
This is the last time I'm gonna help you. The reason why I'm helping you is this awesome community (and gamedeception back in days) that helped me with everything to get into game cheating, reversing and many other things which I wouldn't have knowledge of today.

Me and many others in this thread have spent a lot of time reversing EFT and/or unity in general.
We sat down for hours and hours to get what we display almost daily in this thread. The way you're asking and keep asking for stuff is seemingly unthankful for the work other very nice people had to go through and share for free.
You, on the other hand don't see this forum as a community, you see us almost like a soap dispenser that provides you with what you specificly ask for without thinking how you could solve it yourself. That attitude won't get you anywhere, not only on this plattform but also in your life.
Start thinking about it.

Don't expect me (and others apparently) to help you with the basics anymore.

Alright, let's get you to your lovely ammo count ..
Since you're external, you're (usually) limited to what the mono dump and dnspy gives you, so ..
you first go to your localplayer's Firearmcontroller
Code:

// 80 : unknown_uE011 (type: EFT.Player.FirearmController)
CFirearmController* unknown_uE011() {
        return kernel->read_memory< CFirearmController* >((uint64_t)this + 0x80);
}

the class Firearmcontroller looks like this for you:
Code:

                                90 : \uE003 (type: System.Collections.Generic.List<.<EFT.InventoryLogic.Weapon.EMalfunctionSource,System.Single,EFT.InventoryLogic.Weapon.EMalfunctionSource>>)
                                98 : \uE004 (type: System.Collections.Generic.List<.<EFT.InventoryLogic.Weapon.EMalfunctionState,System.Single,EFT.InventoryLogic.Weapon.EMalfunctionState>>)
                                a0 : \uE008 (type: System.Action)
                                a8 : \uE009 (type: System.Action<EFT.Player.FirearmController>)
                                b0 : \uE00A (type: System.Func<UnityEngine.RaycastHit,System.Boolean>)
                                b8 : \uE00B (type: WeaponPrefab)
                                130 : \uE00C (type: System.Boolean)
                                c0 : \uE00D (type: \uE5FB)
                                c8 : \uE00E (type: \uE646)
                                131 : \uE00F (type: System.Boolean)
                                132 : \uE010 (type: System.Boolean)
                                133 : \uE011 (type: System.Boolean)
                                134 : \uE012 (type: System.Single)
                                138 : \uE013 (type: System.Boolean)
                                13c : \uE014 (type: System.Single)
                                140 : \uE015 (type: System.Int32)
                                d0 : \uE016 (type: WeaponSoundPlayer)
                                144 : _blindfire (type: System.Boolean)
                                145 : _isAiming (type: System.Boolean)
                                148 : _aimingSens (type: System.Single)
                                d8 : \uE001 (type: FirearmsAnimator)
                                e0 : BallisticsCalculator (type: \uEA3C)
                                e8 : Fireport (type: EFT.BifacialTransform)
                                f0 : MultiBarrelsFireports (type: EFT.BifacialTransform[])
                                f8 : GunBaseTransform (type: UnityEngine.Transform)
                                14c : CurrentChamberIndex (type: System.Int32)
                                150 : WeaponLn (type: System.Single)
                                154 : \uE002 (type: System.Boolean)
                                155 : \uE017 (type: System.Boolean)
                                156 : AimingInterruptedByOverlap (type: System.Boolean)
                                158 : \uE018 (type: System.Single)
                                15c : \uE019 (type: System.Single)
                                160 : HipInaccuracy (type: System.Single)
                                100 : AimingDevices (type: \uE900)
                                164 : \uE01A (type: System.Single)
                                168 : _speedFactor (type: System.Single)
                                108 : \uE01B (type: \uE356)
                                110 : \uE01C (type: \uE356)
                                118 : \uE01D (type: \uEA32)
                                120 : CCV (type: \uE300)
                                128 : \uE01E (type: System.Action)

which is extended by the following class, named ItemHandsController
Code:

229d49bba48 : EFT.Player+ItemHandsController
                        static fields
                        fields
                                40 : _objectInHandsAnimator (type: FirearmsAnimator)
                                48 : \uE02A (type: System.Collections.Generic.Dictionary<System.Type,EFT.Player.>)
                                50 : _controllerObject (type: UnityEngine.GameObject)
                                58 : _handsHierarchy (type: TransformLinks)
                                60 : \uE02B (type: EFT.InventoryLogic.Item)
                                68 : \uE02C (type: System.Collections.Generic.Dictionary<System.Type,EFT.Player.ItemHandsController.OperationFactoryDelegate>)
                                70 : _player (type: EFT.Player)
                                78 : CompassState (type: \uEB07)
                                80 : Logger (type: EFT.Player.ItemHandsController.HandsControllerLogger)
                                88 : \uE02D (type: EFT.Player.)

in this class, you see
Code:

60 : \uE02B (type: EFT.InventoryLogic.Item)
grab this pointer and you end up in EFT.InventoryLogic.Item (who would've expected it?)
Code:

229d427ddc0 : EFT.InventoryLogic.Item
                        static fields
                                0 : <ItemNoHashComparer>k__BackingField (type: System.Collections.Generic.IEqualityComparer<EFT.InventoryLogic.Item>)
                                8 : Replacements (type: System.Collections.Generic.Dictionary<System.Enum,System.String>)
                        fields
                                50 : UnlimitedCount (type: System.Boolean)
                                54 : BuyRestrictionMax (type: System.Int32)
                                58 : BuyRestrictionCurrent (type: System.Int32)
                                5c : StackObjectsCount (type: System.Int32)
                                60 : Version (type: System.Int32)
                                10 : Id (type: System.String)
                                18 : OriginalAddress (type: EFT.InventoryLogic.ItemAddress)
                                20 : Components (type: System.Collections.Generic.List<EFT.InventoryLogic.IItemComponent>)
                                28 : _toStringCache (type: System.String)
                                30 : CurrentAddress (type: EFT.InventoryLogic.ItemAddress)
                                38 : ChildrenChanged (type: \uEAFF)
                                40 : <Template>k__BackingField (type: EFT.InventoryLogic.ItemTemplate)
                                64 : SpawnedInSession (type: System.Boolean)
                                48 : Attributes (type: System.Collections.Generic.List<>)

now, since we're in the Firearmcontroller, this class is extended by EFT.InventoryLogic.Weapon, here:
Code:

229d4987230 : EFT.InventoryLogic.Weapon
                        static fields
                                0 : _preallocatedMods (type: System.Collections.Generic.List<EFT.InventoryLogic.Mod>)
                        fields
                                78 : Repairable (type: EFT.InventoryLogic.RepairableComponent)
                                80 : Foldable (type: EFT.InventoryLogic.FoldableComponent)
                                88 : FireMode (type: EFT.InventoryLogic.FireModeComponent)
                                90 : Chambers (type: EFT.InventoryLogic.Slot[])
                                98 : _opticCalibrationPoints (type: UnityEngine.Vector3[])
                                a0 : _trajectoryInfos (type: \uEA41)
                                a8 : MalfState (type: EFT.InventoryLogic.Weapon.)
                                b0 : _magSlotCache (type: EFT.InventoryLogic.Slot)
                                b8 : AimIndex (type: \uEB07)
                                d0 : CompatibleAmmo (type: System.Boolean)
                                d1 : Armed (type: System.Boolean)
                                c0 : OnMalfunctionValidate (type: System.Func<EFT.InventoryLogic.Weapon.EMalfunctionState,System.Boolean>)
                                d2 : CylinderHammerClosed (type: System.Boolean)
                                c8 : _shellsInChambers (type: EFT.InventoryLogic.AmmoTemplate[])

We want the following:
Code:

b0 : _magSlotCache (type: EFT.InventoryLogic.Slot)
we are in EFT.InventoryLogic.Slot now, here:
Code:

229d427eba8 : EFT.InventoryLogic.Slot
                        static fields
                        fields
                                10 : Id (type: System.String)
                                50 : Required (type: System.Boolean)
                                18 : _reactiveContainedItem (type: \uEB07)
                                20 : ConflictingSlots (type: System.Collections.Generic.Dictionary<System.String,EFT.InventoryLogic.Slot>)
                                28 : BlockerSlots (type: System.Collections.Generic.List<EFT.InventoryLogic.Slot>)
                                30 : _cachedSlotName (type: System.String)
                                51 : Deleted (type: System.Boolean)
                                38 : <ContainedItem>k__BackingField (type: EFT.InventoryLogic.Item)
                                40 : <ParentItem>k__BackingField (type: EFT.InventoryLogic.Item)
                                54 : <MergeContainerWithChildren>k__BackingField (type: EFT.InventoryLogic.EParentMergeType)
                                48 : <Filters>k__BackingField (type: EFT.InventoryLogic.ItemFilter[])

since we don't want the parent, nor the id/slotname, we go for the ContainedItem at 0x38:
Code:

38 : <ContainedItem>k__BackingField (type: EFT.InventoryLogic.Item)
at this point, we are back in the EFT.InventoryLogic.Item class, but this time we go to another class extension to grab the following:
Code:

88 : \uE002 (type: EFT.InventoryLogic.StackSlot)
where does that come from you may ask? well, this is the class which is an extension of EFT.InventoryLogic.Item
Code:

229d4993cf0 : \uE8CB
                        static fields
                                0 : \uE000 (type: System.String[])
                        fields
                                78 : Tag (type: EFT.InventoryLogic.TagComponent)
                                80 : \uE001 (type: System.String[])
                                88 : \uE002 (type: EFT.InventoryLogic.StackSlot)

and finally we got the MaxCount at 0x38:
Code:

229d48f1c28 : EFT.InventoryLogic.StackSlot
                        static fields
                        fields
                                38 : MaxCount (type: System.Int32)
                                10 : _items (type: System.Collections.Generic.List<EFT.InventoryLogic.Item>)
                                18 : _deserializationList (type: System.Collections.Generic.SortedList<System.Int32,EFT.InventoryLogic.Item>)
                                20 : <ID>k__BackingField (type: System.String)
                                28 : <Filters>k__BackingField (type: EFT.InventoryLogic.ItemFilter[])
                                30 : <ParentItem>k__BackingField (type: EFT.InventoryLogic.Item)

alright, since you have the maximal count of the StackSlot-"Slot", you may get the bullets inside that class. If this isn't enough, here is how you grab (stack-wise) all the bullets and get a total of how many bullets you got in your mag:
we know the maximal count, but we also see something else interesting in the StackSlot class, do you see it? Nope, it's not ParentItem, it's called _items:
Code:

10 : _items (type: System.Collections.Generic.List<EFT.InventoryLogic.Item>)
What do we get here? A generic list .. i'll skip how this list works exactly but you may keep this in mind:
Code:

// the size of System.Collections.Generic.List is located at 0x18
// the pointer to items starts at 0x20. since it's a pointer, items within a list are placed on every 8th byte - so first (0) would be at 0x20, second (1) sits at 0x28 , third at 0x30 (2) and so on ..

alright, so to get the first item from a generic list we first go to the pointer where the list is located, in this class it's _items (0x10), then we go to 0x20. (for size you'd read std::int32_t at 0x18)
since the list is a EFT.InventoryLogic.Item, we once again got to the same class but this time it's neither a weapon, nor a magazine, it's a bullet-"stack".
we, what looks like it'd hold the count of the bullet-"stack" in the following list?
Code:

229d427ddc0 : EFT.InventoryLogic.Item
                        static fields
                                0 : <ItemNoHashComparer>k__BackingField (type: System.Collections.Generic.IEqualityComparer<EFT.InventoryLogic.Item>)
                                8 : Replacements (type: System.Collections.Generic.Dictionary<System.Enum,System.String>)
                        fields
                                50 : UnlimitedCount (type: System.Boolean)
                                54 : BuyRestrictionMax (type: System.Int32)
                                58 : BuyRestrictionCurrent (type: System.Int32)
                                5c : StackObjectsCount (type: System.Int32)
                                60 : Version (type: System.Int32)
                                10 : Id (type: System.String)
                                18 : OriginalAddress (type: EFT.InventoryLogic.ItemAddress)
                                20 : Components (type: System.Collections.Generic.List<EFT.InventoryLogic.IItemComponent>)
                                28 : _toStringCache (type: System.String)
                                30 : CurrentAddress (type: EFT.InventoryLogic.ItemAddress)
                                38 : ChildrenChanged (type: \uEAFF)
                                40 : <Template>k__BackingField (type: EFT.InventoryLogic.ItemTemplate)
                                64 : SpawnedInSession (type: System.Boolean)
                                48 : Attributes (type: System.Collections.Generic.List<>)

Nope, it's not UnlimitedCount. it's
Code:

5c : StackObjectsCount (type: System.Int32)
Congratulation, you just got the first bullet-stack. Now, what happens if you have different bullet types in your mag? Well, loop through the generic list (0x20 + (i * 0x8)) and sum StackObjectsCount for each pointer in the list.


The result:
Video: https://streamable.com/ttq3oo
Screenshot:
https://i.imgur.com/LTwYomD.png


I seriously HOPE this helps you LEARNING instead of begging and pasting.

With a kind explanation, HUD is very intuitive and modern. LOL.

ZeusLord 14th December 2021 10:52 PM

Quote:

Originally Posted by xzackcc (Post 3319419)
This is the last time I'm gonna help you. The reason why I'm helping you is this awesome community (and gamedeception back in days) that helped me with everything to get into game cheating, reversing and many other things which I wouldn't have knowledge of today.

Me and many others in this thread have spent a lot of time reversing EFT and/or unity in general.
We sat down for hours and hours to get what we display almost daily in this thread. The way you're asking and keep asking for stuff is seemingly unthankful for the work other very nice people had to go through and share for free.
You, on the other hand don't see this forum as a community, you see us almost like a soap dispenser that provides you with what you specificly ask for without thinking how you could solve it yourself. That attitude won't get you anywhere, not only on this plattform but also in your life.
Start thinking about it.

Don't expect me (and others apparently) to help you with the basics anymore.

Alright, let's get you to your lovely ammo count ..
Since you're external, you're (usually) limited to what the mono dump and dnspy gives you, so ..
you first go to your localplayer's Firearmcontroller
Code:

// 80 : unknown_uE011 (type: EFT.Player.FirearmController)
CFirearmController* unknown_uE011() {
return kernel-&gt;read_memory&lt; CFirearmController* &gt;((uint64_t)this + 0x80);
}

the class Firearmcontroller looks like this for you:
Code:

90 : \uE003 (type: System.Collections.Generic.List&lt;.&lt;EFT.InventoryLogic.Weapon.EMalfunctionSource,System.Single,EFT.InventoryLogic.Weapon.EMalfunctionSource&gt;&gt;)
98 : \uE004 (type: System.Collections.Generic.List&lt;.&lt;EFT.InventoryLogic.Weapon.EMalfunctionState,System.Single,EFT.InventoryLogic.Weapon.EMalfunctionState&gt;&gt;)
a0 : \uE008 (type: System.Action)
a8 : \uE009 (type: System.Action&lt;EFT.Player.FirearmController&gt;)
b0 : \uE00A (type: System.Func&lt;UnityEngine.RaycastHit,System.Boolean&gt;)
b8 : \uE00B (type: WeaponPrefab)
130 : \uE00C (type: System.Boolean)
c0 : \uE00D (type: \uE5FB)
c8 : \uE00E (type: \uE646)
131 : \uE00F (type: System.Boolean)
132 : \uE010 (type: System.Boolean)
133 : \uE011 (type: System.Boolean)
134 : \uE012 (type: System.Single)
138 : \uE013 (type: System.Boolean)
13c : \uE014 (type: System.Single)
140 : \uE015 (type: System.Int32)
d0 : \uE016 (type: WeaponSoundPlayer)
144 : _blindfire (type: System.Boolean)
145 : _isAiming (type: System.Boolean)
148 : _aimingSens (type: System.Single)
d8 : \uE001 (type: FirearmsAnimator)
e0 : BallisticsCalculator (type: \uEA3C)
e8 : Fireport (type: EFT.BifacialTransform)
f0 : MultiBarrelsFireports (type: EFT.BifacialTransform[])
f8 : GunBaseTransform (type: UnityEngine.Transform)
14c : CurrentChamberIndex (type: System.Int32)
150 : WeaponLn (type: System.Single)
154 : \uE002 (type: System.Boolean)
155 : \uE017 (type: System.Boolean)
156 : AimingInterruptedByOverlap (type: System.Boolean)
158 : \uE018 (type: System.Single)
15c : \uE019 (type: System.Single)
160 : HipInaccuracy (type: System.Single)
100 : AimingDevices (type: \uE900)
164 : \uE01A (type: System.Single)
168 : _speedFactor (type: System.Single)
108 : \uE01B (type: \uE356)
110 : \uE01C (type: \uE356)
118 : \uE01D (type: \uEA32)
120 : CCV (type: \uE300)
128 : \uE01E (type: System.Action)

which is extended by the following class, named ItemHandsController
Code:

229d49bba48 : EFT.Player+ItemHandsController
static fields
fields
40 : _objectInHandsAnimator (type: FirearmsAnimator)
48 : \uE02A (type: System.Collections.Generic.Dictionary&lt;System.Type,EFT.Player.&gt;)
50 : _controllerObject (type: UnityEngine.GameObject)
58 : _handsHierarchy (type: TransformLinks)
60 : \uE02B (type: EFT.InventoryLogic.Item)
68 : \uE02C (type: System.Collections.Generic.Dictionary&lt;System.Type,EFT.Player.ItemHandsController.OperationFactoryDelegate&gt;)
70 : _player (type: EFT.Player)
78 : CompassState (type: \uEB07)
80 : Logger (type: EFT.Player.ItemHandsController.HandsControllerLogger)
88 : \uE02D (type: EFT.Player.)

in this class, you see
Code:

60 : \uE02B (type: EFT.InventoryLogic.Item)
grab this pointer and you end up in EFT.InventoryLogic.Item (who would've expected it?)
Code:

229d427ddc0 : EFT.InventoryLogic.Item
static fields
0 : &lt;ItemNoHashComparer&gt;k__BackingField (type: System.Collections.Generic.IEqualityComparer&lt;EFT.InventoryLogic.Item&gt;)
8 : Replacements (type: System.Collections.Generic.Dictionary&lt;System.Enum,System.String&gt;)
fields
50 : UnlimitedCount (type: System.Boolean)
54 : BuyRestrictionMax (type: System.Int32)
58 : BuyRestrictionCurrent (type: System.Int32)
5c : StackObjectsCount (type: System.Int32)
60 : Version (type: System.Int32)
10 : Id (type: System.String)
18 : OriginalAddress (type: EFT.InventoryLogic.ItemAddress)
20 : Components (type: System.Collections.Generic.List&lt;EFT.InventoryLogic.IItemComponent&gt;)
28 : _toStringCache (type: System.String)
30 : CurrentAddress (type: EFT.InventoryLogic.ItemAddress)
38 : ChildrenChanged (type: \uEAFF)
40 : &lt;Template&gt;k__BackingField (type: EFT.InventoryLogic.ItemTemplate)
64 : SpawnedInSession (type: System.Boolean)
48 : Attributes (type: System.Collections.Generic.List&lt;&gt;)

now, since we're in the Firearmcontroller, this class is extended by EFT.InventoryLogic.Weapon, here:
Code:

229d4987230 : EFT.InventoryLogic.Weapon
static fields
0 : _preallocatedMods (type: System.Collections.Generic.List&lt;EFT.InventoryLogic.Mod&gt;)
fields
78 : Repairable (type: EFT.InventoryLogic.RepairableComponent)
80 : Foldable (type: EFT.InventoryLogic.FoldableComponent)
88 : FireMode (type: EFT.InventoryLogic.FireModeComponent)
90 : Chambers (type: EFT.InventoryLogic.Slot[])
98 : _opticCalibrationPoints (type: UnityEngine.Vector3[])
a0 : _trajectoryInfos (type: \uEA41)
a8 : MalfState (type: EFT.InventoryLogic.Weapon.)
b0 : _magSlotCache (type: EFT.InventoryLogic.Slot)
b8 : AimIndex (type: \uEB07)
d0 : CompatibleAmmo (type: System.Boolean)
d1 : Armed (type: System.Boolean)
c0 : OnMalfunctionValidate (type: System.Func&lt;EFT.InventoryLogic.Weapon.EMalfunctionState,System.Boolean&gt;)
d2 : CylinderHammerClosed (type: System.Boolean)
c8 : _shellsInChambers (type: EFT.InventoryLogic.AmmoTemplate[])

We want the following:
Code:

b0 : _magSlotCache (type: EFT.InventoryLogic.Slot)
we are in EFT.InventoryLogic.Slot now, here:
Code:

229d427eba8 : EFT.InventoryLogic.Slot
static fields
fields
10 : Id (type: System.String)
50 : Required (type: System.Boolean)
18 : _reactiveContainedItem (type: \uEB07)
20 : ConflictingSlots (type: System.Collections.Generic.Dictionary&lt;System.String,EFT.InventoryLogic.Slot&gt;)
28 : BlockerSlots (type: System.Collections.Generic.List&lt;EFT.InventoryLogic.Slot&gt;)
30 : _cachedSlotName (type: System.String)
51 : Deleted (type: System.Boolean)
38 : &lt;ContainedItem&gt;k__BackingField (type: EFT.InventoryLogic.Item)
40 : &lt;ParentItem&gt;k__BackingField (type: EFT.InventoryLogic.Item)
54 : &lt;MergeContainerWithChildren&gt;k__BackingField (type: EFT.InventoryLogic.EParentMergeType)
48 : &lt;Filters&gt;k__BackingField (type: EFT.InventoryLogic.ItemFilter[])

since we don't want the parent, nor the id/slotname, we go for the ContainedItem at 0x38:
Code:

38 : &lt;ContainedItem&gt;k__BackingField (type: EFT.InventoryLogic.Item)
at this point, we are back in the EFT.InventoryLogic.Item class, but this time we go to another class extension to grab the following:
Code:

88 : \uE002 (type: EFT.InventoryLogic.StackSlot)
where does that come from you may ask? well, this is the class which is an extension of EFT.InventoryLogic.Item
Code:

229d4993cf0 : \uE8CB
static fields
0 : \uE000 (type: System.String[])
fields
78 : Tag (type: EFT.InventoryLogic.TagComponent)
80 : \uE001 (type: System.String[])
88 : \uE002 (type: EFT.InventoryLogic.StackSlot)

and finally we got the MaxCount at 0x38:
Code:

229d48f1c28 : EFT.InventoryLogic.StackSlot
static fields
fields
38 : MaxCount (type: System.Int32)
10 : _items (type: System.Collections.Generic.List&lt;EFT.InventoryLogic.Item&gt;)
18 : _deserializationList (type: System.Collections.Generic.SortedList&lt;System.Int32,EFT.InventoryLogic.Item&gt;)
20 : &lt;ID&gt;k__BackingField (type: System.String)
28 : &lt;Filters&gt;k__BackingField (type: EFT.InventoryLogic.ItemFilter[])
30 : &lt;ParentItem&gt;k__BackingField (type: EFT.InventoryLogic.Item)

alright, since you have the maximal count of the StackSlot-"Slot", you may get the bullets inside that class. If this isn't enough, here is how you grab (stack-wise) all the bullets and get a total of how many bullets you got in your mag:
we know the maximal count, but we also see something else interesting in the StackSlot class, do you see it? Nope, it's not ParentItem, it's called _items:
Code:

10 : _items (type: System.Collections.Generic.List&lt;EFT.InventoryLogic.Item&gt;)
What do we get here? A generic list .. i'll skip how this list works exactly but you may keep this in mind:
Code:

// the size of System.Collections.Generic.List is located at 0x18
// the pointer to items starts at 0x20. since it's a pointer, items within a list are placed on every 8th byte - so first (0) would be at 0x20, second (1) sits at 0x28 , third at 0x30 (2) and so on ..

alright, so to get the first item from a generic list we first go to the pointer where the list is located, in this class it's _items (0x10), then we go to 0x20. (for size you'd read std::int32_t at 0x18)
since the list is a EFT.InventoryLogic.Item, we once again got to the same class but this time it's neither a weapon, nor a magazine, it's a bullet-"stack".
we, what looks like it'd hold the count of the bullet-"stack" in the following list?
Code:

229d427ddc0 : EFT.InventoryLogic.Item
static fields
0 : &lt;ItemNoHashComparer&gt;k__BackingField (type: System.Collections.Generic.IEqualityComparer&lt;EFT.InventoryLogic.Item&gt;)
8 : Replacements (type: System.Collections.Generic.Dictionary&lt;System.Enum,System.String&gt;)
fields
50 : UnlimitedCount (type: System.Boolean)
54 : BuyRestrictionMax (type: System.Int32)
58 : BuyRestrictionCurrent (type: System.Int32)
5c : StackObjectsCount (type: System.Int32)
60 : Version (type: System.Int32)
10 : Id (type: System.String)
18 : OriginalAddress (type: EFT.InventoryLogic.ItemAddress)
20 : Components (type: System.Collections.Generic.List&lt;EFT.InventoryLogic.IItemComponent&gt;)
28 : _toStringCache (type: System.String)
30 : CurrentAddress (type: EFT.InventoryLogic.ItemAddress)
38 : ChildrenChanged (type: \uEAFF)
40 : &lt;Template&gt;k__BackingField (type: EFT.InventoryLogic.ItemTemplate)
64 : SpawnedInSession (type: System.Boolean)
48 : Attributes (type: System.Collections.Generic.List&lt;&gt;)

Nope, it's not UnlimitedCount. it's
Code:

5c : StackObjectsCount (type: System.Int32)
Congratulation, you just got the first bullet-stack. Now, what happens if you have different bullet types in your mag? Well, loop through the generic list (0x20 + (i * 0x8)) and sum StackObjectsCount for each pointer in the list.


The result:
Video: https://streamable.com/ttq3oo
Screenshot:
https://i.imgur.com/LTwYomD.png


I seriously HOPE this helps you LEARNING instead of begging and pasting.


Well written post my friend. I couldn�t have said better myself. All things aside that HUD is sexy.

BeginnerMono 14th December 2021 10:58 PM

Sight Zoom Level/Factor
 
Quote:

Originally Posted by TJ888 (Post 3307173)
Since the Unity 2019 upgrade, they slightly changed the GameObjectManager as you are likely already aware, so now it looks like this-
Code:

struct GameObjectManager {
        ListNode<GameObject> LastTaggedNode // 0x0
        ListNode<GameObject> TaggedNodes // 0x8
        ListNode<GameObject> LastMainCameraTaggedNode // 0x10
        ListNode<GameObject> MainCameraTaggedNodes // 0x18
        ListNode<GameObject> LastActiveNode // 0x20
        ListNode<GameObject> ActiveNodes // 0x28
}

ActiveNodes is where you get GameWorld
MainCameraTaggedNodes is now where you get FPS Camera
and finally, TaggedNodes is where you get the Optical Camera (BaseOpticCamera(Clone))

I recommend traversing TaggedNodes backwards (Start with LastTaggedNode and go backwards in the List) to get the Optical Camera, as typically it is near the end if not already the last.

Previously there was some scuffed pointer chain in FPS Camera that could get you to the Optical Camera, or you use to be able to use the AllCameras Manager, but from what I could tell, they both don't work in live games anymore.

The way I determine if you are to use the Optical Camera is to first check IsAiming, and if it is true, check your current sights' current optical zoom level, and if it's >1.f, I use the Optical Camera. For me it works every time, I can cycle between multiple scopes and change their magnification (1x to 4x for e.g.), and the W2S behaves correctly every time.

You mind sharing how you get the current sights' current optical zoom level?
From what i have seen it once was at FPSCamera + 0x30] + 18] + 0x12C(ZoomFactor).
The float at 0x12C returns now garbage which wasn't surprising so i also took a look around the offset but couldn't find anything usefull/similar.

thanks in advance

xzackcc 14th December 2021 11:12 PM

Quote:

Originally Posted by cxtgirl (Post 3319443)
very informative and helpful post, also i love the custom hud you've made

thanks, I wanted to make it look like integrated.

Quote:

Originally Posted by POFPE (Post 3319469)
With a kind explanation, HUD is very intuitive and modern. LOL.

you're welcome!

Quote:

Originally Posted by ZeusLord (Post 3319484)
Well written post my friend. I couldn�t have said better myself. All things aside that HUD is sexy.

was about to explain it even more, but then i would need to create a separate thread for that.
thanks for liking the hud, it took me half an hour to align it correctly to the stamina/breath bar of the game itself

Quote:

Originally Posted by BeginnerMono (Post 3319487)
You mind sharing how you get the current sights' current optical zoom level?
From what i have seen it once was at FPSCamera + 0x30] + 18] + 0x12C(ZoomFactor).
The float at 0x12C returns now garbage which wasn't surprising so i also took a look around the offset but couldn't find anything usefull/similar.

thanks in advance

the "ZoomFactor" you're talking about is located at 0x130 (literally 4 bytes away).
to keep my contribution up, here is one of the functions (the other one is up to you, was enough feed for today) recreated for the external cheetos:

original code (img):
https://i.imgur.com/Hoa8nSz.png

as in code:
Code:

public int SelectedScopeMode
{
        get
                {
                        if (this.SelectedScope >= this.ScopesSelectedModes.Length)
                        {
                                return 0;
                        }
                return this.ScopesSelectedModes[this.SelectedScope];
        }
}

recreation:
Code:

int SelectedScopeMode() {
        const uint64_t WeaponAnimation = kernel->read_memory < uint64_t >(G::localplayer.object + data::offset::ProceduralWeaponAnimation);
        auto list = kernel->read_memory < CGenericList* >(WeaponAnimation + 0x78);
        auto ptr = list->get_item(0);

        uint64_t Component = kernel->read_memory < uint64_t >(ptr + 0x10);
        int32_t SelectedScope = kernel->read_memory < uint64_t >(Component + 0x38); // 38 : SelectedScope (type: System.Int32)

        uint64_t ScopesSelectedModes = kernel->read_memory < uint64_t >(Component + 0x30); // 30 : ScopesSelectedModes (type: System.Int32[])
        uint64_t ScopesSelectedModes_length = kernel->read_memory < uint64_t >(ScopesSelectedModes + 0x18); // 30 : ScopesSelectedModes (type: System.Int32[]) -> length
        if (SelectedScope >= ScopesSelectedModes_length)
                return 0;

        return kernel->read_memory < int >(ScopesSelectedModes + 0x20 + (SelectedScope * 0x4)); // can be sizeof(float) instead of 0x4 since it's a float multidimensional array
}

the function you want to recreate:
https://i.imgur.com/qUdBsDk.png

Y33Tcoder 15th December 2021 01:22 AM

Hi all, did the offsets for item location/coords change?
I used to grab it via:

TarkovLootItem + 0x10] +0x30] + 0x30] +0x8] + 0x38] + 0xB0]

but it seems to be invalid currently, does anyone happen to know what offset down the chain changed? (seems to be deep in the chain tho)

LowkeyCharmzz 15th December 2021 03:12 AM

Quote:

Originally Posted by Y33Tcoder (Post 3319561)
Hi all, did the offsets for item location/coords change?
I used to grab it via:

TarkovLootItem + 0x10] +0x30] + 0x30] +0x8] + 0x38] + 0xB0]

but it seems to be invalid currently, does anyone happen to know what offset down the chain changed? (seems to be deep in the chain tho)

0xB0 Moved To 0x90

nikobelic29 15th December 2021 03:41 AM

Quote:

Originally Posted by LowkeyCharmzz (Post 3319212)
also having this issue, sometimes it works, sometimes it doesn�t. It�s the speed factor though, not no recoil

Quote:

Originally Posted by POFPE (Post 3318940)
Has anyone had a problem 0 damage bullets due to no recoil(editing mask to 0, alligntozero) & speedfactor(using 7.f) since the update? I hit 10 head to scav, but h didnt dead. and i checked it, it said hitted bullet was 0.(This kind of problem keeps coming up.)

Actually double check your recoil offset.

LowkeyCharmzz 15th December 2021 05:17 AM

Quote:

Originally Posted by nikobelic29 (Post 3319645)
Actually double check your recoil offset.

double check what exactly? they seem fine to me. Doing the same thing I did last wipe (updated of course)

vendeta228 15th December 2021 06:05 AM

how can I find unity player_base ????


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

POFPE 15th December 2021 06:43 AM

Quote:

Originally Posted by nikobelic29 (Post 3319645)
Actually double check your recoil offset.

what offsets u mean...

xzackcc 15th December 2021 08:59 AM

Quote:

Originally Posted by POFPE (Post 3318940)
Has anyone had a problem 0 damage bullets due to no recoil(editing mask to 0, alligntozero) & speedfactor(using 7.f) since the update? I hit 10 head to scav, but h didnt dead. and i checked it, it said hitted bullet was 0.(This kind of problem keeps coming up.)


Quote:

Originally Posted by nikobelic29 (Post 3319180)
I am also getting this issue, though I think it is due to speedfactor judging by the lack of discussion on this matter

Quote:

Originally Posted by LowkeyCharmzz (Post 3319212)
also having this issue, sometimes it works, sometimes it doesn�t. It�s the speed factor though, not no recoil

Quote:

Originally Posted by CloudApps (Post 3319220)
dont use speedfactor

Bullets don't get registered when they exceed a certain amount of velocity.
_speedFactor is used in the following functions:

Code:

EFT.Player.FirearmController.get_SpeedFactor() : float
Code:

EFT.Player.FirearmController.InitiateShot(\uE873, Vector3, Vector3, Vector3, int, float) : void
The second function is the one we're looking for:
Code:

                        // Token: 0x06005750 RID: 22352 RVA: 0x001E2104 File Offset: 0x001E0304
                        protected virtual void InitiateShot(\uE873 ammo, Vector3 shotPosition, Vector3 shotDirection, Vector3 fireportPosition, int chamberIndex, float overheat)
                        {
                                this._player.OnMakingShot(this.Item, this._player.PlayerBones.WeaponRoot.position - shotPosition);
                                if (ammo.InitialSpeed > 0f)
                                {
                                        if (ammo.ProjectileCount == 1)
                                        {
                                                \uEA43 shot = this.BallisticsCalculator.Shoot(ammo, shotPosition, shotDirection, this._player, this.Item, this._speedFactor, 0);
                                                this.RegisterShot(shot);
                                        }
                                        else
                                        {
                                                Player.FirearmController.\uE006.Clear();
                                                this.BallisticsCalculator.ShotMultiProjectileShot(ammo, shotPosition, shotDirection, this._speedFactor, Player.FirearmController.\uE006, this._player, this.Item);
                                                foreach (\uEA43 shot2 in Player.FirearmController.\uE006)
                                                {
                                                        this.RegisterShot(shot2);
                                                }
                                                Player.FirearmController.\uE006.Clear();
                                        }
                                }
                                Action uE = this.\uE008;
                                if (uE != null)
                                {
                                        uE();
                                }
                                this.\uE013 = true;
                                this.\uE010 = false;
                                this.\uE00D.PlayShotEffects(this._player.IsVisible, this._player.SqrCameraDistance);
                        }

more precised, it's those two functions:
Code:

                // Token: 0x0600A643 RID: 42563 RVA: 0x00327B50 File Offset: 0x00325D50
                void \uEA3C.ShotMultiProjectileShot(\uE873 ammo, Vector3 shotPosition, Vector3 shotDirection, float speedFactor, List<\uEA43> preAllocatedShots, Player player, Weapon item)
                {
                        preAllocatedShots.Clear();
                        this.CreateMultiProjectileShot(ammo, shotPosition, shotDirection, speedFactor, preAllocatedShots, player, item);
                        for (int i = 0; i < preAllocatedShots.Count; i++)
                        {
                                this.Shoot(preAllocatedShots[i]);
                        }
                }

                // --> CreateMultiProjectileShot
                // Token: 0x0600A648 RID: 42568 RVA: 0x00327C60 File Offset: 0x00325E60
                public void CreateMultiProjectileShot(\uE873 ammo, Vector3 origin, Vector3 direction, float speedFactor, List<\uEA43> preallocatedShots, Player player, Item weapon)
                {
                        int projectileCount = ammo.ProjectileCount;
                        int uE = this.\uE000;
                        this.\uE000 = uE + 1;
                        int fireIndex = uE;
                        for (int i = 0; i < projectileCount; i++)
                        {
                                preallocatedShots.Add(this.CreateShot(ammo, origin, (direction * 100f + ammo.buckshotDispersion * this.Randoms.GetRandomDirection(Random.Range(0, 512))).normalized, fireIndex, player, weapon, speedFactor, i * 2));
                        }
                }

                // --> preAllocatedShots is an array which gets iterated and this.Shoot gets called.
                // Token: 0x0600A643 RID: 42563 RVA: 0x00327B50 File Offset: 0x00325D50
                void \uEA3C.ShotMultiProjectileShot(\uE873 ammo, Vector3 shotPosition, Vector3 shotDirection, float speedFactor, List<\uEA43> preAllocatedShots, Player player, Weapon item)
                {
                        preAllocatedShots.Clear();
                        this.CreateMultiProjectileShot(ammo, shotPosition, shotDirection, speedFactor, preAllocatedShots, player, item);
                        for (int i = 0; i < preAllocatedShots.Count; i++)
                        {
                                this.Shoot(preAllocatedShots[i]);
                        }
                }

and
Code:

                // Token: 0x0600A642 RID: 42562 RVA: 0x00327B20 File Offset: 0x00325D20
                \uEA43 \uEA3C.Shoot(\uE873 ammo, Vector3 shotPosition, Vector3 shotDirection, int fireIndex, Player player, Item item, float speedFactor, int fragmentIndex)
                {
                        \uEA43 uEA = this.CreateShot(ammo, shotPosition, shotDirection, fireIndex, player, item, speedFactor, fragmentIndex);
                        this.Shoot(uEA);
                        return uEA;
                }
               
                // --> CreateShot
                // Token: 0x0600A647 RID: 42567 RVA: 0x00327BCC File Offset: 0x00325DCC
                public \uEA43 CreateShot(\uE873 ammo, Vector3 origin, Vector3 direction, int fireIndex, Player player, Item weapon, float speedFactor = 1f, int fragmentIndex = 0)
                {
                        int num = Random.Range(0, 512);
                        float num2 = ammo.InitialSpeed * speedFactor;
                        return \uEA43.Create(ammo, fragmentIndex, num, origin, direction, num2, num2, ammo.BulletMassGram, ammo.BulletDiameterMilimeters, (float)ammo.Damage, BallisticsCalculator.GetAmmoPenetrationPower(ammo, num, this.Randoms), ammo.PenetrationChance, ammo.RicochetChance, ammo.FragmentationChance, 1f, ammo.MinFragmentsCount, ammo.MaxFragmentsCount, BallisticsCalculator.DefaultHitBody, this.Randoms, ammo.BallisticCoeficient, player, weapon, fireIndex, null);
                }

        // --> return \uEA43.Create
        // Token: 0x0600A672 RID: 42610 RVA: 0x00328F00 File Offset: 0x00327100
        public static \uEA43 Create(Item ammo, int fragmentIndex, int seed, Vector3 origin, Vector3 direction, float initialSpeed, float speed, float bulletMassGram, float bulletDiameterMilimeters, float damage, float penetrationPower, float penetrationChance, float ricochetChance, float fragmentationChance, float deviationChance, int minFragmentsCount, int maxFragmentsCount, [CanBeNull] BallisticCollider defaultBallisticCollider, [CanBeNull] \uEA31 randoms, float ballisticCoefficient, [CanBeNull] Player player, [CanBeNull] Item weapon, int fireIndex, [CanBeNull] \uEA43 parent)
        {
                \uEA43 uEA = \uEA43.\uE000();
                uEA.\uE003(ammo, fragmentIndex, seed, origin, direction, initialSpeed, speed, bulletMassGram, bulletDiameterMilimeters, damage, penetrationPower, penetrationChance, ricochetChance, fragmentationChance, deviationChance, minFragmentsCount, maxFragmentsCount, defaultBallisticCollider, randoms, ballisticCoefficient, player, weapon, fireIndex, parent);
                return uEA;
        }

        // --> uEA.\uE003
        // Token: 0x0600A675 RID: 42613 RVA: 0x00328FD0 File Offset: 0x003271D0
        protected void \uE003(Item ammo, int fragmentIndex, int seed, Vector3 origin, Vector3 direction, float initialSpeed, float speed, float bulletMassKg, float bulletDiameterM, float damage, float penetrationPower, float penetrationChance, float ricochetChance, float fragmentationChance, float deviationChance, int minFragmentsCount, int maxFragmentsCount, [CanBeNull] BallisticCollider defaultBallisticCollider, [CanBeNull] \uEA31 randoms, float ballisticCoefficient, [CanBeNull] Player player, [CanBeNull] Item weapon, int fireIndex, [CanBeNull] \uEA43 parent)
        {
                this.Ammo = ammo;
                this.FragmentIndex = fragmentIndex;
                this.RandomSeed = seed;
                this.PositionHistory.Clear();
                this.Direction = direction;
                this.InitialSpeed = initialSpeed;
                this.Speed = speed;
                this.DamageDegradationCoefficient = Singleton<\uE4EA>.Instance.Ballistic.GlobalDamageDegradationCoefficient;
                this.BulletMassGram = bulletMassKg;
                this.BulletDiameterMilimeters = bulletDiameterM;
                this.Player = player;
                this.Weapon = weapon;
                this.FireIndex = fireIndex;
                this.Parent = parent;
                this.Damage = damage;
                this.PenetrationPower = penetrationPower;
                \uE873 uE;
                if ((uE = (this.Ammo as \uE873)) != null)
                {
                        this.ArmorDamage = uE.ArmorDamagePortion;
                        this.AmmoLifeTime = uE.AmmoLifeTimeSec;
                }
                else
                {
                        this.ArmorDamage = 0.5f;
                        this.AmmoLifeTime = 13f;
                }
                this.PenetrationChance = penetrationChance;
                this.RicochetChance = ricochetChance;
                this.FragmentationChance = fragmentationChance;
                this.DeviationChance = deviationChance;
                this.MinFragmentsCount = minFragmentsCount;
                this.MaxFragmentsCount = maxFragmentsCount;
                this.TimeSinceShot = 0f;
                if (parent == null)
                {
                        this.MasterOrigin = origin;
                }
                else
                {
                        this.MasterOrigin = parent.MasterOrigin;
                }
                this.StartPosition = origin;
                this.\uE005 = this.StartPosition;
                this.PositionHistory.Add(this.\uE005);
                this.\uE008 = defaultBallisticCollider;
                this.Randoms = randoms;
                this.BallisticCoefficient = ballisticCoefficient;
                this.StartVelocity = this.Direction * this.Speed;
                this.\uE006 = this.StartVelocity;
                this.BulletState = \uEA43.EBulletState.Flying;
                this.HittedBallisticCollider = null;
                this.\uE009 = default(RaycastHit);
                this.\uE00A = 0f;
                this.Fragments.Clear();
                this.BlockedBy = string.Empty;
                this.DeflectedBy = string.Empty;
                this.AvoidAdditionalDamage = false;
                this.\uE00B = null;
                \uEA43.FormTrajectory(this.StartPosition, this.StartVelocity, this.BulletMassGram, this.BulletDiameterMilimeters, this.BallisticCoefficient, this.TrajectoryInfo);
                if ((this.TrajectoryInfo.Last<\uEA41>().position - this.TrajectoryInfo.First<\uEA41>().position).magnitude < 10f)
                {
                        Debug.LogError(string.Concat(new string[]
                        {
                                \uEB4F.\uE000(187508),
                                string.Format(\uEB4F.\uE000(187428), this.Speed),
                                string.Format(\uEB4F.\uE000(187440), this.BulletMassGram),
                                string.Format(\uEB4F.\uE000(188359), this.BulletDiameterMilimeters),
                                string.Format(\uEB4F.\uE000(188408), this.BallisticCoefficient),
                                \uEB4F.\uE000(188293)
                        }));
                }
        }

the last function, uEA.\uE003, is where the "float speed" is being used.
fun fact: in that function, float initialSpeed and float speed are the same because public \uEA43 CreateShot calculates the following:
float num2 = ammo.InitialSpeed * speedFactor;
return \uEA43.Create(ammo, fragmentIndex, num, origin, direction, num2, num2, (...)
public static \uEA43 Create(Item ammo, int fragmentIndex, int seed, Vector3 origin, Vector3 direction, float initialSpeed, float speed,

anyway, float speed is used like this:
Code:

this.Speed = speed;
this.StartVelocity = this.Direction * this.Speed;
\uEA43.FormTrajectory(this.StartPosition, this.StartVelocity, this.BulletMassGram, this.BulletDiameterMilimeters, this.BallisticCoefficient, this.TrajectoryInfo);

which results in here:
Code:

        // Token: 0x0600A697 RID: 42647 RVA: 0x00329BA4 File Offset: 0x00327DA4
        public static void FormTrajectory(Vector3 zeroPosition, Vector3 zeroVelocity, float bulletMassGram, float bulletDiameterMilimeters, float ballisticCoefficient, \uEA41[] trajectoryInfo)
        {
                float num = bulletMassGram / 1000f;
                float num2 = bulletDiameterMilimeters / 1000f;
                float num3 = num2 * num2 * 3.1415927f / 4f;
                float num4 = 0.01f;
                trajectoryInfo[0] = new \uEA41(0f, zeroPosition, zeroVelocity); // <-- velocity, calculated from direction * our _speedFactor
                for (int i = 1; i < trajectoryInfo.Length; i++)
                {
                        \uEA41 uEA = trajectoryInfo[i - 1];
                        Vector3 velocity = uEA.velocity;
                        Vector3 position = uEA.position;
                        float num5 = num * \uEA43.CalculateG1DragCoefficient(velocity.magnitude) / ballisticCoefficient / (num2 * num2) * 0.0014223f;
                        Vector3 vector = Physics.gravity + velocity.normalized * (-num5 * 1.2f * num3 * velocity.magnitude * velocity.magnitude) / (2f * num);
                        Vector3 position2 = position + velocity * 0.01f + 5E-05f * vector;
                        Vector3 velocity2 = velocity + vector * 0.01f;
                        trajectoryInfo[i] = new \uEA41(num4, position2, velocity2);
                        num4 += 0.01f;
                }
        }

now i could go through all that as well, but the idea is that the server just drops high speed bullets.
what you're doing by manipulating the _speedFactor is not the constant speed of the bullet, it's, as the name says, the factor of what the speed gets multiplied by. so if you already have very high speed bullets and multiply it by an absurd amount, your shot won't get registered at all.

you may go ahead and calculate your speedfactor value (before writing to the memory) against the calculation i posted as code above and determine at what bullet speed you set which speedfactor, then write and you're g2g.

hope that helps.

POFPE 15th December 2021 09:21 AM

Quote:

Originally Posted by xzackcc (Post 3319804)
Bullets don't get registered when they exceed a certain amount of velocity.
_speedFactor is used in the following functions:

Code:

EFT.Player.FirearmController.get_SpeedFactor() : float
Code:

EFT.Player.FirearmController.InitiateShot(\uE873, Vector3, Vector3, Vector3, int, float) : void
The second function is the one we're looking for:
Code:

                        // Token: 0x06005750 RID: 22352 RVA: 0x001E2104 File Offset: 0x001E0304
                        protected virtual void InitiateShot(\uE873 ammo, Vector3 shotPosition, Vector3 shotDirection, Vector3 fireportPosition, int chamberIndex, float overheat)
                        {
                                this._player.OnMakingShot(this.Item, this._player.PlayerBones.WeaponRoot.position - shotPosition);
                                if (ammo.InitialSpeed > 0f)
                                {
                                        if (ammo.ProjectileCount == 1)
                                        {
                                                \uEA43 shot = this.BallisticsCalculator.Shoot(ammo, shotPosition, shotDirection, this._player, this.Item, this._speedFactor, 0);
                                                this.RegisterShot(shot);
                                        }
                                        else
                                        {
                                                Player.FirearmController.\uE006.Clear();
                                                this.BallisticsCalculator.ShotMultiProjectileShot(ammo, shotPosition, shotDirection, this._speedFactor, Player.FirearmController.\uE006, this._player, this.Item);
                                                foreach (\uEA43 shot2 in Player.FirearmController.\uE006)
                                                {
                                                        this.RegisterShot(shot2);
                                                }
                                                Player.FirearmController.\uE006.Clear();
                                        }
                                }
                                Action uE = this.\uE008;
                                if (uE != null)
                                {
                                        uE();
                                }
                                this.\uE013 = true;
                                this.\uE010 = false;
                                this.\uE00D.PlayShotEffects(this._player.IsVisible, this._player.SqrCameraDistance);
                        }

more precised, it's those two functions:
Code:

                // Token: 0x0600A643 RID: 42563 RVA: 0x00327B50 File Offset: 0x00325D50
                void \uEA3C.ShotMultiProjectileShot(\uE873 ammo, Vector3 shotPosition, Vector3 shotDirection, float speedFactor, List<\uEA43> preAllocatedShots, Player player, Weapon item)
                {
                        preAllocatedShots.Clear();
                        this.CreateMultiProjectileShot(ammo, shotPosition, shotDirection, speedFactor, preAllocatedShots, player, item);
                        for (int i = 0; i < preAllocatedShots.Count; i++)
                        {
                                this.Shoot(preAllocatedShots[i]);
                        }
                }

                // --> CreateMultiProjectileShot
                // Token: 0x0600A648 RID: 42568 RVA: 0x00327C60 File Offset: 0x00325E60
                public void CreateMultiProjectileShot(\uE873 ammo, Vector3 origin, Vector3 direction, float speedFactor, List<\uEA43> preallocatedShots, Player player, Item weapon)
                {
                        int projectileCount = ammo.ProjectileCount;
                        int uE = this.\uE000;
                        this.\uE000 = uE + 1;
                        int fireIndex = uE;
                        for (int i = 0; i < projectileCount; i++)
                        {
                                preallocatedShots.Add(this.CreateShot(ammo, origin, (direction * 100f + ammo.buckshotDispersion * this.Randoms.GetRandomDirection(Random.Range(0, 512))).normalized, fireIndex, player, weapon, speedFactor, i * 2));
                        }
                }

                // --> preAllocatedShots is an array which gets iterated and this.Shoot gets called.
                // Token: 0x0600A643 RID: 42563 RVA: 0x00327B50 File Offset: 0x00325D50
                void \uEA3C.ShotMultiProjectileShot(\uE873 ammo, Vector3 shotPosition, Vector3 shotDirection, float speedFactor, List<\uEA43> preAllocatedShots, Player player, Weapon item)
                {
                        preAllocatedShots.Clear();
                        this.CreateMultiProjectileShot(ammo, shotPosition, shotDirection, speedFactor, preAllocatedShots, player, item);
                        for (int i = 0; i < preAllocatedShots.Count; i++)
                        {
                                this.Shoot(preAllocatedShots[i]);
                        }
                }

and
Code:

                // Token: 0x0600A642 RID: 42562 RVA: 0x00327B20 File Offset: 0x00325D20
                \uEA43 \uEA3C.Shoot(\uE873 ammo, Vector3 shotPosition, Vector3 shotDirection, int fireIndex, Player player, Item item, float speedFactor, int fragmentIndex)
                {
                        \uEA43 uEA = this.CreateShot(ammo, shotPosition, shotDirection, fireIndex, player, item, speedFactor, fragmentIndex);
                        this.Shoot(uEA);
                        return uEA;
                }
               
                // --> CreateShot
                // Token: 0x0600A647 RID: 42567 RVA: 0x00327BCC File Offset: 0x00325DCC
                public \uEA43 CreateShot(\uE873 ammo, Vector3 origin, Vector3 direction, int fireIndex, Player player, Item weapon, float speedFactor = 1f, int fragmentIndex = 0)
                {
                        int num = Random.Range(0, 512);
                        float num2 = ammo.InitialSpeed * speedFactor;
                        return \uEA43.Create(ammo, fragmentIndex, num, origin, direction, num2, num2, ammo.BulletMassGram, ammo.BulletDiameterMilimeters, (float)ammo.Damage, BallisticsCalculator.GetAmmoPenetrationPower(ammo, num, this.Randoms), ammo.PenetrationChance, ammo.RicochetChance, ammo.FragmentationChance, 1f, ammo.MinFragmentsCount, ammo.MaxFragmentsCount, BallisticsCalculator.DefaultHitBody, this.Randoms, ammo.BallisticCoeficient, player, weapon, fireIndex, null);
                }

        // --> return \uEA43.Create
        // Token: 0x0600A672 RID: 42610 RVA: 0x00328F00 File Offset: 0x00327100
        public static \uEA43 Create(Item ammo, int fragmentIndex, int seed, Vector3 origin, Vector3 direction, float initialSpeed, float speed, float bulletMassGram, float bulletDiameterMilimeters, float damage, float penetrationPower, float penetrationChance, float ricochetChance, float fragmentationChance, float deviationChance, int minFragmentsCount, int maxFragmentsCount, [CanBeNull] BallisticCollider defaultBallisticCollider, [CanBeNull] \uEA31 randoms, float ballisticCoefficient, [CanBeNull] Player player, [CanBeNull] Item weapon, int fireIndex, [CanBeNull] \uEA43 parent)
        {
                \uEA43 uEA = \uEA43.\uE000();
                uEA.\uE003(ammo, fragmentIndex, seed, origin, direction, initialSpeed, speed, bulletMassGram, bulletDiameterMilimeters, damage, penetrationPower, penetrationChance, ricochetChance, fragmentationChance, deviationChance, minFragmentsCount, maxFragmentsCount, defaultBallisticCollider, randoms, ballisticCoefficient, player, weapon, fireIndex, parent);
                return uEA;
        }

        // --> uEA.\uE003
        // Token: 0x0600A675 RID: 42613 RVA: 0x00328FD0 File Offset: 0x003271D0
        protected void \uE003(Item ammo, int fragmentIndex, int seed, Vector3 origin, Vector3 direction, float initialSpeed, float speed, float bulletMassKg, float bulletDiameterM, float damage, float penetrationPower, float penetrationChance, float ricochetChance, float fragmentationChance, float deviationChance, int minFragmentsCount, int maxFragmentsCount, [CanBeNull] BallisticCollider defaultBallisticCollider, [CanBeNull] \uEA31 randoms, float ballisticCoefficient, [CanBeNull] Player player, [CanBeNull] Item weapon, int fireIndex, [CanBeNull] \uEA43 parent)
        {
                this.Ammo = ammo;
                this.FragmentIndex = fragmentIndex;
                this.RandomSeed = seed;
                this.PositionHistory.Clear();
                this.Direction = direction;
                this.InitialSpeed = initialSpeed;
                this.Speed = speed;
                this.DamageDegradationCoefficient = Singleton<\uE4EA>.Instance.Ballistic.GlobalDamageDegradationCoefficient;
                this.BulletMassGram = bulletMassKg;
                this.BulletDiameterMilimeters = bulletDiameterM;
                this.Player = player;
                this.Weapon = weapon;
                this.FireIndex = fireIndex;
                this.Parent = parent;
                this.Damage = damage;
                this.PenetrationPower = penetrationPower;
                \uE873 uE;
                if ((uE = (this.Ammo as \uE873)) != null)
                {
                        this.ArmorDamage = uE.ArmorDamagePortion;
                        this.AmmoLifeTime = uE.AmmoLifeTimeSec;
                }
                else
                {
                        this.ArmorDamage = 0.5f;
                        this.AmmoLifeTime = 13f;
                }
                this.PenetrationChance = penetrationChance;
                this.RicochetChance = ricochetChance;
                this.FragmentationChance = fragmentationChance;
                this.DeviationChance = deviationChance;
                this.MinFragmentsCount = minFragmentsCount;
                this.MaxFragmentsCount = maxFragmentsCount;
                this.TimeSinceShot = 0f;
                if (parent == null)
                {
                        this.MasterOrigin = origin;
                }
                else
                {
                        this.MasterOrigin = parent.MasterOrigin;
                }
                this.StartPosition = origin;
                this.\uE005 = this.StartPosition;
                this.PositionHistory.Add(this.\uE005);
                this.\uE008 = defaultBallisticCollider;
                this.Randoms = randoms;
                this.BallisticCoefficient = ballisticCoefficient;
                this.StartVelocity = this.Direction * this.Speed;
                this.\uE006 = this.StartVelocity;
                this.BulletState = \uEA43.EBulletState.Flying;
                this.HittedBallisticCollider = null;
                this.\uE009 = default(RaycastHit);
                this.\uE00A = 0f;
                this.Fragments.Clear();
                this.BlockedBy = string.Empty;
                this.DeflectedBy = string.Empty;
                this.AvoidAdditionalDamage = false;
                this.\uE00B = null;
                \uEA43.FormTrajectory(this.StartPosition, this.StartVelocity, this.BulletMassGram, this.BulletDiameterMilimeters, this.BallisticCoefficient, this.TrajectoryInfo);
                if ((this.TrajectoryInfo.Last<\uEA41>().position - this.TrajectoryInfo.First<\uEA41>().position).magnitude < 10f)
                {
                        Debug.LogError(string.Concat(new string[]
                        {
                                \uEB4F.\uE000(187508),
                                string.Format(\uEB4F.\uE000(187428), this.Speed),
                                string.Format(\uEB4F.\uE000(187440), this.BulletMassGram),
                                string.Format(\uEB4F.\uE000(188359), this.BulletDiameterMilimeters),
                                string.Format(\uEB4F.\uE000(188408), this.BallisticCoefficient),
                                \uEB4F.\uE000(188293)
                        }));
                }
        }

the last function, uEA.\uE003, is where the "float speed" is being used.
fun fact: in that function, float initialSpeed and float speed are the same because public \uEA43 CreateShot calculates the following:
float num2 = ammo.InitialSpeed * speedFactor;
return \uEA43.Create(ammo, fragmentIndex, num, origin, direction, num2, num2, (...)
public static \uEA43 Create(Item ammo, int fragmentIndex, int seed, Vector3 origin, Vector3 direction, float initialSpeed, float speed,

anyway, float speed is used like this:
Code:

this.Speed = speed;
this.StartVelocity = this.Direction * this.Speed;
\uEA43.FormTrajectory(this.StartPosition, this.StartVelocity, this.BulletMassGram, this.BulletDiameterMilimeters, this.BallisticCoefficient, this.TrajectoryInfo);

which results in here:
Code:

        // Token: 0x0600A697 RID: 42647 RVA: 0x00329BA4 File Offset: 0x00327DA4
        public static void FormTrajectory(Vector3 zeroPosition, Vector3 zeroVelocity, float bulletMassGram, float bulletDiameterMilimeters, float ballisticCoefficient, \uEA41[] trajectoryInfo)
        {
                float num = bulletMassGram / 1000f;
                float num2 = bulletDiameterMilimeters / 1000f;
                float num3 = num2 * num2 * 3.1415927f / 4f;
                float num4 = 0.01f;
                trajectoryInfo[0] = new \uEA41(0f, zeroPosition, zeroVelocity); // <-- velocity, calculated from direction * our _speedFactor
                for (int i = 1; i < trajectoryInfo.Length; i++)
                {
                        \uEA41 uEA = trajectoryInfo[i - 1];
                        Vector3 velocity = uEA.velocity;
                        Vector3 position = uEA.position;
                        float num5 = num * \uEA43.CalculateG1DragCoefficient(velocity.magnitude) / ballisticCoefficient / (num2 * num2) * 0.0014223f;
                        Vector3 vector = Physics.gravity + velocity.normalized * (-num5 * 1.2f * num3 * velocity.magnitude * velocity.magnitude) / (2f * num);
                        Vector3 position2 = position + velocity * 0.01f + 5E-05f * vector;
                        Vector3 velocity2 = velocity + vector * 0.01f;
                        trajectoryInfo[i] = new \uEA41(num4, position2, velocity2);
                        num4 += 0.01f;
                }
        }

now i could go through all that as well, but the idea is that the server just drops high speed bullets.
what you're doing by manipulating the _speedFactor is not the constant speed of the bullet, it's, as the name says, the factor of what the speed gets multiplied by. so if you already have very high speed bullets and multiply it by an absurd amount, your shot won't get registered at all.

you may go ahead and calculate your speedfactor value (before writing to the memory) against the calculation i posted as code above and determine at what bullet speed you set which speedfactor, then write and you're g2g.

hope that helps.

Thank you for your kind answer. But until the update, it worked well on all weapons, all bullets (at least 7.f).And the above person says offset is the problem. Everything makes me confused.
Code:

                std::this_thread::sleep_for(std::chrono::milliseconds(1));
                if (this->localPlayerPtr)
                {
                        auto animation = func->Read<uint64_t>(this->localPlayerPtr + 0x190);
                        auto fire = func->Read<uint64_t>(animation + 0x80);

                        uint64_t breath = animation + 0x28;
                        breath = func->Read<uint64_t>(breath);
                        func->WriteFloat(breath + 0xA4, 0.f);//breath intensity

                        uint64_t mask = animation + 0x100;
                        func->Write32t(mask, 1);

                        uint64_t ads = animation + 0x198;
                        func->WriteFloat(ads, 10.f);//ads intensity

                        uint64_t alignToZeroFloat22 = animation + 0x230;
                        func->WriteFloat(alignToZeroFloat22, 0.f);

                        uint64_t mask1 = animation + 0x2F8;
                        func->WriteFloat(mask1, 0.f);

                        func->WriteFloat(fire + 0x168, 7.f);
                        //func->WriteFloat(fire + 0x15C, 0);
                        //func->WriteFloat(fire + 0x164, 0);
                }


xzackcc 15th December 2021 10:09 AM

Quote:

Originally Posted by POFPE (Post 3319816)
Thank you for your kind answer. But until the update, it worked well on all weapons, all bullets (at least 7.f).And the above person says offset is the problem. Everything makes me confused.
Code:

                std::this_thread::sleep_for(std::chrono::milliseconds(1));
                if (this->localPlayerPtr)
                {
                        auto animation = func->Read<uint64_t>(this->localPlayerPtr + 0x190);
                        auto fire = func->Read<uint64_t>(animation + 0x80);

                        uint64_t breath = animation + 0x28;
                        breath = func->Read<uint64_t>(breath);
                        func->WriteFloat(breath + 0xA4, 0.f);//breath intensity

                        uint64_t mask = animation + 0x100;
                        func->Write32t(mask, 1);

                        uint64_t ads = animation + 0x198;
                        func->WriteFloat(ads, 10.f);//ads intensity

                        uint64_t alignToZeroFloat22 = animation + 0x230;
                        func->WriteFloat(alignToZeroFloat22, 0.f);

                        uint64_t mask1 = animation + 0x2F8;
                        func->WriteFloat(mask1, 0.f);

                        func->WriteFloat(fire + 0x168, 7.f);
                        //func->WriteFloat(fire + 0x15C, 0);
                        //func->WriteFloat(fire + 0x164, 0);
                }


I've had issues setting the _speedFactor higher than 5.f before the patch 12.12. If you had it set to 7.f and it mostly worked, it got broken by patch 12.12 now by looking at the following chart:

https://i.imgur.com/q6m4YMh.png
https://i.imgur.com/a6gTs55.png
https://i.imgur.com/OxmUDMj.png
https://i.imgur.com/XWA0eib.png

basically every bullet has increased traveling by higher speed, velocity and the gravity/mass that got added by the balistics patch in 12.12 (as said).

ecthirune 15th December 2021 10:16 AM

can sm1 point me in right direction with items esp?

At current state im iterating trough all items and check does it's container (container/corpse) or not with this:

itemPTR+0x10]+0x28]+0x108](itemOwner)

If 0x108 != 0 -> i assume, that i have some type of container.

But, for some reason, some items has 0x108 != 0 too, and this confusing me a lot. As example:
from ~500 items on customs i find 15-20 items properly, and in same way a lot of items not due to this mistake.

i wish to have enough brain to manage what i doin wrong, with dnspy, but this is too messy as allways been ;/

xzackcc 15th December 2021 10:26 AM

Quote:

Originally Posted by ecthirune (Post 3319843)
can sm1 point me in right direction with items esp?

At current state im iterating trough all items and check does it's container (container/corpse) or not with this:

itemPTR+0x10]+0x28]+0x108](itemOwner)

If 0x108 != 0 -> i assume, that i have some type of container.

But, for some reason, some items has 0x108 != 0 too, and this confusing me a lot. As example:
from ~500 items on customs i find 15-20 items properly, and in same way a lot of items not due to this mistake.

i wish to have enough brain to manage what i doin wrong, with dnspy, but this is too messy as allways been ;/

Sure, post your code, starting from how you grab the itemOwner to where you iterate through the child items in a container and I'll most likely fix it for you.

ecthirune 15th December 2021 11:05 AM

Quote:

Originally Posted by xzackcc (Post 3319852)
Sure, post your code, starting from how you grab the itemOwner to where you iterate through the child items in a container and I'll most likely fix it for you.

You get me wrong, im ok to grab child items in container from grid0 (i didn't iterate trough grids for now): https://prnt.sc/233kv6c

I have a problem, when single item (let's say augmenting, laying on the ground) have itemOwner !=0, and all my logic are fucked, because my sorting items from containers based on itemOwner read result:
get item data func and structs:


So some items (exactly ITEMS, not containers) has if (itemInteractive->RE_ItemOwner != 0), and it's treated as container in my logic.

I tested few times, find item, that treated wrong, take it up, drop it back on ground, call updateItem for it, and still get itemOwner != 0 result.

MaiGuaQQqun 15th December 2021 11:47 AM

Anyone have idea to remove the disgusting Inertia system? I have modifyed some field at EFT.Player->Physical. but it didnt work in online mode.

Code:

        constexpr auto Inertia = 0x98;//[98] Inertia : Single        //赋值        = 重量 在 BaseInertiaLimits 中的比重 [0,1]
        constexpr auto BaseInertiaLimits = 0xE0;//[E0] BaseInertiaLimits : UnityEngine.Vector3        //赋值        Vector3(0f, 65f, 1f)+Vector3(0.3*力量等级,0.3*力量等级,0)
        constexpr auto SprintAcceleration = 0x10C;//[10C] SprintAcceleration : Single        //赋值        Vector2(5f, 0.8f) 比重 Inertia;
        constexpr auto PreSprintAcceleration = 0x110;//[110] PreSprintAcceleration : Single//赋值        Vector2(5f, 0.8f) 比重 Inertia;
        //上下挨着的, 下面是3个bool, 最后一个是_i_EncumberDisabled
        constexpr auto _i_EncumberDisabled = 0x116;//[116] boolean_0x116 : Boolean//改为false之后,BaseInertiaLimits不会被修改,//


xzackcc 15th December 2021 12:09 PM

Quote:

Originally Posted by ecthirune (Post 3319877)
You get me wrong, im ok to grab child items in container from grid0 (i didn't iterate trough grids for now): https://prnt.sc/233kv6c

I have a problem, when single item (let's say augmenting, laying on the ground) have itemOwner !=0, and all my logic are fucked, because my sorting items from containers based on itemOwner read result:
get item data func and structs:

Code:

itemsData itemBuffer;
        itemBuffer.itemPTR = itemPTR;
        uint64_t loot = kernel->read<uint64_t>(itemPTR + 0x10);       

        ItemProfile* itemProfile = new ItemProfile[sizeof(ItemProfile)];
        kernel->readAll(itemProfile, loot, sizeof(ItemProfile));

        Interactive* itemInteractive = new Interactive[sizeof(Interactive)];
        kernel->readAll(itemInteractive, itemProfile->Interactive, sizeof(Interactive));

        GameObject* gameObject = new GameObject[sizeof(GameObject)];
        kernel->readAll(gameObject, itemProfile->GameObject,sizeof(GameObject));

        TransformOne* transformOne = new TransformOne[sizeof(TransformOne)];
        kernel->readAll(transformOne, gameObject->TransformOne, sizeof(TransformOne));

        TransformTwo* transformTwo = new TransformTwo[sizeof(TransformTwo)];
        kernel->readAll(transformTwo, transformOne->TransformTwo,  sizeof(TransformTwo));

        if (itemInteractive->RE_ItemOwner != 0)  // this drops me wrong results sometimes
        {
                itemBuffer.isContainer = true;

                TransformContainer* transformContainer = new TransformContainer[sizeof(TransformContainer)];
                kernel->readAll(transformContainer, transformTwo->TransformContainer, sizeof(TransformContainer));

                itemBuffer.itemPos = this->GetItemPos(transformContainer->TransformData);

                itemBuffer.containerGrid = kernel->read<uint64_t>(itemInteractive->RE_ItemOwner + 0xA0);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x68);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x20);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x40);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x10);
                itemBuffer.itemInsideCount = kernel->read<int>(itemBuffer.containerGrid + 0x40);
                if (itemBuffer.itemInsideCount <= 0)
                {
                        delete[] itemProfile;
                        delete[] itemInteractive;
                        delete[] gameObject;
                        delete[] transformOne;
                        delete[] transformTwo;
                        delete[] transformContainer;
                        return itemBuffer;
                }
                uint64_t Entries = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x18);
                if (Entries != 0)
                        itemBuffer.itemsInside = this->updateContainerItem(Entries, itemBuffer.itemInsideCount);
                delete[] transformContainer;
        }
        else
        {
                itemBuffer.isContainer = false;
                uint64_t item = kernel->read<uint64_t>(itemInteractive->Item + 0x40);
                uint64_t itemIdPtr = kernel->read<uint64_t>(item + 0x50);
                itemBuffer.itemName = kernel->readString2(itemIdPtr + 0x14);
       
                for (auto x = 0; x < trkMarket.size(); x++)
                {
                        if (trkMarket[x].first == itemBuffer.itemName)
                        {
                                itemBuffer.itemName = trkMarket[x].second.first;
                                itemBuffer.price = trkMarket[x].second.second;
                        }
                }

                ULONG64 itemVectorPtr = kernel->read<uint64_t>(transformOne->TransformTwo + 0x38);
                itemBuffer.itemPos = kernel->read<D3DXVECTOR3>(itemVectorPtr + 0x90);
               
        }
        delete[] itemProfile;
        delete[] itemInteractive;
        delete[] gameObject;
        delete[] transformOne;
        delete[] transformTwo;
        return itemBuffer;

[/spoiler]

So some items (exactly ITEMS, not containers) has if (itemInteractive->RE_ItemOwner != 0), and it's treated as container in my logic.

I tested few times, find item, that treated wrong, take it up, drop it back on ground, call updateItem for it, and still get itemOwner != 0 result.

No, you got me wrong. This is exactly what I asked for, for a specific reason. Instead of using the
Code:

if (itemInteractive->RE_ItemOwner != 0)
as condition for your
Code:

itemBuffer.isContainer = true;
you want the following:
Code:

if (itemInteractive->RE_ItemOwner != 0) {

                TransformContainer* transformContainer = new TransformContainer[sizeof(TransformContainer)];
                kernel->readAll(transformContainer, transformTwo->TransformContainer, sizeof(TransformContainer));

                itemBuffer.itemPos = this->GetItemPos(transformContainer->TransformData);

                itemBuffer.containerGrid = kernel->read<uint64_t>(itemInteractive->RE_ItemOwner + 0xA0);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x68);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x20);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x40);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x10);
                itemBuffer.itemInsideCount = kernel->read<int>(itemBuffer.containerGrid + 0x40);
        // another suggestion: 0x44 is the max size of the container,
        // check if it exceeds the limit of 48, 64 or 96 .. i got mine set to 96 and it works just fine.
        itemBuffer.itemInsideCountMax = kernel->read<int>(itemBuffer.containerGrid + 0x44);
               
        // check if it's a container
        if (itemBuffer.itemInsideCount > 0 && itemBuffer.itemInsideCount < 48 &&  itemBuffer.itemInsideCountMax < 96) //  <-- max count check as well to lower false-positives
                {
            itemBuffer.isContainer = true;

                        uint64_t Entries = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x18);
            if (Entries != 0)
                itemBuffer.itemsInside = this->updateContainerItem(Entries, itemBuffer.itemInsideCount);
            delete[] transformContainer;
                }else {
            // per logic, you would want this to block to read the item itself instead of the container pointers.
            // so the code after "else" down there would be used in here instead but
            // you first need to escape the itemOwner check from this line on
            delete[] itemProfile;
                        delete[] itemInteractive;
                        delete[] gameObject;
                        delete[] transformOne;
                        delete[] transformTwo;
                        delete[] transformContainer;
                        return itemBuffer;
        }               
}
else
{
                // pre-define this in your struct as false, so you don't need set it again.
        // (itemBuffer) isContainer = false;
       
                uint64_t item = kernel->read<uint64_t>(itemInteractive->Item + 0x40);
                uint64_t itemIdPtr = kernel->read<uint64_t>(item + 0x50);
                itemBuffer.itemName = kernel->readString2(itemIdPtr + 0x14);
       
                for (auto x = 0; x < trkMarket.size(); x++)
                {
                        if (trkMarket[x].first == itemBuffer.itemName)
                        {
                                itemBuffer.itemName = trkMarket[x].second.first;
                                itemBuffer.price = trkMarket[x].second.second;
                        }
                }

                ULONG64 itemVectorPtr = kernel->read<uint64_t>(transformOne->TransformTwo + 0x38);
                itemBuffer.itemPos = kernel->read<D3DXVECTOR3>(itemVectorPtr + 0x90);
               
}
delete[] itemProfile;
delete[] itemInteractive;
delete[] gameObject;
delete[] transformOne;
delete[] transformTwo;
return itemBuffer;


CloudApps 15th December 2021 12:14 PM

why does no fall damage do not work anymore ? i updated all needed offsets

why does no fall damage do not work anymore ? i updated all needed offsets

ecthirune 15th December 2021 12:31 PM

Quote:

Originally Posted by xzackcc (Post 3319935)
~snip

yeah, that works, + rep, very helpful, but:

my previous method, that i posted to you (that works ~2-3 month ago) was able to detect corpses on the ground (threat them as container too).
im dumb, this doesn't work in the past for corpses, and i lost all snippets for it.
i will use search button here instead asking xD

MaiGuaQQqun 15th December 2021 12:36 PM

Quote:

Originally Posted by CloudApps (Post 3319943)
why does no fall damage do not work anymore ? i updated all needed offsets

why does no fall damage do not work anymore ? i updated all needed offsets

no fall damage, how

xzackcc 15th December 2021 12:43 PM

Quote:

Originally Posted by ecthirune (Post 3319952)
yeah, that works, + rep, very helpful, but:

my previous method, that i posted to you (that works ~2-3 month ago) was able to detect corpses on the ground (threat them as container too).
im dumb, this doesn't work in the past for corpses, and i lost all snippets for it.
i will use search button here instead asking xD

yup, i had time (gosh, i love being in homeoffice and customers don't burn their firewalls down right before christmas, hehe) to code some kinda-clean pseudo code for you and anyone else who gets confused:

Code:

// offsets are in namespace offsets
// cheat settings are in namespace settings
// item_t is our own structure to simplify the code

struct item_t {
public:
    // base
        uintptr_t object = NULL;
    std::int64_t index = 0;

        // vars
        std::string guid = "";
    vector3_t position;
        bool is_corpse = false;
        bool is_container = false;

    // containers
    std::vector<item_t> container_items;
}

const uint64_t item_controller = kernel->read_memory<uint64_t>(offsets::LocalGameWorld + offset::ItemArray);
const uint64_t item_list = kernel->read_memory<uint64_t>(item_controller + 0x10);
const uint32_t item_size = kernel->read_memory<uint32_t>(item_controller + 0x18);

if (!item_controller || item_size <= 0 || item_size >= 50000 || !item_list)
        continue;

for (uint32_t i = 0; i < item_size * 2; i++) {
    const auto object = kernel->read_memory<uintptr_t>(item_list + 0x20 + (i * 0x8));
   
    if (!object)
        continue;

    item_t root_item;
    root_item.object = object;
    root_item.index = i;
    root_item.position = root_item.get_position();

    // check if the position is near 0.f
    if (root_item.position.is_zero())
        continue;

    // guess you have a distance check?
    if (localplayer.distance_to(root_item.position, metricsystem::distance::metre) > settings::itemesp::maxdistance)
        continue;

    // grabbing the CItem ptr.
    CItem* root_item_classptr = root_item.get_item_ptrclass(); // basically this->Interactive() + 0x50
    root_item.guid = item_class->_template()->_id(); // obvious .. CItemTemplate -> _id()

    // filter the corpses
    if (root_item.guid == "55d7217a4bdc2d86028b456d" && settings::esp::corpse) {
        root_item.apiinfo.name = "Corpse";
        root_item.is_corpse = true;
        list_items_tmp.push_back(root_item);
        continue;
    }
   
    // now the juicy stuff:
    if (uint64_t itemowner = kernel->read_memory<uint64_t>((root_item.Interactive() + 0x108));) {
        uint64_t itemcontainer = kernel->read_memory<uint64_t>(itemowner + 0xa0); // a0 : \uE027 (type: EFT.InventoryLogic.Item)

        uint64_t grids = kernel->read_memory<uint64_t>(itemcontainer + 0x68);
        uint64_t dict = kernel->read_chain<uint64_t>(grids, { 0x20, 0x40, 0x10 }); // attention, this is a chain!
        uint64_t entries = kernel->read_memory<uint64_t>(dict + 0x18);

        // you DO NOT want to do this here
        // if(kernel->badptr(entries))
        //    continue;

        int itemcontainer_count = kernel->read_memory<int>(dict + 0x40);
        int itemcontainer_countmax = kernel->read_memory<int>(dict + 0x44);

        if (itemcontainer_count > 0 && itemcontainer_count < 96 && itemcontainer_countmax > 0) {

            root_item.is_container = true;
            root_item.position = root_item.get_position_by_matrix(); // since its a container, we want the position matrix instead of the actual item position (same as you would grab the bones)

            // now, since this is a container, you iterate through the child items within the container.
            for (int j = 0; j < item_container_count; j++) {
                CItem* child_item_classptr = kernel->read_memory<CItem*>(entries + 0x28 + 0x18 * j);
               
                item_t child_item;
                auto child_template = child_ptr->_template();
                child_item.classname = child_template->Name();
                child_item.guid = child_template->_id();

                // push it back to your vector (check the item_t struct above)
                root_item.container_items.push_back(child_item);
                        }
        }
    }


    // now you
    // a) got all child items within a container pushed to a std::vector<item_t>
    // b) are still in the loop and grab all the other items from here
    if (root_item.is_container) {
                // items inside the container
                for (auto child_item : root_item.container_items) {
            // filter them as you like and push them into another std::vector<item_t>
            // .. your code ..
        }
        // and finally continue, since we're done grabbing this container and pushing its child items to another vector.
        continue;
    }
    // no need for an else statement, since the items that are left without a container
    // you would push to std::vector<item_t> like this:
    if (utilities::string_exists(root_item.classname, "blabla") /* || root_item_classptr->_template()->WhateverCondition() <= 123 and so on .. */) {
        // cache your item info as you wish
        root_item.creditprice = root_item_classptr->_template()->CreditsPrice();
        my_final_list.push_back(root_item);
    }
}


POFPE 15th December 2021 12:45 PM

Quote:

Originally Posted by xzackcc (Post 3319964)
yup, i had time (gosh, i love being in homeoffice and customers don't burn their firewalls down right before christmas, hehe) to code some kinda-clean pseudo code for you and anyone else who gets confused:

Code:

// offsets are in namespace offsets
// cheat settings are in namespace settings
// item_t is our own structure to simplify the code

struct item_t {
public:
    // base
        uintptr_t object = NULL;
    std::int64_t index = 0;

        // vars
        std::string guid = "";
    vector3_t position;
        bool is_corpse = false;
        bool is_container = false;

    // containers
    std::vector<item_t> container_items;
}

const uint64_t item_controller = kernel->read_memory<uint64_t>(offsets::LocalGameWorld + offset::ItemArray);
const uint64_t item_list = kernel->read_memory<uint64_t>(item_controller + 0x10);
const uint32_t item_size = kernel->read_memory<uint32_t>(item_controller + 0x18);

if (!item_controller || item_size <= 0 || item_size >= 50000 || !item_list)
        continue;

for (uint32_t i = 0; i < item_size * 2; i++) {
    const auto object = kernel->read_memory<uintptr_t>(item_list + 0x20 + (i * 0x8));
   
    if (!object)
        continue;

    item_t root_item;
    root_item.object = object;
    root_item.index = i;
    root_item.position = root_item.get_position();

    // check if the position is near 0.f
    if (root_item.position.is_zero())
        continue;

    // guess you have a distance check?
    if (localplayer.distance_to(root_item.position, metricsystem::distance::metre) > settings::itemesp::maxdistance)
        continue;

    // grabbing the CItem ptr.
    CItem* root_item_classptr = root_item.get_item_ptrclass(); // basically this->Interactive() + 0x50
    root_item.guid = item_class->_template()->_id(); // obvious .. CItemTemplate -> _id()

    // filter the corpses
    if (root_item.guid == "55d7217a4bdc2d86028b456d" && settings::esp::corpse) {
        root_item.apiinfo.name = "Corpse";
        root_item.is_corpse = true;
        list_items_tmp.push_back(root_item);
        continue;
    }
   
    // now the juicy stuff:
    if (uint64_t itemowner = kernel->read_memory<uint64_t>((root_item.Interactive() + 0x108));) {
        uint64_t itemcontainer = kernel->read_memory<uint64_t>(itemowner + 0xa0); // a0 : \uE027 (type: EFT.InventoryLogic.Item)

        uint64_t grids = kernel->read_memory<uint64_t>(itemcontainer + 0x68);
        uint64_t dict = kernel->read_chain<uint64_t>(grids, { 0x20, 0x40, 0x10 }); // attention, this is a chain!
        uint64_t entries = kernel->read_memory<uint64_t>(dict + 0x18);

        // you DO NOT want to do this here
        // if(kernel->badptr(entries))
        //    continue;

        int itemcontainer_count = kernel->read_memory<int>(dict + 0x40);
        int itemcontainer_countmax = kernel->read_memory<int>(dict + 0x44);

        if (itemcontainer_count > 0 && itemcontainer_count < 96 && itemcontainer_countmax > 0) {

            root_item.is_container = true;
            root_item.position = root_item.get_position_by_matrix(); // since its a container, we want the position matrix instead of the actual item position (same as you would grab the bones)

            // now, since this is a container, you iterate through the child items within the container.
            for (int j = 0; j < item_container_count; j++) {
                CItem* child_item_classptr = kernel->read_memory<CItem*>(entries + 0x28 + 0x18 * j);
               
                item_t child_item;
                auto child_template = child_ptr->_template();
                child_item.classname = child_template->Name();
                child_item.guid = child_template->_id();

                // push it back to your vector (check the item_t struct above)
                root_item.container_items.push_back(child_item);
                        }
        }
    }


    // now you
    // a) got all child items within a container pushed to a std::vector<item_t>
    // b) are still in the loop and grab all the other items from here
    if (root_item.is_container) {
                // items inside the container
                for (auto child_item : root_item.container_items) {
            // filter them as you like and push them into another std::vector<item_t>
            // .. your code ..
        }
        // and finally continue, since we're done grabbing this container and pushing its child items to another vector.
        continue;
    }
    // no need for an else statement, since the items that are left without a container
    // you would push to std::vector<item_t> like this:
    if (utilities::string_exists(root_item.classname, "blabla") /* || root_item_classptr->_template()->WhateverCondition() <= 123 and so on .. */) {
        // cache your item info as you wish
        root_item.creditprice = root_item_classptr->_template()->CreditsPrice();
        my_final_list.push_back(root_item);
    }
}


In the end, it is called Initial Speed * Speed Factor = Real Speed, so do you perform a Speed Factor = MAX Speed / Initial Speed operation to calculate the write value of the speed factor? If so, what is the value of Max Speed and what is the way to get the initial Speed? (Probably from the ammunition list?) And if I shoot from far away, it's right, but if you shoot close, I'llget a bug (bullet damage missing). Sorry For my poor english and understanding

+ What About using SpeedRetardation?

eldev 15th December 2021 01:15 PM

Quote:

Originally Posted by xzackcc (Post 3319935)
No, you got me wrong. This is exactly what I asked for, for a specific reason. Instead of using the
Code:

if (itemInteractive->RE_ItemOwner != 0)
as condition for your
Code:

itemBuffer.isContainer = true;
you want the following:
Code:

if (itemInteractive->RE_ItemOwner != 0) {

                TransformContainer* transformContainer = new TransformContainer[sizeof(TransformContainer)];
                kernel->readAll(transformContainer, transformTwo->TransformContainer, sizeof(TransformContainer));

                itemBuffer.itemPos = this->GetItemPos(transformContainer->TransformData);

                itemBuffer.containerGrid = kernel->read<uint64_t>(itemInteractive->RE_ItemOwner + 0xA0);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x68);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x20);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x40);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x10);
                itemBuffer.itemInsideCount = kernel->read<int>(itemBuffer.containerGrid + 0x40);
        // another suggestion: 0x44 is the max size of the container,
        // check if it exceeds the limit of 48, 64 or 96 .. i got mine set to 96 and it works just fine.
        itemBuffer.itemInsideCountMax = kernel->read<int>(itemBuffer.containerGrid + 0x44);
               
        // check if it's a container
        if (itemBuffer.itemInsideCount > 0 && itemBuffer.itemInsideCount < 48 &&  itemBuffer.itemInsideCountMax < 96) //  <-- max count check as well to lower false-positives
                {
            itemBuffer.isContainer = true;

                        uint64_t Entries = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x18);
            if (Entries != 0)
                itemBuffer.itemsInside = this->updateContainerItem(Entries, itemBuffer.itemInsideCount);
            delete[] transformContainer;
                }else {
            // per logic, you would want this to block to read the item itself instead of the container pointers.
            // so the code after "else" down there would be used in here instead but
            // you first need to escape the itemOwner check from this line on
            delete[] itemProfile;
                        delete[] itemInteractive;
                        delete[] gameObject;
                        delete[] transformOne;
                        delete[] transformTwo;
                        delete[] transformContainer;
                        return itemBuffer;
        }               
}
else
{
                // pre-define this in your struct as false, so you don't need set it again.
        // (itemBuffer) isContainer = false;
       
                uint64_t item = kernel->read<uint64_t>(itemInteractive->Item + 0x40);
                uint64_t itemIdPtr = kernel->read<uint64_t>(item + 0x50);
                itemBuffer.itemName = kernel->readString2(itemIdPtr + 0x14);
       
                for (auto x = 0; x < trkMarket.size(); x++)
                {
                        if (trkMarket[x].first == itemBuffer.itemName)
                        {
                                itemBuffer.itemName = trkMarket[x].second.first;
                                itemBuffer.price = trkMarket[x].second.second;
                        }
                }

                ULONG64 itemVectorPtr = kernel->read<uint64_t>(transformOne->TransformTwo + 0x38);
                itemBuffer.itemPos = kernel->read<D3DXVECTOR3>(itemVectorPtr + 0x90);
               
}
delete[] itemProfile;
delete[] itemInteractive;
delete[] gameObject;
delete[] transformOne;
delete[] transformTwo;
return itemBuffer;


This is a bad solution to the problem. You will skip about 30-40 items. I wrote about this issue a few days ago So here is my ugly solution:

Code:

                string nameSub;

                uint64_t itemClassPtr = kernel->read<uint64_t>(itemInteractive->RE_ItemOwner + 0xA0);
                uint64_t itemTemplatePtr = kernel->read<uint64_t>(itemClassPtr + 0x40); //Note that it can be 0
                if (itemTemplatePtr) {
                        uint64_t itemSubNamePtr = kernel->read<uint64_t>(itemTemplatePtr + 0x58);
                        nameSub = kernel->readString2(itemSubNamePtr + 0x14);
                }               
               
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemClassPtr + 0x68);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x20);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x40);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x10);
                itemBuffer.itemInsideCount = kernel->read<int>(itemBuffer.containerGrid + 0x40);
        // another suggestion: 0x44 is the max size of the container,
        // check if it exceeds the limit of 48, 64 or 96 .. i got mine set to 96 and it works just fine.
        itemBuffer.itemInsideCountMax = kernel->read<int>(itemBuffer.containerGrid + 0x44);
               
        // check if it's a container
        if (itemBuffer.itemInsideCount > 0 && itemBuffer.itemInsideCount < 48 &&  itemBuffer.itemInsideCountMax < 96 && nameSub.c_str()[0] != 0)

I noticed that for such items (itemowner > 0, but not containers) the name of the item inside itemOwner is always empty, but for the real container is always not empty. Therefore, if the name is empty, then you should read it as a regular item.

BeginnerMono 15th December 2021 01:22 PM

Optic Zoom Level
 
Quote:

Originally Posted by xzackcc (Post 3319497)

...

Thank you, got it working now.
I thought 0x130 could be the ZoomFactor but from an earlier post from you you said the values are 0.73, 1.78 and 3.17 if you print them but that was definitely not the case anymore.
Maybe i just misunderstood your post and you always had to do it the way you showed me.
Anyways thank you, really appreciate it.

xzackcc 15th December 2021 01:41 PM

Quote:

Originally Posted by POFPE (Post 3319966)
In the end, it is called Initial Speed * Speed Factor = Real Speed, so do you perform a Speed Factor = MAX Speed / Initial Speed operation to calculate the write value of the speed factor? If so, what is the value of Max Speed and what is the way to get the initial Speed? (Probably from the ammunition list?) And if I shoot from far away, it's right, but if you shoot close, I'llget a bug (bullet damage missing). Sorry For my poor english and understanding

+ What About using SpeedRetardation?

I can't do much testing rn, will extend the post later today.
So, from what I can tell and experienced over time, the initial speed is based on your bullet OR the weapon you're using (muzzle velocity in the weapon info window). modded weapons sometimes have (based on the modding) increased/better muzzle velocity which would then be used as the initial speed of the bullet itself.
that increase wouldn't be more than around 5% or so. The speedFactor is increased (so I think it is, don't nail me on that) by a little portion of what the mod on the weapon extends the velocity with.

The M995 give you the following stats:
https://i.imgur.com/789J2S0.png
Removing the bullet from the chamber gives you this:
https://i.imgur.com/gWWT73p.png
The fastest bullet (afaik), SSA AP extends the muzzle velocity to 1099 m/s:
https://i.imgur.com/gJkklyD.png

Notice how the blue marked bonus doesn't change much - this would (so I believe) be your _speedFactor. So if your bullet is, say 1000 m/s and you're using a factor of 7.f, your bullet velocity would be sitting at 7000 m/s. If you don't use the best ammo and not the very best weapon, your muzzle velocity sits at, say 700 m/s (= 700 * 7 -> 4900 m/s) which the server can still handle most of the time.

I'll take a deeper look into it later today or tomorrow (if I don't have to mess around with a fucked up firewall again ..)

Quote:

Originally Posted by eldev (Post 3319999)
This is a bad solution to the problem. You will skip about 30-40 items. I wrote about this issue a few days ago So here is my ugly solution:

Code:

                string nameSub;

                uint64_t itemClassPtr = kernel->read<uint64_t>(itemInteractive->RE_ItemOwner + 0xA0);
                uint64_t itemTemplatePtr = kernel->read<uint64_t>(itemClassPtr + 0x40); //Note that it can be 0
                if (itemTemplatePtr) {
                        uint64_t itemSubNamePtr = kernel->read<uint64_t>(itemTemplatePtr + 0x58);
                        nameSub = kernel->readString2(itemSubNamePtr + 0x14);
                }               
               
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemClassPtr + 0x68);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x20);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x40);
                itemBuffer.containerGrid = kernel->read<uint64_t>(itemBuffer.containerGrid + 0x10);
                itemBuffer.itemInsideCount = kernel->read<int>(itemBuffer.containerGrid + 0x40);
        // another suggestion: 0x44 is the max size of the container,
        // check if it exceeds the limit of 48, 64 or 96 .. i got mine set to 96 and it works just fine.
        itemBuffer.itemInsideCountMax = kernel->read<int>(itemBuffer.containerGrid + 0x44);
               
        // check if it's a container
        if (itemBuffer.itemInsideCount > 0 && itemBuffer.itemInsideCount < 48 &&  itemBuffer.itemInsideCountMax < 96 && nameSub.c_str()[0] != 0)

I noticed that for such items (itemowner > 0, but not containers) the name of the item inside itemOwner is always empty, but for the real container is always not empty. Therefore, if the name is empty, then you should read it as a regular item.

Good observation! I like digits more than the condition of empty strings - this is why I came up with that solution. It also doesn't skip any items since the count of the list is always set.

Quote:

Originally Posted by BeginnerMono (Post 3320011)
Thank you, got it working now.
I thought 0x130 could be the ZoomFactor but from an earlier post from you you said the values are 0.73, 1.78 and 3.17 if you print them but that was definitely not the case anymore.
Maybe i just misunderstood your post and you always had to do it the way you showed me.
Anyways thank you, really appreciate it.

Since they added the bullet mass and changed trajectory, some stuff changed. But that value still works fine (I'd still rather use the solution @TJ888 posted though)

montroisiemecon 15th December 2021 02:00 PM

Quote:

Originally Posted by xzackcc (Post 3319804)
.

I'm genuily amazed by the amount of time you have to waste. Good job

CloudApps 15th December 2021 02:26 PM

Quote:

Originally Posted by MaiGuaQQqun (Post 3319958)
no fall damage, how

yeah what is the problem about fall damage why does it not work anymore

shmiga123 15th December 2021 02:30 PM

Quote:

Originally Posted by CloudApps (Post 3320069)
yeah what is the problem about fall damage why does it not work anymore

Is works


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

CloudApps 15th December 2021 02:43 PM

Quote:

Originally Posted by shmiga123 (Post 3320074)
Is works

not for me im external and the

fall dmg multiplier is 0xB4

i set it to 0 and still take fall damage

cxtgirl 15th December 2021 02:58 PM

Quote:

Originally Posted by CloudApps (Post 3320083)
not for me im external and the

fall dmg multiplier is 0xB4

i set it to 0 and still take fall damage

localplayer -> physical [0x4C0] -> FallDamageMultiplier [0xB4]

and here's the function you want to see how the game gives you fall damage

Code:

// Token: 0x06008BDB RID: 35803 RVA: 0x002C86A4 File Offset: 0x002C68A4
        public void HandleFall(float height)
        {
                if (!base.IsAlive)
                {
                        return;
                }
                float num = height - this.\uE012;
                if (num < 0f)
                {
                        return;
                }
                float num2 = num * Mathf.Sqrt(num) * \uE7EB<\uE7EA.\uE000>.\uE01B.Falling.DamagePerMeter * this.Player.Physical.FallDamageMultiplier;
                this.ApplyDamage(EBodyPart.LeftLeg, num2, \uE7F6.FallDamage);
                this.ApplyDamage(EBodyPart.RightLeg, num2, \uE7F6.FallDamage);
                Action<float, float> uE00F = this.\uE00F;
                if (uE00F == null)
                {
                        return;
                }
                uE00F(height, num2);
        }


vendeta228 15th December 2021 03:54 PM

hellp https://ibb.co/XSyXH3r

HELLP https://ibb.co/Kb0zFQV

azmwsuwakwuvrbc 15th December 2021 05:02 PM

can anyone confirm or deny that corpse->body->bones->player is 0 if that corpse appeared before your player on the map (if you have joined as a scav mid-raid)

ecthirune 15th December 2021 05:33 PM

Quote:

Originally Posted by azmwsuwakwuvrbc (Post 3320196)
can anyone confirm or deny that corpse->body->bones->player is 0 if that corpse appeared before your player on the map (if you have joined as a scav mid-raid)

yes, you need to treat corpses position as regular item, and take his coordinates as regular item.

azmwsuwakwuvrbc 15th December 2021 06:14 PM

Quote:

Originally Posted by ecthirune (Post 3320232)
yes, you need to treat corpses position as regular item, and take his coordinates as regular item.

sad to hear, i hoped there is another secret offset to get dead player profile =( anyway thank you for solving my issue

ecthirune 15th December 2021 06:21 PM

Quote:

Originally Posted by azmwsuwakwuvrbc (Post 3320260)
sad to hear, i hoped there is another secret offset to get dead player profile =( anyway thank you for solving my issue

im not sure about corpse-player profiling after reconnect, can't say here.
i know only about position method changing.

Sweethamcheeks 15th December 2021 07:53 PM

Quote:

Originally Posted by bhehe6813 (Post 3285455)
Just get it from pwa.



Use getbonepositition function that you can copy pasta from here for this. B0 doesn't work for exfils I thought. I'd have to look.

What's pwa?

bhehe6813 15th December 2021 08:28 PM

They fucked up the existing silent aim with some changes to how bullets work, but the new method is even more accurate lmao



Quote:

Originally Posted by Sweethamcheeks (Post 3320351)
What's pwa?

EFT.Animations.ProceduralWeaponAnimation (PWA)

CloudApps 15th December 2021 10:07 PM

Quote:

Originally Posted by bhehe6813 (Post 3320389)
They fucked up the existing silent aim with some changes to how bullets work, but the new method is even more accurate lmao





EFT.Animations.ProceduralWeaponAnimation (PWA)

how do you make silent aim?

HELOHELO121 15th December 2021 10:47 PM

Does anyone have any experience traversing the EFT.Quests.QuestConditionsList? I'm trying to collect a list of all items needed for quests so that I can make my item esp always show items that I need from any distance. I'm able to get the values from that dictionary but the GClass1622 class is confusing me and if I try to read the list at 0x50 from the GClass23DD class that it inherits from but the list is garbage. Hopefully this makes sense, BSG does not make their code easy to read.

For testing purposes I'm only getting the first condition (at 0x28). I've looked at these classes in dnspy but I can't figure anything useful. numConditions and any other ptrs seem correct. Also, numConditions is always 3 no matter what index quest we are reading. My offsets are automatically generated so any offsets that aren't manually entered in the code below should be correct.
Code:

                        auto questsData = profile.get_QuestsData(); // System.Collections.Generic.List<GClass166F>
                        for (int q = 0; q < questsData.Count; q++) {
                                auto conditions = questsData[q].get_Template().get_Conditions(); // EFT.Quests.QuestConditionsList
                                int status = questsData[q].get_Status();
                                if (status == 2) { // EFT.Quests.EQuestStatus - 2 = Started
                                        int numConditions = conditions.get_count();
                                        if (numConditions > 0) {
                                                auto firstCondition = Mem->Read<std::pair<byte, ULONG64>>(conditions.addr + 0x28); // Dictionary<Byte, GClass1622> // 0x28 is the first entry in a dictionary

I am not 100% sure that I am reading into the EFT.Quests.QuestConditionsList class correctly

EliteProducer 15th December 2021 11:40 PM

Quote:

Originally Posted by HELOHELO121 (Post 3320512)
~

Uh, i'm pretty sure there's a boolean under item template called questitem or something? Around the 0x60 area iirc.

Just check if it's true, then if so, list it as a quest item.

eldev 15th December 2021 11:42 PM

Is it safe to use unlimit stamina at 12.12?

HELOHELO121 15th December 2021 11:50 PM

Quote:

Originally Posted by EliteProducer (Post 3320542)
Uh, i'm pretty sure there's a boolean under item template called questitem or something? Around the 0x60 area iirc.

Just check if it's true, then if so, list it as a quest item.

I might have not been clear but I meant items that need to be found in raid for quests, like salweas for example. the questitem bool is only true for items that aren't real items but only needed for quests. ex:
Quote:

item_quest_letter
quest_reagent

Romeod123 16th December 2021 12:33 AM

 Moderator note  Watch the negative comments in the thread. Keep it respectful.

LowkeyCharmzz 16th December 2021 12:54 AM

Quote:

Originally Posted by eldev (Post 3320546)
Is it safe to use unlimit stamina at 12.12?

yes...

ZeusLord 16th December 2021 12:59 AM


One would say the truth hurts.. it�s very much true what has been said ask anyone who is active in this thread.

Wesiscool205 16th December 2021 04:10 AM

Code:

bool CPlayer::GetPosition(uintptr_t pTransform, CVector& pos)
{
        uintptr_t transform_internal = g_Driver->ReadVirtualMemory<uintptr_t>(pTransform + 0x10);
        if (!transform_internal)
                return false;

        uintptr_t matrices = g_Driver->ReadVirtualMemory<uintptr_t>(transform_internal + 0x38);
        int index = g_Driver->ReadVirtualMemory<int>(transform_internal + 0x40);
        if (!matrices)
                return false;

        uintptr_t relation_array = g_Driver->ReadVirtualMemory<uintptr_t>(matrices + 0x18);
        if (!relation_array)
                return false;

        uintptr_t dependency_index_array = g_Driver->ReadVirtualMemory<uintptr_t>(matrices + 0x20);
        if (!dependency_index_array)
                return false;

        __m128i temp_0;
        __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
        __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
        __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };
        __m128 temp_1;
        __m128 temp_2;
        __m128 temp_main = g_Driver->ReadVirtualMemory<__m128>(relation_array + index * 48);
        int dependency_index = g_Driver->ReadVirtualMemory<int>(dependency_index_array + index);

        while (dependency_index >= 0)
        {
                int relation_index = 6 * dependency_index;

                temp_0 = g_Driver->ReadVirtualMemory<__m128i>(relation_array + 8 * relation_index + 16);
                temp_1 = g_Driver->ReadVirtualMemory<__m128>(relation_array + 8 * relation_index + 32);
                temp_2 = g_Driver->ReadVirtualMemory<__m128>(relation_array + 8 * relation_index + 48);

                __m128 v10 = _mm_mul_ps(temp_1, temp_main);
                __m128 v11 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 0));
                __m128 v12 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 85));
                __m128 v13 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -114));
                __m128 v14 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -37));
                __m128 v15 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -86));
                __m128 v16 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 113));
                __m128 v17 = _mm_add_ps(
                        _mm_add_ps(
                                _mm_add_ps(
                                        _mm_mul_ps(
                                                _mm_sub_ps(
                                                        _mm_mul_ps(_mm_mul_ps(v11, xmmword_1410D1350), v13),
                                                        _mm_mul_ps(_mm_mul_ps(v12, xmmword_1410D1360), v14)),
                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), -86))),
                                        _mm_mul_ps(
                                                _mm_sub_ps(
                                                        _mm_mul_ps(_mm_mul_ps(v15, xmmword_1410D1360), v14),
                                                        _mm_mul_ps(_mm_mul_ps(v11, xmmword_1410D1340), v16)),
                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 85)))),
                                _mm_add_ps(
                                        _mm_mul_ps(
                                                _mm_sub_ps(
                                                        _mm_mul_ps(_mm_mul_ps(v12, xmmword_1410D1340), v16),
                                                        _mm_mul_ps(_mm_mul_ps(v15, xmmword_1410D1350), v13)),
                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 0))),
                                        v10)),
                        temp_2);

                temp_main = v17;
                dependency_index = g_Driver->ReadVirtualMemory<int>(dependency_index_array + dependency_index);
        }

        pos = *reinterpret_cast<CVector*>(&temp_main);
        return true;
}

ok so hopefully this will be the last thing i will have to ask for on this thread. ive been trying for a while now and cant find a problem with this GetPosition function. no, i didnt write this and sorry but i dont remember where i got it from. when i try to use it, it draws, but in random spots and they seem to fly around the map. some are being drawn on the player but just at the origin (only for some players)

Code:

uintptr_t CPlayer::GetBoneTransformByIndex(int index)
{
        uintptr_t ptr2 = g_Driver->ReadVirtualMemory<uintptr_t>(m_pPtrToTransform + 0x28);
        uintptr_t ptr3 = g_Driver->ReadVirtualMemory<uintptr_t>(ptr2 + 0x28);
        uintptr_t ptr4 = g_Driver->ReadVirtualMemory<uintptr_t>(ptr3 + 0x10);
        return g_Driver->ReadVirtualMemory<uintptr_t>(ptr4 + (0x20 + (index * 0x8)));
}

this is my get transform function and i know it works, when i attempt to test the GetPosition function i pass the transform for index 133, which im assuming is the head and it does what i said above. any help?

DuOreng 16th December 2021 06:46 AM

Quote:

Originally Posted by Wesiscool205 (Post 3320711)
Code:

bool CPlayer::GetPosition(uintptr_t pTransform, CVector& pos)
{
        uintptr_t transform_internal = g_Driver->ReadVirtualMemory<uintptr_t>(pTransform + 0x10);
        if (!transform_internal)
                return false;

        uintptr_t matrices = g_Driver->ReadVirtualMemory<uintptr_t>(transform_internal + 0x38);
        int index = g_Driver->ReadVirtualMemory<int>(transform_internal + 0x40);
        if (!matrices)
                return false;

        uintptr_t relation_array = g_Driver->ReadVirtualMemory<uintptr_t>(matrices + 0x18);
        if (!relation_array)
                return false;

        uintptr_t dependency_index_array = g_Driver->ReadVirtualMemory<uintptr_t>(matrices + 0x20);
        if (!dependency_index_array)
                return false;

        __m128i temp_0;
        __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
        __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
        __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };
        __m128 temp_1;
        __m128 temp_2;
        __m128 temp_main = g_Driver->ReadVirtualMemory<__m128>(relation_array + index * 48);
        int dependency_index = g_Driver->ReadVirtualMemory<int>(dependency_index_array + index);

        while (dependency_index >= 0)
        {
                int relation_index = 6 * dependency_index;

                temp_0 = g_Driver->ReadVirtualMemory<__m128i>(relation_array + 8 * relation_index + 16);
                temp_1 = g_Driver->ReadVirtualMemory<__m128>(relation_array + 8 * relation_index + 32);
                temp_2 = g_Driver->ReadVirtualMemory<__m128>(relation_array + 8 * relation_index + 48);

                __m128 v10 = _mm_mul_ps(temp_1, temp_main);
                __m128 v11 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 0));
                __m128 v12 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 85));
                __m128 v13 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -114));
                __m128 v14 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -37));
                __m128 v15 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -86));
                __m128 v16 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 113));
                __m128 v17 = _mm_add_ps(
                        _mm_add_ps(
                                _mm_add_ps(
                                        _mm_mul_ps(
                                                _mm_sub_ps(
                                                        _mm_mul_ps(_mm_mul_ps(v11, xmmword_1410D1350), v13),
                                                        _mm_mul_ps(_mm_mul_ps(v12, xmmword_1410D1360), v14)),
                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), -86))),
                                        _mm_mul_ps(
                                                _mm_sub_ps(
                                                        _mm_mul_ps(_mm_mul_ps(v15, xmmword_1410D1360), v14),
                                                        _mm_mul_ps(_mm_mul_ps(v11, xmmword_1410D1340), v16)),
                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 85)))),
                                _mm_add_ps(
                                        _mm_mul_ps(
                                                _mm_sub_ps(
                                                        _mm_mul_ps(_mm_mul_ps(v12, xmmword_1410D1340), v16),
                                                        _mm_mul_ps(_mm_mul_ps(v15, xmmword_1410D1350), v13)),
                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 0))),
                                        v10)),
                        temp_2);

                temp_main = v17;
                dependency_index = g_Driver->ReadVirtualMemory<int>(dependency_index_array + dependency_index);
        }

        pos = *reinterpret_cast<CVector*>(&temp_main);
        return true;
}

ok so hopefully this will be the last thing i will have to ask for on this thread. ive been trying for a while now and cant find a problem with this GetPosition function. no, i didnt write this and sorry but i dont remember where i got it from. when i try to use it, it draws, but in random spots and they seem to fly around the map. some are being drawn on the player but just at the origin (only for some players)

Code:

uintptr_t CPlayer::GetBoneTransformByIndex(int index)
{
        uintptr_t ptr2 = g_Driver->ReadVirtualMemory<uintptr_t>(m_pPtrToTransform + 0x28);
        uintptr_t ptr3 = g_Driver->ReadVirtualMemory<uintptr_t>(ptr2 + 0x28);
        uintptr_t ptr4 = g_Driver->ReadVirtualMemory<uintptr_t>(ptr3 + 0x10);
        return g_Driver->ReadVirtualMemory<uintptr_t>(ptr4 + (0x20 + (index * 0x8)));
}

this is my get transform function and i know it works, when i attempt to test the GetPosition function i pass the transform for index 133, which im assuming is the head and it does what i said above. any help?

You should probably check if the pointers you are reading are null. You should also see if you have Automatic RAM Cleaner on in the game options this caused a similar issue positions would be cleaned out and broken and some valid (spent way to long trying to fix an issue that was not related to my code). if this doesn't fix it show your worldtoscreen code.

bhehe6813 16th December 2021 06:57 AM

Quote:

Originally Posted by HELOHELO121 (Post 3320512)
Does anyone have any experience traversing the EFT.Quests.QuestConditionsList? I'm trying to collect a list of all items needed for quests so that I can make my item esp always show items that I need from any distance. I'm able to get the values from that dictionary but the GClass1622 class is confusing me and if I try to read the list at 0x50 from the GClass23DD class that it inherits from but the list is garbage. Hopefully this makes sense, BSG does not make their code easy to read.

For testing purposes I'm only getting the first condition (at 0x28). I've looked at these classes in dnspy but I can't figure anything useful. numConditions and any other ptrs seem correct. Also, numConditions is always 3 no matter what index quest we are reading. My offsets are automatically generated so any offsets that aren't manually entered in the code below should be correct.
Code:

                        auto questsData = profile.get_QuestsData(); // System.Collections.Generic.List<GClass166F>
                        for (int q = 0; q < questsData.Count; q++) {
                                auto conditions = questsData[q].get_Template().get_Conditions(); // EFT.Quests.QuestConditionsList
                                int status = questsData[q].get_Status();
                                if (status == 2) { // EFT.Quests.EQuestStatus - 2 = Started
                                        int numConditions = conditions.get_count();
                                        if (numConditions > 0) {
                                                auto firstCondition = Mem->Read<std::pair<byte, ULONG64>>(conditions.addr + 0x28); // Dictionary<Byte, GClass1622> // 0x28 is the first entry in a dictionary

I am not 100% sure that I am reading into the EFT.Quests.QuestConditionsList class correctly

Yes I just did it yesterday:

Code:

                                    // manually parse the conditions
                                    var conditionDict = quest.QuestTemplate.QuestConditionDictionary; // this is a typical unity dictionary. I only care about the values in this example.
                                    var targetList = new List<string>()
                                    for (int i = 0; i < conditionDict.Count; i++) //starts at 0x30, 16 bytes between
                                    {
                                        var conditionBasePtr = M.Read<IntPtr>(conditionDict.pEntries + 0x30 + (i * 16));
                                        var condition = M.Read<QuestConditionBase>(conditionBasePtr);
                                        var conditionList = condition.ConditionList; // this is a typical unity List<> at 0x50
                                        for (int j = 0; j < conditionList.itemCount; j++)
                                        {
                                            var childConditionPtr = M.Read<IntPtr>(conditionList.listBase + 0x20 + (0x8 * j));
                                            var childCondition = M.Read<ChildCondition>(childConditionPtr);
                                            var className = childCondition.ComponentFields.ComponentStaticFields.ClassDetails.ClassName; // 0x0]0x0]0x48

                                            if (className == "ConditionFindItem" || className == "ConditionHandoverItem") // these are probably the conditions you care about
                                            {
                                                var targetArray = childCondition.ChildrenArray; // this is a typical unity array[] at 0x48
                                                var targets = new string[targetArray.Count];
                                                for (int k = 0; k < targetArray.Count; k++)
                                                {
                                                    var stringPtr = M.Read<IntPtr>(childCondition.pTargetArray + 0x20 + (0x8 * k));
                                                    var str = M.ReadUnicodeString(stringPtr + 20, M.Read<int>(stringPtr + 16) * 8);
                                                    targetList.Add(str);
                                                }
                                            }
                                        }
                                    }

I suggest just doing this once and then writing some code to auto generate lists/dictionaries with this information in them (you can see my older threads where I have posted lots of auto generated structs for quests). After you implement the item esp you'll want to implement the quest markers, i.e. if a quest says "go to dorm 206". I have several posts on how to do that. Also don't be like me and ofc write some generic read dictionary, read list, read array methods instead of writing it out like I do.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

Wesiscool205 16th December 2021 07:45 AM

Quote:

Originally Posted by DuOreng (Post 3320775)
You should probably check if the pointers you are reading are null. You should also see if you have Automatic RAM Cleaner on in the game options this caused a similar issue positions would be cleaned out and broken and some valid (spent way to long trying to fix an issue that was not related to my code). if this doesn't fix it show your worldtoscreen code.

my w2s:

Code:

bool Viewmatrix::WorldToScreen(CVector pos, CVector& screen)
{
        m_ViewMatrix = g_mViewMatrix;

        D3DXVECTOR3 point3D = D3DXVECTOR3(pos.x, pos.y, pos.z);

        D3DXVECTOR3 translationVector = D3DXVECTOR3(m_ViewMatrix._41, m_ViewMatrix._42, m_ViewMatrix._43);
        D3DXVECTOR3 up = D3DXVECTOR3(m_ViewMatrix._21, m_ViewMatrix._22, m_ViewMatrix._23);
        D3DXVECTOR3 right = D3DXVECTOR3(m_ViewMatrix._11, m_ViewMatrix._12, m_ViewMatrix._13);

        float w = D3DXVec3Dot(&translationVector, &point3D) + m_ViewMatrix._44;

        if (w < 0.0001f)
                return false;

        float y = D3DXVec3Dot(&up, &point3D) + m_ViewMatrix._24;
        float x = D3DXVec3Dot(&right, &point3D) + m_ViewMatrix._14;

    screen.x = (g_Overlay->GetScreenSize().x / 2) * (1.f + x / w);
    screen.y = (g_Overlay->GetScreenSize().y / 2) * (1.f - y / w);

    if (screen.x < 1 || screen.x > g_vScreen.x || screen.y < 1 || screen.y > g_vScreen.y)
        return false;

    return true;
}

i know my w2s works because i was able to use it on their pedometer origin, i think the ram cleaner helped, now it is being drawn to all players, except on the origin of the player, not the head. im having a really hard time trying to figure out why, ive debugged and went thru CE to see if the pointers were valid and they are. feel like im skimming directly over the solution

cxtgirl 16th December 2021 10:54 AM

Quote:

Originally Posted by Wesiscool205 (Post 3320795)
-snip

this is how i get the position of player bones
Code:

const auto bone_matrix = driver->read_chain( player->address, { 0xA8, 0x28, 0x28, 0x10 } );

this->base_pos = get_position( driver->read<uintptr_t>( bone_matrix + ( 0x20 + ( HumanBase * 8 ) ) ) );

this->head_pos = get_position( driver->read<uintptr_t>( bone_matrix + ( 0x20 + ( HumanHead * 8 ) ) ) );

and the bones enum looks like this
Code:

enum bones : int
{
        HumanBase = 0,
        HumanPelvis = 14,
        HumanLThigh1 = 15,
        HumanLThigh2 = 16,
        HumanLCalf = 17,
        HumanLFoot = 18,
        HumanLToe = 19,
        HumanRThigh1 = 20,
        HumanRThigh2 = 21,
        HumanRCalf = 22,
        HumanRFoot = 23,
        HumanRToe = 24,
        HumanSpine1 = 29,
        HumanSpine2 = 36,
        HumanSpine3 = 37,
        HumanLCollarbone = 89,
        HumanLUpperarm = 90,
        HumanLForearm1 = 91,
        HumanLForearm2 = 92,
        HumanLForearm3 = 93,
        HumanLPalm = 94,
        HumanRCollarbone = 110,
        HumanRUpperarm = 111,
        HumanRForearm1 = 112,
        HumanRForearm2 = 113,
        HumanRForearm3 = 114,
        HumanRPalm = 115,
        HumanNeck = 132,
        HumanHead = 133
};


hollow 16th December 2021 11:23 AM

inertia is annoying, isn't it? let's disable it :)

most of the settings are stored in a static instance of this class:
https://i.imgur.com/RxH2UDN.png

how do we find the instance? sigscanning, of course!
Code:

inertia = (inertia_settings*)utils::find_mono_class_inst({ 0xCD, 0xCC, 0xCC, 0x3E, 0xC3, 0xF5, 0x88, 0x3F, 0x9A, 0x99, 0x99, 0x3E, 0xA4, 0x70, 0x9D, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x99, 0x99, 0x3E, 0x00, 0x00, 0x80, 0x3F, 0xCD, 0xCC, 0xCC, 0x3D }, -0x4C);
"CD CC CC 3E C3 F5 88 3F 9A 99 99 3E A4 70 9D 3F 00 00 00 00 9A 99 99 3E 00 00 80 3F CD CC CC 3D" - 0x4C will lead you to the beginning of the class.

but there's a slight problem: collisions with data that is most definitely not a mono instance of the class. how do we deal with that? try to get class name!
class + 0 ] + 0 ] + 0x48 ] will give you a pointer to the class name. what you have to do is check if the pointers are valid. class name pointer is valid? great, we have the actual class!

after that, we can just set the following values to remove most of inertia garbage:
Code:

MoveTime = 0
MinDirectionBlendTime = 0
PenaltyPower = 0
BaseJumpPenalty = 0
DurationPower = 0
BaseJumpPenaltyDuration = 0
FallThreshold = 99999


CloudApps 16th December 2021 12:37 PM

Quote:

Originally Posted by hollow (Post 3320901)
inertia is annoying, isn't it? let's disable it :)

most of the settings are stored in a static instance of this class:
https://i.imgur.com/RxH2UDN.png

how do we find the instance? sigscanning, of course!
Code:

inertia = (inertia_settings*)utils::find_mono_class_inst({ 0xCD, 0xCC, 0xCC, 0x3E, 0xC3, 0xF5, 0x88, 0x3F, 0x9A, 0x99, 0x99, 0x3E, 0xA4, 0x70, 0x9D, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x99, 0x99, 0x3E, 0x00, 0x00, 0x80, 0x3F, 0xCD, 0xCC, 0xCC, 0x3D }, -0x4C);
"CD CC CC 3E C3 F5 88 3F 9A 99 99 3E A4 70 9D 3F 00 00 00 00 9A 99 99 3E 00 00 80 3F CD CC CC 3D" - 0x4C will lead you to the beginning of the class.

but there's a slight problem: collisions with data that is most definitely not a mono instance of the class. how do we deal with that? try to get class name!
class + 0 ] + 0 ] + 0x48 ] will give you a pointer to the class name. what you have to do is check if the pointers are valid. class name pointer is valid? great, we have the actual class!

after that, we can just set the following values to remove most of inertia garbage:
Code:

MoveTime = 0
MinDirectionBlendTime = 0
PenaltyPower = 0
BaseJumpPenalty = 0
DurationPower = 0
BaseJumpPenaltyDuration = 0
FallThreshold = 99999


can you send that find monoclass function

Tonyx97 16th December 2021 12:41 PM

Quote:

Originally Posted by CloudApps (Post 3320940)
can you send that find monoclass function

It's just a normal sig scanning function I assume, nothing to do with mono specifically, he's sigscanning the static values if you didn't notice.

Quote:

Originally Posted by hollow (Post 3320901)
inertia is annoying, isn't it? let's disable it :)

most of the settings are stored in a static instance of this class:
https://i.imgur.com/RxH2UDN.png

how do we find the instance? sigscanning, of course!
Code:

inertia = (inertia_settings*)utils::find_mono_class_inst({ 0xCD, 0xCC, 0xCC, 0x3E, 0xC3, 0xF5, 0x88, 0x3F, 0x9A, 0x99, 0x99, 0x3E, 0xA4, 0x70, 0x9D, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x99, 0x99, 0x3E, 0x00, 0x00, 0x80, 0x3F, 0xCD, 0xCC, 0xCC, 0x3D }, -0x4C);
"CD CC CC 3E C3 F5 88 3F 9A 99 99 3E A4 70 9D 3F 00 00 00 00 9A 99 99 3E 00 00 80 3F CD CC CC 3D" - 0x4C will lead you to the beginning of the class.

but there's a slight problem: collisions with data that is most definitely not a mono instance of the class. how do we deal with that? try to get class name!
class + 0 ] + 0 ] + 0x48 ] will give you a pointer to the class name. what you have to do is check if the pointers are valid. class name pointer is valid? great, we have the actual class!

after that, we can just set the following values to remove most of inertia garbage:
Code:

MoveTime = 0
MinDirectionBlendTime = 0
PenaltyPower = 0
BaseJumpPenalty = 0
DurationPower = 0
BaseJumpPenaltyDuration = 0
FallThreshold = 99999


What kind of protection has the virtual page containing that instance got? I can't find that sig filtering by PAGE_EXECUTE_READWRITE or PAGE_READWRITE.

Wesiscool205 16th December 2021 02:38 PM

Quote:

Originally Posted by cxtgirl (Post 3320883)
this is how i get the position of player bones
Code:

const auto bone_matrix = driver->read_chain( player->address, { 0xA8, 0x28, 0x28, 0x10 } );

this->base_pos = get_position( driver->read<uintptr_t>( bone_matrix + ( 0x20 + ( HumanBase * 8 ) ) ) );

this->head_pos = get_position( driver->read<uintptr_t>( bone_matrix + ( 0x20 + ( HumanHead * 8 ) ) ) );

and the bones enum looks like this
Code:

enum bones : int
{
        HumanBase = 0,
        HumanPelvis = 14,
        HumanLThigh1 = 15,
        HumanLThigh2 = 16,
        HumanLCalf = 17,
        HumanLFoot = 18,
        HumanLToe = 19,
        HumanRThigh1 = 20,
        HumanRThigh2 = 21,
        HumanRCalf = 22,
        HumanRFoot = 23,
        HumanRToe = 24,
        HumanSpine1 = 29,
        HumanSpine2 = 36,
        HumanSpine3 = 37,
        HumanLCollarbone = 89,
        HumanLUpperarm = 90,
        HumanLForearm1 = 91,
        HumanLForearm2 = 92,
        HumanLForearm3 = 93,
        HumanLPalm = 94,
        HumanRCollarbone = 110,
        HumanRUpperarm = 111,
        HumanRForearm1 = 112,
        HumanRForearm2 = 113,
        HumanRForearm3 = 114,
        HumanRPalm = 115,
        HumanNeck = 132,
        HumanHead = 133
};


Thanks, but the problem is in my getposition function, it's a page back. I'm able to get the correct transform, then I pass it to my getposition and it draws but only on the players origin

HELOHELO121 16th December 2021 02:56 PM

Quote:

Originally Posted by bhehe6813 (Post 3320776)
Yes I just did it yesterday:

Code:

                                    // manually parse the conditions
                                    var conditionDict = quest.QuestTemplate.QuestConditionDictionary; // this is a typical unity dictionary. I only care about the values in this example.
                                    var targetList = new List<string>()
                                    for (int i = 0; i < conditionDict.Count; i++) //starts at 0x30, 16 bytes between
                                    {
                                        var conditionBasePtr = M.Read<IntPtr>(conditionDict.pEntries + 0x30 + (i * 16));
                                        var condition = M.Read<QuestConditionBase>(conditionBasePtr);
                                        var conditionList = condition.ConditionList; // this is a typical unity List<> at 0x50
                                        for (int j = 0; j < conditionList.itemCount; j++)
                                        {
                                            var childConditionPtr = M.Read<IntPtr>(conditionList.listBase + 0x20 + (0x8 * j));
                                            var childCondition = M.Read<ChildCondition>(childConditionPtr);
                                            var className = childCondition.ComponentFields.ComponentStaticFields.ClassDetails.ClassName; // 0x0]0x0]0x48

                                            if (className == "ConditionFindItem" || className == "ConditionHandoverItem") // these are probably the conditions you care about
                                            {
                                                var targetArray = childCondition.ChildrenArray; // this is a typical unity array[] at 0x48
                                                var targets = new string[targetArray.Count];
                                                for (int k = 0; k < targetArray.Count; k++)
                                                {
                                                    var stringPtr = M.Read<IntPtr>(childCondition.pTargetArray + 0x20 + (0x8 * k));
                                                    var str = M.ReadUnicodeString(stringPtr + 20, M.Read<int>(stringPtr + 16) * 8);
                                                    targetList.Add(str);
                                                }
                                            }
                                        }
                                    }

I suggest just doing this once and then writing some code to auto generate lists/dictionaries with this information in them (you can see my older threads where I have posted lots of auto generated structs for quests). After you implement the item esp you'll want to implement the quest markers, i.e. if a quest says "go to dorm 206". I have several posts on how to do that. Also don't be like me and ofc write some generic read dictionary, read list, read array methods instead of writing it out like I do.

You're a lifesaver, thanks a ton

POFPE 16th December 2021 02:58 PM

Do anyone know how to calculate the speed of the player (Vec3) for calculating the trajectory drop? Curpos-previus pos is often broken by Ping or other factors. Since the instant hit by changing speedfactor value is not working, due to the ballistic change. I am trying to create a prediction ambot.

cxtgirl 16th December 2021 03:23 PM

Quote:

Originally Posted by Wesiscool205 (Post 3321022)
Thanks, but the problem is in my getposition function, it's a page back. I'm able to get the correct transform, then I pass it to my getposition and it draws but only on the players origin

Code:

inline glm::vec3 get_position( const uintptr_t transform )
{
        uintptr_t matrix_list_base = 0;
        uintptr_t dependency_index_table_base = 0;

        auto transform_internal = driver->read<uintptr_t>( transform + 0x10 );

        auto matrices = driver->read<uintptr_t>( transform_internal + 0x38 );
        auto index = driver->read<int>( transform_internal + 0x40 );

        driver->read_buffer( ( uintptr_t )( matrices + 0x18 ), &matrix_list_base, sizeof( matrix_list_base ) );

        driver->read_buffer( ( uintptr_t )( matrices + 0x20 ), &dependency_index_table_base, sizeof( dependency_index_table_base ) );

        static auto get_dependency_index = [ & ]( uintptr_t base, int32_t index )
        {
                driver->read_buffer( ( uintptr_t )( base + index * 4 ), &index, sizeof( index ) );
                return index;
        };

        static auto get_matrix_blob = [ & ]( uintptr_t base, uintptr_t offs, float* blob, uint32_t size )
        {
                driver->read_buffer( ( uintptr_t )( base + offs ), blob, size );
        };

        int32_t index_relation = get_dependency_index( dependency_index_table_base, index );

        glm::vec3 ret_value;
        {
                float* base_matrix3x4 = ( float* )malloc( 64 ),
                        * matrix3x4_buffer0 = ( float* )( ( uintptr_t )base_matrix3x4 + 16 ),
                        * matrix3x4_buffer1 = ( float* )( ( uintptr_t )base_matrix3x4 + 32 ),
                        * matrix3x4_buffer2 = ( float* )( ( uintptr_t )base_matrix3x4 + 48 );

                get_matrix_blob( matrix_list_base, index * 48, base_matrix3x4, 16 );

                __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
                __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
                __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };

                while ( index_relation >= 0 )
                {
                        uint32_t matrix_relation_index = 6 * index_relation;

                        get_matrix_blob( matrix_list_base, 8 * matrix_relation_index, matrix3x4_buffer2, 16 );
                        __m128 v_0 = *( __m128* )matrix3x4_buffer2;

                        get_matrix_blob( matrix_list_base, 8 * matrix_relation_index + 32, matrix3x4_buffer0, 16 );
                        __m128 v_1 = *( __m128* )matrix3x4_buffer0;

                        get_matrix_blob( matrix_list_base, 8 * matrix_relation_index + 16, matrix3x4_buffer1, 16 );
                        __m128i v9 = *( __m128i* )matrix3x4_buffer1;

                        __m128* v3 = ( __m128* )base_matrix3x4; // [email protected]
                        __m128 v10; // [email protected]
                        __m128 v11; // [email protected]
                        __m128 v12; // [email protected]
                        __m128 v13; // [email protected]
                        __m128 v14; // [email protected]
                        __m128 v15; // [email protected]
                        __m128 v16; // [email protected]
                        __m128 v17; // [email protected]

                        v10 = _mm_mul_ps( v_1, *v3 );
                        v11 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, 0 ) );
                        v12 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, 85 ) );
                        v13 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, -114 ) );
                        v14 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, -37 ) );
                        v15 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, -86 ) );
                        v16 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, 113 ) );

                        v17 = _mm_add_ps(
                                _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps( _mm_mul_ps( v11, ( __m128 )xmmword_1410D1350 ), v13 ),
                                                                _mm_mul_ps( _mm_mul_ps( v12, ( __m128 )xmmword_1410D1360 ), v14 ) ),
                                                        _mm_castsi128_ps( _mm_shuffle_epi32( _mm_castps_si128( v10 ), -86 ) ) ),
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps( _mm_mul_ps( v15, ( __m128 )xmmword_1410D1360 ), v14 ),
                                                                _mm_mul_ps( _mm_mul_ps( v11, ( __m128 )xmmword_1410D1340 ), v16 ) ),
                                                        _mm_castsi128_ps( _mm_shuffle_epi32( _mm_castps_si128( v10 ), 85 ) ) ) ),
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps( _mm_mul_ps( v12, ( __m128 )xmmword_1410D1340 ), v16 ),
                                                                _mm_mul_ps( _mm_mul_ps( v15, ( __m128 )xmmword_1410D1350 ), v13 ) ),
                                                        _mm_castsi128_ps( _mm_shuffle_epi32( _mm_castps_si128( v10 ), 0 ) ) ),
                                                v10 ) ),
                                v_0 );

                        *v3 = v17;

                        index_relation = get_dependency_index( dependency_index_table_base, index_relation );
                }

                ret_value = *( glm::vec3* )base_matrix3x4;
                delete[ ] base_matrix3x4;
        }

        return ret_value;
}


Wesiscool205 16th December 2021 03:36 PM

Quote:

Originally Posted by cxtgirl (Post 3321060)
Code:

inline glm::vec3 get_position( const uintptr_t transform )
{
        uintptr_t matrix_list_base = 0;
        uintptr_t dependency_index_table_base = 0;

        auto transform_internal = driver->read<uintptr_t>( transform + 0x10 );

        auto matrices = driver->read<uintptr_t>( transform_internal + 0x38 );
        auto index = driver->read<int>( transform_internal + 0x40 );

        driver->read_buffer( ( uintptr_t )( matrices + 0x18 ), &matrix_list_base, sizeof( matrix_list_base ) );

        driver->read_buffer( ( uintptr_t )( matrices + 0x20 ), &dependency_index_table_base, sizeof( dependency_index_table_base ) );

        static auto get_dependency_index = [ & ]( uintptr_t base, int32_t index )
        {
                driver->read_buffer( ( uintptr_t )( base + index * 4 ), &index, sizeof( index ) );
                return index;
        };

        static auto get_matrix_blob = [ & ]( uintptr_t base, uintptr_t offs, float* blob, uint32_t size )
        {
                driver->read_buffer( ( uintptr_t )( base + offs ), blob, size );
        };

        int32_t index_relation = get_dependency_index( dependency_index_table_base, index );

        glm::vec3 ret_value;
        {
                float* base_matrix3x4 = ( float* )malloc( 64 ),
                        * matrix3x4_buffer0 = ( float* )( ( uintptr_t )base_matrix3x4 + 16 ),
                        * matrix3x4_buffer1 = ( float* )( ( uintptr_t )base_matrix3x4 + 32 ),
                        * matrix3x4_buffer2 = ( float* )( ( uintptr_t )base_matrix3x4 + 48 );

                get_matrix_blob( matrix_list_base, index * 48, base_matrix3x4, 16 );

                __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
                __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
                __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };

                while ( index_relation >= 0 )
                {
                        uint32_t matrix_relation_index = 6 * index_relation;

                        get_matrix_blob( matrix_list_base, 8 * matrix_relation_index, matrix3x4_buffer2, 16 );
                        __m128 v_0 = *( __m128* )matrix3x4_buffer2;

                        get_matrix_blob( matrix_list_base, 8 * matrix_relation_index + 32, matrix3x4_buffer0, 16 );
                        __m128 v_1 = *( __m128* )matrix3x4_buffer0;

                        get_matrix_blob( matrix_list_base, 8 * matrix_relation_index + 16, matrix3x4_buffer1, 16 );
                        __m128i v9 = *( __m128i* )matrix3x4_buffer1;

                        __m128* v3 = ( __m128* )base_matrix3x4; // [email protected]
                        __m128 v10; // [email protected]
                        __m128 v11; // [email protected]
                        __m128 v12; // [email protected]
                        __m128 v13; // [email protected]
                        __m128 v14; // [email protected]
                        __m128 v15; // [email protected]
                        __m128 v16; // [email protected]
                        __m128 v17; // [email protected]

                        v10 = _mm_mul_ps( v_1, *v3 );
                        v11 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, 0 ) );
                        v12 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, 85 ) );
                        v13 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, -114 ) );
                        v14 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, -37 ) );
                        v15 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, -86 ) );
                        v16 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, 113 ) );

                        v17 = _mm_add_ps(
                                _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps( _mm_mul_ps( v11, ( __m128 )xmmword_1410D1350 ), v13 ),
                                                                _mm_mul_ps( _mm_mul_ps( v12, ( __m128 )xmmword_1410D1360 ), v14 ) ),
                                                        _mm_castsi128_ps( _mm_shuffle_epi32( _mm_castps_si128( v10 ), -86 ) ) ),
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps( _mm_mul_ps( v15, ( __m128 )xmmword_1410D1360 ), v14 ),
                                                                _mm_mul_ps( _mm_mul_ps( v11, ( __m128 )xmmword_1410D1340 ), v16 ) ),
                                                        _mm_castsi128_ps( _mm_shuffle_epi32( _mm_castps_si128( v10 ), 85 ) ) ) ),
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps( _mm_mul_ps( v12, ( __m128 )xmmword_1410D1340 ), v16 ),
                                                                _mm_mul_ps( _mm_mul_ps( v15, ( __m128 )xmmword_1410D1350 ), v13 ) ),
                                                        _mm_castsi128_ps( _mm_shuffle_epi32( _mm_castps_si128( v10 ), 0 ) ) ),
                                                v10 ) ),
                                v_0 );

                        *v3 = v17;

                        index_relation = get_dependency_index( dependency_index_table_base, index_relation );
                }

                ret_value = *( glm::vec3* )base_matrix3x4;
                delete[ ] base_matrix3x4;
        }

        return ret_value;
}


What's the difference between your driver->read and driver->read_buffer ?

cxtgirl 16th December 2021 03:47 PM

Quote:

Originally Posted by Wesiscool205 (Post 3321068)
What's the difference between your driver->read and driver->read_buffer ?

think of read_buffer like memset internally, its not necessary to use a buffer ever but it makes certain parts of that code alot cleaner.

its based off of this post.

HELOHELO121 16th December 2021 04:21 PM

Quote:

Originally Posted by bhehe6813 (Post 3320776)
Yes I just did it yesterday:

Code:

                                    // manually parse the conditions
                                    var conditionDict = quest.QuestTemplate.QuestConditionDictionary; // this is a typical unity dictionary. I only care about the values in this example.
                                    var targetList = new List<string>()
                                    for (int i = 0; i < conditionDict.Count; i++) //starts at 0x30, 16 bytes between
                                    {
                                        var conditionBasePtr = M.Read<IntPtr>(conditionDict.pEntries + 0x30 + (i * 16));
                                        var condition = M.Read<QuestConditionBase>(conditionBasePtr);
                                        var conditionList = condition.ConditionList; // this is a typical unity List<> at 0x50
                                        for (int j = 0; j < conditionList.itemCount; j++)
                                        {
                                            var childConditionPtr = M.Read<IntPtr>(conditionList.listBase + 0x20 + (0x8 * j));
                                            var childCondition = M.Read<ChildCondition>(childConditionPtr);
                                            var className = childCondition.ComponentFields.ComponentStaticFields.ClassDetails.ClassName; // 0x0]0x0]0x48

                                            if (className == "ConditionFindItem" || className == "ConditionHandoverItem") // these are probably the conditions you care about
                                            {
                                                var targetArray = childCondition.ChildrenArray; // this is a typical unity array[] at 0x48
                                                var targets = new string[targetArray.Count];
                                                for (int k = 0; k < targetArray.Count; k++)
                                                {
                                                    var stringPtr = M.Read<IntPtr>(childCondition.pTargetArray + 0x20 + (0x8 * k));
                                                    var str = M.ReadUnicodeString(stringPtr + 20, M.Read<int>(stringPtr + 16) * 8);
                                                    targetList.Add(str);
                                                }
                                            }
                                        }
                                    }

I suggest just doing this once and then writing some code to auto generate lists/dictionaries with this information in them (you can see my older threads where I have posted lots of auto generated structs for quests). After you implement the item esp you'll want to implement the quest markers, i.e. if a quest says "go to dorm 206". I have several posts on how to do that. Also don't be like me and ofc write some generic read dictionary, read list, read array methods instead of writing it out like I do.

Hey, I can't get past conditionList. It has some 2 billion entries. Also, numConditions is always 3 for some reason. The
Code:

                        auto questsData = profile.get_QuestsData();
                        for (int q = 0; q < questsData.Count; q++) {
                                auto conditions = questsData[q].get_Template().get_Conditions(); // EFT.Quests.QuestConditionsList
                                int status = questsData[q].get_Status();
                                if (status == 2) {
                                        int numConditions = conditions.get_count();
                                        for (int g = 0; g < numConditions; g++) //starts at 0x30, 16 bytes between
                                        {
                                                auto entries = Mem->Read<ULONG64>(conditions.addr + 0x18);
                                                auto conditionBasePtr = Mem->Read<ULONG64>(entries + 0x30 + (g * 16));
                                                auto condition = Mem->Read<ULONG64>(conditionBasePtr);
                                                auto conditionList = List<EFT_Quests_Condition>(Mem->Read<ULONG64>(condition + 0x50)); // this is a typical unity List<> at 0x50

Code:

template <class T = ULONG64>
class List : public BaseClass {
public:
        int Count = 0;
        ULONG64* items = nullptr;

        List(ULONG64 addr, bool alt = false) : BaseClass(addr) {
                Update(alt);
        }

        void Update(bool alt = false) {
                Count = Mem->Read<int>(addr + 0x18, alt);

                if (items != nullptr)
                        delete items;

                if (Count > 0) {
                        items = new ULONG64[Count];
                        Mem->Read(items, Mem->Read<ULONG64>(addr + 0x10, alt) + 0x20, sizeof(ULONG64) * Count, alt);
                }
        }

        ~List() {
                if (items != nullptr)
                        delete items;
        }

        T get(int index, bool alt = false) {
                return T(items[index]);
        }

        T operator[](int index) {
                return get(index);
        }
};


bhehe6813 16th December 2021 07:35 PM

Quote:

Originally Posted by HELOHELO121 (Post 3321113)
Hey, I can't get past conditionList. It has some 2 billion entries. Also, numConditions is always 3 for some reason. The
Code:

                        auto questsData = profile.get_QuestsData();
                        for (int q = 0; q < questsData.Count; q++) {
                                auto conditions = questsData[q].get_Template().get_Conditions(); // EFT.Quests.QuestConditionsList
                                int status = questsData[q].get_Status();
                                if (status == 2) {
                                        int numConditions = conditions.get_count();
                                        for (int g = 0; g < numConditions; g++) //starts at 0x30, 16 bytes between
                                        {
                                                auto entries = Mem->Read<ULONG64>(conditions.addr + 0x18);
                                                auto conditionBasePtr = Mem->Read<ULONG64>(entries + 0x30 + (g * 16));
                                                auto condition = Mem->Read<ULONG64>(conditionBasePtr);
                                                auto conditionList = List<EFT_Quests_Condition>(Mem->Read<ULONG64>(condition + 0x50)); // this is a typical unity List<> at 0x50

Code:

template <class T = ULONG64>
class List : public BaseClass {
public:
        int Count = 0;
        ULONG64* items = nullptr;

        List(ULONG64 addr, bool alt = false) : BaseClass(addr) {
                Update(alt);
        }

        void Update(bool alt = false) {
                Count = Mem->Read<int>(addr + 0x18, alt);

                if (items != nullptr)
                        delete items;

                if (Count > 0) {
                        items = new ULONG64[Count];
                        Mem->Read(items, Mem->Read<ULONG64>(addr + 0x10, alt) + 0x20, sizeof(ULONG64) * Count, alt);
                }
        }

        ~List() {
                if (items != nullptr)
                        delete items;
        }

        T get(int index, bool alt = false) {
                return T(items[index]);
        }

        T operator[](int index) {
                return get(index);
        }
};



Then your read is wrong at the beginning ish I'd guess.

HELOHELO121 16th December 2021 07:41 PM

Quote:

Originally Posted by bhehe6813 (Post 3321288)
Then your read is wrong at the beginning ish I'd guess.

Couldn't be that, all those functions starting with 'get_' were automatically generated from the most current unispect dump

BukkyTheBaka 16th December 2021 07:57 PM

Quote:

Originally Posted by hollow (Post 3320901)
inertia is annoying, isn't it? let's disable it :)

most of the settings are stored in a static instance of this class:
https://i.imgur.com/RxH2UDN.png

how do we find the instance? sigscanning, of course!
Code:

inertia = (inertia_settings*)utils::find_mono_class_inst({ 0xCD, 0xCC, 0xCC, 0x3E, 0xC3, 0xF5, 0x88, 0x3F, 0x9A, 0x99, 0x99, 0x3E, 0xA4, 0x70, 0x9D, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x99, 0x99, 0x3E, 0x00, 0x00, 0x80, 0x3F, 0xCD, 0xCC, 0xCC, 0x3D }, -0x4C);
"CD CC CC 3E C3 F5 88 3F 9A 99 99 3E A4 70 9D 3F 00 00 00 00 9A 99 99 3E 00 00 80 3F CD CC CC 3D" - 0x4C will lead you to the beginning of the class.

but there's a slight problem: collisions with data that is most definitely not a mono instance of the class. how do we deal with that? try to get class name!
class + 0 ] + 0 ] + 0x48 ] will give you a pointer to the class name. what you have to do is check if the pointers are valid. class name pointer is valid? great, we have the actual class!

after that, we can just set the following values to remove most of inertia garbage:
Code:

MoveTime = 0
MinDirectionBlendTime = 0
PenaltyPower = 0
BaseJumpPenalty = 0
DurationPower = 0
BaseJumpPenaltyDuration = 0
FallThreshold = 99999


nice post, for anyones who is able to interact with mono call the get_InertiaSettings to get the singleton s instance

kickbar 16th December 2021 09:12 PM

hi,
what you guys using to draw your overlay (externaly)
is that safe to just bind a simple non-topmost overlay on the game ?

cxtgirl 16th December 2021 09:27 PM

Could anyone explain how you get from the loot list to the ObservedLootItem class.

I can iterate through the loot list but it just seems to point me to a random interface with 1 method, I can see that it derives some classes that I actually need to access but I'm not sure how to get from here to there.

https://cdn.discordapp.com/attachmen...34/unknown.png

I'm already aware of how to get to the ObservedLootItem class by looking at other posts but none of them actually explain exactly how they got to this location.

numagomedov 16th December 2021 09:29 PM

Quote:

Originally Posted by bhehe6813 (Post 3320389)
They fucked up the existing silent aim with some changes to how bullets work, but the new method is even more accurate lmao





EFT.Animations.ProceduralWeaponAnimation (PWA)

how do you make it?

Quote:

Originally Posted by hollow (Post 3320901)
inertia is annoying, isn't it? let's disable it :)

most of the settings are stored in a static instance of this class:
https://i.imgur.com/RxH2UDN.png

how do we find the instance? sigscanning, of course!
Code:

inertia = (inertia_settings*)utils::find_mono_class_inst({ 0xCD, 0xCC, 0xCC, 0x3E, 0xC3, 0xF5, 0x88, 0x3F, 0x9A, 0x99, 0x99, 0x3E, 0xA4, 0x70, 0x9D, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x99, 0x99, 0x3E, 0x00, 0x00, 0x80, 0x3F, 0xCD, 0xCC, 0xCC, 0x3D }, -0x4C);
"CD CC CC 3E C3 F5 88 3F 9A 99 99 3E A4 70 9D 3F 00 00 00 00 9A 99 99 3E 00 00 80 3F CD CC CC 3D" - 0x4C will lead you to the beginning of the class.

but there's a slight problem: collisions with data that is most definitely not a mono instance of the class. how do we deal with that? try to get class name!
class + 0 ] + 0 ] + 0x48 ] will give you a pointer to the class name. what you have to do is check if the pointers are valid. class name pointer is valid? great, we have the actual class!

after that, we can just set the following values to remove most of inertia garbage:
Code:

MoveTime = 0
MinDirectionBlendTime = 0
PenaltyPower = 0
BaseJumpPenalty = 0
DurationPower = 0
BaseJumpPenaltyDuration = 0
FallThreshold = 99999


nice share also nice class meme, one question is the pattern only valid in "main" game?
I try to search but i couldn't find any results: https://imgur.com/a/xIYE3cS

HELOHELO121 16th December 2021 11:56 PM

Quote:

Originally Posted by kickbar (Post 3321369)
hi,
what you guys using to draw your overlay (externaly)
is that safe to just bind a simple non-topmost overlay on the game ?

I gave my overlay the transparent flag and you can make it behave the same as topmost by calling SetWindowPos and passing the EFT window for the hWndInsertAfter parameter every frame

seopung 16th December 2021 11:59 PM

Quote:

Originally Posted by kickbar (Post 3321369)
hi,
what you guys using to draw your overlay (externaly)
is that safe to just bind a simple non-topmost overlay on the game ?

i would use windows built in on screen keyboard, its alot of work though


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

Wesiscool205 17th December 2021 05:53 AM

Quote:

Originally Posted by cxtgirl (Post 3321077)
think of read_buffer like memset internally, its not necessary to use a buffer ever but it makes certain parts of that code alot cleaner.

its based off of this post.

https://i.imgur.com/U7rsQpp.png

so im using your GetPosition function, but getting really weird behavior. The red circles are where the head pos is being drawn to. Theyre following the player, but offsetted to the left or right based off of their location from me ive noticed.

Code:

        void ReadVirtualBuffer(uintptr_t ReadAddress, PVOID buffer, SIZE_T size)
        {
                uintptr_t read_buffer = 0x0;
                Memory InputRequest;

                InputRequest.ProcessId = Target_PID;
                InputRequest.Address = ReadAddress;
                InputRequest.pBuff = &read_buffer;
                InputRequest.Size = sizeof(read_buffer);

                DeviceIoControl(hDriver, IO_READ_MEMORY_REQUEST, &InputRequest, sizeof(InputRequest), &InputRequest, sizeof(InputRequest), 0, 0);
               
                // after reading the memory and storing it into read_buffer, memcpy it into the allocated memory (buffer) with the size given
                memcpy(buffer, &read_buffer, size);
        }

this is my read_buffer function, i wrote what i assumed you meant by replicating memset

is there anything im doing wrong? i havent edited your GetPosition function, just put it in

HELOHELO121 17th December 2021 06:56 AM

Here's how to do hitmarkers:
If you need the offsets just dump the game via unispect and follow the logic starting at EFT.Ballistics.BallisticsCalculator
It isn't perfect but it's the only hitmarker method i've found that works offline and online and works externally
Code:

        // LGW.get_ballisticCollider_0x120() - this is the default ballistic collider if the hit collider doesn't have a ballistic collider
        auto ballisticsCalculator = EFT_Ballistics_BallisticsCalculator(LGW.get_gInterface8EC6_0x50());
       
        // probably means we are in an offline raid
        if (!ballisticsCalculator.addr)
                ballisticsCalculator = LGW.get__sharedBallisticsCalculator();
       
        auto shots = ballisticsCalculator.get_Shots();
        for (int i = 0; i < shots.Count; i++) {
                auto shot = shots[i];

                if (!shot.addr || shot.get_Player().addr != local.addr)
                        continue;
               
                auto hittedCollider = shot.get_HittedBallisticCollider();

                if (!hittedCollider.addr)
                        continue;

                int typeOfMaterial = hittedCollider.get__typeOfMaterial();
                if (typeOfMaterial == 2 || typeOfMaterial == 32 || typeOfMaterial == 34 || typeOfMaterial == 35 || typeOfMaterial == 36) {
                        sndPlaySound("hitmarker.wav", SND_FILENAME | SND_ASYNC);
                }
                //std::cout << std::to_string(i) << ". " << std::to_string(typeOfMaterial) << std::endl;
        }

Here's the materialType enum if you're interested
Code:

using System;

namespace EFT.Ballistics
{
        // Token: 0x02001C92 RID: 7314
        public enum MaterialType
        {
                // Token: 0x0400936B RID: 37739
                Asphalt = 1,
                // Token: 0x0400936C RID: 37740
                Body,
                // Token: 0x0400936D RID: 37741
                Cardboard,
                // Token: 0x0400936E RID: 37742
                Chainfence,
                // Token: 0x0400936F RID: 37743
                Concrete,
                // Token: 0x04009370 RID: 37744
                Fabric,
                // Token: 0x04009371 RID: 37745
                GarbageMetal,
                // Token: 0x04009372 RID: 37746
                GarbagePaper,
                // Token: 0x04009373 RID: 37747
                GenericSoft,
                // Token: 0x04009374 RID: 37748
                Glass,
                // Token: 0x04009375 RID: 37749
                GlassShattered,
                // Token: 0x04009376 RID: 37750
                Grate,
                // Token: 0x04009377 RID: 37751
                GrassHigh,
                // Token: 0x04009378 RID: 37752
                GrassLow,
                // Token: 0x04009379 RID: 37753
                Gravel,
                // Token: 0x0400937A RID: 37754
                MetalThin,
                // Token: 0x0400937B RID: 37755
                MetalThick,
                // Token: 0x0400937C RID: 37756
                Mud,
                // Token: 0x0400937D RID: 37757
                Pebbles,
                // Token: 0x0400937E RID: 37758
                Plastic,
                // Token: 0x0400937F RID: 37759
                Stone,
                // Token: 0x04009380 RID: 37760
                Soil,
                // Token: 0x04009381 RID: 37761
                SoilForest,
                // Token: 0x04009382 RID: 37762
                Tile,
                // Token: 0x04009383 RID: 37763
                Water,
                // Token: 0x04009384 RID: 37764
                WaterPuddle,
                // Token: 0x04009385 RID: 37765
                WoodThin,
                // Token: 0x04009386 RID: 37766
                WoodThick,
                // Token: 0x04009387 RID: 37767
                Tyre,
                // Token: 0x04009388 RID: 37768
                Rubber,
                // Token: 0x04009389 RID: 37769
                GenericHard,
                // Token: 0x0400938A RID: 37770
                BodyArmor,
                // Token: 0x0400938B RID: 37771
                Swamp,
                // Token: 0x0400938C RID: 37772
                Helmet,
                // Token: 0x0400938D RID: 37773
                GlassVisor,
                // Token: 0x0400938E RID: 37774
                HelmetRicochet,
                // Token: 0x0400938F RID: 37775
                MetalNoDecal,
                // Token: 0x04009390 RID: 37776
                None = 0
        }
}


CloudApps 17th December 2021 07:20 AM

whats wrong with my get transform for the extract points? i read a chain from the entity addr:
Code:

{ 0x10, 0x30, 0x30, 0x8, 0x38, 0x90 }
also could anyone help me about getting the item position & name from the (GameWorld + 0x60)

vendeta228 17th December 2021 10:13 AM

hello everyone, could you tell me how to find the game world locale
https://ibb.co/qnKPtbz

DuOreng 17th December 2021 11:28 AM

Quote:

Originally Posted by Wesiscool205 (Post 3321644)
https://i.imgur.com/U7rsQpp.png

so im using your GetPosition function, but getting really weird behavior. The red circles are where the head pos is being drawn to. Theyre following the player, but offsetted to the left or right based off of their location from me ive noticed.

Code:

        void ReadVirtualBuffer(uintptr_t ReadAddress, PVOID buffer, SIZE_T size)
        {
                uintptr_t read_buffer = 0x0;
                Memory InputRequest;

                InputRequest.ProcessId = Target_PID;
                InputRequest.Address = ReadAddress;
                InputRequest.pBuff = &read_buffer;
                InputRequest.Size = sizeof(read_buffer);

                DeviceIoControl(hDriver, IO_READ_MEMORY_REQUEST, &InputRequest, sizeof(InputRequest), &InputRequest, sizeof(InputRequest), 0, 0);
               
                // after reading the memory and storing it into read_buffer, memcpy it into the allocated memory (buffer) with the size given
                memcpy(buffer, &read_buffer, size);
        }

this is my read_buffer function, i wrote what i assumed you meant by replicating memset

is there anything im doing wrong? i havent edited your GetPosition function, just put it in

Here, this works perfectly fine.

Code:

Vector3 GetPosition(uint64_t transform)
{
        auto transform_internal = Memory::Read<uint64_t>(transform + 0x10);

        if (!transform_internal)
                return Vector3(0, 0, 0);

        auto some_ptr = Memory::Read<uint64_t>(transform_internal + 0x38);
        auto index = Memory::Read<int32_t>(transform_internal + 0x38 + sizeof(uint64_t));
        if (!some_ptr)
                return Vector3();

        auto relation_array = Memory::Read<uint64_t>(some_ptr + 0x18);
        if (!relation_array)
                return Vector3();

        auto dependency_index_array = Memory::Read<uint64_t>(some_ptr + 0x20);
        if (!dependency_index_array)
                return Vector3();

        __m128i temp_0;
        __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
        __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
        __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };
        __m128 temp_1;
        __m128 temp_2;
        auto temp_main = Memory::Read<__m128>(relation_array + index * 48);
        auto dependency_index = Memory::Read<int32_t>(dependency_index_array + 4 * index);

        while (dependency_index >= 0) {
                auto relation_index = 6 * dependency_index;

                temp_0 = Memory::Read<__m128i>(relation_array + 8 * relation_index + 16);
                temp_1 = Memory::Read<__m128>(relation_array + 8 * relation_index + 32);
                temp_2 = Memory::Read<__m128>(relation_array + 8 * relation_index);

                __m128 v10 = _mm_mul_ps(temp_1, temp_main);
                __m128 v11 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 0));
                __m128 v12 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 85));
                __m128 v13 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -114));
                __m128 v14 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -37));
                __m128 v15 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -86));
                __m128 v16 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 113));
                __m128 v17 = _mm_add_ps(
                        _mm_add_ps(
                                _mm_add_ps(
                                        _mm_mul_ps(
                                                _mm_sub_ps(
                                                        _mm_mul_ps(_mm_mul_ps(v11, xmmword_1410D1350), v13),
                                                        _mm_mul_ps(_mm_mul_ps(v12, xmmword_1410D1360), v14)),
                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), -86))),
                                        _mm_mul_ps(
                                                _mm_sub_ps(
                                                        _mm_mul_ps(_mm_mul_ps(v15, xmmword_1410D1360), v14),
                                                        _mm_mul_ps(_mm_mul_ps(v11, xmmword_1410D1340), v16)),
                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 85)))),
                                _mm_add_ps(
                                        _mm_mul_ps(
                                                _mm_sub_ps(
                                                        _mm_mul_ps(_mm_mul_ps(v12, xmmword_1410D1340), v16),
                                                        _mm_mul_ps(_mm_mul_ps(v15, xmmword_1410D1350), v13)),
                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 0))),
                                        v10)),
                        temp_2);

                temp_main = v17;
                dependency_index = Memory::Read<int32_t>(dependency_index_array + 4 * dependency_index);
        }

        return *reinterpret_cast<Vector3*>(&temp_main);
}


BraydenEGC 17th December 2021 02:35 PM

Quote:

Originally Posted by HELOHELO121 (Post 3321666)
~snip~

Since the list of shots is only the active shots being simulated, you need to loop this list extremely quickly in order to get good results. Also note that if the shot does not fragment after collision, this may not work because the shot will be removed from the list on the next simulation tick. (You would have to catch it at the perfect time in your loop.)

cxtgirl 17th December 2021 04:01 PM

Quote:

Originally Posted by BraydenEGC (Post 3321899)
Since the list of shots is only the active shots being simulated, you need to loop this list extremely quickly in order to get good results. Also note that if the shot does not fragment after collision, this may not work because the shot will be removed from the list on the next simulation tick. (You would have to catch it at the perfect time in your loop.)

from what ive done with that loop ive never had an issue with not getting a shot correctly

HELOHELO121 17th December 2021 04:06 PM

Quote:

Originally Posted by BraydenEGC (Post 3321899)
Since the list of shots is only the active shots being simulated, you need to loop this list extremely quickly in order to get good results. Also note that if the shot does not fragment after collision, this may not work because the shot will be removed from the list on the next simulation tick. (You would have to catch it at the perfect time in your loop.)

In my testing, I've observed that typeOfMaterial is assigned before the shot actually lands in game so i'd assume they're simulated. I haven't had any issues with it not looping quick enough and I have it in my main render loop which is by no means fast.

Quote:

Originally Posted by cxtgirl (Post 3321960)
from what ive done with that loop ive never had an issue with not getting a shot correctly

Same it can just be buggy sometimes if you're spraying someone down

BraydenEGC 17th December 2021 05:18 PM

Yeah, I don�t use hitmarkers because I am not a csgo hvh chad. And it probably isn�t an issue if you loop at mach jesus or every frame. I could foresee it being an edge case issue though.

Wesiscool205 17th December 2021 05:27 PM

Quote:

Originally Posted by DuOreng (Post 3321799)
Here, this works perfectly fine.

thank you so much, ive been trying for too long to get this to work lol.

Quote:

Originally Posted by vendeta228 (Post 3321764)
hello everyone, could you tell me how to find the game world locale
https://ibb.co/qnKPtbz

Code:

CLocalGameWorld CGameWorld::GetLocalGameWorld() {
        uintptr_t ptr1 = g_Driver->ReadVirtualMemory<uintptr_t>(gameworldptr + 0x30);
        uintptr_t ptr2 = g_Driver->ReadVirtualMemory<uintptr_t>(ptr1 + 0x18);
        uintptr_t ptr3 = g_Driver->ReadVirtualMemory<uintptr_t>(ptr2 + 0x28);
        return g_Driver->ReadVirtualMemory<CLocalGameWorld>(ptr3);
}

GameWorld + 0x30 ] 0x18 ] 0x28 ]

bhehe6813 17th December 2021 09:04 PM

Quote:

Originally Posted by BraydenEGC (Post 3322018)
Yeah, I don’t use hitmarkers because I am not a csgo hvh chad. And it probably isn’t an issue if you loop at mach jesus or every frame. I could foresee it being an edge case issue though.

You're right anyways btw, the other user says "it's buggy" when spraying him down. It's obvious why that happens and it's what you're describing, but to add additional context, the game re-uses shot PTRs. I.e. shot 1 and shot 3 can have the same ptr, it simply gets re-used after shot 1s state is finished. The user ends up missing some bullets without even realizing it. The proper way to do this ofc is just hook that fn if internal, but you'll probably get yourself banned, so instead there's a few instructions you can replace with something like mov your8ByteMemoryWithinMonoModuleRangeLikelyACodecave, shotPtr instead to just set in memory what the current shot ptr is instantly, that way you're not jmp'ing around.

HELOHELO121 17th December 2021 09:24 PM

Quote:

Originally Posted by bhehe6813 (Post 3322158)
You're right anyways btw, the other user says "it's buggy" when spraying him down. It's obvious why that happens and it's what you're describing, but to add additional context, the game re-uses shot PTRs. I.e. shot 1 and shot 3 can have the same ptr, it simply gets re-used after shot 1s state is finished. The user ends up missing some bullets without even realizing it. The proper way to do this ofc is just hook that fn if internal, but you'll probably get yourself banned, so instead there's a few instructions you can replace with something like mov your8ByteMemoryWithinMonoModuleRangeLikelyACodecave, shotPtr instead to just set in memory what the current shot ptr is instantly, that way you're not jmp'ing around.

The purpose of my post was that it worked externally, but that's interesting about the shot ptrs

vendeta228 18th December 2021 02:22 AM

Quote:

Originally Posted by Wesiscool205 (Post 3322025)
thank you so much, ive been trying for too long to get this to work lol.



Code:

CLocalGameWorld CGameWorld::GetLocalGameWorld() {
        uintptr_t ptr1 = g_Driver->ReadVirtualMemory<uintptr_t>(gameworldptr + 0x30);
        uintptr_t ptr2 = g_Driver->ReadVirtualMemory<uintptr_t>(ptr1 + 0x18);
        uintptr_t ptr3 = g_Driver->ReadVirtualMemory<uintptr_t>(ptr2 + 0x28);
        return g_Driver->ReadVirtualMemory<CLocalGameWorld>(ptr3);
}

GameWorld + 0x30 ] 0x18 ] 0x28 ]

I use this mixing

bool init_game() {

auto active_objects = DriverAPI.Read<std::array<uint64_t, 2>>(m_gom + offsetof(structs::GameObjectManager, lastActiveObject));
if (!active_objects[0] || !active_objects[1]) return false;

game_world = GetObjectFromList(active_objects[1], active_objects[0], xorget("GameWorld"));
std::cout << "GameWorld " << game_world;
if (!game_world) return false;

local_game_world.entity = ReadChain<uintptr_t>(game_world, { 0x30, 0x18, 0x28 });
std::cout << "LocalGameWorld " << local_game_world.entity;
if (!local_game_world.entity) return true;

auto tagged_objects = DriverAPI.Read<std::array<uint64_t, 2>>(m_gom + offsetof(structs::GameObjectManager, lastTaggedObject));
fps_camera = GetObjectFromList(tagged_objects[1], tagged_objects[0], xorget("FPS Camera"));
if (!fps_camera) return false;

return true;
}

I think I'm not finding gom correctly I'm using this pattern = 48 8B 0D ? ? ? ? 48 85 C9 74 17 41 B9 ? ? ? ? 4C 8D 05 ? ? ? ? BA ? ? ? ? E8 ? ? ? ? 48 C7 05 ? ? ? ? ? ? ? ? 48 83 C4 28 C3 CC CC CC CC CC CC CC CC CC 40 53

Sweethamcheeks 18th December 2021 04:44 AM

I asked this before months ago with no luck. Figured I'll try again.

Anyone know how to determine if a scav is a traitor? I've tried using the fence reputation class but doesn't work how I'd expect. Any suggestions are appreciated.

bhehe6813 18th December 2021 05:12 AM

Quote:

Originally Posted by Sweethamcheeks (Post 3322404)
I asked this before months ago with no luck. Figured I'll try again.

Anyone know how to determine if a scav is a traitor? I've tried using the fence reputation class but doesn't work how I'd expect. Any suggestions are appreciated.

This isn't networked as far as I can tell.

--------------------------------


End of InventoryLogicWeapon shifted around, magslotcache is now 0xA8, aimindex 0xb0.

Sweethamcheeks 18th December 2021 06:31 AM

Quote:

Originally Posted by bhehe6813 (Post 3322408)
This isn't networked as far as I can tell.

--------------------------------


End of InventoryLogicWeapon shifted around, magslotcache is now 0xA8, aimindex 0xb0.

That'd be strange. Perhaps there's a way to see a players kill list. Check if they killed a scav or something.

bhehe6813 18th December 2021 07:30 AM

Quote:

Originally Posted by TJ888 (Post 3307173)
Since the Unity 2019 upgrade, they slightly changed the GameObjectManager as you are likely already aware, so now it looks like this-
Code:

struct GameObjectManager {
        ListNode<GameObject> LastTaggedNode // 0x0
        ListNode<GameObject> TaggedNodes // 0x8
        ListNode<GameObject> LastMainCameraTaggedNode // 0x10
        ListNode<GameObject> MainCameraTaggedNodes // 0x18
        ListNode<GameObject> LastActiveNode // 0x20
        ListNode<GameObject> ActiveNodes // 0x28
}

ActiveNodes is where you get GameWorld
MainCameraTaggedNodes is now where you get FPS Camera
and finally, TaggedNodes is where you get the Optical Camera (BaseOpticCamera(Clone))

I recommend traversing TaggedNodes backwards (Start with LastTaggedNode and go backwards in the List) to get the Optical Camera, as typically it is near the end if not already the last.

Previously there was some scuffed pointer chain in FPS Camera that could get you to the Optical Camera, or you use to be able to use the AllCameras Manager, but from what I could tell, they both don't work in live games anymore.

The way I determine if you are to use the Optical Camera is to first check IsAiming, and if it is true, check your current sights' current optical zoom level, and if it's >1.f, I use the Optical Camera. For me it works every time, I can cycle between multiple scopes and change their magnification (1x to 4x for e.g.), and the W2S behaves correctly every time.

TJ just cache these ptrs, they don't change until you enter a new world. You shouldn't have to read the list backward and shit lol, your performance can be bad because you're only reading it once. Good post though, +rep updated to use that camera node.

cxtgirl 18th December 2021 09:17 AM

Quote:

Originally Posted by vendeta228 (Post 3322350)
-snip

gom is the base address of UnityPlayer.dll + 0x17F1CE8

TJ888 18th December 2021 09:34 AM

Quote:

Originally Posted by bhehe6813 (Post 3322439)
TJ just cache these ptrs, they don't change until you enter a new world. You shouldn't have to read the list backward and shit lol, your performance can be bad because you're only reading it once. Good post though, +rep updated to use that camera node.

I never said not to cache ptrs, and I personally do cache certain ptrs including the optical camera in my hack. Reading the list backwards is the fastest way to get the optical camera for you to cache though, no reason to read it forward unless if you don't want to change existing code.

That entire post was to explain to people how to even get the optical camera in the 1st place, not how you should implement it exactly in your hack.

cossintan 18th December 2021 11:44 AM

Anyone having issues with thermals removing map lighting, doesn't happen the first couple of times until the entire map turns fullbright. Trying to see if anyone has had a similar issue since it requires reloading the map.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

cxtgirl 18th December 2021 02:13 PM

Quote:

Originally Posted by cossintan (Post 3322550)
Anyone having issues with thermals removing map lighting, doesn't happen the first couple of times until the entire map turns fullbright. Trying to see if anyone has had a similar issue since it requires reloading the map.

ive had it where thermal can break certain 1x zoom scopes but ive never had it remove map lighting, are you doing anything specific with it?

virii72 18th December 2021 04:21 PM

Quote:

Originally Posted by cossintan (Post 3322550)
Anyone having issues with thermals removing map lighting, doesn't happen the first couple of times until the entire map turns fullbright. Trying to see if anyone has had a similar issue since it requires reloading the map.

I just had this start happing this morning for me. I've been fine running raids for multiple days and this morning, the first raid I jumped into, it happened.

cossintan 18th December 2021 05:31 PM

Quote:

Originally Posted by virii72 (Post 3322788)
I just had this start happing this morning for me. I've been fine running raids for multiple days and this morning, the first raid I jumped into, it happened.

From what I noticed it's only in factory daytime, haven't had it happen in any other map as of recent testing.

virii72 18th December 2021 06:27 PM

Quote:

Originally Posted by cossintan (Post 3322884)
From what I noticed it's only in factory daytime, haven't had it happen in any other map as of recent testing.

For me it happened on lighthouse. Only once so far though.

bhehe6813 18th December 2021 07:40 PM

Quote:

Originally Posted by TJ888 (Post 3322489)
I never said not to cache ptrs, and I personally do cache certain ptrs including the optical camera in my hack. Reading the list backwards is the fastest way to get the optical camera for you to cache though, no reason to read it forward unless if you don't want to change existing code.

That entire post was to explain to people how to even get the optical camera in the 1st place, not how you should implement it exactly in your hack.

Understood.

---------------------------------

Also, the Zoom level is quite a bit of work, well not really, but for some noobs on this forum it will be:

Code:

[StructLayout(LayoutKind.Explicit)]
        public struct SightComponent
        {
            [FieldOffset(0x20)]
            public IntPtr pSightInterface;

            [FieldOffset(0x38)]
            public int SelectedScope;

            [FieldOffset(0x30)]
            public IntPtr pScopeSelectedModes;

            public float GetZoomLevel()
            {
                var sightInterface = SightInterface;
                var zoomArray = sightInterface.Zooms;
                if (zoomArray.Count > 0 && SelectedScope >= 0 && SelectedScope <= 10)
                {
                    var innerPtr = M.Read<IntPtr>(sightInterface.pZooms + 0x20 + (SelectedScope * 0x8));
                    var selectedScopeModes = M.Read<UnityArray>(pScopeSelectedModes);
                    var selectedScopeMode = SelectedScope > selectedScopeModes.Count ? 0 : M.Read<int>(pScopeSelectedModes + 0x20 + (SelectedScope * 0x4));
                    var zoomLevel = M.Read<float>(innerPtr + 0x20 + (selectedScopeMode * 0x4));
                    if (zoomLevel >= 0)
                        return zoomLevel;
                }
                return -1.0f;
            }

            public SightInterface SightInterface => M.Read<SightInterface>(pSightInterface);
        }

        [StructLayout(LayoutKind.Explicit)]
        public struct SightInterface
        {
            [FieldOffset(0x158)]
            public IntPtr pZooms;

            public UnityArray Zooms => M.Read<UnityArray>(pZooms);
        }

Left out how to find the right AimTransform from the list in ProceduralWeaponAnimation, the index you need is in dnspy, exercise for you to do on your own. Also, SightInterface in reality is just a customized WeaponTemplate.

Quote:

Originally Posted by virii72 (Post 3322943)
For me it happened on lighthouse. Only once so far though.

Go back into the thermal component and set the volumetric light renderer to on most likely. I too had this happen on Factory daytime.


Not sure if updated.
Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct VolumetricLightRenderer
        {
            [FieldOffset(0x70)] public byte IsOn;
        }


MrCrashU 18th December 2021 08:03 PM

Quote:

Originally Posted by bhehe6813 (Post 3323016)

Go back into the thermal component and set the volumetric light renderer to on most likely. I too had this happen on Factory daytime.


Not sure if updated.
Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct VolumetricLightRenderer
        {
            [FieldOffset(0x70)] public byte IsOn;
        }


Thank you.

78 : IsOn (type: System.Boolean)

c0 : \uE00B (type: VolumetricLightRenderer)

bhehe6813 18th December 2021 08:18 PM

Quote:

Originally Posted by MrCrashU (Post 3323036)
Thank you.

78 : IsOn (type: System.Boolean)

c0 : \uE00B (type: VolumetricLightRenderer)

That should probably work, but I'd also just take a look in dnspy on what the turning off function does in the thermal component. I believe it sets VolumetricLightRender to on, and restores shadow distance. Sounds like it just never triggered despite disabling the global float _ThermalOn (which is why things look normal but its full bright).

Thermal works in a few steps:

1. Disables the volumetric light render
2. Sets shadow distance to 0
3. Enables the global shader float _ThermalOn which other shaders use (such as glass and players) which in turn is what makes them white or in the case of glass, black.
4. Creates a material and a texturemask I believe, and inserts a few adjustments from the material into the camera command buffer which is what creates the grayish effect on your screen. Commonly misunderstood is that this material is what changes players to white, it's not, that's the global float.

So, to fix it being stuck on fullbright, I'd imagine you need to restore the shadow distance (the old shadow distance is stored in the thermalvision class) and enable the volumetric light renderer, but even that might not work. Kinda an odd bug lol. It could be that some shaders are stuck with thermal on.

CloudApps 18th December 2021 09:30 PM

im trying to make item esp, problem im stuck at getting the item transform

MrCrashU 18th December 2021 10:33 PM

Quote:

Originally Posted by CloudApps (Post 3323099)
im trying to make item esp, problem im stuck at getting the item transform

it's a few pages back

LoneSurvivor88 18th December 2021 11:58 PM

Hi all, quick question (not looking to get spoonfed, I want to do the reversing myself, I just want to understand if my approach is right )

I'm coding my first cheat, an external 2d radar (DMA), and I got my gui / memory operations working the way they should, and located the Game Object Manager. I'm at the point where I need to reverse the game so I understand how everything links together better, and want to make sure I approach the right way. At this point I'm primarily trying to find player x,y,z locations to plot them on a map (not doing directions/facing or anything yet)

1) The layout of the different structures can be found in UnityPlayer.dll correct? Since this is a csharp assembly I should be able to reverse it using Dnspy or DotPeek (right?) I shouldn't need to load the actual game in something like SPT-AKI with IDA attached right? I saw in an earlier page that someone linked the Unity Symbols which I assume I could load in conjunction with IDA for an easier to read analysis.

2) Is there any considerations I should take into account when reversing the game assemblies? Trying to avoid getting clapped with a ban. I am doing the reversing on a different PC of course. I know there are cases where arbitrary code can execute when attaching a debugger, but this shouldn't be a concern with something like Dnspy yeah?

Thank you all :) Looking forward to contributing in the future

abandoncaptian 19th December 2021 12:23 AM

I'm working on making a program to easily navigate all unispect dumps, which makes following a chain WAY easier and can make updating offsets take seconds even after BIG updates like 12.12

Is anyone interested?

Example SS
https://imgur.com/a/uN4CIlc
https://imgur.com/a/uN4CIlc

CloudApps 19th December 2021 01:01 AM

Quote:

Originally Posted by abandoncaptian (Post 3323207)
I'm working on making a program to easily navigate all unispect dumps, which makes following a chain WAY easier and can make updating offsets take seconds even after BIG updates like 12.12

Is anyone interested?

Example SS
https://imgur.com/a/uN4CIlc
https://imgur.com/a/uN4CIlc

sure im interested in it, if you can send it as soon as possible it can be great! my discord: c l o u d#0001

virii72 19th December 2021 03:38 AM

Quote:

Originally Posted by MrCrashU (Post 3323036)
Thank you.

78 : IsOn (type: System.Boolean)

c0 : \uE00B (type: VolumetricLightRenderer)

Did turning VolumetricLightRenderer to True on the ThermalVision work for you?

I did I dump and I see the same offsets:

Code:

[Class] -.ThermalVision : MonoBehaviour, GInterface3147
  [C0] volumetricLightRenderer_0xC0 : -.VolumetricLightRenderer
[Class] -.VolumetricLightRenderer : MonoBehaviour
  [78] IsOn : Boolean

Enabling IsOn didn't fix it for me. Mine is actually going full black now, and it seems like it might be doing it due to rain. I noticed that when it's raining and I turn T-7 everything is shaded black. This seems to only happen on my AMD GPU (6900xt) and not Nvidia (1080) in my backup system. Has anyone else seen this issue?

A quick fix would be to disable rain/weather. Does anyone have any info on disabled rain? Just a point in the right direction, not looking for C/P.

Update: Seems like some normal users are having AMD issues with rain so it seems like it might be related to that: https://forum.escapefromtarkov.com/t...th-amd-system/

vendeta228 19th December 2021 04:52 AM

Quote:

Originally Posted by cxtgirl (Post 3322483)
gom is the base address of UnityPlayer.dll + 0x17F1CE8

then I don't understand, gom is correct, mixing the local game world is correct, but then why doesn't it find it

xXBradXx 19th December 2021 05:01 AM

Quote:

Originally Posted by abandoncaptian (Post 3323207)
I'm working on making a program to easily navigate all unispect dumps, which makes following a chain WAY easier and can make updating offsets take seconds even after BIG updates like 12.12

Is anyone interested?

Example SS
https://imgur.com/a/uN4CIlc
https://imgur.com/a/uN4CIlc

looks pretty cool, if u release i'd use it.

POFPE 19th December 2021 05:06 AM

I'm looking for a way to shoot through the wall.
If you look at the bullet update function,
https://i.imgur.com/VaA5xsO.png
Method_16 appears to be bullet drop calculation, method_11 appears to be raycasting check (not sure).
https://i.imgur.com/lU478bq.png
Anyway, if the test of method_11 is true, method_3(Bullet colider&calcuate) is executed.
https://i.imgur.com/nCaI2cP.png
Here, if this.forwardhit is true, it change the speed and damage of the bullet, so I always patched this phrase to be false. and Look method_5
https://i.imgur.com/xXKaqee.png
In method_5, Collider calculation is performed.
Method_10 perform a Deflect test.
https://i.imgur.com/DnHDnqK.png
I always made this function return zero.
In the case of method_9, activated bullet calculation that do not hit anywhere are performed.
https://i.imgur.com/aqrlHaQ.png
I patched it to always return 1.
In the case of method_8, a deviation test is performed.
https://i.imgur.com/cQanpgn.png
It was also patched to always return zero.
and i Patched ispenetrated to return always 1, and Deflect to 0
Now, the collider test seems to have been completely bypassed.
However, in offline mode, you can't break through more than one wall, and it doesn't work at all online. I was looking for a reason, and I assumed that it was because of the method_11 (update's raycast function) mentioned earlier).
https://i.imgur.com/lU478bq.png
Method_11 calls method_13
https://i.imgur.com/bho8xYe.png
method_13 calls linecast
https://i.imgur.com/Gm7v9uY.png
I don't have any knowledge of Raycast, so I'm not sure what test they're doing, but I saw that method_3 calculates the speed of the bullet and damage when method_13 return true, so I patched method_13 to always return 1. However, after patching it like this, all the bullets of the other person and the bullets I shoot were invalidated, so I couldn't damage it or receive it. Is there anyone who can give me a tip? I dont think so BSG check bullet's raycast on server.

NewLitcheat 19th December 2021 07:44 AM

Code:

[Class] EFT.Player : MonoBehaviour, IDissonancePlayer, GInterface62, GInterface71, GInterface72, GInterface73, GInterface84, GInterface242
   
    [4E8] _healthController : EFT.IHealthController//this is a interface
    [4F0] _hitColliders : EFT.BodyPartCollider[]
    [4F8] _inventoryController : EFT.GClass2082
    [500] _handsController : EFT.Player.AbstractHandsController

My English is poor,i just made a mono dump,and now i can get eft.player ptr by registeredPlayers+10+20,but i don't know how to get playerinfo e.g. health or Player position,did anyone can help me,Thanks

strixxr 19th December 2021 10:20 AM

https://i.imgur.com/pvZcp4F.png

Can anyone see what's wrong with the world to screen?, It looks like my ESP is rotated 180degrees on the screen.


Code:

When I look left ESP goes up
When I look right ESP goes down

auto FPSCamera = GetObjectFromList(tagged_objects[1], tagged_objects[0], "FPS Camera");
FPSCamera = ReadChain(FPSCamera, { 0x30, 0x18 });
auto vMatrix = FMatrixTranspose(ReadNoCache<FMatrix>(FPSCamera + 0xD8));

FVector GetPosition(uint64_t transform)
{
    auto transform_internal = Read<uint64_t>(transform + 0x10);

    if (!transform_internal)
        return FVector(0, 0, 0);

    auto some_ptr = Read<uint64_t>(transform_internal + 0x38);
    auto index = Read<int32_t>(transform_internal + 0x38 + sizeof(uint64_t));
    if (!some_ptr)
        return FVector();

    auto relation_array = Read<uint64_t>(some_ptr + 0x18);
    if (!relation_array)
        return FVector();

    auto dependency_index_array = Read<uint64_t>(some_ptr + 0x20);
    if (!dependency_index_array)
        return FVector();

    __m128i temp_0;
    __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
    __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
    __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };
    __m128 temp_1;
    __m128 temp_2;
    auto temp_main = Read<__m128>(relation_array + index * 48);
    auto dependency_index = Read<int32_t>(dependency_index_array + 4 * index);

    while (dependency_index >= 0) {
        auto relation_index = 6 * dependency_index;

        temp_0 = Read<__m128i>(relation_array + 8 * relation_index + 16);
        temp_1 = Read<__m128>(relation_array + 8 * relation_index + 32);
        temp_2 = Read<__m128>(relation_array + 8 * relation_index);

        __m128 v10 = _mm_mul_ps(temp_1, temp_main);
        __m128 v11 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 0));
        __m128 v12 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 85));
        __m128 v13 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -114));
        __m128 v14 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -37));
        __m128 v15 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, -86));
        __m128 v16 = _mm_castsi128_ps(_mm_shuffle_epi32(temp_0, 113));
        __m128 v17 = _mm_add_ps(
            _mm_add_ps(
                _mm_add_ps(
                    _mm_mul_ps(
                        _mm_sub_ps(
                            _mm_mul_ps(_mm_mul_ps(v11, xmmword_1410D1350), v13),
                            _mm_mul_ps(_mm_mul_ps(v12, xmmword_1410D1360), v14)),
                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), -86))),
                    _mm_mul_ps(
                        _mm_sub_ps(
                            _mm_mul_ps(_mm_mul_ps(v15, xmmword_1410D1360), v14),
                            _mm_mul_ps(_mm_mul_ps(v11, xmmword_1410D1340), v16)),
                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 85)))),
                _mm_add_ps(
                    _mm_mul_ps(
                        _mm_sub_ps(
                            _mm_mul_ps(_mm_mul_ps(v12, xmmword_1410D1340), v16),
                            _mm_mul_ps(_mm_mul_ps(v15, xmmword_1410D1350), v13)),
                        _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(v10), 0))),
                    v10)),
            temp_2);

        temp_main = v17;
        dependency_index = Read<int32_t>(dependency_index_array + 4 * dependency_index);
    }

    return *reinterpret_cast<FVector*>(&temp_main);
}

bool WorldToScreen(const FMatrix viewMatrix, const FVector& point3D, Vector2& point2D)
{
    Vector3 _point3D = Vector3(point3D.x, point3D.z, point3D.y);

    auto& matrix = viewMatrix;

    Vector3 translationVector = Vector3(matrix.m[3][0], matrix.m[3][1], matrix.m[3][2]);

    float w = Vector3DotProduct(translationVector, _point3D) + matrix.m[3][3]; // ROLL

    if (w < 0.098f)
        return false;

    Vector3 up = Vector3(matrix.m[1][0], matrix.m[1][1], matrix.m[1][2]);
    Vector3 right = Vector3(matrix.m[0][0], matrix.m[0][1], matrix.m[0][2]);

    float y = Vector3DotProduct(up, _point3D) + matrix.m[1][3]; //PITCH
    float x = Vector3DotProduct(right, _point3D) + matrix.m[0][3]; //YAW

    point2D.x = (2560 / 2) * (1.f + x / w);
    point2D.y = (1440 / 2) * (1.f - y / w);

    return true;
}


hollow 19th December 2021 10:33 AM

Quote:

Originally Posted by strixxr (Post 3323452)
Code:

bool WorldToScreen(const FMatrix viewMatrix, const FVector& point3D, Vector2& point2D)
{
    Vector3 _point3D = Vector3(point3D.x, point3D.z, point3D.y);


could easily be the problem

strixxr 19th December 2021 10:42 AM

Quote:

Originally Posted by hollow (Post 3323458)
could easily be the problem

How exactly It's a FVector of X, Z, Y if I'm not mistaken?

Code:

FVector head_world_position = GetPosition(Read<uint64_t>(BoneMatrix + (0x20 + (bones::HumanHead * 8))));


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

hollow 19th December 2021 10:56 AM

Quote:

Originally Posted by strixxr (Post 3323460)
How exactly It's a FVector of X, Z, Y if I'm not mistaken?

Code:

FVector head_world_position = GetPosition(Read<uint64_t>(BoneMatrix + (0x20 + (bones::HumanHead * 8))));

show Vector3 and FVector classes
edit: wait you're transposing the matrix aren't you? i'm horrible at maths but it would seem like not doing that would cause the problem

strixxr 19th December 2021 11:12 AM

Quote:

Originally Posted by hollow (Post 3323475)
show Vector3 and FVector classes
edit: wait you're transposing the matrix aren't you? i'm horrible at maths but it would seem like not doing that would cause the problem

Yep I transpose and Vector3 and FVector look ok.

When I look left ESP goes up, when look right ESP goes down some weird shit going on


Code:

vMatrix = FMatrixTranspose(ReadNoCache<FMatrix>(FPSCamera + 0xD8));

FMatrix FMatrixTranspose(FMatrix matrix)
{
    FMatrix newMatrix = FMatrix();

    newMatrix.m[0][0] = matrix.m[0][0];// 0
    newMatrix.m[0][1] = matrix.m[1][0];// 1
    newMatrix.m[0][2] = matrix.m[2][0];// 2
    newMatrix.m[0][3] = matrix.m[3][0];// 3

    newMatrix.m[1][0] = matrix.m[0][1];// 4
    newMatrix.m[1][1] = matrix.m[1][1];// 5
    newMatrix.m[1][2] = matrix.m[2][1];// 6
    newMatrix.m[1][3] = matrix.m[3][1];// 7

    newMatrix.m[2][0] = matrix.m[0][2];// 8
    newMatrix.m[2][1] = matrix.m[1][2];// 9
    newMatrix.m[2][2] = matrix.m[2][2];// 10
    newMatrix.m[2][3] = matrix.m[3][2];// 11

    newMatrix.m[3][0] = matrix.m[0][3];// 12
    newMatrix.m[3][1] = matrix.m[1][3];// 13
    newMatrix.m[3][2] = matrix.m[2][3];// 14
    newMatrix.m[3][3] = matrix.m[3][3];// 15

    return newMatrix;
}

class Vector3
{
public:
    float x, y, z;
};

class FVector
{
public:
    float x, z, y;
}


cxtgirl 19th December 2021 11:44 AM

Quote:

Originally Posted by strixxr (Post 3323488)
Yep I transpose and Vector3 and FVector look ok.

When I look left ESP goes up, when look right ESP goes down some weird shit going on


Code:

vMatrix = FMatrixTranspose(ReadNoCache<FMatrix>(FPSCamera + 0xD8));

FMatrix FMatrixTranspose(FMatrix matrix)
{
    FMatrix newMatrix = FMatrix();

    newMatrix.m[0][0] = matrix.m[0][0];// 0
    newMatrix.m[0][1] = matrix.m[1][0];// 1
    newMatrix.m[0][2] = matrix.m[2][0];// 2
    newMatrix.m[0][3] = matrix.m[3][0];// 3

    newMatrix.m[1][0] = matrix.m[0][1];// 4
    newMatrix.m[1][1] = matrix.m[1][1];// 5
    newMatrix.m[1][2] = matrix.m[2][1];// 6
    newMatrix.m[1][3] = matrix.m[3][1];// 7

    newMatrix.m[2][0] = matrix.m[0][2];// 8
    newMatrix.m[2][1] = matrix.m[1][2];// 9
    newMatrix.m[2][2] = matrix.m[2][2];// 10
    newMatrix.m[2][3] = matrix.m[3][2];// 11

    newMatrix.m[3][0] = matrix.m[0][3];// 12
    newMatrix.m[3][1] = matrix.m[1][3];// 13
    newMatrix.m[3][2] = matrix.m[2][3];// 14
    newMatrix.m[3][3] = matrix.m[3][3];// 15

    return newMatrix;
}

class Vector3
{
public:
    float x, y, z;
};

class FVector
{
public:
    float x, z, y;
}


why do you have a FVector class and a Vector3 class when they are identical and just use the GLM library to make alot of the maths your doing very quick

strixxr 19th December 2021 11:46 AM

Quote:

Originally Posted by cxtgirl (Post 3323504)
why do you have a FVector class and a Vector3 class when they are identical and just use the GLM library to make alot of the maths your doing very quick

They are not the same? One is X, Y, Z the other is X, Z, Y.

Anyway it doesn't seem like thats my issue, I don't have any problems with speed so I don't need to be that performant with using a math library



EDIT: nvm I sorted it out

Deathstroke. 19th December 2021 03:28 PM

Quote:

Originally Posted by strixxr (Post 3323506)
They are not the same? One is X, Y, Z the other is X, Z, Y.

Anyway it doesn't seem like thats my issue, I don't have any problems with speed so I don't need to be that performant with using a math library



EDIT: nvm I sorted it out

mind posting the solution instead of just saying that you sorted it out?

cxtgirl 19th December 2021 03:44 PM

Quote:

Originally Posted by strixxr (Post 3323506)
They are not the same? One is X, Y, Z the other is X, Z, Y.

Anyway it doesn't seem like thats my issue, I don't have any problems with speed so I don't need to be that performant with using a math library



EDIT: nvm I sorted it out

sorry i must've misread that, but im pretty sure unity doesnt use any such vector for anything and definitely not its cameras

strixxr 19th December 2021 04:31 PM

Quote:

Originally Posted by Deathstroke. (Post 3323627)
mind posting the solution instead of just saying that you sorted it out?

Matrix was incorrect

MrCrashU 19th December 2021 06:54 PM

Quote:

Originally Posted by Deathstroke. (Post 3323627)
mind posting the solution instead of just saying that you sorted it out?

his offset was wrong, had this issue when updating cheat too. D8 -> DC

Quote:

Originally Posted by virii72 (Post 3323291)
Did turning VolumetricLightRenderer to True on the ThermalVision work for you?

I did I dump and I see the same offsets:

Code:

[Class] -.ThermalVision : MonoBehaviour, GInterface3147
  [C0] volumetricLightRenderer_0xC0 : -.VolumetricLightRenderer
[Class] -.VolumetricLightRenderer : MonoBehaviour
  [78] IsOn : Boolean

Enabling IsOn didn't fix it for me. Mine is actually going full black now, and it seems like it might be doing it due to rain. I noticed that when it's raining and I turn T-7 everything is shaded black. This seems to only happen on my AMD GPU (6900xt) and not Nvidia (1080) in my backup system. Has anyone else seen this issue?

A quick fix would be to disable rain/weather. Does anyone have any info on disabled rain? Just a point in the right direction, not looking for C/P.

Update: Seems like some normal users are having AMD issues with rain so it seems like it might be related to that: https://forum.escapefromtarkov.com/t...th-amd-system/

yeah it worked fine for me but I'm using a 745 and I have only played factory so far, sorry

JeiKiTinN 20th December 2021 08:21 AM

I am new to tarkov hack. I was able to find gom via ida, but how do I find gameworld?

ZeusLord 21st December 2021 02:54 AM

Quote:

Originally Posted by JeiKiTinN (Post 3324250)
I am new to tarkov hack. I was able to find gom via ida, but how do I find gameworld?

For the love of god read through the thread next time please, and you'd realize that this has been answered 3292934493394439 times. However, I am going to be helpful and answer your question for you, but next time please look around a little more.

So you've found GOM and you know that this holds the active and tagged game objects, and so you need to loop the active objects from there and find the one named "GameWorld" and then you need to follow the chain of that object plus 0x30] + 0x18] + 0x28] and you'll then be in your world class which you can find players, items, and others. If you need help figuring out how to loop said objects there is a few different sources on this forum that you can look at for assistance on what you should be doing.

osbmat002 21st December 2021 05:21 AM

Missing Something?
 
What am I doing wrong:

I got the address of GOM which is 0x7fff1afc1ce8 by using
Code:

GOM = Base of UnityPlayer.dll + 0x17F1CE8
I then get the address containing the pointer to active nodes which is 0xfff1afc1d10 by using
Code:

Active_node_ptr = GOM + 0x28
Now I thought the value of that active_node_ptr would be the address of the active_node...but when I read the memory it contains 3f800000bf00000

What am I doing wrong? I thought the active_node_ptr should point to a memory address and then if I wanted I could get the next node by adding 0x8?

bhehe6813 21st December 2021 08:29 AM

Quote:

Originally Posted by TJ888 (Post 3322489)
I never said not to cache ptrs, and I personally do cache certain ptrs including the optical camera in my hack. Reading the list backwards is the fastest way to get the optical camera for you to cache though, no reason to read it forward unless if you don't want to change existing code.

That entire post was to explain to people how to even get the optical camera in the 1st place, not how you should implement it exactly in your hack.

W2S doesn't work perfect for the vudu in my experience FYI. Can you make a video of you looking with the vudu 1x and sway it side to side? Should skew.

strixxr 21st December 2021 12:39 PM

Should I be using LootList, LootItems or AllLoot to get items inside jackets etc.

LootList seems to only contain stuff that is on the floor outside of boxes,jackets and stuff

https://i.imgur.com/wesSNmR.png

ecthirune 21st December 2021 12:41 PM

Quote:

Originally Posted by strixxr (Post 3325155)
Should I be using LootList, LootItems or AllLoot to get items inside jackets etc.

LootList seems to only contain stuff that is on the floor outside of boxes,jackets and stuff

https://i.imgur.com/wesSNmR.png

Lootlist has everything: quest stuff, loot, containers, corpses, and some "script" shit whatever is it.

cxtgirl 21st December 2021 12:54 PM

Quote:

Originally Posted by strixxr (Post 3325155)
Should I be using LootList, LootItems or AllLoot to get items inside jackets etc.

LootList seems to only contain stuff that is on the floor outside of boxes,jackets and stuff

https://i.imgur.com/wesSNmR.png

i personally use loot list as ive been told contains everything but i havent actually figured out how to get anything apart from items on the ground

ecthirune 21st December 2021 01:00 PM

Quote:

Originally Posted by cxtgirl (Post 3325162)
i personally use loot list as ive been told contains everything but i havent actually figured out how to get anything apart from items on the ground

Search trough thread, there's more than 10 examples how to iterate properly(actually one of it was posted few pages ago). Also go for spt-aki+reclass to see how it's working.

strixxr 21st December 2021 03:23 PM

Quote:

Originally Posted by ecthirune (Post 3325156)
Lootlist has everything: quest stuff, loot, containers, corpses, and some "script" shit whatever is it.

Thanks but it doesn't seem to have stuff like weapon boxes, jackets, medical bags, safes, filining cabinets for example in customs I just see

scontainer_wood_CAP
scontainer_Blue_Barrel_Base_Cap

and some other stuff.

ecthirune 21st December 2021 03:42 PM

Quote:

Originally Posted by strixxr (Post 3325276)
Thanks but it doesn't seem to have stuff like weapon boxes, jackets, medical bags, safes, filining cabinets for example in customs I just see



scontainer_wood_CAP

scontainer_Blue_Barrel_Base_Cap



and some other stuff.

Stuff, that you see "scontainer blahblah" it's actually box, hidden stash etc. Bsg named them in very weird name.
Just iterate over all items, collect names, exclude items with (clone) word, exclude item_quest, exclude "script" and bam - you found all variables of containers on current map.
Go for all maps, compare lists, fill one array with that names and here you are: you have all game containers ever.

strixxr 21st December 2021 03:46 PM

Quote:

Originally Posted by ecthirune (Post 3325292)
Stuff, that you see "scontainer blahblah" it's actually box, hidden stash etc. Bsg named them in very weird name.
Just iterate over all items, collect names, exclude items with (clone) word, exclude item_quest, exclude "script" and bam - you found all variables of containers on current map.
Go for all maps, compare lists, fill one array with that names and here you are: you have all game containers ever.

Thanks, Ok then containers are not what I'm after.

What is the name for these?:

weapon boxes, jackets, medical bags, safes, filining cabinets, computer cases, boxes

cxtgirl 21st December 2021 05:41 PM

Quote:

Originally Posted by strixxr (Post 3325298)
Thanks, Ok then containers are not what I'm after.

What is the name for these?:

weapon boxes, jackets, medical bags, safes, filining cabinets, computer cases, boxes

they are in LootList under the name LootableContainer


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

virii72 21st December 2021 06:05 PM

Does anyone have any tips/points on how to control weather and/or time? Did some searching in his post and the Tarkov section and couldn't find anything concrete. I've been looking at EFT.Weather.WeatherController and EFT.Weather.ToDController but haven't any much luck. Any help would be great. If I missed a previous post on the topic please let me know.

CloudApps 21st December 2021 06:48 PM

optic view matrix
 
hello uc, im trying to get Scopes View Matrix and im stuck at TaggedNodes // 0x8 ? what should i read after that i saw that post talking about the new Unity Engine 2019.

progamer321 21st December 2021 06:57 PM

Quote:

Originally Posted by virii72 (Post 3325419)
Does anyone have any tips/points on how to control weather and/or time? Did some searching in his post and the Tarkov section and couldn't find anything concrete. I've been looking at EFT.Weather.WeatherController and EFT.Weather.ToDController but haven't any much luck. Any help would be great. If I missed a previous post on the topic please let me know.

look into GameDateTime in GameWorld class

24jared24 21st December 2021 09:20 PM

Has anyone tried messing with stuff in Player -> Physical? I know stam is there which people are using but there's a bunch of other stuff regarding speed/weight/inertia. Wondering if anyone has tried messing with this stuff

hollow 21st December 2021 09:26 PM

Quote:

Originally Posted by 24jared24 (Post 3325576)
Has anyone tried messing with stuff in Player -> Physical? I know stam is there which people are using but there's a bunch of other stuff regarding speed/weight/inertia. Wondering if anyone has tried messing with this stuff

how to disable inertia: https://www.unknowncheats.me/forum/3...-post5503.html

24jared24 21st December 2021 10:45 PM

Quote:

Originally Posted by hollow (Post 3325585)

Yeah I saw that, will give it a try soon. I was more wondering about the overweight stuff in the physical class

Quote:

Originally Posted by hollow (Post 3325585)

Yeah I saw that, will give it a try soon. I was more wondering about the overweight stuff in the physical class

bastok 21st December 2021 11:24 PM

I'm struggling with the list of the items inside a container.

I'm reading the ItemOwner at Interactive+0x108, then ItemContainer at 0xA0, then the Grid at 0x68.
Those pointers are all valid but inside the Grid struct, there is only garbage and no pointer at +0x20.

Does anyone know if something has changed recently? Thanks!

nicxio 22nd December 2021 12:00 AM

Quote:

Originally Posted by ecthirune (Post 3325292)
Stuff, that you see "scontainer blahblah" it's actually box, hidden stash etc. Bsg named them in very weird name.
Just iterate over all items, collect names, exclude items with (clone) word, exclude item_quest, exclude "script" and bam - you found all variables of containers on current map.
Go for all maps, compare lists, fill one array with that names and here you are: you have all game containers ever.

or just check if the class is = "LootableContainer"

bhehe6813 22nd December 2021 01:59 AM

Quote:

Originally Posted by strixxr (Post 3325298)
Thanks, Ok then containers are not what I'm after.

What is the name for these?:

weapon boxes, jackets, medical bags, safes, filining cabinets, computer cases, boxes

:sigh1:

Code:

        public static bool IsLootableObject(string objectName) => (objectName.Contains("_safe") || objectName.Contains("cr_bankrobber") || objectName.Contains("_door") || objectName.Contains("cover_") || objectName.Contains("card_file_box") || objectName.Contains("jacket") || objectName == "cap" || objectName.Contains("ammo_crate_cap") || objectName.Contains("grenade_box_door") || objectName.Contains("medical_door") || objectName.Contains("pos_money") || objectName.Contains("toolbox_door") || objectName.Contains("card_file_box") || objectName.Contains("cover_") || objectName.Contains("lootable") || objectName.Contains("scontainer_blue_barrel_base_cap") || objectName.Contains("scontainer_wood_cap") || objectName.Contains("suitcase_plastic_lootable_open") || objectName.Contains("weapon_box_cover") || objectName.Contains("barrel_cache") || objectName.Contains("boss_container") || objectName.Contains("wood_cache") || objectName == "safe" || objectName == "Сейф".ToLower() || objectName == "Сейф" || objectName.Contains("burried") || objectName.Contains("cache"));
Only thing I'm giving, as only partial lists are posted in this thread. Like others have said, there are 100 million examples on the thread on how to iterate them. Prob inefficient as fuck, has some duplicates, but I don't really care.

virii72 22nd December 2021 03:52 AM

Quote:

Originally Posted by progamer321 (Post 3325444)
look into GameDateTime in GameWorld class

Not sure how I missed that, got it working perfectly now. All the benefits of running night raids with none of the vision loss. Thank you very much.

Any tips for turning off Rain and/or Fog? The AMD bug with rain/fog is back now.

nicxio 22nd December 2021 04:31 AM

Quote:

Originally Posted by bhehe6813 (Post 3325711)
:sigh1:

Code:

        public static bool IsLootableObject(string objectName) => (objectName.Contains("_safe") || objectName.Contains("cr_bankrobber") || objectName.Contains("_door") || objectName.Contains("cover_") || objectName.Contains("card_file_box") || objectName.Contains("jacket") || objectName == "cap" || objectName.Contains("ammo_crate_cap") || objectName.Contains("grenade_box_door") || objectName.Contains("medical_door") || objectName.Contains("pos_money") || objectName.Contains("toolbox_door") || objectName.Contains("card_file_box") || objectName.Contains("cover_") || objectName.Contains("lootable") || objectName.Contains("scontainer_blue_barrel_base_cap") || objectName.Contains("scontainer_wood_cap") || objectName.Contains("suitcase_plastic_lootable_open") || objectName.Contains("weapon_box_cover") || objectName.Contains("barrel_cache") || objectName.Contains("boss_container") || objectName.Contains("wood_cache") || objectName == "safe" || objectName == "Сейф".ToLower() || objectName == "Сейф" || objectName.Contains("burried") || objectName.Contains("cache"));
Only thing I'm giving, as only partial lists are posted in this thread. Like others have said, there are 100 million examples on the thread on how to iterate them. Prob inefficient as fuck, has some duplicates, but I don't really care.


like i've told before now with some code:
Code:


#define IsA(string1, string2) HASH_STRINGA(string1) == HASH_STRINGA(string2)

__forceinline bool GetClassName_(char(&buffer)[_Count], uint64_t klass)
{

        if (kRead(kRead( klass + 0x48), _Count, buffer))
        {
                return true;
        }

        return false;
}

DWORD_PTR pItem = g_ItemList.GetElement(i);

                                        if (!pItem)
                                                continue;

                                        auto klass = get_klass(pItem);

                                        if (!klass)
                                                continue;
                                        if (!GetClassName_(gaybuffer, klass))
                                                continue;

bool bIsContainerItem = IsA(gaybuffer,"LootableContainer");


bhehe6813 22nd December 2021 02:51 PM

Quote:

Originally Posted by nicxio (Post 3325768)
like i've told before now with some code:
Code:


#define IsA(string1, string2) HASH_STRINGA(string1) == HASH_STRINGA(string2)

__forceinline bool GetClassName_(char(&buffer)[_Count], uint64_t klass)
{

        if (kRead(kRead( klass + 0x48), _Count, buffer))
        {
                return true;
        }

        return false;
}

DWORD_PTR pItem = g_ItemList.GetElement(i);

                                        if (!pItem)
                                                continue;

                                        auto klass = get_klass(pItem);

                                        if (!klass)
                                                continue;
                                        if (!GetClassName_(gaybuffer, klass))
                                                continue;

bool bIsContainerItem = IsA(gaybuffer,"LootableContainer");


Okay? That's 4 reads vs, ya know, one. So 4 reads * 1300 items on reserve = 5200 reads with the benefit of not having to hardcode any names.

ecthirune 22nd December 2021 03:13 PM

Quote:

Originally Posted by bhehe6813 (Post 3326146)
Okay? That's 4 reads vs, ya know, one. So 4 reads * 1300 items on reserve = 5200 reads with the benefit of not having to hardcode any names.

to be honest, getting "name" is 3 reads, not one.
interactive+0x10]+0x60(object)]+0x00(name)].

I switched 4 different ways to let my um detect all types of items(based on getting ptr of item(0x50), itemOwner(0x108), and some different ptrs after them), and i switched back to reading names, it's most stable one, since itemPtr is not allways null for non-items, itemOwnerPtr is not allways null for corpses/and smth else, etc etc etc.

Quote:

Originally Posted by bastok (Post 3325645)
I'm struggling with the list of the items inside a container.

I'm reading the ItemOwner at Interactive+0x108, then ItemContainer at 0xA0, then the Grid at 0x68.
Those pointers are all valid but inside the Grid struct, there is only garbage and no pointer at +0x20.

Does anyone know if something has changed recently? Thanks!

0x68]+0x18(int) GridCount
Then iterate each grid, starting from 0x20 (as i remember each 0x8, i may be wrong, you need to check that with corpses/backpacks).

So 0x68]+0x20] = first grid;
0x20]+0x40] = gridDictionary;
0x40]+0x10] = gridInstance;
0x10]+0x44(int) = maxCount if items that WAS inside current grid;
Also 0x10]+0x40(int) = "current Count of items inside", but in my previous experience this number DO NOT decrease after item was taken out from grid (at 12.10-12.11 patch i don't remember)

Then list of items:
0x10]+0x18] items inside
0x18]+0x28] = item. Each 18 bytes = next item;

nicxio 22nd December 2021 04:56 PM

Quote:

Originally Posted by bhehe6813 (Post 3326146)
Okay? That's 4 reads vs, ya know, one. So 4 reads * 1300 items on reserve = 5200 reads with the benefit of not having to hardcode any names.

never again hardcode names.
and i dont need compare strings which eats alot of performance

bastok 22nd December 2021 05:19 PM

Quote:

Originally Posted by ecthirune (Post 3326161)
to be honest, getting "name" is 3 reads, not one.
interactive+0x10]+0x60(object)]+0x00(name)].

I switched 4 different ways to let my um detect all types of items(based on getting ptr of item(0x50), itemOwner(0x108), and some different ptrs after them), and i switched back to reading names, it's most stable one, since itemPtr is not allways null for non-items, itemOwnerPtr is not allways null for corpses/and smth else, etc etc etc.



0x68]+0x18(int) GridCount
Then iterate each grid, starting from 0x20 (as i remember each 0x8, i may be wrong, you need to check that with corpses/backpacks).

So 0x68]+0x20] = first grid;
0x20]+0x40] = gridDictionary;
0x40]+0x10] = gridInstance;
0x10]+0x44(int) = maxCount if items that WAS inside current grid;
Also 0x10]+0x40(int) = "current Count of items inside", but in my previous experience this number DO NOT decrease after item was taken out from grid (at 12.10-12.11 patch i don't remember)

Then list of items:
0x10]+0x18] items inside
0x18]+0x28] = item. Each 18 bytes = next item;

Thank you, I was checking a grid on an ObservedLootItem instead of a LootContainer, the class name helped me to determine which object is a container and which one is not!

What is the benefit of reading the Dictionary instead of the List at 0x18 ?

Code:

[Class] -.GClass18A2 : Object, IEnumerable`1, IEnumerable
    [10] dictionary_0x10 : System.Collections.Generic.Dictionary<Item, LocationInGrid>
    [18] list_0x18 : System.Collections.Generic.List<Item>


osbmat002 22nd December 2021 06:12 PM

Get Position C#
 
Anyone have a good Get_position function written in C#? Mine is slow

ecthirune 22nd December 2021 06:21 PM

Quote:

Originally Posted by bastok (Post 3326342)
What is the benefit of reading the Dictionary instead of the List at 0x18 ?

you can try and test out, i never look there.
I keep myself in that: "if it works - do not touch it"

bastok 22nd December 2021 06:30 PM

Quote:

Originally Posted by ecthirune (Post 3326394)
you can try and test out, i never look there.
I keep myself in that: "if it works - do not touch it"

I'm trying to dissect mscorlib.dll with CheatEngine to understand how the dictionaries are stored, but it makes EFT crash when I try to look at the generic dictionary definition.
My understanding of the code posted for grid iteration is we iterate the keys or the values of the dictionary, my guess is we enumerate the keys (Item) since that's what we want.

BukkyTheBaka 22nd December 2021 07:13 PM

Quote:

Originally Posted by nicxio (Post 3325768)
like i've told before now with some code:
Code:


#define IsA(string1, string2) HASH_STRINGA(string1) == HASH_STRINGA(string2)

__forceinline bool GetClassName_(char(&buffer)[_Count], uint64_t klass)
{

        if (kRead(kRead( klass + 0x48), _Count, buffer))
        {
                return true;
        }

        return false;
}

DWORD_PTR pItem = g_ItemList.GetElement(i);

                                        if (!pItem)
                                                continue;

                                        auto klass = get_klass(pItem);

                                        if (!klass)
                                                continue;
                                        if (!GetClassName_(gaybuffer, klass))
                                                continue;

bool bIsContainerItem = IsA(gaybuffer,"LootableContainer");



Code:

bool _IsA(uintptr_t Object, uintptr_t Class)
{
        int i = 0;

        for (auto super = rebuild_mono_object_get_class(Object); super && (i++ < 20); super = rebuild_mono_class_get_parent(super))
                if (super == Class)
                        return true;

        return false;
}

Please evade from posting external cringie stuff such as checking mono classes by its name hAsHeD

nicxio 22nd December 2021 08:18 PM

Quote:

Originally Posted by BukkyTheBaka (Post 3326456)
Code:

bool _IsA(uintptr_t Object, uintptr_t Class)
{
        int i = 0;

        for (auto super = rebuild_mono_object_get_class(Object); super && (i++ < 20); super = rebuild_mono_class_get_parent(super))
                if (super == Class)
                        return true;

        return false;
}

Please evade from posting external cringie stuff such as checking mono classes by its name hAsHeD

was to lazy todo full isa rebuild.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

strixxr 22nd December 2021 09:10 PM

Anyone can help with the position for lootablecontainer?

Code:

Code:

//ItemLoop ->
//if (LootableContainer) ->
auto transform = ReadChain(eft_loot, { 0x10, 0x28, 0x10, 0x30, 0x30, 0x8, 0x28 });
auto origin = Read<FVector>(transform + 0x10);
printf("%s %f %f %f\n", modified.c_str(), origin.x, origin.y, origin.z);


Output:

Quote:

item_quest_container_case_bank(Clone) 0.000000 0.000000 0.000000
item_quest_container_case_folder(Clone) 0.000000 0.000000 0.000000
item_quest_container_case_0048(Clone) 0.000000 0.000000 0.000000
item_flash_card_slider(Clone) 0.000000 0.000000 0.000000
item_quest_container_case_0031(Clone) 0.000000 0.000000 0.000000
item_quest_container_carbon_case(Clone) 0.000000 0.000000 0.000000
item_quest_letter_terragroup(Clone) 0.000000 0.000000 0.000000

hollow 22nd December 2021 09:13 PM

Quote:

Originally Posted by strixxr (Post 3326560)
Anyone can help with the position for lootablecontainer?

Code:

                                auto container_transform = (transform*)utils::read_chain(inst, { 0x10, 0x30, 0x30, 0x8, 0x28 });
                                if (container_transform != nullptr)
                                        container_transform->get_position(&current_item.origin);


ecthirune 22nd December 2021 09:15 PM

Quote:

Originally Posted by strixxr (Post 3326560)
Anyone can help with the position for lootablecontainer?

Stuff you dropped here - it's not a lootablecontainers.

It's a quest items (don't you see "quest" in name?), except item_flash_card_slider(Clone) <- this is a real item :)

Their location can be found same, as any item on the map (medkit, weapon, ammo etc etc).

Heashey 22nd December 2021 11:35 PM

anyone know what's wrong?

https://i.gyazo.com/2f39527cb738a144...86b1afbf30.png
https://i.gyazo.com/72c693f9a4e95d39...4554ea55e5.png

yet gameworld and localgameworld:
https://i.gyazo.com/de948184cca14a3c...fd941f8527.png

JasonSnell 23rd December 2021 12:55 AM

Quote:

Originally Posted by virii72 (Post 3325419)
Does anyone have any tips/points on how to control weather and/or time? Did some searching in his post and the Tarkov section and couldn't find anything concrete. I've been looking at EFT.Weather.WeatherController and EFT.Weather.ToDController but haven't any much luck. Any help would be great. If I missed a previous post on the topic please let me know.

Get the instance of TOD from calling get_Instance inside of 'TOD_Sky' class, from there read the ptr at 0x18 which will be the cycle. Once u know thats valid write to cycle + 0x10, property is a float :crabrave:

kickbar 23rd December 2021 12:44 PM

Someone have a better solution to find/identify LocalPlayer than the 0x18!=0 ptr in the Player struct ?

This pointer turn to 0 when you enter into the menu (esc), or when you search in a conteneur

IntPtr 23rd December 2021 12:48 PM

Quote:

Originally Posted by kickbar (Post 3326946)
Someone have a better solution to find/identify LocalPlayer than the 0x18!=0 ptr in the Player struct ?

This pointer turn to 0 when you enter into the menu (esc), or when you search in a conteneur

Check 0x7F3.

cxtgirl 23rd December 2021 01:02 PM

Quote:

Originally Posted by Heashey (Post 3326637)

may be something wrong with your GetFromList, personally I just use a struct for this instead.

Code:

struct game_object_manager
{
        uintptr_t junk_1;
        uintptr_t last_tagged;
        uintptr_t tagged_objects;
        uintptr_t junk_2;
        uintptr_t last_active;
        uintptr_t active_objects;
};


const auto base = driver->get_module( "UnityPlayer.dll" ).base;
const auto gom = driver->read<uintptr_t>( base + 0x17F1CE8 );

const auto active_objects = driver->read<std::array<uintptr_t, 2>>( gom + offsetof( game_object_manager, last_active ) );
const auto game_world_object = get_from_list( active_objects[ 0 ], active_objects[ 1 ], "GameWorld" );
const auto local_game_world = driver->read_chain<uintptr_t>( game_world_object, { 0x30, 0x18, 0x28 } );

Quote:

Originally Posted by strixxr (Post 3326560)
Anyone can help with the position for lootablecontainer?

Code:

Code:

//ItemLoop ->
//if (LootableContainer) ->
auto transform = ReadChain(eft_loot, { 0x10, 0x28, 0x10, 0x30, 0x30, 0x8, 0x28 });
auto origin = Read<FVector>(transform + 0x10);
printf("%s %f %f %f\n", modified.c_str(), origin.x, origin.y, origin.z);


Output:

Code:

// in item loop

const auto profile = driver->read<uint64_t>( this->address + 0x10 );

const auto interactive = driver->read<uintptr_t>( profile + 0x28 );
const auto game_object = driver->read<uintptr_t>( profile + 0x30 );

const auto transform_1 = driver->read<uintptr_t>( game_object + 0x30 );
const auto transform_2 = driver->read<uintptr_t>( transform_1 + 0x8 );

const auto container_transform = driver->read<uintptr_t>( transform_2 + 0x28 );
if ( container_transform != NULL )
    this->base_pos = get_position( container_transform );
else
    this->base_pos = get_position( transform_2 + 0x38 );


CloudApps 23rd December 2021 04:29 PM

silent aim
 
i've been looking around offsets to make silent aim but seems like most of external methods got patched does anyone knows how?

Heashey 23rd December 2021 05:00 PM

Quote:

Originally Posted by cxtgirl (Post 3326961)
may be something wrong with your GetFromList, personally I just use a struct for this instead.


hm idk, everything was working fine last wipe, but here is my objectlist:
Code:

uint64_t GetObjectFromList(uint64_t listPtr, uint64_t lastObjectPtr, const char* objectName)
{
        char name[256];
        uint64_t classNamePtr = 0x0;

        BaseObject activeObject = read<BaseObject>(listPtr);
        BaseObject lastObject = read<BaseObject>(lastObjectPtr);

        if (activeObject.object != 0x0)
        {
                while (activeObject.object != 0 && activeObject.object != lastObject.object)
                {
                        classNamePtr = read<uint64_t>(activeObject.object + 0x60);
                        readbuf(classNamePtr + 0x0, &name, sizeof(name));
                        if (strcmp(name, objectName) == 0)
                        {
                                return activeObject.object;
                        }

                        activeObject = read<BaseObject>(activeObject.nextObjectLink);
                }
        }
        if (lastObject.object != 0x0)
        {
                classNamePtr = read<uint64_t>(lastObject.object + 0x60);
                readbuf(classNamePtr + 0x0, &name, 256);
                if (strcmp(name, objectName) == 0)
                {
                        return lastObject.object;
                }
        }

        return uint64_t();
}


vendeta228 23rd December 2021 05:25 PM

tell me what the reason may be, I will be very grateful
https://ibb.co/2KdLQrw
https://ibb.co/RTbY9DS

cxtgirl 23rd December 2021 06:54 PM

Quote:

Originally Posted by Heashey (Post 3327170)
hm idk, everything was working fine last wipe, but here is my objectlist:
Code:

uint64_t GetObjectFromList(uint64_t listPtr, uint64_t lastObjectPtr, const char* objectName)
{
        char name[256];
        uint64_t classNamePtr = 0x0;

        BaseObject activeObject = read<BaseObject>(listPtr);
        BaseObject lastObject = read<BaseObject>(lastObjectPtr);

        if (activeObject.object != 0x0)
        {
                while (activeObject.object != 0 && activeObject.object != lastObject.object)
                {
                        classNamePtr = read<uint64_t>(activeObject.object + 0x60);
                        readbuf(classNamePtr + 0x0, &name, sizeof(name));
                        if (strcmp(name, objectName) == 0)
                        {
                                return activeObject.object;
                        }

                        activeObject = read<BaseObject>(activeObject.nextObjectLink);
                }
        }
        if (lastObject.object != 0x0)
        {
                classNamePtr = read<uint64_t>(lastObject.object + 0x60);
                readbuf(classNamePtr + 0x0, &name, 256);
                if (strcmp(name, objectName) == 0)
                {
                        return lastObject.object;
                }
        }

        return uint64_t();
}


that seems to be correct, i know when they last changed unity version the tagged objects and such were shifted slightly but if you are using a struct like the one i sent it shouldnt be a problem

Quote:

Originally Posted by CloudApps (Post 3327149)
i've been looking around offsets to make silent aim but seems like most of external methods got patched does anyone knows how?

setting the direction of your shot onto a trajectory which will hit the players head is still possible i think

cossintan 23rd December 2021 07:04 PM

Has anyone managed to manipulate thermal / night vision color externally?

Heashey 23rd December 2021 07:05 PM

Quote:

Originally Posted by cxtgirl (Post 3327246)
that seems to be correct, i know when they last changed unity version the tagged objects and such were shifted slightly but if you are using a struct like the one i sent it shouldnt be a problem

i've just tried it, and it doesnt work I am honestly so confused LOL

ecthirune 23rd December 2021 07:24 PM

Quote:

Originally Posted by cossintan (Post 3327255)
Has anyone managed to manipulate thermal / night vision color externally?

search "nightvision colors" in that thread.

CloudApps 23rd December 2021 07:54 PM

Quote:

Originally Posted by cxtgirl (Post 3327246)
that seems to be correct, i know when they last changed unity version the tagged objects and such were shifted slightly but if you are using a struct like the one i sent it shouldnt be a problem



setting the direction of your shot onto a trajectory which will hit the players head is still possible i think

i heard that its detected & not working anymore

cxtgirl 23rd December 2021 10:55 PM

Quote:

Originally Posted by cossintan (Post 3327255)
Has anyone managed to manipulate thermal / night vision color externally?

i was fucking around with thermal a few days ago and it is possible to change the colour but it has some weird results, night vision colour however can be changed very easily with no real downsides

montroisiemecon 23rd December 2021 11:11 PM

Quote:

Originally Posted by CloudApps (Post 3327283)
i heard that its detected & not working anymore

i also heard that the earth is flat, yet I can use my brain and determine that it's a fake information

HelpMeOrUrCunt 24th December 2021 01:14 AM

How can I find a localplayer ?

xXBradXx 24th December 2021 04:36 AM

Quote:

Originally Posted by HelpMeOrUrCunt (Post 3327467)
How can I find a localplayer ?

Quote:

Originally Posted by kickbar (Post 3326946)
Someone have a better solution to find/identify LocalPlayer than the 0x18!=0 ptr in the Player struct ?

This pointer turn to 0 when you enter into the menu (esc), or when you search in a conteneur

check player + 0x625


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

imkeez 24th December 2021 06:19 AM

has anyone got a custom dma project on eft i want some advice

gabbo200 24th December 2021 06:51 AM

Quote:

Originally Posted by imkeez (Post 3327577)
has anyone got a custom dma project on eft i want some advice

Hey I've a fully DMA cheat, what do you need help with?

NotATrap 24th December 2021 07:17 AM

using thermalvision i noticed it makes it impossible to see through scopes, would anyone know a good way of changing this / making thermal vision only run ON players so it doesn't do the rest of the stuff

krembo 24th December 2021 10:03 AM

Quote:

Originally Posted by NotATrap (Post 3327591)
using thermalvision i noticed it makes it impossible to see through scopes, would anyone know a good way of changing this / making thermal vision only run ON players so it doesn't do the rest of the stuff

Don't bother trying to do it trough the ThermalVisionComponent, it's impossible.

niceone1 24th December 2021 12:50 PM

Did you get the positions of the mines from the corresponding EFT.Interactive.Minefield Collider attribute, or am i on the wrong track there? The method should be
Code:

private extern void get_center_Injected(out Vector3 ret)
in UnityEngine.BoxCollider.

Code:

2d161849fb0 : EFT.Interactive.Minefield
        static fields
        fields
                18 : Collider (type: UnityEngine.BoxCollider)
                20 : TargetedPlayers (type: System.Collections.Generic.List<EFT.Player>)
                28 : NotTargetedPlayers (type: System.Collections.Generic.List<EFT.Player>)
                30 : string_0 (type: System.String)
                38 : action_0 (type: System.Action<EFT.Player,EFT.Interactive.BorderZone,System.Single,System.Boolean>)
                40 : _extents (type: UnityEngine.Vector3)
                4c : _triggerZoneSettings (type: UnityEngine.Vector4)
                5c : float_0 (type: System.Single)
                60 : int_0 (type: System.Int32)
                68 : _explosionTarget (type: System.Collections.Generic.List<EBodyPart>)
                70 : _collateralDamageTarget (type: System.Collections.Generic.List<EBodyPart>)
                78 : _zoneDistortionPeriod (type: System.Single)
                7c : _zoneDistortionPower (type: System.Single)
                80 : _contusionStrength (type: System.Single)
                84 : _contusionDuration (type: System.Single)
                88 : _collateralContusionRange (type: System.Single)
                8c : _collateralDamageRange (type: System.Single)
                90 : _firstExplosionDamage (type: System.Single)
                94 : _minRangeToNextExplosion (type: System.Single)
                98 : _maxRangeToNextExplosion (type: System.Single)
                9c : _secondExplosionDamage (type: System.Single)

2d161849db0 : EFT.Interactive.MinefieldView
        static fields
        fields
                18 : _minefield (type: EFT.Interactive.Minefield)
                20 : _effectName (type: System.String)
                28 : _cameraShakeRange (type: System.Single)
                2c : _explosionLocalPosition (type: UnityEngine.Vector3)
                38 : _raycastToTheGround (type: System.Boolean)
                3c : _raycastMask (type: UnityEngine.LayerMask)

Code:

__int64 __fastcall UnityEngine_BoxCollider::get_center_Injected(__int64 a1, __int64 a2)
{
  __int64 v2; // rbx
  __int64 v3; // rdi
  __int64 v4; // rcx
  __int64 result; // rax
  _QWORD *v6; // rax
  __int64 v7; // rax
  __int128 v8; // [rsp+20h] [rbp-38h]
  __int128 v9; // [rsp+30h] [rbp-28h]
  __int64 v10; // [rsp+60h] [rbp+8h]
  __int64 v11; // [rsp+70h] [rbp+18h]
  __int64 v12; // [rsp+78h] [rbp+20h]

  v2 = a2;
  v3 = a1;
  *(_QWORD *)&v8 = 0i64;
  v10 = 0i64;
  qword_18183B7D8(0i64, &v10, 0i64);
  qword_18183B7D8(0i64, &v12, v3);
  v11 = 0i64;
  qword_18183B7D8(0i64, &v11, v12);
  qword_18183B7D8(0i64, &v10, v11);
  if ( !v10 )
    goto LABEL_10;
  v4 = *(_QWORD *)(v10 + 0x10);
  if ( !v4 )
    v4 = 0i64;
  if ( !v4 )
  {
LABEL_10:
    v6 = (_QWORD *)sub_1800ADCB0((__int64)&v11, v3);
    v7 = sub_18035FC00(&v9, *v6);
    sub_1801345D0(&v8, v7);
    v9 = v8;
    sub_1808D36D0(&v9);
    JUMPOUT(0x180B407A0i64);
  }
  *(_QWORD *)v2 = *(_QWORD *)(v4 + 0x70);
  result = *(unsigned int *)(v4 + 0x78);
  *(_DWORD *)(v2 + 8) = result;
  return result;
}



Quote:

Originally Posted by bhehe6813 (Post 3318847)
Minefields on Lighthouse

Code:

                // 2021/12/13 autogenerated
                new List<Tuple<string,Vector3>>(){
                    new Tuple<string,Vector3>("Mine",new Vector3(-108.7005f,18.35f, -159.9383f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-147.4911f, 39.03f, 169.8742f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-125.4808f, 42.69f, 46.4108f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-227.9976f, 13.94f, -520.8323f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-5.1225f, 7.4f, -424.614f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-143.94f, 5.4f, -482.2339f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(94.3422f, 3.82f, -593.3541f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-148.9896f, 40.28f, 134.6519f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-322.7883f, 30.83f, -565.4965f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-111.733f, 27.35f, 251.9084f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-304.5605f, 25.08f, -462.9617f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-139.1587f, 7.4f, -450.7613f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-242.2297f, 18.1f, -478.8835f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-311.8793f, 34f, -511.2196f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(94.5647f, 9.73f, -664.7939f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-238.0395f, 13.19f, -659.7361f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-399.3923f, 33.08f, -531.7814f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(52.592f, 7.4f, -468.8979f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(49.4f, 21.505f, -1004.75f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-107.438f, 31.99f, 143.3868f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-551.0999f, 43.8f, -393.55f)),
                    new Tuple<string,Vector3>("Mine", new Vector3(-130.2222f, 35.9f, 147.0727f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-117.9405f, 35.9f, 137.4876f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(40.4702f, 7.4f, -404.0539f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-105.1f, 21.505f, -1007.75f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-118.6287f, 7.4f, -433.2413f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-55.2664f, 7.4f, -433.3537f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-99.8424f, 18.32f, 213.1985f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-226.7844f, 11.59f, -712.8016f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(75.5828f, 11.61f, -419.8874f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-137.951f, 29.65f, -50.4971f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-48.3788f, 14.43f, 5.5676f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-331.39f, 33.6f, -523.8537f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-251.1489f, 16.27f, -646.1941f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(57.7336f, 7.4f, -522.3037f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(90.7865f, 6.83f, -496.1239f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-119.3728f, 42.69f, 64.5561f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-147.4379f, 34.15f, -0.8767f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-115.1492f, 31.99f, 163.5725f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-330.2926f, 39.67f, -490.8548f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-169.6096f, 33.31f, 279.9024f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-59.4863f, 14.21f, 207.3462f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-448.7f, 22.8f, -785.8f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-36.3973f, 10.66f, 169.4037f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(30.3556f, 12.3f, -750.6716f)),
                }

Mines that have active exploders (I'm not sure why the other 30 are not active) (The parent of a Minefield is a MinefieldExploder / MinefieldView)

Code:

                    // 2021/12/14 autogenerated
                    new Tuple<string,Vector3>("Mine",new Vector3(-500.6f, 43.8f, -515.35f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-551.0999f, 43.8f, -393.55f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(49.4f, 21.505f, -1004.75f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-105.1f, 21.505f, -1007.75f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(52.592f, 7.4f, -468.8979f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(57.7336f, 7.4f, -522.3037f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-5.1225f, 7.4f, -424.614f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(40.4702f, 7.4f, -404.0539f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(75.5828f, 11.61f, -419.8874f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(30.3556f, 12.3f, -750.6716f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-227.9976f, 13.94f, -520.8323f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-242.2297f, 18.1f, -478.8835f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-331.39f, 33.6f, -523.8537f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-330.2926f, 39.67f, -490.8548f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-143.94f, 5.4f, -482.2339f)),
                    new Tuple<string,Vector3>("Mine",new Vector3(-139.1587f, 7.4f, -450.7613f)),



CloudApps 24th December 2021 01:22 PM

Quote:

Originally Posted by montroisiemecon (Post 3327406)
i also heard that the earth is flat, yet I can use my brain and determine that it's a fake information

ok, _shotdirection for some reason it doesn't work? should i do CalcAngle and set and write it, or write the player head position?

Heashey 24th December 2021 04:14 PM

anyone have any sort of clue as to why my shit is broken? active objects are all fine etc. not driver issue since uplayer is fine aswell so i have no clue, everything was working before 12.12 update.

https://i.gyazo.com/b23418450f3ff974...442dc5850c.png

Code:

        while (true) {
                const auto base = UnityPlayer("UnityPlayer.dll");
                const auto gom = read<uintptr_t>(base + 0x17F1CE8);

                const auto active_objects = read<std::array<uintptr_t, 2>>(gom + offsetof(game_object_manager213, last_active));
                const auto game_world_object = GetObjectFromList(active_objects[0], active_objects[1], "GameWorld");
                const auto local_game_world = ReadChain(game_world_object, { 0x30, 0x18, 0x28 });

                printf((" Base Address: %llx \n"), m_base);
                printf((" UnityPlayer: 0x%llx \n"), m_unityplayer);
                printf((" Active Object 1: 0x%llx \n"), active_objects[0]);
                printf((" Active Object 2: 0x%llx \n"), active_objects[1]);
                std::cout << " GameWorld: " << game_world_object << std::endl;
                std::cout << " Local GameWorld: " << local_game_world << std::endl;
        }


TJ888 24th December 2021 04:25 PM

Quote:

Originally Posted by Heashey (Post 3327857)
anyone have any sort of clue as to why my shit is broken? active objects are all fine etc. not driver issue since uplayer is fine aswell so i have no clue, everything was working before 12.12 update.

https://i.gyazo.com/b23418450f3ff974...442dc5850c.png

Code:

        while (true) {
                const auto base = UnityPlayer("UnityPlayer.dll");
                const auto gom = read<uintptr_t>(base + 0x17F1CE8);

                const auto active_objects = read<std::array<uintptr_t, 2>>(gom + offsetof(game_object_manager213, last_active));
                const auto game_world_object = GetObjectFromList(active_objects[0], active_objects[1], "GameWorld");
                const auto local_game_world = ReadChain(game_world_object, { 0x30, 0x18, 0x28 });

                printf((" Base Address: %llx \n"), m_base);
                printf((" UnityPlayer: 0x%llx \n"), m_unityplayer);
                printf((" Active Object 1: 0x%llx \n"), active_objects[0]);
                printf((" Active Object 2: 0x%llx \n"), active_objects[1]);
                std::cout << " GameWorld: " << game_world_object << std::endl;
                std::cout << " Local GameWorld: " << local_game_world << std::endl;
        }


I'm assuming you never updated your GOM offsets, read here- https://www.unknowncheats.me/forum/3...-post5290.html

Heashey 24th December 2021 05:37 PM

Quote:

Originally Posted by TJ888 (Post 3327865)
I'm assuming you never updated your GOM offsets, read here- https://www.unknowncheats.me/forum/3...-post5290.html

wait holy shit, thank you so much +rep

bhehe6813 24th December 2021 09:24 PM

Quote:

Originally Posted by NotATrap (Post 3327591)
using thermalvision i noticed it makes it impossible to see through scopes, would anyone know a good way of changing this / making thermal vision only run ON players so it doesn't do the rest of the stuff


This is because thermal vision enables a global float named _ThermalVisionOn. Other shaders use this global float to determine how to draw the shader (draw isn't the correct term). One of the shaders, I believe it's called custom optic glass goes black when thermal vision on float is set to 1. Extract all the shaders using unitypy or unityrippet and you'll see this. Alpha is 0 when thermal vision is on.

Quote:

Originally Posted by krembo (Post 3327643)
Don't bother trying to do it trough the ThermalVisionComponent, it's impossible.

Correct.

Quote:

Originally Posted by niceone1 (Post 3327750)
Did you get the positions of the mines from the corresponding EFT.Interactive.Minefield Collider attribute, or am i on the wrong track there? The method should be
Code:

private extern void get_center_Injected(out Vector3 ret)
in UnityEngine.BoxCollider.

Code:

2d161849fb0 : EFT.Interactive.Minefield
        static fields
        fields
                18 : Collider (type: UnityEngine.BoxCollider)
                20 : TargetedPlayers (type: System.Collections.Generic.List<EFT.Player>)
                28 : NotTargetedPlayers (type: System.Collections.Generic.List<EFT.Player>)
                30 : string_0 (type: System.String)
                38 : action_0 (type: System.Action<EFT.Player,EFT.Interactive.BorderZone,System.Single,System.Boolean>)
                40 : _extents (type: UnityEngine.Vector3)
                4c : _triggerZoneSettings (type: UnityEngine.Vector4)
                5c : float_0 (type: System.Single)
                60 : int_0 (type: System.Int32)
                68 : _explosionTarget (type: System.Collections.Generic.List<EBodyPart>)
                70 : _collateralDamageTarget (type: System.Collections.Generic.List<EBodyPart>)
                78 : _zoneDistortionPeriod (type: System.Single)
                7c : _zoneDistortionPower (type: System.Single)
                80 : _contusionStrength (type: System.Single)
                84 : _contusionDuration (type: System.Single)
                88 : _collateralContusionRange (type: System.Single)
                8c : _collateralDamageRange (type: System.Single)
                90 : _firstExplosionDamage (type: System.Single)
                94 : _minRangeToNextExplosion (type: System.Single)
                98 : _maxRangeToNextExplosion (type: System.Single)
                9c : _secondExplosionDamage (type: System.Single)

2d161849db0 : EFT.Interactive.MinefieldView
        static fields
        fields
                18 : _minefield (type: EFT.Interactive.Minefield)
                20 : _effectName (type: System.String)
                28 : _cameraShakeRange (type: System.Single)
                2c : _explosionLocalPosition (type: UnityEngine.Vector3)
                38 : _raycastToTheGround (type: System.Boolean)
                3c : _raycastMask (type: UnityEngine.LayerMask)

Code:

__int64 __fastcall UnityEngine_BoxCollider::get_center_Injected(__int64 a1, __int64 a2)
{
  __int64 v2; // rbx
  __int64 v3; // rdi
  __int64 v4; // rcx
  __int64 result; // rax
  _QWORD *v6; // rax
  __int64 v7; // rax
  __int128 v8; // [rsp+20h] [rbp-38h]
  __int128 v9; // [rsp+30h] [rbp-28h]
  __int64 v10; // [rsp+60h] [rbp+8h]
  __int64 v11; // [rsp+70h] [rbp+18h]
  __int64 v12; // [rsp+78h] [rbp+20h]

  v2 = a2;
  v3 = a1;
  *(_QWORD *)&v8 = 0i64;
  v10 = 0i64;
  qword_18183B7D8(0i64, &v10, 0i64);
  qword_18183B7D8(0i64, &v12, v3);
  v11 = 0i64;
  qword_18183B7D8(0i64, &v11, v12);
  qword_18183B7D8(0i64, &v10, v11);
  if ( !v10 )
    goto LABEL_10;
  v4 = *(_QWORD *)(v10 + 0x10);
  if ( !v4 )
    v4 = 0i64;
  if ( !v4 )
  {
LABEL_10:
    v6 = (_QWORD *)sub_1800ADCB0((__int64)&v11, v3);
    v7 = sub_18035FC00(&v9, *v6);
    sub_1801345D0(&v8, v7);
    v9 = v8;
    sub_1808D36D0(&v9);
    JUMPOUT(0x180B407A0i64);
  }
  *(_QWORD *)v2 = *(_QWORD *)(v4 + 0x70);
  result = *(unsigned int *)(v4 + 0x78);
  *(_DWORD *)(v2 + 8) = result;
  return result;
}


I build these lists using custom scripting on sp-tarkov and generate lists of their positions. In mono world you can simply just do object.position, which I believe is center position on these mines. Every object in the game has a "position" regardless of it's type/components. I believe the various types just simply override the default position, so in the case of mines it's that get center position.

NotATrap 24th December 2021 09:28 PM

Quote:

Originally Posted by bhehe6813 (Post 3328019)

This is because thermal vision enables a global float named _ThermalVisionOn. Other shaders use this global float to determine how to draw the shader (draw isn't the correct term). One of the shaders, I believe it's called custom optic glass goes black when thermal vision on float is set to 1. Extract all the shaders using unitypy or unityrippet and you'll see this. Alpha is 0 when thermal vision is on.



Correct.



I build these lists using custom scripting on sp-tarkov and generate lists of their positions. In mono world you can simply just do object.position, which I believe is center position on these mines.

where would _ThermalVisionOn be located, ill take a look into unitypy and unityrippet

bhehe6813 24th December 2021 09:31 PM

Quote:

Originally Posted by NotATrap (Post 3328022)
where would _ThermalVisionOn be located, ill take a look into unitypy and unityrippet

I'm not sure in memory where this value is stored. It's within unityplayer.dll range though. If you dump shaders you'll find it in the shader files, just do a Ctrl + F on all the shader files for "thermal" and you'll see what I'm talking about.

This is a global float, so even if you overwrite it to 0, you'll end up just disabling thermal entirely, as the player shader uses it to make players white. You need to modify it for specific shaders only (not sure how), like the glass shaders, but I'm not sure how you do that. I imagine you need to patch out the thermal vision on float from the shaders you don't want to use it, but no clue how you patch loaded shaders.

To see where it's set on and off, go to the thermal vision class and it's the setglobalfloat call in PreCull I believe? It will be obfuscated, but deobfuscated it's named what I mentioned above.

xzackcc 25th December 2021 12:07 AM

Quote:

Originally Posted by NotATrap (Post 3328022)
where would _ThermalVisionOn be located, ill take a look into unitypy and unityrippet

edit ~ nvm. wrong dude, thought its the other guy being annoying again.

aight, so
rightclick on On, analyse and check the functions that are using that variable, you'd see the following:

Code:

// Token: 0x040038F2 RID: 14578
public bool On;

// ^ analyse and grab the functions that access this variable, here is the one @bhehe6813 is talking about.

Code:

// Token: 0x0600397B RID: 14715 RVA: 0x0013D8D0 File Offset: 0x0013BAD0
        private void OnPreCull()
        {
                if (this.\uE00B.IsOn == this.On)
                {
                        this.\uE00B.IsOn = !this.On;
                }
                if (!this.On)
                {
                        return;
                }
                this.\uE004.Blit(10, 2);
                Shader.SetGlobalFloat(ThermalVision.\uE017, 1f);
                this.\uE00E = QualitySettings.shadowDistance;
                QualitySettings.shadowDistance = 0f;
                this.SetMaterialProperties();
                this.\uE003.GetTemporaryRT(ThermalVision.\uE00F, -1, -1);
                this.\uE003.SetRenderTarget(1, 1);
                this.\uE003.Blit(2, ThermalVision.\uE00F);
                this.\uE003.Blit(ThermalVision.\uE00F, 2, this.\uE005, 0);
                this.\uE003.Blit(2, ThermalVision.\uE00F, this.\uE005, 2);
                this.\uE003.Blit(ThermalVision.\uE00F, 2, this.\uE005, 1);
                this.\uE003.ReleaseTemporaryRT(ThermalVision.\uE00F);
                if (this.IsFpsStuck)
                {
                        this.\uE007.UpdateTexture(this.\uE003, this.\uE006);
                }
                if (this.IsMotionBlurred)
                {
                        this.\uE008.UpdateTexture(this.\uE003, this.\uE006);
                }
                if (this.IsGlitch)
                {
                        this.\uE009.UpdateTexture(this.\uE003);
                }
                if (this.IsPixelated)
                {
                        this.\uE00A.UpdateTexture(this.\uE003);
                }
        }


24jared24 25th December 2021 12:38 AM

Would anyone be willing to share how long their player loop takes? I'm switching from a radar to an overlay but it's kinda laggy.

My loop was taking ~90ms on an offline customs raid with like 12 scavs. I thought my memory class was decently optimized but maybe not.

montroisiemecon 25th December 2021 12:57 AM

Quote:

Originally Posted by 24jared24 (Post 3328143)
Would anyone be willing to share how long their player loop takes? I'm switching from a radar to an overlay but it's kinda laggy.

My loop was taking ~90ms on an offline customs raid with like 12 scavs. I thought my memory class was decently optimized but maybe not.

externally I have 144 fps+ (using imgui vsync) on all maps, parsing absolutely everything with a single thread. And when I say everything I mean absolutely everything that can be parsed.
It's all about caching values

bhehe6813 25th December 2021 01:01 AM

Quote:

Originally Posted by xzackcc (Post 3328118)
edit ~ nvm. wrong dude, thought its the other guy being annoying again.

aight, so
rightclick on On, analyse and check the functions that are using that variable, you'd see the following:

Code:

// Token: 0x040038F2 RID: 14578
public bool On;

// ^ analyse and grab the functions that access this variable, here is the one @bhehe6813 is talking about.

Code:

// Token: 0x0600397B RID: 14715 RVA: 0x0013D8D0 File Offset: 0x0013BAD0
        private void OnPreCull()
        {
                if (this.\uE00B.IsOn == this.On)
                {
                        this.\uE00B.IsOn = !this.On;
                }
                if (!this.On)
                {
                        return;
                }
                this.\uE004.Blit(10, 2);
                Shader.SetGlobalFloat(ThermalVision.\uE017, 1f);
                this.\uE00E = QualitySettings.shadowDistance;
                QualitySettings.shadowDistance = 0f;
                this.SetMaterialProperties();
                this.\uE003.GetTemporaryRT(ThermalVision.\uE00F, -1, -1);
                this.\uE003.SetRenderTarget(1, 1);
                this.\uE003.Blit(2, ThermalVision.\uE00F);
                this.\uE003.Blit(ThermalVision.\uE00F, 2, this.\uE005, 0);
                this.\uE003.Blit(2, ThermalVision.\uE00F, this.\uE005, 2);
                this.\uE003.Blit(ThermalVision.\uE00F, 2, this.\uE005, 1);
                this.\uE003.ReleaseTemporaryRT(ThermalVision.\uE00F);
                if (this.IsFpsStuck)
                {
                        this.\uE007.UpdateTexture(this.\uE003, this.\uE006);
                }
                if (this.IsMotionBlurred)
                {
                        this.\uE008.UpdateTexture(this.\uE003, this.\uE006);
                }
                if (this.IsGlitch)
                {
                        this.\uE009.UpdateTexture(this.\uE003);
                }
                if (this.IsPixelated)
                {
                        this.\uE00A.UpdateTexture(this.\uE003);
                }
        }


This right here:

Code:

        Shader.SetGlobalFloat(ThermalVision.\uE017, 1f);
Is how thermal works in it's entirety. The rest of the class can be entirely ignored. If you want to enable thermal, then yes, the On variable is what does that. BUT, that variable being on is not what makes players change colors.

The global float is what makes players change colors, glass turn opaque, etc. Almost every shader in the game checks that global float. If you disable that global float and turn thermal on, players won't be white.

The thermal class mostly creates the effect.and when I say effect, I don't mean players glowing,, I mean the grayscale and blurriness after turning thermal on.

Quote:

Originally Posted by 24jared24 (Post 3328143)
Would anyone be willing to share how long their player loop takes? I'm switching from a radar to an overlay but it's kinda laggy.

My loop was taking ~90ms on an offline customs raid with like 12 scavs. I thought my memory class was decently optimized but maybe not.

I have like 35 different caches. Anything from a players name to their body skins is cached. Also visual studio offers wonderful CPU profiling that can find some hot paths in your application.

I don't know what you do with those 12 scavs, so I couldn't answer what's really slow. My loop takes around 1-3ms for all players and that includes writes for each player (Chams).

Perhaps the most inefficient work is reading the players skeleton. The function posted here does multiple reads per bone. In reality, you can read the entirety of the transform array and split it up based on the indexes you find, I have a post in this thread with that, but I believe the one I posted has a bug. But yeah, same general idea.

Here's an example of some of the things I cache

Code:

public static Dictionary<IntPtr, string> WeaponPtrStrCache = new();
        public static Dictionary<string, EftPlayerStats> PlayerStatsCache = new();
        public static Dictionary<IntPtr, string> PlayerNameCache = new();
        public static Dictionary<IntPtr, EftPlayer> PlayerInfoCache = new();
        public static Dictionary<IntPtr, string> PlayerGroupIdCache = new();
        public static Dictionary<IntPtr, int> ProcessPlayerSkinsCache = new();

I also don't process players that aren't on screen (by doing a w2s test on their origin, but I also do a view angle check to make sure they're not aiming at me). In addition, I process each player in parallel.

24jared24 25th December 2021 01:27 AM

Quote:

Originally Posted by bhehe6813 (Post 3328159)
In addition, I process each player in parallel

Thanks for the insights. I was assuming caching wouldn't be necessary but looks like I might've been wrong. Also, yes my skeleton code takes a majority of the time; I'll look to improve that. When you say you process each player in parallel do you mean you have a thread for each player?

bhehe6813 25th December 2021 02:09 AM

Quote:

Originally Posted by 24jared24 (Post 3328183)
Thanks for the insights. I was assuming caching wouldn't be necessary but looks like I might've been wrong. Also, yes my skeleton code takes a majority of the time; I'll look to improve that. When you say you process each player in parallel do you mean you have a thread for each player?


I use c#s parallel foreach which internally uses the thread pool that the runtime creates for all of its nonsense, handles scheduling and all that. I'm on vacation or else I'd post my fixed/newer GetBonePositions..

Here's the older version that has an issue I believe, from my private git:

Code:

public struct MatrixListItem
        {
            public List<int> indexes;
        }
        public unsafe struct MatrixBuffer
        {
            public void* pMatricesBuf;
            public int size;
        }

        [HandleProcessCorruptedStateExceptions]
        [SecurityCritical]
        public static unsafe Vector3[] GetBonePositions(TransformInternal[] transforms) {
            var matrixList = new Dictionary<IntPtr, MatrixListItem>();
            var dependencyTableList = new Dictionary<IntPtr, MatrixListItem>();
            var transformMatricesDictionary = new Dictionary<IntPtr, Classes.UnityMatrix>();

            // get all the matrix and dep ptrs
            foreach (TransformInternal trans in transforms) {
                if (!trans.pMatrices.IsValid()) {
                    continue;
                }
                int index = trans.index;


                var transMatrix = new UnityMatrix();
                if (!transformMatricesDictionary.ContainsKey(trans.pMatrices)) {
                    transMatrix = trans.Matrix;
                    transformMatricesDictionary.Add(trans.pMatrices, transMatrix);
                } else {
                    transMatrix = transformMatricesDictionary[trans.pMatrices];
                }

                IntPtr matrixListBase = transMatrix.matrix_list_base;
                if (!matrixListBase.IsValid()) {
                    return new Vector3[0];
                }

                IntPtr dependencyIndexTableBase = transMatrix.dependency_index_table_base;
                if (!dependencyIndexTableBase.IsValid()) {
                    return new Vector3[0];
                }

                // insert the matrix ptrs into list
                if (!matrixList.ContainsKey(matrixListBase)) {
                    var item = new MatrixListItem { indexes = new List<int>() { index } };
                    matrixList.Add(matrixListBase, item);
                } else {
                    matrixList[matrixListBase].indexes.Add(index);
                }
                // insert the depedencyindex ptrs into list
                if (!dependencyTableList.ContainsKey(dependencyIndexTableBase)) {
                    var item = new MatrixListItem { indexes = new List<int>() { index } };
                    dependencyTableList.Add(dependencyIndexTableBase, item);
                } else {
                    dependencyTableList[dependencyIndexTableBase].indexes.Add(index);
                }
            }

            var matrixBufferDict = new Dictionary<IntPtr, MatrixBuffer>();

            foreach (KeyValuePair<IntPtr, MatrixListItem> matrixDict in matrixList) {
                // get largest index so we know how many bytes we need to read in total. We could just slice this up exactly,
                // but it doesn't really matter how large the read is, reading is fast, more so how many times you read as communication
                // and pinvoke if c# is slow
                int index = matrixDict.Value.indexes.Max();
                int matricesSize = sizeof(Matrix34) * index + sizeof(Matrix34);
                var matrixBuffer = new MatrixBuffer { pMatricesBuf = M.Read(matrixDict.Key, matricesSize), size = matricesSize };
                matrixBufferDict.Add(matrixDict.Key, matrixBuffer);
            }

            var dependencyIndexDict = new Dictionary<IntPtr, MatrixBuffer>();
            foreach (KeyValuePair<IntPtr, MatrixListItem> matrixDict in dependencyTableList) {
                int index = matrixDict.Value.indexes.Max();

                int indicesSize = sizeof(int) * index + sizeof(int);
                var matrixBuffer = new MatrixBuffer { pMatricesBuf = M.Read(matrixDict.Key, indicesSize), size = indicesSize };
                dependencyIndexDict.Add(matrixDict.Key, matrixBuffer);
            }

            // get bone position for all bones
            var bonePositions = new Vector3[transforms.Length];
            int i = 0;
            // these are the three vectors in IDA
            var xmmword1410D1340 = new Vector4(-2.0f, 2.0f, -2.0f, 0.0f);
            var xmmword1410D1350 = new Vector4(2.0f, -2.0f, -2.0f, 0.0f);
            var xmmword1410D1360 = new Vector4(-2.0f, -2.0f, 2.0f, 0.0f);


            //
            foreach (TransformInternal trans in transforms) {
                if (!trans.pMatrices.IsValid()) {
                    bonePositions[i] = Vector3.Zero;
                    i++;
                    continue;
                }
                int index = trans.index;
                UnityMatrix boneMatrix = transformMatricesDictionary[trans.pMatrices];
                MatrixBuffer matrixBuffer = matrixBufferDict[boneMatrix.matrix_list_base];
                MatrixBuffer indexBuffer = dependencyIndexDict[boneMatrix.dependency_index_table_base];

                void* pMatricesBuf = matrixBuffer.pMatricesBuf;
                void* pIndicesBuf = indexBuffer.pMatricesBuf;

                try {
                    if (0x30 * index > matrixBuffer.size || 0x30 * index < 0) {
                        bonePositions[i] = Vector3.Zero;
                        i++;
                        continue;
                    }
                    Vector4 result = *(Vector4*)((ulong)pMatricesBuf + 0x30 * (ulong)index);
                    if (0x4 * index > indexBuffer.size || 0x4 * index < 0) {
                        bonePositions[i] = Vector3.Zero;
                        i++;
                        continue;
                    }
                    int indexRelation = *(int*)((ulong)pIndicesBuf + 0x4 * (ulong)index);

                    var numIterationsAt0 = 0;
                    var failed = false;
                    while (indexRelation >= 0 && numIterationsAt0 < 5) {
                        if (indexRelation == 0) {
                            numIterationsAt0++;
                            if (numIterationsAt0 == 5) {
                                failed = true;
                                break;
                            }
                        }
                        if ((0x30 * indexRelation) > matrixBuffer.size || 0x30 * indexRelation < 0) {
                            bonePositions[i] = Vector3.Zero;
                            failed = true;
                            break;
                        }
                        Matrix34 matrix34 = *(Matrix34*)((ulong)pMatricesBuf + 0x30 * (ulong)indexRelation);
                        Vector4 v10 = matrix34.vec2 * result;
                        Vector4 v11 = Shuffle(matrix34.vec1, 0);
                        Vector4 v12 = Shuffle(matrix34.vec1, (ShuffleSel)85);
                        Vector4 v13 = Shuffle(matrix34.vec1, (ShuffleSel)(-114));
                        Vector4 v14 = Shuffle(matrix34.vec1, (ShuffleSel)(-37));
                        Vector4 v15 = Shuffle(matrix34.vec1, (ShuffleSel)(-86));
                        Vector4 v16 = Shuffle(matrix34.vec1, (ShuffleSel)113);
                        result = (v11 * xmmword1410D1350 * v13 - v12 * xmmword1410D1360 * v14) *
                                Shuffle(v10, (ShuffleSel)(-86)) +
                                (v15 * xmmword1410D1360 * v14 - v11 * xmmword1410D1340 * v16) *
                                Shuffle(v10, (ShuffleSel)85) +
                                ((v12 * xmmword1410D1340 * v16 - v15 * xmmword1410D1350 * v13) * Shuffle(v10, 0) + v10) +
                                matrix34.vec0;

                        indexRelation = *(int*)((ulong)pIndicesBuf + 0x4 * (ulong)indexRelation);
                    }
                    if (failed) {
                        bonePositions[i] = Vector3.Zero;

                    } else {
                        bonePositions[i] = new Vector3(result.X, result.Y, result.Z);
                    }
                    i++;
                } catch {
                    bonePositions[i] = Vector3.Zero;
                    i++;
                }
            }

            // free pointers
            foreach (KeyValuePair<IntPtr, MatrixBuffer> item in matrixBufferDict) {
                if ((IntPtr)item.Value.pMatricesBuf != IntPtr.Zero) {
                    NativeMemory.Free(item.Value.pMatricesBuf);
                }
            }
            foreach (KeyValuePair<IntPtr, MatrixBuffer> item in dependencyIndexDict) {
                if ((IntPtr)item.Value.pMatricesBuf != IntPtr.Zero) {
                    NativeMemory.Free(item.Value.pMatricesBuf);
                }
            }
            return bonePositions;
        }

Don't copy this 1:1 just use it as a reference on how to lower your reads per player, my current version has changed.

MrCrashU 25th December 2021 02:29 AM

Anyone know where the game applies hit punch on damage? Hit a dead end after a few minutes searching but will update if I find out

overboostaltima 25th December 2021 02:30 AM

Hello guys, I got clapped by BE today. :'(

Do you guys know if infinite stamina, fast mag loading / unloading, no recoil are safe writes?
Also, I made a little simple manual friendly filter so that my friends are a different color... I did forget to xor it though, and the string was global... its xored now but I havent tested it yet.

Also, the same driver on Rainbow Six Siege, 3 weeks, and still no ban, so I believe the driver is solid.

And, It was deff a BE ban since I got an email after the ban.


Code:


 if (entity_name.find(XorStr("friend1")) != std::string::npos || entity_name.find(XorStr("friend2")) != std::string::npos || entity_name.find(XorStr("frient3")) != std::string::npos || entity_name.find(XorStr("friend4")) != std::string::npos || entity_name.find(XorStr("friend5")) != std::string::npos)
                            {
                                isfriend = true;
                                color = rgbapurple;
                               
                            }
                            else

                            {
                                isfriend = false;
                                color = rgbared;
                     
                            }

entity_name had ALL the players in the map and it wasnt xored... do you guys think this was a BAN possibility?

I ran fine for 3 weeks no ban, suddently, 2 days after this was implemented, CLAPPED lol. :'(

Thanks guys.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

MrCrashU 25th December 2021 02:33 AM

Quote:

Originally Posted by overboostaltima (Post 3328213)
Hello guys, I got clapped by BE today. :'(

Do you guys know if infinite stamina, fast mag loading / unloading, no recoil are safe writes?
Also, I made a little simple manual friendly filter so that my friends are a different color... I did forget to xor it though, and the string was global... its xored now but I havent tested it yet.

Also, the same driver on Rainbow Six Siege, 3 weeks, and still no ban, so I believe the driver is solid.

And, It was deff a BE ban since I got an email after the ban.


Code:


 if (entity_name.find(XorStr("friend1")) != std::string::npos || entity_name.find(XorStr("friend2")) != std::string::npos || entity_name.find(XorStr("frient3")) != std::string::npos || entity_name.find(XorStr("friend4")) != std::string::npos || entity_name.find(XorStr("friend5")) != std::string::npos)
                            {
                                isfriend = true;
                                color = rgbapurple;
                               
                            }
                            else

                            {
                                isfriend = false;
                                color = rgbared;
                     
                            }

entity_name had ALL the players in the map and it wasnt xored... do you guys think this was a BAN possibility?

I ran fine for 3 weeks no ban, suddently, 2 days after this was implemented, CLAPPED lol. :'(

Thanks guys.

IIRC emails don't have any meaning anymore. How are you doing fast magazine reloading?

overboostaltima 25th December 2021 02:48 AM

Quote:

Originally Posted by MrCrashU (Post 3328216)
IIRC emails don't have any meaning anymore. How are you doing fast magazine reloading?


Code:


void skillmaggs()
{
      Sleep(200);
        skmagsON = 1;
        uint64_t sk_mag = driver::read<uint64_t>(driver::read<uint64_t>(localPlayer + offsets::Player_Profile_offset) + 0x60);
     
        driver::write<float>(driver::read<uint64_t>(sk_mag + 0x170) + 0x28, 90.f);
        driver::write<float>(driver::read<uint64_t>(sk_mag + 0x178) + 0x28, 90.f);
        driver::write<float>(driver::read<uint64_t>(sk_mag + 0x190) + 0x28,  90.f);
 
}

So we had 4 friends in the team...
1 was a first timer (got banned on his first game and half ) <edit, begining of 2nd game loading screen didnt allow us in.
2 of us been playing for 3 weeks with this driver no issues
1 was legit and didn't get clapped.

24jared24 25th December 2021 03:18 AM

Quote:

Originally Posted by overboostaltima (Post 3328213)
Hello guys, I got clapped by BE today. :'(

Do you guys know if infinite stamina, fast mag loading / unloading, no recoil are safe writes?

Stamina, fast mag loading (all skills), and no recoil have all been safe forever. Seems like it was something else.

TJ888 25th December 2021 12:16 PM

Some Christmas update, a few new items, a couple of quests, some new AI named Gifter.

GameWorld::Grenades = 0xF0
WildSpawnType gifter = 33554432

eldev 25th December 2021 12:21 PM

GOM = 0x17F8D28

CloudApps 25th December 2021 12:44 PM

Quote:

Originally Posted by eldev (Post 3328446)
GOM = 0x17F8D28

after reversing it, the 0x17F8D28 is correct

giejqf 25th December 2021 12:49 PM

offset AllCameras = 0x1798500

Mareek 25th December 2021 01:10 PM

up2date prices and item names

https://pastebin.com/rvtyJyzH

xPasters 25th December 2021 01:27 PM

Quote:

Originally Posted by Mareek (Post 3328472)
up2date prices and item names

https://pastebin.com/rvtyJyzH

People actually use this, just use the api lmao.

xXBradXx 25th December 2021 01:37 PM

Quote:

Originally Posted by xPasters (Post 3328481)
People actually use this, just use the api lmao.

there's even https://tarkov-tools.com/ instead of tarkov-market which is for free and seems to be just as good. i recently switched to it from tarkov-market after that API key that was leaked on this thread ages ago stopped working and everything works just as well as the tarkov-market api.

bhehe6813 25th December 2021 02:17 PM

Anyone have ban issues recently? Me and a few others that have been UD for awhile received the ban for us and others. First on December 15-16th and then again on December 22-23.

krembo 25th December 2021 02:51 PM

Quote:

Originally Posted by bhehe6813 (Post 3328514)
Anyone have ban issues recently? Me and a few others that have been UD for awhile received the ban for us and others. First on December 15-16th and then again on December 22-23.

BSG or BE?

DuOreng 25th December 2021 03:39 PM

Quote:

Originally Posted by bhehe6813 (Post 3328514)
Anyone have ban issues recently? Me and a few others that have been UD for awhile received the ban for us and others. First on December 15-16th and then again on December 22-23.

Yeah, it is like they come in waves. Few of my friends got banned yesterday, a lot of P2Cs also hit. Very unsure on what is the cause of it as it is 100% not overlay related. It could be a feature but I'm not sure yet. One friend fully spoofed, raged instant ban nearly after 1 game, 2nd friend spoofed, just visual use no bans yet. When I say rage, features used were No Stamina, No Recoil, Silent Aim so might be feature related but I wouldn't say 100% yet. I did read somewhere above that someone modified some values related to no recoil and it caused no bullet damage but before the patch it worked fine, maybe they have started to log or something no idea it's like they just press a ban button once in a while..

MrCrashU 25th December 2021 05:58 PM

No bans yet, using for about a month. Using infinite stamina, no recoil. Are you using silent aim?
IIRC they said they were doing something with stats for bans too?

24jared24 25th December 2021 07:34 PM

Quote:

Originally Posted by bhehe6813 (Post 3328159)
I also don't process players that aren't on screen (by doing a w2s test on their origin, but I also do a view angle check to make sure they're not aiming at me)

What is origin here? Is it a position stored outside bones?

DuOreng 25th December 2021 08:00 PM

Quote:

Originally Posted by 24jared24 (Post 3328721)
What is origin here? Is it a position stored outside bones?

I'll presume he doesn't push entities out of his view saving a lot of reading calls and when they are aiming maybe has some sort of out of FOV alert on screen or some shit thats what I do anyway. And origin can be any 3d position of the entity, bone position of head/root, or origin position in his case. simple.

Obviously your w2s in rendering wouldn't draw the entity anyway but this saves you from pushing the entity and reading data that is not needed.

24jared24 25th December 2021 08:16 PM

Quote:

Originally Posted by DuOreng (Post 3328739)
I'll presume he doesn't push entities out of his view saving a lot of reading calls and when they are aiming maybe has some sort of out of FOV alert on screen or some shit thats what I do anyway. And origin can be any 3d position of the entity, bone position of head/root, or origin position in his case. simple.

Obviously your w2s in rendering wouldn't draw the entity anyway but this saves you from pushing the entity and reading data that is not needed.

I know what he meant, I'm wondering exactly what/where 'origin' is. The only similar thing I'm aware of was ~8 reads deep in a pointer chain from SkeletonRootJoin which seems overkill.

cxtgirl 25th December 2021 08:17 PM

Quote:

Originally Posted by 24jared24 (Post 3328749)
I know what he meant, I'm wondering exactly what/where 'origin' is. The only similar thing I'm aware of was ~8 reads deep in a pointer chain from SkeletonRootJoin which seems overkill.

im guessing he just means the base bone position

ecthirune 25th December 2021 08:54 PM

Quote:

Originally Posted by 24jared24 (Post 3328749)
I know what he meant, I'm wondering exactly what/where 'origin' is. The only similar thing I'm aware of was ~8 reads deep in a pointer chain from SkeletonRootJoin which seems overkill.

look at movementContext(0x40) in player, theres somewhere at 0x208+ was simple vector3 coords of current position this player.
Offsets are old, i didn't updated it from 12.10 i believe, since this vector3 coords being nulled sometimes without any reason (in my case, didn't saw any1 with same issue).
But atleast i drop you direction.

bhehe6813 25th December 2021 10:00 PM

Quote:

Originally Posted by 24jared24 (Post 3328749)
I know what he meant, I'm wondering exactly what/where 'origin' is. The only similar thing I'm aware of was ~8 reads deep in a pointer chain from SkeletonRootJoin which seems overkill.

Base bone position. And yeah it is like 8 reads deep sadly. The one that you don't have to do GetTransformPosition on.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

CloudApps 25th December 2021 10:58 PM

any cool guy has the timescale offset?

MrCrashU 25th December 2021 11:23 PM

Quote:

Originally Posted by CloudApps (Post 3328903)
any cool guy has the timescale offset?

[0x17F1AD8] + 0xFC
Use search engine

CloudApps 26th December 2021 12:05 AM

Quote:

Originally Posted by MrCrashU (Post 3328916)
[0x17F1AD8] + 0xFC
Use search engine

your offset is wrong

MrCrashU 26th December 2021 12:27 AM

Quote:

Originally Posted by CloudApps (Post 3328941)
your offset is wrong

[0x17F8AE0 + (7 * 8)] + 0xFC

Honey gets more flies than vinegar
For future readers:

Open UnityPlayer.dll in IDA and load the PDB.
I use
Code:

./symchk /r "C:\Battlestate Games\EFT\UnityPlayer.dll" /s srv*C:\sym*http://symbolserver.unity3d.com
to download the PDB to a folder
Rebase to 0x0 and then use address of gContext as replacement for first address

24jared24 26th December 2021 03:22 AM

Quote:

Originally Posted by ecthirune (Post 3328796)
look at movementContext(0x40) in player, theres somewhere at 0x208+ was simple vector3 coords of current position this player.
Offsets are old, i didn't updated it from 12.10 i believe, since this vector3 coords being nulled sometimes without any reason (in my case, didn't saw any1 with same issue).
But atleast i drop you direction.

Pretty sure this only exists for local player, but I'll give it another check.

bhehe6813 26th December 2021 03:40 AM

Quote:

Originally Posted by 24jared24 (Post 3329054)
Pretty sure this only exists for local player, but I'll give it another check.

Are your reads slow or something? Perhaps slow communication or something like DMA? Even doing those 6-8 reads to get the base bone isn't enough to slow my loop down.


Here's some food for thought:

On your player list iteration, are you reading each PTR at the time you process them? If so, instead read 0x8 * size of player list and just slice through that data. That's 11 reads down to 1.

Then for each player, you'll need to read them as an EFT.Player, so at minimum, that's 11 additional reads (but still better than 22). Then to do what I describe, yes you'll need about 88 additional reads if that's how many it takes to get the bone that doesn't require you to get position on it (that origin bone or whatever).

Ideally, your reads shouldn't take too long. If you're using a slower communication method (like sockets or DMA), you'll have to think of some tricks. But, if you're not, I think you'll be fine. Really I just do that check to avoid the additional reads for profile (3 per player), bone positions (unoptimized is like 4 * number of bones you want) and whatever else you're doing (in my case it's like 15 more reads lol).

24jared24 26th December 2021 04:13 AM

Quote:

Originally Posted by bhehe6813 (Post 3329060)
Are your reads slow or something? Perhaps slow communication or something like DMA? Even doing those 6-8 reads to get the base bone isn't enough to slow my loop down.


Here's some food for thought:

On your player list iteration, are you reading each PTR at the time you process them? If so, instead read 0x8 * size of player list and just slice through that data. That's 11 reads down to 1.

Then for each player, you'll need to read them as an EFT.Player, so at minimum, that's 11 additional reads (but still better than 22). Then to do what I describe, yes you'll need about 88 additional reads if that's how many it takes to get the bone that doesn't require you to get position on it (that origin bone or whatever).

Ideally, your reads shouldn't take too long. If you're using a slower communication method (like sockets or DMA), you'll have to think of some tricks. But, if you're not, I think you'll be fine. Really I just do that check to avoid the additional reads for profile (3 per player), bone positions (unoptimized is like 4 * number of bones you want) and whatever else you're doing (in my case it's like 15 more reads lol).

I'm using sockets so yeah it's not the fastest but I'm just trying to get the best performance I can. I'm already reading everything I can in 1 read like you mentioned. I really just need to optimize my getPositionTransform for bones because that's taking ~25% of my cpu time even after caching everything.

osbmat002 26th December 2021 04:50 AM

Bones Position Update Rate
 
The position of my base bones seems to update every 0.5 seconds, yet I know I am reading memory in between each update yet the value of the transform remains the same, despite my player moving.

I'm using this to read the transform ptr about 90 times a second
Code:

var bones = RPM.GetPtr(playerPtr, new int[] { 0xa8, 0x28, 0x28, 0x10, 0x20 });
yet the Vector3 being returned from my position function only updates like 2 times a second..

pattyz 26th December 2021 09:14 AM

Quote:

Originally Posted by CloudApps (Post 3328903)
any cool guy has the timescale offset?

Trust me pal, it's not that hard to do the work yourself for once.

1. Download unity .pdb file that matches the current unityplayer version
2. Open UnityPlayer.dll in IDA with pdb file to get all function names and debug informations
3. Search for GetTimeManager function and F5 decompile it, the result should look like this:
https://imgur.com/a/cOXsMZs
4. Trace back to the global context manager: .data:00000001817F1AA0 gContext ManagerContext <?>
5. Now you have the manager, all you gotta do is read UnityPlayer + 0x17F1AA0 + (7 * 0x8) since timemanager is found with the 7th index.
6. Now you're in the timemanager context where timescale and all the goodies reside in, just read/write the timescale offset (0xFC) to whatever you want it to be and voila, timescaling works!!!!!!!

CloudApps 26th December 2021 10:42 AM

Quote:

Originally Posted by pattyz (Post 3329165)
Trust me pal, it's not that hard to do the work yourself for once.

1. Download unity .pdb file that matches the current unityplayer version
2. Open UnityPlayer.dll in IDA with pdb file to get all function names and debug informations
3. Search for GetTimeManager function and F5 decompile it, the result should look like this:
https://imgur.com/a/cOXsMZs
4. Trace back to the global context manager: .data:00000001817F1AA0 gContext ManagerContext <?>
5. Now you have the manager, all you gotta do is read UnityPlayer + 0x17F1AA0 + (7 * 0x8) since timemanager is found with the 7th index.
6. Now you're in the timemanager context where timescale and all the goodies reside in, just read/write the timescale offset (0xFC) to whatever you want it to be and voila, timescaling works!!!!!!!

how to download unity pdb files i dont wanna install unity engine

NotATrap 26th December 2021 12:26 PM

Quote:

Originally Posted by CloudApps (Post 3329213)
how to download unity pdb files i dont wanna install unity engine

just use the symbol server

CloudApps 26th December 2021 02:49 PM

Quote:

Originally Posted by MasterScuzee (Post 2986408)
Updated External Speedhack:

Code:

const auto manager = g_pMemory->Read(g_pMemory->GetModule(ENCRYPT_STRINGW("UnityPlayer.dll"))->GetBase() + 0x156B440 + 7 * 8);
g_pMemory->Write< float >(manager + 0xFC, val);


how did you get that offset? what is the function name?

EliteProducer 26th December 2021 02:53 PM

Anyone got updated FOV value?

cxtgirl 26th December 2021 05:31 PM

Quote:

Originally Posted by CloudApps (Post 3329352)
how did you get that offset? what is the function name?

maybe its the offset 3 people have told you how to get already

bhehe6813 26th December 2021 05:32 PM

Quote:

Originally Posted by 24jared24 (Post 3329070)
I'm using sockets so yeah it's not the fastest but I'm just trying to get the best performance I can. I'm already reading everything I can in 1 read like you mentioned. I really just need to optimize my getPositionTransform for bones because that's taking ~25% of my cpu time even after caching everything.

Did you see how mine works? Calculate the highest index and then read that index * size into one block of bytes. Then I slice through those blocks of bytes. My GetBonePositions I believe is two-to-four reads for all of the bones. I'm back from vacation tomorrow and I'll help ya some more with my updated code.

Quote:

Originally Posted by EliteProducer (Post 3329355)
Anyone got updated FOV value?

It's the same:

Within the class you get the viewmatrix from:

Code:

            [FieldOffset(0x158)] public float FOV;
Personally, I offer super zoom for my guys, if you're using a scope I edit the optic camera fov to original fov / 2. If you're using iron sights, I edit the FPSCamera fov to 30. Keep in mind, the game lerps the FOV when you aim down sights, so what I do is wait until 1 second after the user has aimed down sights and held the super zoom button (shift in my case) to edit the FOV, that way the camera lerp doesn't constantly reset the FOV (Which creates this fucked effect). What I mean by lerp is that it smooths from ~65 FOV to the scope FOV, i.e. 65, 50, 45, 40, 35, 25. You don't want to write when it's doing that. Maybe if you're internal you're fast enough to just write it immediately.

Please note that I only LOWER FOV, I don't offer higher FOV than normal, you can do that in other ways (including patching the set FOV function which clamps menu FOV to 65 or below) so that you can just set it via the menu).

niceone1 26th December 2021 06:03 PM

Quote:

Originally Posted by bhehe6813 (Post 3328019)
<snip>

I build these lists using custom scripting on sp-tarkov and generate lists of their positions. In mono world you can simply just do object.position, which I believe is center position on these mines. Every object in the game has a "position" regardless of it's type/components. I believe the various types just simply override the default position, so in the case of mines it's that get center position.

Unfortunately that seems not to be true for every object. The transform and the cached position values are both invalid for those objects:
Code:

0x1D08847EE60 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D088480400 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D0884814A0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D0E7FB3140 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D2434AB2C0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D305A0FD90 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-448.700012, 22.799999, -785.799988]
0x1D305B09220 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A442C0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A5FF80 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D307A6A370 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D307A7E010 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A84160 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A987F0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B0E75B0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B126D10 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B15ADA0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D0E7FB2440 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1CFD3A62780 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D088480D40 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D305B06260 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D24DE350B0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D305048540 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D2440F6760 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1CFD3A62C00 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D305B08AC0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A2FEA0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A35CD0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A95F70 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B0E9B60 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D30B121FA0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B14E9C0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30C119BC0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-448.700012, 22.799999, -785.799988]
0x1D30C1385F0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D30C386C00 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]


24jared24 26th December 2021 08:06 PM

Quote:

Originally Posted by bhehe6813 (Post 3329472)
Did you see how mine works? Calculate the highest index and then read that index * size into one block of bytes. Then I slice through those blocks of bytes. My GetBonePositions I believe is two-to-four reads for all of the bones. I'm back from vacation tomorrow and I'll help ya some more with my updated code.

I just took a look to try and understand what it's doing and have a few questions.

Code:

var transMatrix = new UnityMatrix();
                if (!transformMatricesDictionary.ContainsKey(trans.pMatrices)) {
                    transMatrix = trans.Matrix;

What is the structure of UnityMatrix and where does "trans.Matrix" come from? Similarly, what is "transMatrix.matrix_list_base" ? I'm assuming that it's the pointer to what the c&p c++ version calls transformDataArray.

Code:

new MatrixListItem { indexes = new List<int>() { index }
Why do you use a list for the index here? Looks like it's only ever one value? But then you're finding the max later so there must be multiple values but I don't see how.

EDIT: I think I get it now actually. UnityMatrix is equal to what the c++ code called TransformAccessReadOnly which is
Code:

char pad[0x18];
        DWORD_PTR transformDataArrayPtr; //0x18
        DWORD_PTR transformDataIndiciesPtr; //0x20

and trans.Matrix is at internalTransform] + 0x38. I also see now that you're appending to the indexes list in the else statements, just misssed that somehow.

MrCrashU 26th December 2021 09:10 PM

Quote:

Originally Posted by 24jared24 (Post 3329070)
I'm using sockets so yeah it's not the fastest but I'm just trying to get the best performance I can. I'm already reading everything I can in 1 read like you mentioned. I really just need to optimize my getPositionTransform for bones because that's taking ~25% of my cpu time even after caching everything.

Will you post your function for this?

24jared24 26th December 2021 09:11 PM

Quote:

Originally Posted by MrCrashU (Post 3329593)
Will you post your function for this?

Sorry, what function?

MrCrashU 26th December 2021 09:22 PM

Quote:

Originally Posted by 24jared24 (Post 3329596)
Sorry, what function?

Transform into position


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

24jared24 26th December 2021 09:28 PM

Quote:

Originally Posted by MrCrashU (Post 3329602)
Transform into position

It's the same as the one posted a bunch in this thread, just adapted to use cached transform pointers (which is much faster but causes crashes lol).

Code:

Vector3 mem::getCachedBoneTransformPosition(SkeletonTransformData transformData)
{
        if (!transformData.transformAccessReadOnly.transformDataArrayPtr || !transformData.transformAccessReadOnly.transformDataIndiciesPtr)
                return Vector3();

        try {
                __m128 result;

                const __m128 mulVec0 = { -2.000, 2.000, -2.000, 0.000 };
                const __m128 mulVec1 = { 2.000, -2.000, -2.000, 0.000 };
                const __m128 mulVec2 = { -2.000, -2.000, 2.000, 0.000 };

                SIZE_T sizeMatriciesBuf = sizeof(Matrix34) * transformData.internalTransform.transformAccessReadOnlyIndex + sizeof(Matrix34);
                SIZE_T sizeIndicesBuf = sizeof(int) * transformData.internalTransform.transformAccessReadOnlyIndex + sizeof(int);

                // Allocate memory for storing large amounts of data (matricies and indicies)
                PVOID pMatriciesBuf = malloc(sizeMatriciesBuf);
                PVOID pIndicesBuf = malloc(sizeIndicesBuf);

                if (pMatriciesBuf && pIndicesBuf)
                {
                        // Read Matricies array into the buffer
                        driver::read_memory(connection, pid, transformData.transformAccessReadOnly.transformDataArrayPtr, (uintptr_t)pMatriciesBuf, sizeMatriciesBuf);
                        // Read Indices array into the buffer
                        driver::read_memory(connection, pid, transformData.transformAccessReadOnly.transformDataIndiciesPtr, (uintptr_t)pIndicesBuf, sizeIndicesBuf);

                        result = *(__m128*)((ULONGLONG)pMatriciesBuf + 0x30 * transformData.internalTransform.transformAccessReadOnlyIndex);
                        int transformIndex = *(int*)((ULONGLONG)pIndicesBuf + 0x4 * transformData.internalTransform.transformAccessReadOnlyIndex);
                        int count = 0;
                        while (transformIndex >= 0 && count < 1000)
                        {
                                if (!pMatriciesBuf || !pIndicesBuf || !&result || !&transformIndex)
                                        return Vector3();
                                Matrix34 matrix34 = *(Matrix34*)((ULONGLONG)pMatriciesBuf + 0x30 * transformIndex);
                                if (!&matrix34)
                                        return Vector3();

                                __m128 xxxx = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x00));        // xxxx
                                __m128 yyyy = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x55));        // yyyy
                                __m128 zwxy = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x8E));        // zwxy
                                __m128 wzyw = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0xDB));        // wzyw
                                __m128 zzzz = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0xAA));        // zzzz
                                __m128 yxwy = _mm_castsi128_ps(_mm_shuffle_epi32(*(__m128i*)(&matrix34.vec1), 0x71));        // yxwy
                                __m128 tmp7 = _mm_mul_ps(*(__m128*)(&matrix34.vec2), result);

                                result = _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_add_ps(
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(xxxx, mulVec1), zwxy),
                                                                        _mm_mul_ps(_mm_mul_ps(yyyy, mulVec2), wzyw)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0xAA))),
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(zzzz, mulVec2), wzyw),
                                                                        _mm_mul_ps(_mm_mul_ps(xxxx, mulVec0), yxwy)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x55)))),
                                                _mm_add_ps(
                                                        _mm_mul_ps(
                                                                _mm_sub_ps(
                                                                        _mm_mul_ps(_mm_mul_ps(yyyy, mulVec0), yxwy),
                                                                        _mm_mul_ps(_mm_mul_ps(zzzz, mulVec1), zwxy)),
                                                                _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(tmp7), 0x00))),
                                                        tmp7)), *(__m128*)(&matrix34.vec0));

                                transformIndex = *(int*)((ULONGLONG)pIndicesBuf + 0x4 * transformIndex);
                                count++;
                        }

                        free(pMatriciesBuf);
                        free(pIndicesBuf);
                }

                return Vector3(result.m128_f32[0], result.m128_f32[1], result.m128_f32[2]);
        }
        catch (...) {
                return Vector3();
        }
}


MrCrashU 26th December 2021 09:34 PM

Only optimization I could see here that I've done is convert malloc to _malloca to prefer stack allocations then, sorry.

bhehe6813 26th December 2021 11:44 PM

Quote:

Originally Posted by niceone1 (Post 3329495)
Unfortunately that seems not to be true for every object. The transform and the cached position values are both invalid for those objects:
Code:

0x1D08847EE60 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D088480400 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D0884814A0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D0E7FB3140 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D2434AB2C0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D305A0FD90 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-448.700012, 22.799999, -785.799988]
0x1D305B09220 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A442C0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A5FF80 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D307A6A370 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D307A7E010 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A84160 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A987F0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B0E75B0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B126D10 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B15ADA0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D0E7FB2440 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1CFD3A62780 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D088480D40 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D305B06260 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D24DE350B0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D305048540 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D2440F6760 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1CFD3A62C00 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D305B08AC0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A2FEA0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A35CD0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A95F70 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B0E9B60 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D30B121FA0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B14E9C0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30C119BC0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-448.700012, 22.799999, -785.799988]
0x1D30C1385F0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D30C386C00 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]


Mmm I'll take a look when I'm home. In the meantime, setup sp-tarkov (pretty easy you just need to build it yourself but it's simple), and install unityexplorer. With that you can take a look at these mines while in an offline game.

24jared24 26th December 2021 11:57 PM

Quote:

Originally Posted by bhehe6813 (Post 3328207)
Here's the older version that has an issue I believe, from my private git:
Don't copy this 1:1 just use it as a reference on how to lower your reads per player, my current version has changed.

So I rewrote your function in c++, kind of a Frankenstein of what I had and yours actually, but to my surprise it worked on the first try :) Getting bone positions is down from 25% of my cpu time to 1.67% lmao

So right now I'm caching all the transform pointers and using your method and getting a solid ~100fps compared to the ~33 fps I was getting before. I think caching transform pointers causes some crashes but I haven't crashed yet with this new method so fingers crossed.

bhehe6813 27th December 2021 03:36 AM

Quote:

Originally Posted by 24jared24 (Post 3329674)
So I rewrote your function in c++, kind of a Frankenstein of what I had and yours actually, but to my surprise it worked on the first try :) Getting bone positions is down from 25% of my cpu time to 1.67% lmao

So right now I'm caching all the transform pointers and using your method and getting a solid ~100fps compared to the ~33 fps I was getting before. I think caching transform pointers causes some crashes but I haven't crashed yet with this new method so fingers crossed.

:) That's great! Make sure to check the index!! This is likely the cause of your crash. Make sure that index � size is not greater than the size of your data buffer or you'll overflow and crash (or have an access violation). Also make sure index is >= 0. And yeah sorry my variable names are fucked, I originally copy pasted those structures and later when I updated them and rewrote that function I never renamed them.

Specifically add a check before these lines:

Code:


                        result = *(__m128*)((ULONGLONG)pMatriciesBuf + 0x30 * transformData.internalTransform.transformAccessReadOnlyIndex);
                        int transformIndex = *(int*)((ULONGLONG)pIndicesBuf + 0x4 * transformData.internalTransform.transformAccessReadOnlyIndex)

And this line:

Code:

                        Matrix34 matrix34 = *(Matrix34*)((ULONGLONG)pMatriciesBuf + 0x30 * transformInd
The check should be like if pMatricesBuf + 0x30 * index > size of pMatricesBuf then continue/return and so forth for indices as well.

xzackcc 27th December 2021 06:34 AM

is modifying timescale safe at all? I haven't messed around the timemanager at all.

nicxio 27th December 2021 07:15 AM

Quote:

Originally Posted by xzackcc (Post 3329847)
is modifying timescale safe at all? I haven't messed around the timemanager at all.

seems so using it since last year in rust and eft

LmfaoGameIsRat 27th December 2021 07:18 AM

Does anyone have any luck using "get_IsBot" online? Seems to be broken for me.

bhehe6813 27th December 2021 07:30 AM

Quote:

Originally Posted by LmfaoGameIsRat (Post 3329865)
Does anyone have any luck using "get_IsBot" online? Seems to be broken for me.

I check if the name is cyrillic. Pretty sure you can also just check registration date.

xzackcc 27th December 2021 07:30 AM

Quote:

Originally Posted by nicxio (Post 3329863)
seems so using it since last year in rust and eft

interesting .. mind sharing what values are you using for the timescaling? guess they shouldn't exceed a certain limit.

ecthirune 27th December 2021 07:32 AM

Quote:

Originally Posted by LmfaoGameIsRat (Post 3329865)
Does anyone have any luck using "get_IsBot" online? Seems to be broken for me.

Check regDate, then "side".
Date will sort out bots from humans, side will sort type of bots(regular, sniper, raider, rogue, boss etc etc)

LowkeyCharmzz 27th December 2021 07:35 AM

Quote:

Originally Posted by xzackcc (Post 3329870)
interesting .. mind sharing what values are you using for the timescaling? guess they shouldn't exceed a certain limit.

when online you dont go faster after around 2.f, but your animations will still go faster

bhehe6813 27th December 2021 07:36 AM

Quote:

Originally Posted by niceone1 (Post 3329495)
Unfortunately that seems not to be true for every object. The transform and the cached position values are both invalid for those objects:
Code:

0x1D08847EE60 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D088480400 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D0884814A0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D0E7FB3140 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D2434AB2C0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D305A0FD90 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-448.700012, 22.799999, -785.799988]
0x1D305B09220 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A442C0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A5FF80 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D307A6A370 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D307A7E010 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A84160 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A987F0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B0E75B0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B126D10 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B15ADA0 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D0E7FB2440 | EFT.Interactive.Minefield | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1CFD3A62780 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D088480D40 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D305B06260 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D24DE350B0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D305048540 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D2440F6760 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1CFD3A62C00 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D305B08AC0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A2FEA0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A35CD0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D307A95F70 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B0E9B60 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D30B121FA0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30B14E9C0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [0.000000, 0.000000, 0.000000]
0x1D30C119BC0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-448.700012, 22.799999, -785.799988]
0x1D30C1385F0 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]
0x1D30C386C00 | EFT.Interactive.MinefieldView | T: [0.000000, 0.000000, 0.000000] | P: [-492.099976, 67.105003, -468.049988]


Okay, took a look for you. First of all, it's not a MinefieldView. I'll give you a little tip, for any of these interactable zones (i.e. place a quest item here, go to this location, extract at this location, etc) are BorderZones. BorderZones are unity object, and these objects such as mines, are baked into the EscapeFromTarkov_Data folder.

One of the BorderZone's components is a transform. The position of this transform is roughly the center of the minefield.

If you're curious how mines are laid out, and how they work, it's quite simple.

BorderZones essentially act as colliders with framework on top to handle events when a player interacts with it (by moving into it). A part of this framework are callbacks, where when the player enters or leaves, it will call your function.

BSG uses these in the Minefield object I believe, it should be FireCoroutine, but you'll also notice Minefield extends from BorderZone as well.

To answer your question, instead iterate BorderZones with then name starting with "MINE_", iterate the BorderZones components (this is easy, search components in this thread), and you'll get the transform. Are you doing this automatically? It should be plenty efficient to do this automatically while the user is loading into the raid and then caching it, but it would lead to a few seconds of lag if they restarted the software, so I hardcode the positions...well I auto-generate them by basically iterating these objects like you are and then just having it output C# syntax lists/dicts/whatever, I do it all in Perl/Python + native mono on sp-tarkov for dumping. Either approach should be fine. You'll also notice what I noticed; there are 40 something mines and only 20 something are ever enabled--you'll want to iterate only active objects.


------------------------------------------------------------------------


Now that the question is out of the way, I would like to talk a little bit more about minefields, now that they are a significant part of one map (Lighthouse). I'm willing to bet that Nikita does not run this code on the server:

Code:

                if (this.IsInTriggerZone(player.Position) && this.TargetedPlayers.Contains(player) && Vector3.Distance(position, player.Position) >= num3)
                                        {
                                                base.InvokePlayerShotEvent(player, 0f, true);
                                                this.\uE000(player, false);
                                                position = player.Position;
                                        }

And instead relies solely on the client to report that they were in a minefield.

Code:



                // Token: 0x0600A384 RID: 41860 RVA: 0x0031C9B4 File Offset: 0x0031ABB4
                protected override IEnumerator FireCoroutine(Player player)
                {
                        for (;;)
                        {
                                int num2;
                                int num = num2;
                                if (num != 0)
                                {
                                        if (num != 1)
                                        {
                                                break;
                                        }
                                        Vector3 position;
                                        float num3;
                                        if (this.IsInTriggerZone(player.Position) && this.TargetedPlayers.Contains(player) && Vector3.Distance(position, player.Position) >= num3)
                                        {
                                                base.InvokePlayerShotEvent(player, 0f, true);
                                                this.\uE000(player, false);
                                                position = player.Position;
                                        }
                                }
                                else
                                {
                                        base.InvokePlayerShotEvent(player, 0f, true);
                                        this.\uE000(player, true);
                                        Vector3 position = player.Position;
                                        float num3 = UnityEngine.Random.Range(this._minRangeToNextExplosion, this._maxRangeToNextExplosion);
                                }
                                if (!this.TargetedPlayers.Contains(player))
                                {
                                        goto IL_12A;
                                }
                                if (!player.HealthController.IsAlive)
                                {
                                        goto Block_7;
                                }
                                yield return new WaitForSeconds(1f);
                        }
                        yield break;
                        IL_12A:
                        Block_7:
                        yield break;
                }

So this function is Obfuscated I believe...but poorly. I pay for EazFuscator as well, I sure hope it's not actually this bad. Anyways, this is simple to patch, here's the condition:


Code:

jna EFT.Interactive.Minefield:IsInTriggerZone+3c0
xor eax,eax
jmp EFT.Interactive.Minefield:IsInTriggerZone+3c5
mov eax,00000001
mov rsi,[rbp-08]
lea rsp,[rbp+00]
pop rbp
ret

You want to patch jna EFT.Interactive.Minefield:IsInTriggerZone+3c0 which is at Minefield:IsInTriggerZone + 0x3ba (could vary on some pcs). Here's a sig to find the function, search RWX:

Code:

33 C0 EB 05 B8 01 00 00 00 48 8B 75 F8 48 8D 65 00 5D C3 BA 44 00 00 00 B9 A6 01 00 00 48 8D 64 24 00
The bolded bytes (the first 05) could possibly be ?? instead.


Anyways, there's 10 other ways you could do this as well, just the first I saw.

LmfaoGameIsRat 27th December 2021 07:57 AM

Quote:

Originally Posted by ecthirune (Post 3329871)
Check regDate, then "side".
Date will sort out bots from humans, side will sort type of bots(regular, sniper, raider, rogue, boss etc etc)

I'm not sure about the side part. I've only gotten "Savage" back from checking player sides. Perhaps there's a different field?

Code:

        // Token: 0x02000FC9 RID: 4041
        public enum EPlayerSide
        {
                // Token: 0x04005E6D RID: 24173
                Usec = 1,
                // Token: 0x04005E6E RID: 24174
                Bear,
                // Token: 0x04005E6F RID: 24175
                Savage = 4
        }

Otherwise thanks. Everything works.

bhehe6813 27th December 2021 08:06 AM

Quote:

Originally Posted by LmfaoGameIsRat (Post 3329882)
I'm not sure about the side part. I've only gotten "Savage" back from checking player sides. Perhaps there's a different field?

Code:

        // Token: 0x02000FC9 RID: 4041
        public enum EPlayerSide
        {
                // Token: 0x04005E6D RID: 24173
                Usec = 1,
                // Token: 0x04005E6E RID: 24174
                Bear,
                // Token: 0x04005E6F RID: 24175
                Savage = 4
        }

Otherwise thanks. Everything works.

He's referring to EWildSpawnType (named WildSpawnType in their code).

Code:

[Flags]
        public enum WildSpawnType
        {
                // Token: 0x04005E90 RID: 24208
                marksman = 1,
                // Token: 0x04005E91 RID: 24209
                assault = 2,
                // Token: 0x04005E92 RID: 24210
                bossTest = 4,
                // Token: 0x04005E93 RID: 24211
                bossBully = 8,
                // Token: 0x04005E94 RID: 24212
                followerTest = 16,
                // Token: 0x04005E95 RID: 24213
                followerBully = 32,
                // Token: 0x04005E96 RID: 24214
                bossKilla = 64,
                // Token: 0x04005E97 RID: 24215
                bossKojaniy = 128,
                // Token: 0x04005E98 RID: 24216
                followerKojaniy = 256,
                // Token: 0x04005E99 RID: 24217
                pmcBot = 512,
                // Token: 0x04005E9A RID: 24218
                cursedAssault = 1024,
                // Token: 0x04005E9B RID: 24219
                bossGluhar = 2048,
                // Token: 0x04005E9C RID: 24220
                followerGluharAssault = 4096,
                // Token: 0x04005E9D RID: 24221
                followerGluharSecurity = 8192,
                // Token: 0x04005E9E RID: 24222
                followerGluharScout = 16384,
                // Token: 0x04005E9F RID: 24223
                followerGluharSnipe = 32768,
                // Token: 0x04005EA0 RID: 24224
                followerSanitar = 65536,
                // Token: 0x04005EA1 RID: 24225
                bossSanitar = 131072,
                // Token: 0x04005EA2 RID: 24226
                test = 262144,
                // Token: 0x04005EA3 RID: 24227
                assaultGroup = 524288,
                // Token: 0x04005EA4 RID: 24228
                sectantWarrior = 1048576,
                // Token: 0x04005EA5 RID: 24229
                sectantPriest = 2097152,
                // Token: 0x04005EA6 RID: 24230
                bossTagilla = 4194304,
                // Token: 0x04005EA7 RID: 24231
                followerTagilla = 8388608,
                // Token: 0x04005EA8 RID: 24232
                exUsec = 16777216
        }


ecthirune 27th December 2021 08:17 AM

Quote:

Originally Posted by LmfaoGameIsRat (Post 3329882)
I'm not sure about the side part. I've only gotten "Savage" back from checking player sides. Perhaps there's a different field?

Otherwise thanks. Everything works.

yeah, missleaded you a bit.

PlayerInfo has Side (0x58) part - it's a way to detect usec/scav/bear.

Also PlayerInfo+0x38 leads to "settings" struct, where at 0x10 you can take "typeOfBot" (int).
BotRoles are pasted already 1 post back.
Code:

if (playerInfo->RegistrationDate <= 0)
int role = kernel->read<int>(playerInfo->RE_Settings + 0x10);
else
Side == 1 -> Bear || Side == 2 -> Usec || Side == 4 -> PlayerScav


LmfaoGameIsRat 27th December 2021 08:36 AM

Quote:

Originally Posted by ecthirune (Post 3329891)
yeah, missleaded you a bit.

PlayerInfo has Side (0x58) part - it's a way to detect usec/scav/bear.

Also PlayerInfo+0x38 leads to "settings" struct, where at 0x10 you can take "typeOfBot" (int).
BotRoles are pasted already 1 post back.
Code:

if (playerInfo->RegistrationDate <= 0)
int role = kernel->read<int>(playerInfo->RE_Settings + 0x10);
else
Side == 1 -> Bear || Side == 2 -> Usec || Side == 4 -> PlayerScav


Works great. Thank you.

Code:

int32_t ProfileInfo::registration_date() const noexcept
{
    static const auto offset = g_unity.find_class("Assembly-CSharp", "Class4132")->find_field("RegistrationDate")->m_managed_offset;
    return *(int32_t*)((uintptr_t)this + offset);
}


MrCrashU 27th December 2021 09:19 AM

Quote:

Originally Posted by bhehe6813 (Post 3329886)
He's referring to EWildSpawnType (named WildSpawnType in their code).

Code:

[Flags]
        public enum WildSpawnType
        {
                // Token: 0x04005E90 RID: 24208
                marksman = 1,
                // Token: 0x04005E91 RID: 24209
                assault = 2,
                // Token: 0x04005E92 RID: 24210
                bossTest = 4,
                // Token: 0x04005E93 RID: 24211
                bossBully = 8,
                // Token: 0x04005E94 RID: 24212
                followerTest = 16,
                // Token: 0x04005E95 RID: 24213
                followerBully = 32,
                // Token: 0x04005E96 RID: 24214
                bossKilla = 64,
                // Token: 0x04005E97 RID: 24215
                bossKojaniy = 128,
                // Token: 0x04005E98 RID: 24216
                followerKojaniy = 256,
                // Token: 0x04005E99 RID: 24217
                pmcBot = 512,
                // Token: 0x04005E9A RID: 24218
                cursedAssault = 1024,
                // Token: 0x04005E9B RID: 24219
                bossGluhar = 2048,
                // Token: 0x04005E9C RID: 24220
                followerGluharAssault = 4096,
                // Token: 0x04005E9D RID: 24221
                followerGluharSecurity = 8192,
                // Token: 0x04005E9E RID: 24222
                followerGluharScout = 16384,
                // Token: 0x04005E9F RID: 24223
                followerGluharSnipe = 32768,
                // Token: 0x04005EA0 RID: 24224
                followerSanitar = 65536,
                // Token: 0x04005EA1 RID: 24225
                bossSanitar = 131072,
                // Token: 0x04005EA2 RID: 24226
                test = 262144,
                // Token: 0x04005EA3 RID: 24227
                assaultGroup = 524288,
                // Token: 0x04005EA4 RID: 24228
                sectantWarrior = 1048576,
                // Token: 0x04005EA5 RID: 24229
                sectantPriest = 2097152,
                // Token: 0x04005EA6 RID: 24230
                bossTagilla = 4194304,
                // Token: 0x04005EA7 RID: 24231
                followerTagilla = 8388608,
                // Token: 0x04005EA8 RID: 24232
                exUsec = 16777216
        }


don't forget santa...

gifter = 33554432


anyone know why these have the appearance of bitflags anyways? afaik they aren't used as such

LmfaoGameIsRat 27th December 2021 09:22 AM

Who knows. Unity and mono are ancient and this whole game seems like an amalgamation of shit code.

wasd2 27th December 2021 03:39 PM

https://media.discordapp.net/attachm...09/unknown.png
https://media.discordapp.net/attachm...92/unknown.png
https://prnt.sc/24tbz0b
I'm doing something wrong but I couldn't find the problem.

Code:

        struct GameObjectManager {
                uint64_t LastTaggedNode; // 0x0
                uint64_t TaggedNodes; // 0x8
                uint64_t LastMainCameraTaggedNode; // 0x10
                uint64_t MainCameraTaggedNodes; // 0x18
                uint64_t LastActiveNode; // 0x20
                uint64_t ActiveNodes; // 0x28
        };
        struct BaseObject
        {
                uint64_t previousObjectLink; //0x0000
                uint64_t nextObjectLink; //0x0008
                uint64_t object; //0x0010
        };



All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

CloudApps 27th December 2021 03:43 PM

Hi, i have a problem with my smoothing on aimbot, for some reason sometimes it just snaps on the sky and i cannot aim the player:

Code:

        __forceinline Vector3 smooth_angle(Vector3 current_angle, Vector3 new_angle, int percent)
        {
                percent /= 12;
                Vector3 diff = { 0, 0, 0 }, angle = { 0, 0, 0 };
                diff.x = new_angle.x - current_angle.x;
                diff.y = new_angle.y - current_angle.y;
                diff.z = 0;
               
                if (!(int)diff.x && !(int)diff.y) return new_angle;

                angle.x = current_angle.x;
                angle.y = current_angle.y;

                angle.x += diff.x / random_int(percent, percent + 1);
                angle.y += diff.y / random_int(percent, percent + 1);
                angle.z = 0;

                return angle;
        }


MysteriouSoul 27th December 2021 03:49 PM

Any help on bypassing the Anti-Cheat or how to make an external cheat using guides/tutorials and where exactly to start with the programs and such would be appreciated..

cossintan 27th December 2021 03:57 PM

Quote:

Originally Posted by MysteriouSoul (Post 3330171)
Any help on bypassing the Anti-Cheat or how to make an external cheat using guides/tutorials and where exactly to start with the programs and such would be appreciated..

Sadly no one is going to help you in 'bypassing' the anti-cheat, if you were competent enough you'd be able to figure it out yourself. There isn't a step by step tutorial / guide on how to write an external cheat for Tarkov. It's like asking for a step by step guide on writing a book or painting. There's already plenty of info in this thread for you to start. I'd recommend working with a easier game if you don't understand how to write an external in general.

Quote:

Originally Posted by CloudApps (Post 3330168)
Hi, i have a problem with my smoothing on aimbot, for some reason sometimes it just snaps on the sky and i cannot aim the player:

Code:

        __forceinline Vector3 smooth_angle(Vector3 current_angle, Vector3 new_angle, int percent)
        {
                percent /= 12;
                Vector3 diff = { 0, 0, 0 }, angle = { 0, 0, 0 };
                diff.x = new_angle.x - current_angle.x;
                diff.y = new_angle.y - current_angle.y;
                diff.z = 0;
               
                if (!(int)diff.x && !(int)diff.y) return new_angle;

                angle.x = current_angle.x;
                angle.y = current_angle.y;

                angle.x += diff.x / random_int(percent, percent + 1);
                angle.y += diff.y / random_int(percent, percent + 1);
                angle.z = 0;

                return angle;
        }


Why aren't you debugging your own cheat, why are you asking UC to find the issues for you, I've noticed this with all of your posts as of recent, you just paste some code in this thread and beg others to do it for you, spend some time on your own and figure it out. There's a reason why people have given you -rep on almost every post you make.

CloudApps 27th December 2021 04:33 PM

Quote:

Originally Posted by cossintan (Post 3330175)
Sadly no one is going to help you in 'bypassing' the anti-cheat, if you were competent enough you'd be able to figure it out yourself. There isn't a step by step tutorial / guide on how to write an external cheat for Tarkov. It's like asking for a step by step guide on writing a book or painting. There's already plenty of info in this thread for you to start. I'd recommend working with a easier game if you don't understand how to write an external in general.



Why aren't you debugging your own cheat, why are you asking UC to find the issues for you, I've noticed this with all of your posts as of recent, you just paste some code in this thread and beg others to do it for you, spend some time on your own and figure it out. There's a reason why people have given you -rep on almost every post you make.

thanks for the response <3 !!

MysteriouSoul 27th December 2021 04:41 PM

Quote:

Originally Posted by cossintan (Post 3330175)
Sadly no one is going to help you in 'bypassing' the anti-cheat, if you were competent enough you'd be able to figure it out yourself. There isn't a step by step tutorial / guide on how to write an external cheat for Tarkov. It's like asking for a step by step guide on writing a book or painting. There's already plenty of info in this thread for you to start. I'd recommend working with a easier game if you don't understand how to write an external in general.

Would be helpful for some guiding tho! Nobody gets born with the information already known.

ecthirune 27th December 2021 04:47 PM

Quote:

Originally Posted by MysteriouSoul (Post 3330195)
Would be helpful for some guiding tho! Nobody gets born with the information already known.

there's tons of information around. Literally. We repeating most of it each day/week/month.

Just spend some time on using search button.

If you bored with search button cd - google search "uknowncheats <exactword>".

Related to your question about BE and VM - google drops first link with answer about detection.

Also Aimbot question is not related to EFT itself, it's an coding issue and should be asked in coding section. (atleast at first look)

Also if you wanna get help in something - start do something, if you stuck - debug, find a part what you don't understand - reveal it in thread and ask. In most cases you will get answer from some1.

Just look at amount of my bookmarks, when i did research and start coding my external.

krembo 27th December 2021 08:17 PM

Quote:

Originally Posted by MysteriouSoul (Post 3330195)
Would be helpful for some guiding tho! Nobody gets born with the information already known.

No one is gonna spoon feed you, do your own research.

Reaper243 28th December 2021 12:03 AM

Anybody have the latest unordered_map of bsg id, item name and price?

TheMaster077777 28th December 2021 12:30 AM

Been playing around with mono,
Does anyone ever encountered a crash from the GarbageCollector?

I retraced back the crash to GarbageCollectSharedAssets calling mono_unity_liveness_calculation_from_statics...

I tried patching mono_unity_liveness_calculation_from_statics which works but then all the textures get completely fucked...

pretty much the same issue as here, of what I understood, it's when the game unload the assets when going back to the main menu,
any ideas what I'm doing that could cause this?

24jared24 28th December 2021 02:13 AM

Quote:

Originally Posted by TJ888 (Post 3307173)
Since the Unity 2019 upgrade, they slightly changed the GameObjectManager as you are likely already aware, so now it looks like this-
Code:

struct GameObjectManager {
        ListNode<GameObject> LastTaggedNode // 0x0
        ListNode<GameObject> TaggedNodes // 0x8
        ListNode<GameObject> LastMainCameraTaggedNode // 0x10
        ListNode<GameObject> MainCameraTaggedNodes // 0x18
        ListNode<GameObject> LastActiveNode // 0x20
        ListNode<GameObject> ActiveNodes // 0x28
}

ActiveNodes is where you get GameWorld
MainCameraTaggedNodes is now where you get FPS Camera
and finally, TaggedNodes is where you get the Optical Camera (BaseOpticCamera(Clone))

I recommend traversing TaggedNodes backwards (Start with LastTaggedNode and go backwards in the List) to get the Optical Camera, as typically it is near the end if not already the last.

Previously there was some scuffed pointer chain in FPS Camera that could get you to the Optical Camera, or you use to be able to use the AllCameras Manager, but from what I could tell, they both don't work in live games anymore.

The way I determine if you are to use the Optical Camera is to first check IsAiming, and if it is true, check your current sights' current optical zoom level, and if it's >1.f, I use the Optical Camera. For me it works every time, I can cycle between multiple scopes and change their magnification (1x to 4x for e.g.), and the W2S behaves correctly every time.

I think I'm just being dumb but I can't get optical camera now. I'm doing gom + 0x0] for LastTaggedNode and then ]+0x0 for previous object. Nothing with a camera related name anywhere... just a bunch of puddles lol

ecthirune 28th December 2021 06:32 AM

here for both of you my ugly code, which doesn't give me any error for last 0,5 years

Quote:

Originally Posted by wasd2 (Post 3330164)
I'm doing something wrong but I couldn't find the problem.





Quote:

Originally Posted by 24jared24 (Post 3330551)
I think I'm just being dumb but I can't get optical camera now. I'm doing gom + 0x0] for LastTaggedNode and then ]+0x0 for previous object. Nothing with a camera related name anywhere... just a bunch of puddles lol


wasd2 28th December 2021 10:37 AM

Quote:

Originally Posted by ecthirune (Post 3330647)
here for both of you my ugly code, which doesn't give me any error for last 0,5 years









it's enough for me that the code works, it can't be said that I wrote very clean codes :D
I partially solved the problem yesterday. thanks anyway

24jared24 28th December 2021 01:55 PM

Quote:

Originally Posted by ecthirune (Post 3330647)
here for both of you my ugly code, which doesn't give me any error for last 0,5 years

Thanks, I'm able to get it using all cameras for now. I'd like to know what I'm doing wrong with grabbing it from tagged objects if anybody could help there.

vZnu 28th December 2021 05:04 PM

any one can show me how to calculate _shotdirection

cxtgirl 28th December 2021 06:58 PM

Quote:

Originally Posted by 24jared24 (Post 3330891)
Thanks, I'm able to get it using all cameras for now. I'd like to know what I'm doing wrong with grabbing it from tagged objects if anybody could help there.

gom struct:
Code:

struct game_object_manager
{
        uintptr_t last_tagged;
        uintptr_t tagged_objects;
        uintptr_t last_camera;
        uintptr_t camera_objects;
        uintptr_t last_active;
        uintptr_t active_objects;
};

how to get FPS Camera from gom:
Code:

const auto gom = driver->read<uintptr_t>( driver->get_module( "UnityPlayer.dll" ).base + 0x17F8D28 );
const auto camera_objects = driver->read<std::array<uintptr_t, 2>>( gom + offsetof( game_object_manager, last_camera ) );
const auto fps_camera = get_from_list( camera_objects[ 0 ], camera_objects[ 1 ], "FPS Camera" );

just use the camera manager method that was posted above it is much better

bhehe6813 28th December 2021 08:28 PM

Quote:

Originally Posted by 24jared24 (Post 3330891)
Thanks, I'm able to get it using all cameras for now. I'd like to know what I'm doing wrong with grabbing it from tagged objects if anybody could help there.

Read TJ888s post more.

Ignore the unformatted/improper formatted var names:

Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct GameObjectManager
        {
            [FieldOffset(0x0)] public IntPtr lastTaggedObject;

            [FieldOffset(0x8)] public IntPtr taggedObjects;
           
            [FieldOffset(0x10)] public IntPtr LastMainCameraTaggedNode;

            [FieldOffset(0x18)] public IntPtr MainCameraTaggedNodes;

            [FieldOffset(0x20)] public IntPtr lastActiveObject;

            [FieldOffset(0x28)] public IntPtr activeObjects;
        }

Code:

PFpsCamera = GetObjectFromList(objectManager.MainCameraTaggedNodes, objectManager.LastMainCameraTaggedNode,
                            "FPS Camera");
POpticCamera = GetObjectFromList(objectManager.taggedObjects, objectManager.lastTaggedObject,
                            "BaseOpticCamera(Clone)");

Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct BaseObject
        {
            [FieldOffset(0x0000)] public IntPtr previousObjectLink;

            [FieldOffset(0x0008)] public IntPtr nextObjectLink;

            [FieldOffset(0x0010)] public IntPtr _object;
        }

        public static IntPtr GetObjectFromList(IntPtr listPtr, IntPtr lastObjectPtr, string objectName, bool contains = false) {
            try {
                BaseObject activeObject = M.Read<BaseObject>(listPtr);
                BaseObject lastObject = M.Read<BaseObject>(lastObjectPtr);

                if (activeObject._object.IsValid()) {
                    while (activeObject._object.IsValid() && activeObject._object != lastObject._object) {
                        IntPtr classNamePtr = M.Read<IntPtr>((IntPtr)((ulong)activeObject._object + 0x60));
                        string name = M.ReadStr(classNamePtr, 256);
                        if (name == objectName || contains && name.ToLower().Contains(objectName.ToLower())) {
                            return activeObject._object;
                        }
                        activeObject = M.Read<BaseObject>(activeObject.nextObjectLink);
                    }
                }
                if (lastObject._object.IsValid()) {
                    IntPtr classNamePtr = M.Read<IntPtr>(lastObject._object + 0x60);
                    string name = M.ReadStr(classNamePtr, 256);

                    if (name == objectName || contains && name.ToLower().Contains(objectName.ToLower())) {
                        return lastObject._object;
                    }
                }
            } catch (Exception e) {
                Console.WriteLine([email protected]"[GO] Exception Thrown: {e}");
            }

            return IntPtr.Zero;
        }


pinefin 28th December 2021 08:31 PM

Quote:

Originally Posted by cossintan (Post 3330175)
~

hes done this forever. to add on top of that he owns a p2c

24jared24 28th December 2021 09:48 PM

Quote:

Originally Posted by bhehe6813 (Post 3331152)
Read TJ888s post more.

Ignore the unformatted/improper formatted var names:

Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct GameObjectManager
        {
            [FieldOffset(0x0)] public IntPtr lastTaggedObject;

            [FieldOffset(0x8)] public IntPtr taggedObjects;
           
            [FieldOffset(0x10)] public IntPtr LastMainCameraTaggedNode;

            [FieldOffset(0x18)] public IntPtr MainCameraTaggedNodes;

            [FieldOffset(0x20)] public IntPtr lastActiveObject;

            [FieldOffset(0x28)] public IntPtr activeObjects;
        }

Code:

PFpsCamera = GetObjectFromList(objectManager.MainCameraTaggedNodes, objectManager.LastMainCameraTaggedNode,
                            "FPS Camera");
POpticCamera = GetObjectFromList(objectManager.taggedObjects, objectManager.lastTaggedObject,
                            "BaseOpticCamera(Clone)");

Code:

        [StructLayout(LayoutKind.Explicit)]
        public struct BaseObject
        {
            [FieldOffset(0x0000)] public IntPtr previousObjectLink;

            [FieldOffset(0x0008)] public IntPtr nextObjectLink;

            [FieldOffset(0x0010)] public IntPtr _object;
        }

        public static IntPtr GetObjectFromList(IntPtr listPtr, IntPtr lastObjectPtr, string objectName, bool contains = false) {
            try {
                BaseObject activeObject = M.Read<BaseObject>(listPtr);
                BaseObject lastObject = M.Read<BaseObject>(lastObjectPtr);

                if (activeObject._object.IsValid()) {
                    while (activeObject._object.IsValid() && activeObject._object != lastObject._object) {
                        IntPtr classNamePtr = M.Read<IntPtr>((IntPtr)((ulong)activeObject._object + 0x60));
                        string name = M.ReadStr(classNamePtr, 256);
                        if (name == objectName || contains && name.ToLower().Contains(objectName.ToLower())) {
                            return activeObject._object;
                        }
                        activeObject = M.Read<BaseObject>(activeObject.nextObjectLink);
                    }
                }
                if (lastObject._object.IsValid()) {
                    IntPtr classNamePtr = M.Read<IntPtr>(lastObject._object + 0x60);
                    string name = M.ReadStr(classNamePtr, 256);

                    if (name == objectName || contains && name.ToLower().Contains(objectName.ToLower())) {
                        return lastObject._object;
                    }
                }
            } catch (Exception e) {
                Console.WriteLine([email protected]"[GO] Exception Thrown: {e}");
            }

            return IntPtr.Zero;
        }


Yeah I'm not seeing how that's any different than what I was doing (other than I was iterating the list backwards, but forwards had the same results obviously). I even wrote a new method to look like yours just incase I had some obvious mistake but it has the same results.

Here's everything in my tagged objects list:


And my code:


Edit: Also, are you still using this w2s where you have to adjust for scopes using fov and aspect ratio or is there a cleaner way?

fxb0t 28th December 2021 09:54 PM

Which list contains the minefields ?

Heashey 29th December 2021 12:28 AM

can anyone confirm if these are correct? my esp doesn't seem to work

Code:

uint64_t get_camera_entity() {
        uint64_t temp = fpsCamera;
        if (!(temp = read<uint64_t>(temp + 0x30)) || !(temp = read<uint64_t>(temp + 0x18)))
                return 0;
        return temp;
}

glm::mat4x4 get_optic_matrix() {
        local::WeaponAnim = read<UINT64>(local::local_player + 0x190);

        uint64_t temp = ReadChain(get_camera_entity(), { local::WeaponAnim, 0x88, 0x20, 0x28, 0x30 });
        return read<glm::mat4x4>(temp + 0xD8);
}

glm::mat4x4 get_view_matrix() {

        return read<glm::mat4x4>(get_camera_entity() + 0xDC);
}



All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

LmfaoGameIsRat 29th December 2021 01:10 AM

for real, has anyone been banned from setting the intensity on the shot controller? My guess is it just modifies your RecoilDirection.

gabbo200 29th December 2021 01:26 AM

Has anyone been able to make chams with external? I have looked into player renderer but shaders list seems empty.

LmfaoGameIsRat 29th December 2021 01:50 AM

Quote:

Originally Posted by TheMaster077777 (Post 3330514)
Been playing around with mono,
Does anyone ever encountered a crash from the GarbageCollector?

I retraced back the crash to GarbageCollectSharedAssets calling mono_unity_liveness_calculation_from_statics...

I tried patching mono_unity_liveness_calculation_from_statics which works but then all the textures get completely fucked...

pretty much the same issue as here, of what I understood, it's when the game unload the assets when going back to the main menu,
any ideas what I'm doing that could cause this?

Any time you access a MonoObject you need to pin it in memory with the mono GC API.

vZnu 29th December 2021 01:58 AM

Quote:

Originally Posted by Heashey (Post 3331300)
can anyone confirm if these are correct? my esp doesn't seem to work

Code:

uint64_t get_camera_entity() {
        uint64_t temp = fpsCamera;
        if (!(temp = read<uint64_t>(temp + 0x30)) || !(temp = read<uint64_t>(temp + 0x18)))
                return 0;
        return temp;
}

glm::mat4x4 get_optic_matrix() {
        local::WeaponAnim = read<UINT64>(local::local_player + 0x190);

        uint64_t temp = ReadChain(get_camera_entity(), { local::WeaponAnim, 0x88, 0x20, 0x28, 0x30 });
        return read<glm::mat4x4>(temp + 0xD8);
}

glm::mat4x4 get_view_matrix() {

        return read<glm::mat4x4>(get_camera_entity() + 0xDC);
}


for the optic view matrix, you are doing it wrong.

cxtgirl 29th December 2021 05:11 AM

Quote:

Originally Posted by LmfaoGameIsRat (Post 3331316)
for real, has anyone been banned from setting the intensity on the shot controller? My guess is it just modifies your RecoilDirection.

im currently doing that have had 0 issues

LmfaoGameIsRat 29th December 2021 05:15 AM

Quote:

Originally Posted by cxtgirl (Post 3331419)
im currently doing that have had 0 issues

For how long? Details?

cxtgirl 29th December 2021 06:18 AM

Quote:

Originally Posted by LmfaoGameIsRat (Post 3331421)
For how long? Details?

since the middle of last wipe, just setting the intensity of shot effector to 0

snaps 29th December 2021 01:19 PM

Quote:

Originally Posted by fxb0t (Post 3331215)
Which list contains the minefields ?

Iterate BorderZones and look for class name "Minefield".

wasd2 29th December 2021 02:44 PM

Maybe it will help those who want to draw a bone properly.
https://media.discordapp.net/attachm...35/unknown.png
https://media.discordapp.net/attachm...80/unknown.png

How to distinguish the player Artificial intelligence or Real player?

my first experience with unity games

ecthirune 29th December 2021 03:14 PM

Quote:

Originally Posted by wasd2 (Post 3331706)
Maybe it will help those who want to draw a bone properly.

my first experience with unity games

search please
https://www.unknowncheats.me/forum/3...-post5696.html

Heashey 29th December 2021 06:27 PM

Quote:

Originally Posted by vZnu (Post 3331339)
for the optic view matrix, you are doing it wrong.

what exactly is wrong

vZnu 29th December 2021 06:28 PM

hello, i need some help about getting the LOOT DISTANCE externally, does someone has an idea? i saw there is a LOOK_LOOT_DISTANCE in HardSettings but i have no idea how t access it

bhehe6813 29th December 2021 06:36 PM

Quote:

Originally Posted by 24jared24 (Post 3331209)
Yeah I'm not seeing how that's any different than what I was doing (other than I was iterating the list backwards, but forwards had the same results obviously). I even wrote a new method to look like yours just incase I had some obvious mistake but it has the same results.

Here's everything in my tagged objects list:


And my code:


Edit: Also, are you still using this w2s where you have to adjust for scopes using fov and aspect ratio or is there a cleaner way?


Mine is messed up too after latest update I think, I will figure it out and let you know. I am getting the optic camera from the tagged list though.

24jared24 29th December 2021 07:07 PM

Do the cameras still have an aspect ratio that people are using for scope w2s or is there a cleaner way to do w2s where you don't need to shift based on fov and aspect ratio?

Edit: Figured out my issues with w2s using the optical view matrix. Will share incase it helps anyone else out:
1. Only use optical view matrix if zoom level is > 1, I was doing > 0 at first
2. FOV and aspect ratio always come from FpsCamera, not from the optical camera

vZnu 29th December 2021 08:25 PM

Quote:

Originally Posted by 24jared24 (Post 3331924)
Do the cameras still have an aspect ratio that people are using for scope w2s or is there a cleaner way to do w2s where you don't need to shift based on fov and aspect ratio?

Edit: Figured out my issues with w2s using the optical view matrix. Will share incase it helps anyone else out:
1. Only use optical view matrix if zoom level is > 1, I was doing > 0 at first
2. FOV and aspect ratio always come from FpsCamera, not from the optical camera

I've been looking around for the optical camera view matrix and i'll be happy if you share how to et the optical camera view matrix

bhehe6813 29th December 2021 09:32 PM

Quote:

Originally Posted by 24jared24 (Post 3331924)
Do the cameras still have an aspect ratio that people are using for scope w2s or is there a cleaner way to do w2s where you don't need to shift based on fov and aspect ratio?

Edit: Figured out my issues with w2s using the optical view matrix. Will share incase it helps anyone else out:
1. Only use optical view matrix if zoom level is > 1, I was doing > 0 at first
2. FOV and aspect ratio always come from FpsCamera, not from the optical camera

Gold good, I just had a caching issue with the player zoom.

vZnu 29th December 2021 09:34 PM

Quote:

Originally Posted by bhehe6813 (Post 3332026)
Gold good, I just had a caching issue with the player zoom.

so do you know how to get optic camera view matrix? it will be helpful for me

24jared24 29th December 2021 11:24 PM

Quote:

Originally Posted by vZnu (Post 3332031)
so do you know how to get optic camera view matrix? it will be helpful for me

ecthirune posted how to get optical camera here: https://www.unknowncheats.me/forum/3...-post5711.html

If you use that it's
Code:

camera_object + 0xDC]
for optical view matrix

virii72 29th December 2021 11:36 PM

Does Loot Speed and Lucky Search work online? I've seem to get it to work fine in offline raids by adjusting the following for PlayerProfile->Skills:
Code:

    [150] AttentionLootSpeed : -.GClass1011.GClass1017
    [160] AttentionEliteLuckySearch : -.GClass1011.GClass1017

It does not seem to have any effect in online raids. Any tips?

vZnu 29th December 2021 11:43 PM

Quote:

Originally Posted by virii72 (Post 3332096)
Does Loot Speed and Lucky Search work online? I've seem to get it to work fine in offline raids by adjusting the following for PlayerProfile->Skills:
Code:

    [150] AttentionLootSpeed : -.GClass1011.GClass1017
    [160] AttentionEliteLuckySearch : -.GClass1011.GClass1017

It does not seem to have any effect in online raids. Any tips?

sadly seems like "skills" do not work anymore for me online & emu

Quote:

Originally Posted by 24jared24 (Post 3332089)
ecthirune posted how to get optical camera here: https://www.unknowncheats.me/forum/3...-post5711.html

If you use that it's
Code:

camera_object + 0xDC]
for optical view matrix

what is the offset of offsets.allCameras? since i dont have your source-code i cannot know


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

24jared24 30th December 2021 12:14 AM

Quote:

Originally Posted by virii72 (Post 3332096)
Does Loot Speed and Lucky Search work online? I've seem to get it to work fine in offline raids by adjusting the following for PlayerProfile->Skills:
Code:

    [150] AttentionLootSpeed : -.GClass1011.GClass1017
    [160] AttentionEliteLuckySearch : -.GClass1011.GClass1017

It does not seem to have any effect in online raids. Any tips?

I don't think either of those skills ever worked online. Search, attention, surgery speed, and strength all have a few server sided values.

Quote:

Originally Posted by vZnu (Post 3332099)

what is the offset of offsets.allCameras? since i dont have your source-code i cannot know


0x1798500

bhehe6813 30th December 2021 02:16 AM

Quote:

Originally Posted by virii72 (Post 3332096)
Does Loot Speed and Lucky Search work online? I've seem to get it to work fine in offline raids by adjusting the following for PlayerProfile->Skills:
Code:

    [150] AttentionLootSpeed : -.GClass1011.GClass1017
    [160] AttentionEliteLuckySearch : -.GClass1011.GClass1017

It does not seem to have any effect in online raids. Any tips?

Nope. One of my chinese users says that there is a cheat that offers what looks like AttentionEliteLuckySearch, at least for containers that is. I'm not sure how it's done, but the skill method does not work online as you've seen. I looked into this awhile ago and it looked possible internally.

ecthirune 30th December 2021 07:07 AM

Quote:

Originally Posted by vZnu (Post 3332099)
what is the offset of offsets.allCameras? since i dont have your source-code i cannot know

to prevent new questions about this offset:
ida, search "AllCameras".

Mareek 30th December 2021 11:24 AM

Code:

constexpr offset player_profile = 0x4B8;
constexpr offset physical = 0x4C8;
constexpr offset health_controller = 0x4F0;
constexpr offset hands_controller = 0x508;
constexpr offset is_local_player = 0x7FB;


vZnu 30th December 2021 11:47 AM

Quote:

Originally Posted by Mareek (Post 3332384)
Code:

constexpr offset player_profile = 0x4B8;
constexpr offset physical = 0x4C8;
constexpr offset health_controller = 0x4F0;
constexpr offset hands_controller = 0x508;
constexpr offset is_local_player = 0x7F8;


is local player is not valid
is_local_player = 0x7FB
offsets hopped with 0x8, so addition 0x8 to the old offset and you will get it

MaiGuaQQqun 30th December 2021 12:04 PM

For version 0.12.12.11.16415
All Offsets have been verified true.

Code:

namespace _GameObjectManager
{
        constexpr auto lastTaggedObject = 0x10;
        constexpr auto taggedObjects = 0x18;
        constexpr auto lastActiveObject = 0x20;
        constexpr auto activeObjects = 0x28;
}
namespace _ObjectList
{
        constexpr auto nextList = 0x8;
        constexpr auto Object = 0x10;
        namespace _Object
        {
                constexpr auto mutiName = 0x60;
        }
}
namespace _CameraInternal
{
        constexpr auto worldToScreenMatrix = 0xDC;
}
namespace _Dictionary
{
        constexpr auto entries = 0x18;
        namespace _Entry
        {
                constexpr auto key = 0x8;
                constexpr auto value = 0x10;
                constexpr auto _size = 0x18;
                constexpr auto _start = 0x20;
        }
        constexpr auto keys = 0x28;
        constexpr auto count = 0x40;
}
namespace _List
{
        constexpr auto listbase = 0x10;
        constexpr auto count = 0x18;
}
namespace _ListBase
{
        constexpr auto start = 0x20;
}
namespace _Array
{
        constexpr auto count = 0x18;
        constexpr auto start = 0x20;
}
namespace _String
{
        constexpr auto length = 0x10;
        constexpr auto start = 0x14;
}
namespace _HashSet
{
        constexpr auto _slots = 0x18;
        namespace _Slot
        {
                constexpr auto value = 0x8;
        }
}
namespace _RaycastHit
{
        constexpr auto m_Point = 0x10; //(类型 : UnityEngine.Vector3)
        constexpr auto m_Normal = 0x1c; //(类型 : UnityEngine.Vector3)
        constexpr auto m_FaceID = 0x28; //(类型 : System.UInt32)
        constexpr auto m_Distance = 0x2c; //(类型 : System.Single)
        constexpr auto m_UV = 0x30; //(类型; UnityEngine.Vector2)
        constexpr auto m_Collider = 0x38; //(类型 : System.Int32)
}
//[Class] EFT.MovementState : Object
namespace _MovementState
{
        constexpr auto Name = 0x2C;// (类型 : EPlayerState)
}
//PickUpState : EFT.MovementState
namespace _MovementContext
{
        constexpr auto _i_CurrentState = 0xB8;// (类型 : EFT.MovementState)
        constexpr auto _i_PreviousState = 0xC0;// (类型 : EFT.MovementState)
        //下面3个Vector2连着,dump中没有名字
        constexpr auto MovementDirection = 0x224;//(类型 : UnityEngine.Vector2)
        constexpr auto Rotation = 0x22C;//(类型 : UnityEngine.Vector2)
}
//[Class] EFT.Ballistics.BallisticCollider : BaseBallistic
namespace _BallisticCollider
{
        constexpr auto NetId = 0x28;//(类型 : System.Int32)
        constexpr auto HitType = 0x2c;//(类型 : EFT.NetworkPackets.EHitType)
        constexpr auto _typeOfMaterial = 0x30;//(类型 : EFT.Ballistics.MaterialType)
        constexpr auto PenetrationLevel = 0x34;//(类型 : System.Single)
        constexpr auto PenetrationChance = 0x38;//(类型 : System.Single)
        constexpr auto RicochetChance = 0x3c;//(类型 : System.Single)
        constexpr auto FragmentationChance = 0x40;//(类型 : System.Single)
        constexpr auto TrajectoryDeviationChance = 0x44;//(类型 : System.Single)
        constexpr auto TrajectoryDeviation = 0x48;//(类型 : System.Single)
}
//PositionHistory : System.Collections.Generic.List<Vector3>
namespace _Shots
{
        constexpr auto PositionHistory = 0x18;// (类型 : System.Collections.Generic.List<UnityEngine.Vector3>)
        constexpr auto HittedBallisticCollider = 0x38;//(类型: EFT.Ballistics.BallisticCollider)
        constexpr auto Fragments = 0x50;//(type : System.Collections.Generic.List<>)
        constexpr auto Parent = 0x68;
        constexpr auto _i_BulletState = 0x88;// private \uE8F0.EBulletState \uE000;//int32_0x80 : System.Int32
        constexpr auto AmmoLifeTime = 0x8C;//(类型 : System.Single)
        constexpr auto FragmentIndex = 0x90;// (类型 : System.Int32)
        constexpr auto RandomSeed = 0x94;//(type : System.Int32)
        constexpr auto TimeSinceShot = 0xE8;// (类型 : System.Single)
        constexpr auto StartPosition = 0xEC;//(类型 : UnityEngine.Vector3)
        constexpr auto StartVelocity = 0xF8;//(类型 : UnityEngine.Vector3)
        //下面两个Vector3连在一起
        constexpr auto _i_CurrentPositon = 0x104;//(类型 : UnityEngine.Vector3)
        constexpr auto _i_CurrentVelocity = 0x110;//(类型 : UnityEngine.Vector3)
        constexpr auto _i_RaycastHit = 0x128;//(类型 : UnityEngine.RaycastHit)
        constexpr auto IsForwardHit = 0x154;//(type: System.Boolean)
}

//[Class] EFT.Ballistics.BallisticsCalculator : MonoBehaviour, GInterface
namespace _BallisticsCalculator
{
        constexpr auto Shots = 0x18;//(类型 : System.Collections.Generic.List<>)
        constexpr auto _i_FinishedShots = 0x20;//(类型 : System.Collections.Generic.List<>)
}
//[Class] EFT.BifacialTransform : Object
namespace _BifacialTransform
{
        constexpr auto Original = 0x10;//(类型: UnityEngine.Transform)
}
//[Class] -.TransformLinks : MonoBehaviour
namespace _TransformLinks
{
        constexpr auto Self = 0x20;//(类型: UnityEngine.Transform)
}
//[Class] -.AIFirearmController : FirearmController
namespace _ItemHandsController
{
        constexpr auto _handsHierarchy = 0x58;//(类型: TransformLinks)
        constexpr auto Weapon = 0x60;//(type: EFT.InventoryLogic.Item)
        constexpr auto _player = 0x70;//(类型: EFT.Player)
        //[Class] -.AIFirearmController : FirearmController
        namespace _FirearmController
        {
                constexpr auto BallisticsCalculator = 0xE0;//(type: \uE8D3)
                constexpr auto Fireport = 0xE8;//(type: EFT.BifacialTransform)
                constexpr auto _isAiming = 0x145;//(type: System.Boolean)
                constexpr auto WeaponLn = 0x150;//(type: System.Single)
                constexpr auto _speedFactor = 0x168;// (type: System.Single)
        }
}
//[Class] EFT.InventoryLogic.WeaponTemplate : GClass
namespace _WeaponTemplate
{
        constexpr auto _defAmmoTemplate = 0x158;// [160] _defAmmoTemplate : EFT.InventoryLogic.AmmoTemplate
}
//[Class] EFT.InventoryLogic.AmmoTemplate : GClass
namespace _AmmoTemplate
{
        //↓连续
        constexpr auto Damage = 0x140;//[140] Damage : Int32
        constexpr auto ammoAccr = 0x144;//[144] ammoAccr : Int32        ammoAccr>0 -> return 100f / (float)(100 + this.ammoAccr);
        constexpr auto ammoRec = 0x148;//[148] ammoRec : Int32
        constexpr auto ammoDist = 0x14C;//[14C] ammoDist : Int32
        constexpr auto buckshotBullets = 0x150;//[150] buckshotBullets : Int32
        constexpr auto PenetrationPower = 0x154;// (类型 : System.Int32)
        //↑连续
        constexpr auto InitialSpeed = 0x17c;//(类型: System.Single)
        constexpr auto BallisticCoeficient = 0x18c;//[18C] BallisticCoeficient : Single
        constexpr auto BulletMassGram = 0x214;//[214] BulletMassGram : Single
        constexpr auto BulletDiameterMilimeters = 0x218;//[218] BulletDiameterMilimeters : Single
}
//[Class] EFT.InventoryLogic.ItemTemplate
namespace _ItemTemplate
{
        constexpr auto _id = 0x50;//(类型: System.String)
        constexpr auto QuestItem = 0x94;// (类型 : System.Boolean)
        constexpr auto Unlootable = 0xF1;//[F1] Unlootable : Boolean
        constexpr auto UnlootableFromSide = 0xF4;//[F4] UnlootableFromSide : System.Int32
}
//[Class] EFT.InventoryLogic.Item : Object
namespace _Item
{
        constexpr auto Template = 0x40;// [38] <Template>k__BackingField : EFT.InventoryLogic.ItemTemplate
        constexpr auto StackObjectsCount = 0x5C;// [5C] StackObjectsCount : Int32
        constexpr auto SpawnedInSession = 0x64;// [64] SpawnedInSession : Boolean
}
//[Class] EFT.InventoryLogic.StackSlot : Object, IContainer
namespace _StackSlot
{
        constexpr auto _items = 0x10;// [10] _items : System.Collections.Generic.List<Item>
        constexpr auto _deserializationList = 0x18;// [18] _deserializationList : System.Collections.Generic.SortedList<Int32, Item>
        constexpr auto ID = 0x20;// [20] <ID>k__BackingField : String
        constexpr auto Filters = 0x28;// [28] <Filters>k__BackingField : EFT.InventoryLogic.ItemFilter[]
        constexpr auto ParentItem = 0x30;// [30] <ParentItem>k__BackingField : EFT.InventoryLogic.Item
        constexpr auto MaxCount = 0x38;// [38] MaxCount : Int32
}
//[Class] EFT.InventoryLogic.Weapon : GClass
namespace _Weapon
{
        constexpr auto Chambers = 0x90;// [90] Chambers : EFT.InventoryLogic.Slot[]
        constexpr auto _magSlotCache = 0xA8;// [A0] _magSlotCache : EFT.InventoryLogic.Slot
}
//[Class] - .GClass1877 : GClass1849, IAmmoContainer
namespace _i_Magazine_Item
{
        constexpr auto _i_stackSlot = 0x88;//[88] stackSlot_0x88 : EFT.InventoryLogic.StackSlot
}
//[Class] EFT.InventoryLogic.Slot : Object, IContainer
namespace _Slot
{
        constexpr auto Id = 0x10;// [10] Id : String
        constexpr auto _reactiveContainedItem = 0x18;// [18] _reactiveContainedItem : -.GClass2543<Item>
        constexpr auto ConflictingSlots = 0x20;// [20] ConflictingSlots : System.Collections.Generic.Dictionary<String, Slot>
        constexpr auto BlockerSlots = 0x28;// [28] BlockerSlots : System.Collections.Generic.List<Slot>
        constexpr auto _cachedSlotName = 0x30;// [30] _cachedSlotName : String
        constexpr auto ContainedItem = 0x38;//[38] <ContainedItem>k__BackingField : EFT.InventoryLogic.Item
        constexpr auto ParentItem = 0x40;// [40] <ParentItem>k__BackingField : EFT.InventoryLogic.Item
        constexpr auto Filters = 0x48;// [48] <Filters>k__BackingField : EFT.InventoryLogic.ItemFilter[]
        constexpr auto Required = 0x50;// [50] Required : Boolean
        constexpr auto Deleted = 0x51;// [51] Deleted : Boolean
        constexpr auto MergeContainerWithChildren = 0x54;// [54] <MergeContainerWithChildren>k__BackingField : System.Int32
}
//[Class] EFT.Animations.PlayerSpring : MonoBehaviour
namespace _PlayerSpring
{
        constexpr auto HandsPosition = 0x30;// [30] HandsPosition : EFT.Animations.Spring
        constexpr auto HandsRotation = 0x38;// [38] HandsRotation : EFT.Animations.Spring
        constexpr auto Recoil = 0x40;// [40] Recoil : EFT.Animations.RecoilSpring
        constexpr auto CameraRotation = 0x48;// [48] CameraRotation : EFT.Animations.Spring
        constexpr auto CameraPosition = 0x50;// [50] CameraPosition : EFT.Animations.Spring
}
//[Class] -.Spring : Object
namespace _Spring
{
        constexpr auto Damping = 0x3C;//[3C] Damping : Single
        constexpr auto Current = 0x80;//[80] Current : UnityEngine.Vector3
}
//[Class] EFT.Animations.BreathEffector : Object, IEffector
namespace _BreathEffector
{
        constexpr auto Intensity = 0xA4;//[A4] Intensity : Single
}
//[Class] EFT.Animations.ProceduralWeaponAnimation : MonoBehaviour
namespace _ProceduralWeaponAnimation
{
        constexpr auto HandsContainer = 0x18;// [18] HandsContainer : EFT.Animations.PlayerSpring
        constexpr auto Breath = 0x28;// [28] Breath : EFT.Animations.BreathEffector
        constexpr auto FirearmController = 0x80;// (类型 : EFT.Player.FirearmController)
        //_pointOfView用来定位_i_AimSpeed
        constexpr auto _pointOfView = 0x194;// (类型: EFT.EPointOfView)
        constexpr auto _i_AimSpeed = 0x198;// (类型: System.Single)
        constexpr auto _shotDirection = 0x1E0;// (类型: UnityEngine.Vector3)
        constexpr auto CameraSmoothOut = 0x208;// (类型 : System.Single)
        constexpr auto AimSwayStartsThreshold = 0x228;//(类型 : System.Single)
        constexpr auto AimSwayMaxThreshold = 0x22C;//(类型 : System.Single)
        constexpr auto _i_AimSwayThreshold = 0x230;//(类型 : System.Single)
        //dnspy上看 //下面跟着最后一个float
        constexpr auto ShotNeedsFovAdjustments = 0x35D;//(类型: System.Boolean)
}
//[20] healControllerLogger_0x20
namespace _HealthController
{
        constexpr auto _i_BodyPartState_Dic = 0x50;//[50] dictionary_0x50 : System.Collections.Generic.Dictionary<Int32, BodyPartState<Var>>
        //.BodyPartState : Object
        namespace _N_BodyPartState
        {
                constexpr auto Health = 0x10;//[10] Health : EFT.HealthSystem.HealthValue
                constexpr auto IsDestroyed = 0x18;//(类型 : System.Boolean)
                //[Class] EFT.HealthSystem.HealthValue : Object
                namespace _N_Health
                {
                        constexpr auto _i_Value = 0x10;// : (类型 : )
                        //[Struct] EFT.HealthSystem.ValueStruct : ValueType
                        namespace _N_S_Value
                        {
                                constexpr auto Current = 0x0;//FLOAT
                                constexpr auto Maximum = 0x4;//FLOAT
                                constexpr auto Minimum = 0x8;//FLOAT
                        }
                }
        }
}
//[Class] - .GClass1901 : GClass18FD, GInterface7C9C, GInterface7C97, IItemOwner, IContainer
namespace _i_InventoryController
{
        constexpr auto SearchOperations = 0x110;// [118] SearchOperations : -.GClass2533<GClass1A27>
        constexpr auto _i_Inventory = 0x118;// [120] gClass18F4_0x120 : -.GClass18F4
        //[Class] -.GClass18F4 : Object
        namespace _i_n_Inventory
        {
                constexpr auto Equipment = 0x10;// [10] Equipment : -.GClass1928
                //[Class] -.GClass1928 : GClass182F
                //namespace _i_RTAs
        }
}
//[Class] EFT.ClientPlayer : NetworkPlayer
namespace _Player
{
        constexpr auto MovementContext = 0x40;//上面是(类型: EFT.Interactive.WorldInteractiveObject)
        constexpr auto _playerBody = 0xA8;// (类型: EFT.PlayerBody)
        constexpr auto ProceduralWeaponAnimation = 0x190;//(类型 : EFT.Animations.ProceduralWeaponAnimation)
        constexpr auto Profile = 0x4B8;//(类型: EFT.Profile)
        constexpr auto Physical = 0x4C8;//(type: \uE20A)
        constexpr auto _healthController = 0x4F0;//(type: \uE6D3)
        constexpr auto _inventoryController = 0x500;// (type : \uE7E7) //-.GClass1901
        constexpr auto _handsController = 0x508;//(type : EFT.Player.AbstractHandsController)
        constexpr auto _questController = 0x510;// (type : \uE657)
        constexpr auto RibcageScaleCurrent = 0x5E4;//(类型: System.Single)
        //找_corpseAppliedForce,往下找5个在一起的boolean_0x??? : Boolean, 然后_i_IsInventoryOpened是第二个       
        constexpr auto _i_IsInventoryOpened = 0x7B1;//[7A9] boolean_0x7A9 : Boolean
        //下面两个连着
        constexpr auto AggressorFound = 0x7FA;//[7A2] AggressorFound : Boolean
        constexpr auto IsYourPlayer = 0x7FB;//(type: System.Boolean)//看源码搜属性IsYourPlayer
}
//[Class] -.Player.BetterValueBlender : ValueBlender
namespace _BetterValueBlender
{
        constexpr auto Speed = 0x1C;// [1C] Speed : Single
}
//[Class] EFT.Profile : Object, IProfileDataContainer
namespace _Profile
{
        constexpr auto Id = 0x10;
        constexpr auto AccountId = 0x18;
        constexpr auto PetId = 0x20;
        constexpr auto Info = 0x28;
        constexpr auto Health = 0x40;
        constexpr auto Inventory = 0x48;
        constexpr auto Skills = 0x60;
        constexpr auto Stats = 0xE8;
        //RegistrationDate
        namespace _Info
        {
                constexpr auto Nickname = 0x10;
                constexpr auto GroupId = 0x18;
                constexpr auto EntryPoint = 0x20;
                constexpr auto Settings = 0x38;
                constexpr auto Side = 0x58;
                constexpr auto RegistrationDate = 0x5C;
                constexpr auto MemberCategory = 0x70;
                //BotDifficulty
                namespace _Settings
                {
                        constexpr auto Role = 0x10;//(类型: EFT.WildSpawnType)
                        constexpr auto BotDifficulty = 0x14;//(类型: BotDifficulty)
                        constexpr auto Experience = 0x18;//(类型: System.Int32)
                }

        }
        //WeaponBuffs
        namespace _Skills
        {
                constexpr auto WeaponBuffs = 0x10;// (类型 : System.Collections.Generic.Dictionary<System.Type, System.Collections.Generic.Dictionary<EFT.EBuffId,>>)
                constexpr auto AttentionLootSpeed = 0x150;//增加搜索速度0.02f
                constexpr auto AttentionExamine = 0x158;//增加找到更好战利品的几率+检视速度0.02f
                constexpr auto AttentionEliteLuckySearch = 0x160;//有几率瞬间完成搜索0.5elite
                constexpr auto AttentionEliteExtraLootExp = 0x168;//双倍搜索经验bool
                constexpr auto MagDrillsLoadSpeed = 0x170;//提高弹药装填速度0.6
                constexpr auto MagDrillsUnloadSpeed = 0x178;//提高弹药的卸载速度0.6
                constexpr auto MagDrillsInventoryCheckSpeed = 0x180;//提高使用菜单检查弹匣的速度0.8
                constexpr auto MagDrillsInventoryCheckAccuracy = 0x188;//提高使用菜单检查弹匣的准确性
                constexpr auto MagDrillsInstantCheck = 0x190;//移动到您的库存后立即检查弹匣bool
                constexpr auto MagDrillsLoadProgression = 0x198;//bool
                //[先找Skills然后.替换为+搜索]
                namespace _Value
                {
                        constexpr auto Value = 0x28;
                }
        }
        //OverallCounters
        namespace _Stats
        {
                constexpr auto OverallCounters = 0x18;//[18] OverallCounters : -.GClass16B6

        }
}
//[ : Counters (类型: System.Collections.Generic.Dictionary<]
namespace _i_OverallCounters
{
        constexpr auto Counters = 0x10;//public readonly Dictionary<\uE65E.\uE000, long> Counters = new Dictionary<\uE65E.\uE000, long>();
        //[10] Set : System.Collections.Generic.HashSet<String>
        namespace _CountersKey
        {
                constexpr auto Set = 0x10;//[10] Set : System.Collections.Generic.HashSet<String>
        }
}
//[Class] EFT.PlayerBody : MonoBehaviour
namespace _PlayerBody
{
        constexpr auto SkeletonRootJoint = 0x28;// (类型 : Diz.Skinning.Skeleton)
}
//[Class] Diz.Skinning.Skeleton : MonoBehaviour, ISerializationCallbackReceiver
namespace _Skeleton
{
        constexpr auto Bones = 0x18;// (类型 : System.Collections.Generic.Dictionary<System.String, UnityEngine.Transform>)
        constexpr auto _keys = 0x20;// (类型 : System.Collections.Generic.List<System.String>)
        constexpr auto _values = 0x28;// (类型 : System.Collections.Generic.List<UnityEngine.Transform>)
}
//OxygenRestoreRate
namespace _Physical
{
        constexpr auto Stamina = 0x38;
        constexpr auto HandsStamina = 0x40;
        constexpr auto Oxygen = 0x48;
}
//DisableRestoration
namespace _Stamina
{
        constexpr auto Current = 0x48;
        constexpr auto _i_BuffRestoration = 0x50;//(类型 : System.Single)
}

//[Class] -.ClientLocalGameWorld : ClientGameWorld
namespace _GameWorld
{
        constexpr auto ExfiltrationController = 0x18;//[18] gClass0B2E_0x18 : -.GClass0B2E
        constexpr auto LootList = 0x60;//[60] LootList : System.Collections.Generic.List<GInterface1536>
        constexpr auto RegisteredPlayers = 0x80;//[80] RegisteredPlayers : System.Collections.Generic.List<Player>
        constexpr auto Grenades = 0xF0;//[E8] Grenades : -.GClass05E2<Int32, Throwable>
        //(类型: System.Action<EFT.Interactive.ExfiltrationPoint>)
        namespace _ExfiltrationController
        {
                constexpr auto ExfiltrationPoint = 0x20;
                constexpr auto ScavExfiltrationPoint = 0x28;
                //[Class] EFT.Interactive.ExfiltrationPoint : MonoBehaviour,
                namespace _ExfiltrationPoint
                {
                        constexpr auto Settings = 0x58;//(类型: EFT.Interactive.ExitTriggerSettings)
                        constexpr auto _status = 0xA8;
                        //[Class] EFT.Interactive.ExitTriggerSettings : Object
                        namespace _ExitTriggerSettings
                        {
                                constexpr auto Name = 0x10;
                                constexpr auto EntryPoints = 0x18;
                        }
                }
        }
        namespace _Grenades
        {
                constexpr auto Dictionary = 0x10;
                constexpr auto List = 0x18;
        }
}

//[Class] EFT.Interactive.LootItem : InteractableObject, GInterface
namespace _LootItem
{
        constexpr auto ItemOwner = 0x48;//[48] ItemOwner : -.GClass1A61
        constexpr auto Item = 0x50;//[50] item_0x50 : EFT.InventoryLogic.Item
        constexpr auto MovingPlatform = 0x58;//(类型: EFT.MovingPlatforms.MovingPlatform)
        constexpr auto Name = 0x60;//(类型 : System.String)
        constexpr auto StaticId = 0x68;//(类型 : System.String)
        constexpr auto ItemId = 0x70;//(类型 : System.String)
        constexpr auto TemplateId = 0x78;//(类型: System.String)
        //[Class] EFT.Interactive.Corpse : LootItem
        namespace _Corpse
        {
                constexpr auto _pelvis = 0x110;//[120] _pelvis : UnityEngine.Transform
                constexpr auto PlayerBody = 0x118;//(type: EFT.PlayerBody)
                constexpr auto _i_Side = 0x130;//int32_0x130 : System.Int32
        }
}
//[Class] EFT.Interactive.LootableContainer : WorldInteractiveObject, GInterface
namespace _LootableContainer
{
        constexpr auto Grips = 0xA0;//[A0] Grips : -.GripPose[]
        constexpr auto ItemOwner = 0x108;//[108] ItemOwner : -.GClass1A5F
        //: Object, IItemOwner, IContainer, IDatabaseIdGenerator
        namespace _i_ItemOwner
        {
                constexpr auto itemFilterArray = 0x98;// [90] itemFilterArray_0x90 : EFT.InventoryLogic.ItemFilter[]
                //连续三个item的第一个
                constexpr auto _i_RootItem = 0xA0; //[98] item_0x98 : EFT.InventoryLogic.Item
                // : Item, IContainerCollection, IApplicable
                namespace _i_RTAs
                {
                        constexpr auto Grids = 0x68;// [68] Grids : -.GClass1799[]
                        constexpr auto Slots = 0x70;// [70] Slots : EFT.InventoryLogic.Slot[]
                        // : Object, IContainer
                        namespace _i_Grids
                        {
                                constexpr auto _i_ItemCollection = 0x40;//[40] gClass189E_0x40 : -.GClass189E
                                constexpr auto itemFilterArray = 0x48;// [48] itemFilterArray_0x48 : EFT.InventoryLogic.ItemFilter[]
                                // : Object, IEnumerable`1, IEnumerable
                                namespace _i_Grids2
                                {
                                        constexpr auto dictionary = 0x10;// [10] dictionary_0x10 : System.Collections.Generic.Dictionary<Item, LocationInGrid>
                                        constexpr auto list = 0x18;// [18] list_0x18 : System.Collections.Generic.List<Item>
                                }
                        }
                }
        }
}
//[Class] EFT.UI.CommonUI : MonoBehaviourSingleton`1
namespace _CommonUI
{
        constexpr auto InventoryScreen = 0x30;// [30] InventoryScreen : EFT.UI.InventoryScreen
}

//[Class] EFT.UI.InventoryScreen : BaseScreen`2
namespace _InventoryScreen
{
        constexpr auto profile = 0xF0;// [F0] profile_0xF0 : EFT.Profile
}
//[Class] -.ThermalVision : MonoBehaviour, GInterface
namespace _ThermalVision
{
        constexpr auto ThermalVisionUtilities = 0x18;//[18] ThermalVisionUtilities : -.ThermalVisionUtilities
        constexpr auto On = 0xD0;//[D0] On : Boolean
        constexpr auto IsNoisy = 0xD1;//[D1] IsNoisy : Boolean
        constexpr auto IsFpsStuck = 0xD2;//[D2] IsFpsStuck : Boolean
        constexpr auto IsMotionBlurred = 0xD3;//[D3] IsMotionBlurred : Boolean
        constexpr auto IsGlitch = 0xD4;//[D4] IsGlitch : Boolean
        constexpr auto IsPixelated = 0xD5;//[D5] IsPixelated : Boolean
        constexpr auto UnsharpRadiusBlur = 0xDC;//[DC] UnsharpRadiusBlur : Single
        constexpr auto UnsharpBias = 0xE0;//[E0] UnsharpBias : Single
}
//[Class] -.ThermalVisionUtilities : Object
namespace _ThermalVisionUtilities
{
        constexpr auto ValuesCoefs = 0x18;//[18] ValuesCoefs : -.ValuesCoefs
        constexpr auto CurrentRampPalette = 0x30;//[30] CurrentRampPalette : System.Int32
        constexpr auto DepthFade = 0x34;//[34] DepthFade : Single
}
//[Class] -.ValuesCoefs : Object
namespace _ValuesCoefs
{
        constexpr auto MainTexColorCoef = 0x10;//[10] MainTexColorCoef : Single
        constexpr auto MinimumTemperatureValue = 0x14;//[14] MinimumTemperatureValue : Single
        constexpr auto RampShift = 0x18;//[18] RampShift : Single
}
//[Class] -.VisorEffect : MonoBehaviour
namespace _VisorEffect
{
        constexpr auto Intensity = 0xB8;//[B8] Intensity : Single
}


krembo 30th December 2021 03:30 PM

Airdrop containers were added in the last update.
They are in the loot list, read them as containers.
They spawn from the start of the game and at certain points will be moved by a plane.

**edit**
Item id: 61a89e5445a2672acf66c877

MrCrashU 30th December 2021 04:33 PM

Is anyone else using 0x18 as the local player offset and just caching the true variable?

virii72 30th December 2021 04:50 PM

Quote:

Originally Posted by MrCrashU (Post 3332573)
Is anyone else using 0x18 as the local player offset and just caching the true variable?

Yep, that has been working for me for a while.

vZnu 30th December 2021 04:54 PM

Quote:

Originally Posted by virii72 (Post 3332597)
Yep, that has been working for me for a while.

its better to use the is_local_player in the EFT.Player, because when you press ESC (menu) the value turns to 0 (false) if you use the 0x18

Quote:

Originally Posted by MaiGuaQQqun (Post 3332404)
For version 0.12.12.11.16415
All Offsets have been verified true.

Code:

namespace _GameObjectManager
{
        constexpr auto lastTaggedObject = 0x10;
        constexpr auto taggedObjects = 0x18;
        constexpr auto lastActiveObject = 0x20;
        constexpr auto activeObjects = 0x28;
}
namespace _ObjectList
{
        constexpr auto nextList = 0x8;
        constexpr auto Object = 0x10;
        namespace _Object
        {
                constexpr auto mutiName = 0x60;
        }
}
namespace _CameraInternal
{
        constexpr auto worldToScreenMatrix = 0xDC;
}
namespace _Dictionary
{
        constexpr auto entries = 0x18;
        namespace _Entry
        {
                constexpr auto key = 0x8;
                constexpr auto value = 0x10;
                constexpr auto _size = 0x18;
                constexpr auto _start = 0x20;
        }
        constexpr auto keys = 0x28;
        constexpr auto count = 0x40;
}
namespace _List
{
        constexpr auto listbase = 0x10;
        constexpr auto count = 0x18;
}
namespace _ListBase
{
        constexpr auto start = 0x20;
}
namespace _Array
{
        constexpr auto count = 0x18;
        constexpr auto start = 0x20;
}
namespace _String
{
        constexpr auto length = 0x10;
        constexpr auto start = 0x14;
}
namespace _HashSet
{
        constexpr auto _slots = 0x18;
        namespace _Slot
        {
                constexpr auto value = 0x8;
        }
}
namespace _RaycastHit
{
        constexpr auto m_Point = 0x10; //(类型 : UnityEngine.Vector3)
        constexpr auto m_Normal = 0x1c; //(类型 : UnityEngine.Vector3)
        constexpr auto m_FaceID = 0x28; //(类型 : System.UInt32)
        constexpr auto m_Distance = 0x2c; //(类型 : System.Single)
        constexpr auto m_UV = 0x30; //(类型; UnityEngine.Vector2)
        constexpr auto m_Collider = 0x38; //(类型 : System.Int32)
}
//[Class] EFT.MovementState : Object
namespace _MovementState
{
        constexpr auto Name = 0x2C;// (类型 : EPlayerState)
}
//PickUpState : EFT.MovementState
namespace _MovementContext
{
        constexpr auto _i_CurrentState = 0xB8;// (类型 : EFT.MovementState)
        constexpr auto _i_PreviousState = 0xC0;// (类型 : EFT.MovementState)
        //下面3个Vector2连着,dump中没有名字
        constexpr auto MovementDirection = 0x224;//(类型 : UnityEngine.Vector2)
        constexpr auto Rotation = 0x22C;//(类型 : UnityEngine.Vector2)
}
//[Class] EFT.Ballistics.BallisticCollider : BaseBallistic
namespace _BallisticCollider
{
        constexpr auto NetId = 0x28;//(类型 : System.Int32)
        constexpr auto HitType = 0x2c;//(类型 : EFT.NetworkPackets.EHitType)
        constexpr auto _typeOfMaterial = 0x30;//(类型 : EFT.Ballistics.MaterialType)
        constexpr auto PenetrationLevel = 0x34;//(类型 : System.Single)
        constexpr auto PenetrationChance = 0x38;//(类型 : System.Single)
        constexpr auto RicochetChance = 0x3c;//(类型 : System.Single)
        constexpr auto FragmentationChance = 0x40;//(类型 : System.Single)
        constexpr auto TrajectoryDeviationChance = 0x44;//(类型 : System.Single)
        constexpr auto TrajectoryDeviation = 0x48;//(类型 : System.Single)
}
//PositionHistory : System.Collections.Generic.List<Vector3>
namespace _Shots
{
        constexpr auto PositionHistory = 0x18;// (类型 : System.Collections.Generic.List<UnityEngine.Vector3>)
        constexpr auto HittedBallisticCollider = 0x38;//(类型: EFT.Ballistics.BallisticCollider)
        constexpr auto Fragments = 0x50;//(type : System.Collections.Generic.List<>)
        constexpr auto Parent = 0x68;
        constexpr auto _i_BulletState = 0x88;// private \uE8F0.EBulletState \uE000;//int32_0x80 : System.Int32
        constexpr auto AmmoLifeTime = 0x8C;//(类型 : System.Single)
        constexpr auto FragmentIndex = 0x90;// (类型 : System.Int32)
        constexpr auto RandomSeed = 0x94;//(type : System.Int32)
        constexpr auto TimeSinceShot = 0xE8;// (类型 : System.Single)
        constexpr auto StartPosition = 0xEC;//(类型 : UnityEngine.Vector3)
        constexpr auto StartVelocity = 0xF8;//(类型 : UnityEngine.Vector3)
        //下面两个Vector3连在一起
        constexpr auto _i_CurrentPositon = 0x104;//(类型 : UnityEngine.Vector3)
        constexpr auto _i_CurrentVelocity = 0x110;//(类型 : UnityEngine.Vector3)
        constexpr auto _i_RaycastHit = 0x128;//(类型 : UnityEngine.RaycastHit)
        constexpr auto IsForwardHit = 0x154;//(type: System.Boolean)
}

//[Class] EFT.Ballistics.BallisticsCalculator : MonoBehaviour, GInterface
namespace _BallisticsCalculator
{
        constexpr auto Shots = 0x18;//(类型 : System.Collections.Generic.List<>)
        constexpr auto _i_FinishedShots = 0x20;//(类型 : System.Collections.Generic.List<>)
}
//[Class] EFT.BifacialTransform : Object
namespace _BifacialTransform
{
        constexpr auto Original = 0x10;//(类型: UnityEngine.Transform)
}
//[Class] -.TransformLinks : MonoBehaviour
namespace _TransformLinks
{
        constexpr auto Self = 0x20;//(类型: UnityEngine.Transform)
}
//[Class] -.AIFirearmController : FirearmController
namespace _ItemHandsController
{
        constexpr auto _handsHierarchy = 0x58;//(类型: TransformLinks)
        constexpr auto Weapon = 0x60;//(type: EFT.InventoryLogic.Item)
        constexpr auto _player = 0x70;//(类型: EFT.Player)
        //[Class] -.AIFirearmController : FirearmController
        namespace _FirearmController
        {
                constexpr auto BallisticsCalculator = 0xE0;//(type: \uE8D3)
                constexpr auto Fireport = 0xE8;//(type: EFT.BifacialTransform)
                constexpr auto _isAiming = 0x145;//(type: System.Boolean)
                constexpr auto WeaponLn = 0x150;//(type: System.Single)
                constexpr auto _speedFactor = 0x168;// (type: System.Single)
        }
}
//[Class] EFT.InventoryLogic.WeaponTemplate : GClass
namespace _WeaponTemplate
{
        constexpr auto _defAmmoTemplate = 0x158;// [160] _defAmmoTemplate : EFT.InventoryLogic.AmmoTemplate
}
//[Class] EFT.InventoryLogic.AmmoTemplate : GClass
namespace _AmmoTemplate
{
        //↓连续
        constexpr auto Damage = 0x140;//[140] Damage : Int32
        constexpr auto ammoAccr = 0x144;//[144] ammoAccr : Int32        ammoAccr>0 -> return 100f / (float)(100 + this.ammoAccr);
        constexpr auto ammoRec = 0x148;//[148] ammoRec : Int32
        constexpr auto ammoDist = 0x14C;//[14C] ammoDist : Int32
        constexpr auto buckshotBullets = 0x150;//[150] buckshotBullets : Int32
        constexpr auto PenetrationPower = 0x154;// (类型 : System.Int32)
        //↑连续
        constexpr auto InitialSpeed = 0x17c;//(类型: System.Single)
        constexpr auto BallisticCoeficient = 0x18c;//[18C] BallisticCoeficient : Single
        constexpr auto BulletMassGram = 0x214;//[214] BulletMassGram : Single
        constexpr auto BulletDiameterMilimeters = 0x218;//[218] BulletDiameterMilimeters : Single
}
//[Class] EFT.InventoryLogic.ItemTemplate
namespace _ItemTemplate
{
        constexpr auto _id = 0x50;//(类型: System.String)
        constexpr auto QuestItem = 0x94;// (类型 : System.Boolean)
        constexpr auto Unlootable = 0xF1;//[F1] Unlootable : Boolean
        constexpr auto UnlootableFromSide = 0xF4;//[F4] UnlootableFromSide : System.Int32
}
//[Class] EFT.InventoryLogic.Item : Object
namespace _Item
{
        constexpr auto Template = 0x40;// [38] <Template>k__BackingField : EFT.InventoryLogic.ItemTemplate
        constexpr auto StackObjectsCount = 0x5C;// [5C] StackObjectsCount : Int32
        constexpr auto SpawnedInSession = 0x64;// [64] SpawnedInSession : Boolean
}
//[Class] EFT.InventoryLogic.StackSlot : Object, IContainer
namespace _StackSlot
{
        constexpr auto _items = 0x10;// [10] _items : System.Collections.Generic.List<Item>
        constexpr auto _deserializationList = 0x18;// [18] _deserializationList : System.Collections.Generic.SortedList<Int32, Item>
        constexpr auto ID = 0x20;// [20] <ID>k__BackingField : String
        constexpr auto Filters = 0x28;// [28] <Filters>k__BackingField : EFT.InventoryLogic.ItemFilter[]
        constexpr auto ParentItem = 0x30;// [30] <ParentItem>k__BackingField : EFT.InventoryLogic.Item
        constexpr auto MaxCount = 0x38;// [38] MaxCount : Int32
}
//[Class] EFT.InventoryLogic.Weapon : GClass
namespace _Weapon
{
        constexpr auto Chambers = 0x90;// [90] Chambers : EFT.InventoryLogic.Slot[]
        constexpr auto _magSlotCache = 0xA8;// [A0] _magSlotCache : EFT.InventoryLogic.Slot
}
//[Class] - .GClass1877 : GClass1849, IAmmoContainer
namespace _i_Magazine_Item
{
        constexpr auto _i_stackSlot = 0x88;//[88] stackSlot_0x88 : EFT.InventoryLogic.StackSlot
}
//[Class] EFT.InventoryLogic.Slot : Object, IContainer
namespace _Slot
{
        constexpr auto Id = 0x10;// [10] Id : String
        constexpr auto _reactiveContainedItem = 0x18;// [18] _reactiveContainedItem : -.GClass2543<Item>
        constexpr auto ConflictingSlots = 0x20;// [20] ConflictingSlots : System.Collections.Generic.Dictionary<String, Slot>
        constexpr auto BlockerSlots = 0x28;// [28] BlockerSlots : System.Collections.Generic.List<Slot>
        constexpr auto _cachedSlotName = 0x30;// [30] _cachedSlotName : String
        constexpr auto ContainedItem = 0x38;//[38] <ContainedItem>k__BackingField : EFT.InventoryLogic.Item
        constexpr auto ParentItem = 0x40;// [40] <ParentItem>k__BackingField : EFT.InventoryLogic.Item
        constexpr auto Filters = 0x48;// [48] <Filters>k__BackingField : EFT.InventoryLogic.ItemFilter[]
        constexpr auto Required = 0x50;// [50] Required : Boolean
        constexpr auto Deleted = 0x51;// [51] Deleted : Boolean
        constexpr auto MergeContainerWithChildren = 0x54;// [54] <MergeContainerWithChildren>k__BackingField : System.Int32
}
//[Class] EFT.Animations.PlayerSpring : MonoBehaviour
namespace _PlayerSpring
{
        constexpr auto HandsPosition = 0x30;// [30] HandsPosition : EFT.Animations.Spring
        constexpr auto HandsRotation = 0x38;// [38] HandsRotation : EFT.Animations.Spring
        constexpr auto Recoil = 0x40;// [40] Recoil : EFT.Animations.RecoilSpring
        constexpr auto CameraRotation = 0x48;// [48] CameraRotation : EFT.Animations.Spring
        constexpr auto CameraPosition = 0x50;// [50] CameraPosition : EFT.Animations.Spring
}
//[Class] -.Spring : Object
namespace _Spring
{
        constexpr auto Damping = 0x3C;//[3C] Damping : Single
        constexpr auto Current = 0x80;//[80] Current : UnityEngine.Vector3
}
//[Class] EFT.Animations.BreathEffector : Object, IEffector
namespace _BreathEffector
{
        constexpr auto Intensity = 0xA4;//[A4] Intensity : Single
}
//[Class] EFT.Animations.ProceduralWeaponAnimation : MonoBehaviour
namespace _ProceduralWeaponAnimation
{
        constexpr auto HandsContainer = 0x18;// [18] HandsContainer : EFT.Animations.PlayerSpring
        constexpr auto Breath = 0x28;// [28] Breath : EFT.Animations.BreathEffector
        constexpr auto FirearmController = 0x80;// (类型 : EFT.Player.FirearmController)
        //_pointOfView用来定位_i_AimSpeed
        constexpr auto _pointOfView = 0x194;// (类型: EFT.EPointOfView)
        constexpr auto _i_AimSpeed = 0x198;// (类型: System.Single)
        constexpr auto _shotDirection = 0x1E0;// (类型: UnityEngine.Vector3)
        constexpr auto CameraSmoothOut = 0x208;// (类型 : System.Single)
        constexpr auto AimSwayStartsThreshold = 0x228;//(类型 : System.Single)
        constexpr auto AimSwayMaxThreshold = 0x22C;//(类型 : System.Single)
        constexpr auto _i_AimSwayThreshold = 0x230;//(类型 : System.Single)
        //dnspy上看 //下面跟着最后一个float
        constexpr auto ShotNeedsFovAdjustments = 0x35D;//(类型: System.Boolean)
}
//[20] healControllerLogger_0x20
namespace _HealthController
{
        constexpr auto _i_BodyPartState_Dic = 0x50;//[50] dictionary_0x50 : System.Collections.Generic.Dictionary<Int32, BodyPartState<Var>>
        //.BodyPartState : Object
        namespace _N_BodyPartState
        {
                constexpr auto Health = 0x10;//[10] Health : EFT.HealthSystem.HealthValue
                constexpr auto IsDestroyed = 0x18;//(类型 : System.Boolean)
                //[Class] EFT.HealthSystem.HealthValue : Object
                namespace _N_Health
                {
                        constexpr auto _i_Value = 0x10;// : (类型 : )
                        //[Struct] EFT.HealthSystem.ValueStruct : ValueType
                        namespace _N_S_Value
                        {
                                constexpr auto Current = 0x0;//FLOAT
                                constexpr auto Maximum = 0x4;//FLOAT
                                constexpr auto Minimum = 0x8;//FLOAT
                        }
                }
        }
}
//[Class] - .GClass1901 : GClass18FD, GInterface7C9C, GInterface7C97, IItemOwner, IContainer
namespace _i_InventoryController
{
        constexpr auto SearchOperations = 0x110;// [118] SearchOperations : -.GClass2533<GClass1A27>
        constexpr auto _i_Inventory = 0x118;// [120] gClass18F4_0x120 : -.GClass18F4
        //[Class] -.GClass18F4 : Object
        namespace _i_n_Inventory
        {
                constexpr auto Equipment = 0x10;// [10] Equipment : -.GClass1928
                //[Class] -.GClass1928 : GClass182F
                //namespace _i_RTAs
        }
}
//[Class] EFT.ClientPlayer : NetworkPlayer
namespace _Player
{
        constexpr auto MovementContext = 0x40;//上面是(类型: EFT.Interactive.WorldInteractiveObject)
        constexpr auto _playerBody = 0xA8;// (类型: EFT.PlayerBody)
        constexpr auto ProceduralWeaponAnimation = 0x190;//(类型 : EFT.Animations.ProceduralWeaponAnimation)
        constexpr auto Profile = 0x4B8;//(类型: EFT.Profile)
        constexpr auto Physical = 0x4C8;//(type: \uE20A)
        constexpr auto _healthController = 0x4F0;//(type: \uE6D3)
        constexpr auto _inventoryController = 0x500;// (type : \uE7E7) //-.GClass1901
        constexpr auto _handsController = 0x508;//(type : EFT.Player.AbstractHandsController)
        constexpr auto _questController = 0x510;// (type : \uE657)
        constexpr auto RibcageScaleCurrent = 0x5E4;//(类型: System.Single)
        //找_corpseAppliedForce,往下找5个在一起的boolean_0x??? : Boolean, 然后_i_IsInventoryOpened是第二个       
        constexpr auto _i_IsInventoryOpened = 0x7B1;//[7A9] boolean_0x7A9 : Boolean
        //下面两个连着
        constexpr auto AggressorFound = 0x7FA;//[7A2] AggressorFound : Boolean
        constexpr auto IsYourPlayer = 0x7FB;//(type: System.Boolean)//看源码搜属性IsYourPlayer
}
//[Class] -.Player.BetterValueBlender : ValueBlender
namespace _BetterValueBlender
{
        constexpr auto Speed = 0x1C;// [1C] Speed : Single
}
//[Class] EFT.Profile : Object, IProfileDataContainer
namespace _Profile
{
        constexpr auto Id = 0x10;
        constexpr auto AccountId = 0x18;
        constexpr auto PetId = 0x20;
        constexpr auto Info = 0x28;
        constexpr auto Health = 0x40;
        constexpr auto Inventory = 0x48;
        constexpr auto Skills = 0x60;
        constexpr auto Stats = 0xE8;
        //RegistrationDate
        namespace _Info
        {
                constexpr auto Nickname = 0x10;
                constexpr auto GroupId = 0x18;
                constexpr auto EntryPoint = 0x20;
                constexpr auto Settings = 0x38;
                constexpr auto Side = 0x58;
                constexpr auto RegistrationDate = 0x5C;
                constexpr auto MemberCategory = 0x70;
                //BotDifficulty
                namespace _Settings
                {
                        constexpr auto Role = 0x10;//(类型: EFT.WildSpawnType)
                        constexpr auto BotDifficulty = 0x14;//(类型: BotDifficulty)
                        constexpr auto Experience = 0x18;//(类型: System.Int32)
                }

        }
        //WeaponBuffs
        namespace _Skills
        {
                constexpr auto WeaponBuffs = 0x10;// (类型 : System.Collections.Generic.Dictionary<System.Type, System.Collections.Generic.Dictionary<EFT.EBuffId,>>)
                constexpr auto AttentionLootSpeed = 0x150;//增加搜索速度0.02f
                constexpr auto AttentionExamine = 0x158;//增加找到更好战利品的几率+检视速度0.02f
                constexpr auto AttentionEliteLuckySearch = 0x160;//有几率瞬间完成搜索0.5elite
                constexpr auto AttentionEliteExtraLootExp = 0x168;//双倍搜索经验bool
                constexpr auto MagDrillsLoadSpeed = 0x170;//提高弹药装填速度0.6
                constexpr auto MagDrillsUnloadSpeed = 0x178;//提高弹药的卸载速度0.6
                constexpr auto MagDrillsInventoryCheckSpeed = 0x180;//提高使用菜单检查弹匣的速度0.8
                constexpr auto MagDrillsInventoryCheckAccuracy = 0x188;//提高使用菜单检查弹匣的准确性
                constexpr auto MagDrillsInstantCheck = 0x190;//移动到您的库存后立即检查弹匣bool
                constexpr auto MagDrillsLoadProgression = 0x198;//bool
                //[先找Skills然后.替换为+搜索]
                namespace _Value
                {
                        constexpr auto Value = 0x28;
                }
        }
        //OverallCounters
        namespace _Stats
        {
                constexpr auto OverallCounters = 0x18;//[18] OverallCounters : -.GClass16B6

        }
}
//[ : Counters (类型: System.Collections.Generic.Dictionary<]
namespace _i_OverallCounters
{
        constexpr auto Counters = 0x10;//public readonly Dictionary<\uE65E.\uE000, long> Counters = new Dictionary<\uE65E.\uE000, long>();
        //[10] Set : System.Collections.Generic.HashSet<String>
        namespace _CountersKey
        {
                constexpr auto Set = 0x10;//[10] Set : System.Collections.Generic.HashSet<String>
        }
}
//[Class] EFT.PlayerBody : MonoBehaviour
namespace _PlayerBody
{
        constexpr auto SkeletonRootJoint = 0x28;// (类型 : Diz.Skinning.Skeleton)
}
//[Class] Diz.Skinning.Skeleton : MonoBehaviour, ISerializationCallbackReceiver
namespace _Skeleton
{
        constexpr auto Bones = 0x18;// (类型 : System.Collections.Generic.Dictionary<System.String, UnityEngine.Transform>)
        constexpr auto _keys = 0x20;// (类型 : System.Collections.Generic.List<System.String>)
        constexpr auto _values = 0x28;// (类型 : System.Collections.Generic.List<UnityEngine.Transform>)
}
//OxygenRestoreRate
namespace _Physical
{
        constexpr auto Stamina = 0x38;
        constexpr auto HandsStamina = 0x40;
        constexpr auto Oxygen = 0x48;
}
//DisableRestoration
namespace _Stamina
{
        constexpr auto Current = 0x48;
        constexpr auto _i_BuffRestoration = 0x50;//(类型 : System.Single)
}

//[Class] -.ClientLocalGameWorld : ClientGameWorld
namespace _GameWorld
{
        constexpr auto ExfiltrationController = 0x18;//[18] gClass0B2E_0x18 : -.GClass0B2E
        constexpr auto LootList = 0x60;//[60] LootList : System.Collections.Generic.List<GInterface1536>
        constexpr auto RegisteredPlayers = 0x80;//[80] RegisteredPlayers : System.Collections.Generic.List<Player>
        constexpr auto Grenades = 0xF0;//[E8] Grenades : -.GClass05E2<Int32, Throwable>
        //(类型: System.Action<EFT.Interactive.ExfiltrationPoint>)
        namespace _ExfiltrationController
        {
                constexpr auto ExfiltrationPoint = 0x20;
                constexpr auto ScavExfiltrationPoint = 0x28;
                //[Class] EFT.Interactive.ExfiltrationPoint : MonoBehaviour,
                namespace _ExfiltrationPoint
                {
                        constexpr auto Settings = 0x58;//(类型: EFT.Interactive.ExitTriggerSettings)
                        constexpr auto _status = 0xA8;
                        //[Class] EFT.Interactive.ExitTriggerSettings : Object
                        namespace _ExitTriggerSettings
                        {
                                constexpr auto Name = 0x10;
                                constexpr auto EntryPoints = 0x18;
                        }
                }
        }
        namespace _Grenades
        {
                constexpr auto Dictionary = 0x10;
                constexpr auto List = 0x18;
        }
}

//[Class] EFT.Interactive.LootItem : InteractableObject, GInterface
namespace _LootItem
{
        constexpr auto ItemOwner = 0x48;//[48] ItemOwner : -.GClass1A61
        constexpr auto Item = 0x50;//[50] item_0x50 : EFT.InventoryLogic.Item
        constexpr auto MovingPlatform = 0x58;//(类型: EFT.MovingPlatforms.MovingPlatform)
        constexpr auto Name = 0x60;//(类型 : System.String)
        constexpr auto StaticId = 0x68;//(类型 : System.String)
        constexpr auto ItemId = 0x70;//(类型 : System.String)
        constexpr auto TemplateId = 0x78;//(类型: System.String)
        //[Class] EFT.Interactive.Corpse : LootItem
        namespace _Corpse
        {
                constexpr auto _pelvis = 0x110;//[120] _pelvis : UnityEngine.Transform
                constexpr auto PlayerBody = 0x118;//(type: EFT.PlayerBody)
                constexpr auto _i_Side = 0x130;//int32_0x130 : System.Int32
        }
}
//[Class] EFT.Interactive.LootableContainer : WorldInteractiveObject, GInterface
namespace _LootableContainer
{
        constexpr auto Grips = 0xA0;//[A0] Grips : -.GripPose[]
        constexpr auto ItemOwner = 0x108;//[108] ItemOwner : -.GClass1A5F
        //: Object, IItemOwner, IContainer, IDatabaseIdGenerator
        namespace _i_ItemOwner
        {
                constexpr auto itemFilterArray = 0x98;// [90] itemFilterArray_0x90 : EFT.InventoryLogic.ItemFilter[]
                //连续三个item的第一个
                constexpr auto _i_RootItem = 0xA0; //[98] item_0x98 : EFT.InventoryLogic.Item
                // : Item, IContainerCollection, IApplicable
                namespace _i_RTAs
                {
                        constexpr auto Grids = 0x68;// [68] Grids : -.GClass1799[]
                        constexpr auto Slots = 0x70;// [70] Slots : EFT.InventoryLogic.Slot[]
                        // : Object, IContainer
                        namespace _i_Grids
                        {
                                constexpr auto _i_ItemCollection = 0x40;//[40] gClass189E_0x40 : -.GClass189E
                                constexpr auto itemFilterArray = 0x48;// [48] itemFilterArray_0x48 : EFT.InventoryLogic.ItemFilter[]
                                // : Object, IEnumerable`1, IEnumerable
                                namespace _i_Grids2
                                {
                                        constexpr auto dictionary = 0x10;// [10] dictionary_0x10 : System.Collections.Generic.Dictionary<Item, LocationInGrid>
                                        constexpr auto list = 0x18;// [18] list_0x18 : System.Collections.Generic.List<Item>
                                }
                        }
                }
        }
}
//[Class] EFT.UI.CommonUI : MonoBehaviourSingleton`1
namespace _CommonUI
{
        constexpr auto InventoryScreen = 0x30;// [30] InventoryScreen : EFT.UI.InventoryScreen
}

//[Class] EFT.UI.InventoryScreen : BaseScreen`2
namespace _InventoryScreen
{
        constexpr auto profile = 0xF0;// [F0] profile_0xF0 : EFT.Profile
}
//[Class] -.ThermalVision : MonoBehaviour, GInterface
namespace _ThermalVision
{
        constexpr auto ThermalVisionUtilities = 0x18;//[18] ThermalVisionUtilities : -.ThermalVisionUtilities
        constexpr auto On = 0xD0;//[D0] On : Boolean
        constexpr auto IsNoisy = 0xD1;//[D1] IsNoisy : Boolean
        constexpr auto IsFpsStuck = 0xD2;//[D2] IsFpsStuck : Boolean
        constexpr auto IsMotionBlurred = 0xD3;//[D3] IsMotionBlurred : Boolean
        constexpr auto IsGlitch = 0xD4;//[D4] IsGlitch : Boolean
        constexpr auto IsPixelated = 0xD5;//[D5] IsPixelated : Boolean
        constexpr auto UnsharpRadiusBlur = 0xDC;//[DC] UnsharpRadiusBlur : Single
        constexpr auto UnsharpBias = 0xE0;//[E0] UnsharpBias : Single
}
//[Class] -.ThermalVisionUtilities : Object
namespace _ThermalVisionUtilities
{
        constexpr auto ValuesCoefs = 0x18;//[18] ValuesCoefs : -.ValuesCoefs
        constexpr auto CurrentRampPalette = 0x30;//[30] CurrentRampPalette : System.Int32
        constexpr auto DepthFade = 0x34;//[34] DepthFade : Single
}
//[Class] -.ValuesCoefs : Object
namespace _ValuesCoefs
{
        constexpr auto MainTexColorCoef = 0x10;//[10] MainTexColorCoef : Single
        constexpr auto MinimumTemperatureValue = 0x14;//[14] MinimumTemperatureValue : Single
        constexpr auto RampShift = 0x18;//[18] RampShift : Single
}
//[Class] -.VisorEffect : MonoBehaviour
namespace _VisorEffect
{
        constexpr auto Intensity = 0xB8;//[B8] Intensity : Single
}


how do you dump those offsets like that?

hollow 30th December 2021 07:43 PM

Quote:

Originally Posted by MrCrashU (Post 3332573)
Is anyone else using 0x18 as the local player offset and just caching the true variable?

you may as well just always assume the first player in the list is the local player

numagomedov 30th December 2021 07:45 PM

Quote:

Originally Posted by MrCrashU (Post 3332573)
Is anyone else using 0x18 as the local player offset and just caching the true variable?

I do that since ever and works fine.

Quote:

Originally Posted by hollow (Post 3332714)
you may as well just always assume the first player in the list is the local player

Thats sadly not always the case and there can be edge cases where its not the case atleast when I try it like that.

virii72 30th December 2021 08:02 PM

Quote:

Originally Posted by krembo (Post 3332525)
Airdrop containers were added in the last update.
They are in the loot list, read them as containers.
They spawn from the start of the game and at certain points will be moved by a plane.

**edit**
Item id: 61a89e5445a2672acf66c877

Is the air drop in [Class] EFT.ClientGameWorld -> [78] AllLoot?

I'm seeing 5 containers named `container_shoreline_scripts_0000[0-4]` with the correct stored items, but even after the box is floating down and when it lands those containers are still shown at x: -2000, y: -200 (on lighthouse).

What container can you get the correct location for where the airdrop landed?

krembo 30th December 2021 08:35 PM

Quote:

Originally Posted by virii72 (Post 3332728)
Is the air drop in [Class] EFT.ClientGameWorld -> [78] AllLoot?

I'm seeing 5 containers named `container_shoreline_scripts_0000[0-4]` with the correct stored items, but even after the box is floating down and when it lands those containers are still shown at x: -2000, y: -200 (on lighthouse).

What container can you get the correct location for where the airdrop landed?

No, the one at + 0x60, it's just like any other container in the game.
You find the position like you do on those.
And yeah at the start of the game it's gonna have an out of bound spawn and at some point one container will be picked randomly and be dropped.

hst 30th December 2021 08:39 PM

Does anyone know a good way to check if you are currently in a raid?

shaliuno 30th December 2021 08:40 PM

Quote:

Originally Posted by hst (Post 3332764)
Does anyone know a good way to check if you are currently in a raid?

gameworld existance?

virii72 30th December 2021 08:46 PM

Quote:

Originally Posted by krembo (Post 3332759)
No, the one at + 0x60, it's just like any other container in the game.
You find the position like you do on those.
And yeah at the start of the game it's gonna have an out of bound spawn and at some point one container will be picked randomly and be dropped.

Ok cool, I'll take a look at 0x60, thank you. Currently, I'm grabbing ground loot at 0x60, but I get all containers and loot in containers from 0x78. Everything seems to work that way for me currently, other than this new AirDrop box. It's been a while since I've reviewed it though.

ecthirune 30th December 2021 08:51 PM

Quote:

Originally Posted by hst (Post 3332764)
Does anyone know a good way to check if you are currently in a raid?

if your ViewCamera&matrix exists = you in raid.
if localGameWorld exists = you in raid.
if localGameWorld has players = you in raid.
build your logic aroud of any of that check.

dota2bot 30th December 2021 10:37 PM

can anyone share all the item/loot offsets? mine may be woefully outdated:

Code:

        LootItemProfile = 0x10,
        LootBasicInfo = 0x30,
        LootLocalization = 0x30,
        LootCoordinates = 0x8,
        LootLocationContainer = 0x38,
        LootPosition = 0xB0,
        LootInteractive = 0x28,
        LootItem = 0x50,
        LootItemOwner = 0x108,
        LootItemTemplate = 0x40,
    LookItemStack = 0x5C,
        LootItemGrids = 0x68,
        LootItemTemplateName = 0x10,
        LootItemTemplateId = 0x50,
        LootGridsCount = 0x18,
        LootGridsGrid = 0x20,
        LootGridDict = 0x40,
        LootDict = 0x10,
        LootDictEntries = 0x18,
        LootDictCount = 0x40,
        LootEntriesFirst = 0x28, // Entries + 0x28 + 0x18 * i


Code:

        for (const uint64_t& lootPtr : lootListPtr) {
                auto itemProfile = getLootItemProfile(lootPtr); if (!itemProfile) continue;
                auto basicInfo = getLootBasicInfo(itemProfile); if (!basicInfo) continue;
                auto interactive = read<uint64_t>(itemProfile + ETF_OFFSETS::LootInteractive); if (!interactive) continue;
                auto itemOwner = read<uint64_t>(interactive + ETF_OFFSETS::LootItemOwner);
                auto item = read<uint64_t>(interactive + ETF_OFFSETS::LootItem);
                auto itemTemplate = read<uint64_t>(item + ETF_OFFSETS::LootItemTemplate);

                // container
                if (itemOwner != 0 && itemTemplate == 0) {
                        // get position
                        auto baseObject = read<uint64_t>(interactive + 0x10); if (!baseObject) continue;
                        auto gameObject = read<uint64_t>(baseObject + 0x30); if (!gameObject) continue;
                        auto objectClass = read<uint64_t>(gameObject + 0x30); if (!objectClass) continue;
                        auto pointerToTransform_1 = read<uint64_t>(objectClass + 0x8); if (!pointerToTransform_1) continue;
                        auto pointerToTransform_2 = read<uint64_t>(pointerToTransform_1 + 0x38); if (!pointerToTransform_2) continue;
                        auto position = getPositionFromTransform(pointerToTransform_2);

                        // inside container
                        auto containerItem = read<uint64_t>(itemOwner + 0xa0);  if (!containerItem) continue;
                        auto gridsPtr = read<uint64_t>(containerItem + ETF_OFFSETS::LootItemGrids);  if (!gridsPtr) continue;
                        int32_t gridsCount = read<int32_t>(gridsPtr + ETF_OFFSETS::LootGridsCount);

                        if (gridsCount > 0) {
                                auto gridPtr = read<uint64_t>(gridsPtr + ETF_OFFSETS::LootGridsGrid);  if (!gridPtr) continue;
                                auto gridDictPtr = read<uint64_t>(gridPtr + ETF_OFFSETS::LootGridDict);  if (!gridDictPtr) continue;
                                auto dictPtr = read<uint64_t>(gridDictPtr + ETF_OFFSETS::LootDict);  if (!dictPtr) continue;

                                int32_t countInDict = read<int32_t>(dictPtr + ETF_OFFSETS::LootDictCount);

                                if (countInDict > 0) {
                                        auto entries = read<uint64_t>(dictPtr + ETF_OFFSETS::LootDictEntries);  if (!entries) continue;

                                        for (int j = 0; j < countInDict; j++) {
                                                auto containerItemPtr = read<uint64_t>(entries + 0x28 + (0x18 * j)); if (!containerItemPtr) continue;
                                                auto itemTemplatePtr = read<uint64_t>(containerItemPtr + 0x38); if (!itemTemplatePtr) continue;
                                                auto lootIdWide = getLootId(itemTemplatePtr);


ecthirune 30th December 2021 10:40 PM

Quote:

Originally Posted by dota2bot (Post 3332856)
can anyone share all the item/loot offsets? mine may be woefully outdated:

Full dump presented one page ago, why you can't look in it?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

24jared24 31st December 2021 12:25 AM

Quote:

Originally Posted by ecthirune (Post 3332772)
if your ViewCamera&matrix exists = you in raid.
if localGameWorld exists = you in raid.
if localGameWorld has players = you in raid.
build your logic aroud of any of that check.

I don't think this is reliable. All of those should be true when you enter hideout and some will stay valid even in the menus after.

gabbo200 31st December 2021 12:46 AM

what's the container name for the airdrop?

cxtgirl 31st December 2021 12:51 AM

Quote:

Originally Posted by gabbo200 (Post 3332957)
what's the container name for the airdrop?

got posted 1 page ago

overboostaltima 31st December 2021 01:20 AM

I havent updated this func in a while, havent been using it...

I found the item coords no problem, but I think my chain for the item ID is wrong.
I saw on the last page an entire dump, but it confused the heck out of me.

I just use the whole chain in one spot.


Code:


uint64_t loot_array = driver::read<uint64_t>(local_game_world + 0x60); //Loot list    local game world + 60
uint32_t count = driver::read<uint32_t>(loot_array + 0x18);          //_size int 32                  +18
uint64_t get_item_list = driver::read<uint64_t>(loot_array + 0x10); //items 
                                       
uint64_t loot = driver::read<uint64_t>(get_item_list + 0x20 + (i * 0x8));                        //20

uint64_t itemObject = driver::read<uintptr_t>(loot + 0x10);
uint64_t itemProfile = driver::read<uintptr_t>(itemObject + 0x28);
uint64_t itemtemp3 = driver::read<uintptr_t>(itemProfile + 0x10);
uint64_t itemtemp4 = driver::read<uintptr_t>(itemtemp3 + 0x30);
uint64_t m_pInteractive = driver::read<uintptr_t>(itemtemp4 + 0x60);
                                               
                                               
auto itemId = driver::read<uint64_t>(m_pInteractive + 0x70);

I was able to get item coords with the chain below but I wasn't able to get the item id yet.

Code:


uint64_t itemtemp11 = rpm<uintptr_t>(itemObject + 0x30);
uint64_t itemtemp12 = rpm<uintptr_t>(itemtemp11 + 0x30);
uint64_t TransformTwo = rpm<uintptr_t>(itemtemp12 + 0x08);

uint64_t m_pItemPosition = rpm<uint64_t>(TransformTwo + 0x38);                       
Vector3 itemCoord = rpm<Vector3>(m_pItemPosition + 0x90);

Thank you

cxtgirl 31st December 2021 03:51 AM

Quote:

Originally Posted by overboostaltima (Post 3332998)
I havent updated this func in a while, havent been using it...

I found the item coords no problem, but I think my chain for the item ID is wrong.
I saw on the last page an entire dump, but it confused the heck out of me.

I just use the whole chain in one spot.


Code:


uint64_t loot_array = driver::read<uint64_t>(local_game_world + 0x60); //Loot list    local game world + 60
uint32_t count = driver::read<uint32_t>(loot_array + 0x18);          //_size int 32                  +18
uint64_t get_item_list = driver::read<uint64_t>(loot_array + 0x10); //items 
                                       
uint64_t loot = driver::read<uint64_t>(get_item_list + 0x20 + (i * 0x8));                        //20

uint64_t itemObject = driver::read<uintptr_t>(loot + 0x10);
uint64_t itemProfile = driver::read<uintptr_t>(itemObject + 0x28);
uint64_t itemtemp3 = driver::read<uintptr_t>(itemProfile + 0x10);
uint64_t itemtemp4 = driver::read<uintptr_t>(itemtemp3 + 0x30);
uint64_t m_pInteractive = driver::read<uintptr_t>(itemtemp4 + 0x60);
                                               
                                               
auto itemId = driver::read<uint64_t>(m_pInteractive + 0x70);

I was able to get item coords with the chain below but I wasn't able to get the item id yet.

Code:


uint64_t itemtemp11 = rpm<uintptr_t>(itemObject + 0x30);
uint64_t itemtemp12 = rpm<uintptr_t>(itemtemp11 + 0x30);
uint64_t TransformTwo = rpm<uintptr_t>(itemtemp12 + 0x08);

uint64_t m_pItemPosition = rpm<uint64_t>(TransformTwo + 0x38);                       
Vector3 itemCoord = rpm<Vector3>(m_pItemPosition + 0x90);

Thank you

Code:

const auto profile = driver->read<uint64_t>( this->address + 0x10 );

const auto interactive = driver->read<uintptr_t>( profile + 0x28 );
const auto game_object = driver->read<uintptr_t>( profile + 0x30 );

const auto transform_1 = driver->read<uintptr_t>( game_object + 0x30 );
const auto transform_2 = driver->read<uintptr_t>( transform_1 + 0x8 );

const auto container_transform = driver->read<uintptr_t>( transform_2 + 0x28 );
if ( container_transform != NULL )
    this->base_pos = get_position( container_transform );
else
    this->base_pos = get_position( transform_2 + 0x38 );


const auto item_template = driver->read_chain<uintptr_t>( interactive, { 0x50, 0x40 } );
const auto id_obj = driver->read<uintptr_t>( item_template + 0x50 );

wchar_t guid[64] = {};
driver->read_buffer( id_obj + 0x14, &guid, sizeof( guid ) );
this->guid = guid;

this->address being the address of the item found when iterating loot list

overboostaltima 31st December 2021 04:00 AM

Quote:

Originally Posted by cxtgirl (Post 3333075)
Code:

const auto profile = driver->read<uint64_t>( this->address + 0x10 );

const auto interactive = driver->read<uintptr_t>( profile + 0x28 );
const auto game_object = driver->read<uintptr_t>( profile + 0x30 );

const auto transform_1 = driver->read<uintptr_t>( game_object + 0x30 );
const auto transform_2 = driver->read<uintptr_t>( transform_1 + 0x8 );

const auto container_transform = driver->read<uintptr_t>( transform_2 + 0x28 );
if ( container_transform != NULL )
    this->base_pos = get_position( container_transform );
else
    this->base_pos = get_position( transform_2 + 0x38 );


const auto item_template = driver->read_chain<uintptr_t>( interactive, { 0x50, 0x40 } );
const auto id_obj = driver->read<uintptr_t>( item_template + 0x50 );

wchar_t guid[64] = {};
driver->read_buffer( id_obj + 0x14, &guid, sizeof( guid ) );
this->guid = guid;

this->address being the address of the item found when iterating loot list

Thank you! :D

ecthirune 31st December 2021 05:38 AM

Quote:

Originally Posted by 24jared24 (Post 3332944)
I don't think this is reliable. All of those should be true when you enter hideout and some will stay valid even in the menus after.

Are you kiddin? Hideout has payer count >1?
im too lazy to add this checking, but from answers on same question from me i get all these solutions.
Not sure anyway.

C0le 31st December 2021 09:36 AM

Quote:

Originally Posted by RaiseHardError (Post 3288091)
Pricing Data:

Code:

        {"5c1d0efb86f7744baf2e7b7b", {"TerraGroup Labs keycard (Red)", 54481481}},
        {"5c0a840b86f7742ffa4f2482", {"T H I C C Items case", 17614095}},
        {"5c110624d174af029e69734c", {"T-7 Thermal Goggles with Night Vision mount", 15372000}},
        {"601948682627df266209af05", {"UVSR Taiga-1 survival machete", 6887081}},
        {"5b6d9ce188a4501afc1b2b25", {"T H I C C Weapon case", 6904551}},
        {"5c0126f40db834002a125382", {"Red Rebel ice pick", 4811633}},
        {"5c093ca986f7740a1867ab12", {"Secure container Kappa", 4900000}},
        {"59fb023c86f7746d0d4b423c", {"Weapon case", 4955405}},
        {"5857a8bc2459772bad15db29", {"Secure container Gamma", 1850000}},
        {"545cdb794bdc2d3a198b456a", {"6B43 Zabralo-Sh 6A body armor (0/85)", 1666690}},
        {"5bffdd7e0db834001b734a1a", {"Miller Bros. Blades M-2 Tactical Sword", 1570000}},
        {"59fb042886f7746c5005a7b2", {"Items case", 1229994}},
        {"59db794186f77448bc595262", {"Secure container Epsilon", 1100000}},
        {"57347ca924597744596b4e71", {"Graphics card", 886427}},
        {"5b7c710788a4506dec015957", {"Lucky Scav Junk box", 819926}},
        {"5d235bb686f77443f4331278", {"S I C C Organizational pouch", 750000}},
        {"5857a8b324597729ab0a0e7d", {"Secure container Beta", 750000}},
        {"5f60c74e3b85f6263c145586", {"Rys-T bulletproof helmet", 744898}},
        {"5e42c71586f7747f245e1343", {"ULTRA medical storage key", 698891}},
        {"59fafd4b86f7745ca07e1232", {"Key tool", 645416}},
        {"5d8e0e0e86f774321140eb56", {"RB-KPRL key", 649698}},
        {"5e42c81886f7742a01529f57", {"Object #11SR keycard", 568427}},
        {"59fb016586f7746d0d4b423a", {"Money case", 649207}},
        {"5c0530ee86f774697952d952", {"LEDX Skin Transilluminator", 621335}},
        {"5e71f70186f77429ee09f183", {"Twitch Rivals 2020 glasses", 541666}},
        {"5d9f1fa686f774726974a992", {"RB-ST key", 626626}},
        {"5d80cab086f77440535be201", {"RB-MP22 key", 549863}},
        {"5d1b5e94d7ad1a2b865a96b0", {"FLIR RS-32 2.25-9x 35mm 60Hz thermal riflescope", 514238}},
        {"5c093db286f7740a1b2617e3", {"Mr. Holodilnick thermal bag", 513652}},
        {"5d80ccac86f77470841ff452", {"RB-ORB1 key", 448487}},
        {"5bffe7930db834001b734a39", {"Crash Axe", 450000}},
        {"5fca13ca637ee0341a484f46", {"SJ9 TGLabs combat stimulant injector", 414423}},
        {"545cdb794bdc2d3a198b456a", {"6B43 Zabralo-Sh 6A body armor", 434250}},
        {"59faff1d86f7746c51718c9c", {"Physical bitcoin", 382721}},
        {"5a1eaa87fcdbcb001865f75e", {"Trijicon REAP-IR thermal scope", 410330}},
        {"544a11ac4bdc2d470e8b456a", {"Secure container Alpha", 360000}},
        {"5d03775b86f774203e7e0c4b", {"Phased array element", 339435}},
        {"5e4abb5086f77406975c9342", {"LBT 6094A Slick Plate Carrier", 339126}},
        {"5e2af55f86f7746d4159f07c", {"Grenade case", 319724}},
        {"60a283193cb70855c43a381d", {"NFM THOR Integrated Carrier body armor", 327403}},
        {"6038b4b292ec1c3103795a0b", {"LBT 6094A Slick Plate Carrier (Tan)", 309056}},
        {"5aafbcd986f7745e590fff23", {"Medicine case", 322012}},
        {"5c94bbff86f7747ee735c08f", {"TerraGroup Labs access keycard", 300309}},
        {"5d947d3886f774447b415893", {"RB-SMP key", 274475}},
        {"5e4ac41886f77406a511c9a8", {"Ars Arma CPC MOD.2 plate carrier", 326943}},
        {"5c1d0c5f86f7744bb2683cf0", {"TerraGroup Labs keycard (Blue)", 300000}},
        {"5c1e495a86f7743109743dfb", {"TerraGroup Labs keycard (Violet)", 300000}},
        {"590c60fc86f77412b13fddcf", {"Documents case", 314648}},
        {"6038b4ca92ec1c3103795a0d", {"LBT 6094A Slick Plate Carrier (Olive)", 299909}},
        {"5fd4c474dd870108a754b241", {"5.11 Tactical Hexgrid plate carrier", 279197}},
        {"5d80c6c586f77440351beef1", {"RB-OB key", 224152}},
        {"5b44cad286f77402a54ae7e5", {"5.11 Tactical TacTec plate carrier", 286059}},
        {"5c0e625a86f7742d77340f62", {"BNTI Zhuk-6a heavy armor", 277565}},
        {"5d80c8f586f77440373c4ed0", {"RB-OP key", 279765}},
        {"5c12613b86f7743bbe2c3f76", {"Folder with intelligence", 239201}},
        {"5c0e541586f7747fa54205c9", {"6B13 M assault armor (Tan)", 252933}},
        {"5c093e3486f77430cb02e593", {"Dogtag case", 254352}},
        {"5c127c4486f7745625356c13", {"Magazine case", 235030}},
        {"609e860ebd219504d8507525", {"Crye Precision AVS MBAV (Tagilla Edition)", 214034}},
        {"5c0558060db834001b735271", {"GPNVG-18 Night Vision goggles", 313825}},
        {"5d95d6be86f77424444eb3a7", {"RB-PSV2 key", 180515}},
        {"5d03794386f77420415576f5", {"6-STEN-140-M military battery", 218463}},
        {"5780cf7f2459777de4559322", {"Dorm room 314 marked key", 206660}},
        {"5d1b376e86f774252519444e", {"\"Fierce Hatchling\" moonshine", 203409}},
        {"558022b54bdc2dac148b458d", {"EOTech EXPS3 holographic sight", 96771}},
        {"5b44cd8b86f774503d30cba2", {"IOTV Gen4 body armor (full protection)", 209158}},
        {"5ca21c6986f77479963115a7", {"FORT Redut-T5 body armor", 188296}},
        {"5df8a4d786f77412672a1e3b", {"6Sh118 raid backpack", 206767}},
        {"5d08d21286f774736e7c94c3", {"Shturman's stash key", 171239}},
        {"5e9dacf986f774054d6b89f4", {"FORT Defender-2 body armor", 180973}},
        {"60a3c68c37ea821725773ef5", {"CQC Osprey MK4A plate carrier (Protection, MTP)", 204240}},
        {"567143bf4bdc2d1a0f8b4567", {"Pistol case", 188309}},
        {"5f2aa46b878ef416f538b567", {"RFB 7.62x51 18 inch barrel", 173000}},
        {"5c05300686f7746dce784e5d", {"VPX Flash Storage Module", 171452}},
        {"5d1b36a186f7742523398433", {"Metal fuel tank", 166452}},
        {"5e42c83786f7742a021fdf3c", {"Object #21WS keycard", 155008}},
        {"5a16b7e1fcdbcb00165aa6c9", {"Ops-Core FAST multi-hit ballistic face shield", 175122}},
        {"56ea7293d2720b8d4b8b45ba", {"P226 Sight Mount 220-239 rear sight bearing", 165000}},
        {"5ede7b0c6d23e5473e6e8c66", {"RB-RLSA key", 83232}},
        {"5ca20ee186f774799474abc2", {"Vulkan-5 (LShZ-5) heavy helmet", 162242}},
        {"5b44cf1486f77431723e3d05", {"IOTV Gen4 body armor (assault kit)", 176052}},
        {"5e00c1ad86f774747333222c", {"Team Wendy EXFIL Ballistic Helmet (Black)", 164736}},
        {"5aafbde786f774389d0cbc0f", {"Ammunition case", 152820}},
        {"5c0e774286f77468413cc5b2", {"Mystery Ranch Blackjack 50 backpack (Multicam)", 189789}},
        {"5addbfef5acfc400185c2857", {"M14 UTG 4-Point Locking Deluxe mount", 102028}},
        {"5c052e6986f7746b207bc3c9", {"Portable defibrillator", 158082}},
        {"5f5f41476bdad616ad46d631", {"BNTI Korund-VM armor", 143929}},
        {"5ede7a8229445733cb4c18e2", {"RB-PKPM marked key", 152179}},
        {"5a0ee30786f774023b6ee08f", {"Health Resort west wing room 216 key", 146587}},
        {"5fc22d7c187fea44d52eda44", {"SWORD International Mk-18 .338 LM marksman rifle", 144289}},
        {"5a0eb6ac86f7743124037a28", {"Shoreline cottage back door key", 175205}},
        {"5c0e746986f7741453628fe5", {"WARTECH TV-110 plate carrier rig", 163017}},
        {"5c052fb986f7746b2101e909", {"UHF RFID Reader", 147075}},
        {"5ca2151486f774244a3b8d30", {"FORT Redut-M body armor", 143212}},
        {"5b44d0de86f774503d30cba8", {"IOTV Gen4 body armor (high mobility kit)", 152294}},
        {"5d120a28d7ad1a1c8962e295", {"AR-15 DoubleStar ACE 0.5 inch recoil pad", 44688}},
        {"5efde6b4f5448336730dbd61", {"Keycard with a blue marking", 141620}},
        {"5d80cd1a86f77402aa362f42", {"RB-ORB3 key", 101948}},
        {"5d80c88d86f77440556dbf07", {"RB-AM key", 94114}},
        {"5dfa3d2b0dee1b22f862eade", {"KAC PRS/QDC 7.62x51 sound suppressor", 116507}},
        {"5fc23678ab884124df0cd590", {"Mk-18 .338 LM 24 inch barrel", 125740}},
        {"5b4736b986f77405cb415c10", {"TROY QARS 4.2 inch rail", 74901}},
        {"5a78813bc5856700186c4abe", {"M870 Magpul SGA polymer stock", 123148}},
        {"5c1bc5af2e221602b412949b", {"Zenit RK-2 foregrip", 121500}},
        {"59bfe68886f7746004266202", {"AR-15 Vltor MUR-1S 5.56x45 upper receiver", 124153}},
        {"5ab8e79e86f7742d8b372e78", {"BNTI Gzhel-K armor", 123900}},
        {"5d947d4e86f774447b415895", {"RB-KSM key", 134668}},
        {"5d5d87f786f77427997cfaef", {"Ars Arma A18 Skanda plate carrier", 127000}},
        {"59e3639286f7741777737013", {"Bronze lion", 112633}},
        {"5c793fc42e221600114ca25d", {"Strike Industries Advanced Receiver Extension buffer tube (Anodized Red)", 109949}},
        {"59db3a1d86f77429e05b4e92", {"AR-15 Naroh Arms GRAL-S pistol grip", 111270}},
        {"5ea18c84ecf1982c7712d9a2", {"Bastion helmet armor plate", 123789}},
        {"5e81ebcd8e146c7080625e15", {"FN40GL Mk2 grenade launcher", 110000}},
        {"606587252535c57a13424cfd", {"CMMG Mk47 Mutant 7.62x39 assault rifle", 110777}},
        {"5ab8ebf186f7742d8b372e80", {"SSO \"Attack 2\" raid backpack", 128979}},
        {"544a5caa4bdc2d1a388b4568", {"Crye Precision AVS plate carrier", 123562}},
        {"5c0e655586f774045612eeb2", {"Highcom Trooper TFO armor (Multicam) (0/85)", 114404}},
        {"5c0e655586f774045612eeb2", {"Highcom Trooper TFO armor (Multicam)", 120337}},
        {"5b3cadf35acfc400194776a0", {"TT ornated side grips", 105556}},
        {"5c052f6886f7746b1e3db148", {"Military COFDM wireless Signal Transmitter", 105785}},
        {"60a3c70cde5f453f634816a3", {"CQC Osprey MK4A plate carrier (Assault, MTP)", 129570}},
        {"5aa7e276e5b5b000171d0647", {"Altyn assault helmet", 134346}},
        {"5c793fb92e221644f31bfb64", {"Strike Industries Advanced Receiver Extension buffer tube", 111213}},
        {"5df8e085bb49d91fb446d6a8", {"SR-25 Ambidextrous charging handle", 40523}},
        {"5ad5d7d286f77450166e0a89", {"KIBA Arms International outlet outer door key", 96659}},
        {"60a7ad2a2198820d95707a2e", {"Tagilla's welding mask \"UBEY\"", 101045}},
        {"6065878ac9cf8012264142fd", {"Mk47 409mm barrel", 120584}},
        {"5b4329f05acfc47a86086aa1", {"DevTac Ronin ballistic helmet", 101552}},
        {"57c44b372459772d2b39b8ce", {"AS VAL 9x39 suppressed assault rifle", 101506}},
        {"5c78f2492e221600114c9f04", {"AR-15 SAI 14.5 inch QD Rail handguard", 98087}},
        {"5d80c6fc86f774403a401e3c", {"RB-TB key", 95775}},
        {"5751a89d24597722aa0e8db0", {"Golden Star balm", 106036}},
        {"5d1b371186f774253763a656", {"Expeditionary fuel tank", 95662}},
        {"5a13ef7e86f7741290491063", {"Health Resort west wing room 301 key", 99497}},
        {"5addaffe86f77470b455f900", {"KIBA Arms International outlet inner grate door key", 95216}},
        {"5c0e722886f7740458316a57", {"ANA Tactical M1 armored rig", 111189}},
        {"5fc235db2770a0045c59c683", {"Mk-18 18 inch handguard", 97777}},
        {"5a154d5cfcdbcb001a3b00da", {"Ops-Core FAST MT Super High Cut helmet (Black)", 111660}},
        {"5a367e5dc4a282000e49738f", {"Remington R11 RSASS 7.62x51 marksman rifle", 97376}},
        {"5d00ec68d7ad1a04a067e5be", {"JP Enterprises Gas System-5B", 127603}},
        {"5ad7247386f7747487619dc3", {"Goshan cash register key", 103818}},
        {"5a69a2ed8dc32e000d46d1f1", {"AS VAL Rotor 43 pistol grip & buffer tube", 95768}},
        {"5cc700b9e4a949000f0f0f25", {"FN P90 stock", 94444}},
        {"5c48a14f2e2216152006edd7", {"MDR handguard", 93000}},
        {"5f60b34a41e30a4ab12a6947", {"Galvion Caiman Hybrid helmet", 90555}},
        {"5c17a7ed2e2216152142459c", {"Crye Precision AirFrame helmet (Tan)", 105495}},
        {"60a7ad3a0c5cb24b0134664a", {"Tagilla's welding mask \"Gorilla\"", 92071}},
        {"5ac8d6885acfc400180ae7b0", {"Ops-Core FAST MT Super High Cut helmet (Tan)", 102496}},
        {"59ccd11386f77428f24a488f", {"PP-19-01 Vityaz-SN gas tube", 52266}},
        {"5cc701aae4a949000e1ea45c", {"FN P90 5.7x28 10.5 inch barrel", 84384}},
        {"5c05308086f7746b2101e90b", {"Virtex programmable processor", 100318}},
        {"5d0375ff86f774186372f685", {"Military cable", 95268}},
        {"58889d0c2459775bc215d981", {"DVL-10 stock", 70398}},
        {"5d1b2f3f86f774252167a52c", {"FP-100 filter absorber", 94799}},
        {"5d80c78786f774403a401e3e", {"RB-AK key", 75597}},
        {"5d0379a886f77420407aa271", {"OFZ 30x160mm shell", 83932}},
        {"5c0e874186f7745dc7616606", {"Maska-1Shch bulletproof helmet (Killa)", 83442}},
        {"5c12620d86f7743f8b198b72", {"Tetriz portable game console", 83301}},
        {"5d025cc1d7ad1a53845279ef", {"HK Ergo PSG-1 style pistol grip", 82845}},
        {"5d44064fa4b9361e4f6eb8b5", {"Thunder Beast Arms Ultra 5 sound suppressor", 96836}},
        {"5e848cc2988a8701445df1e8", {"TOZ KS-23M 23x75mm pump-action shotgun", 91378}},
        {"5dcbd56fdbd3d91b3e5468d5", {"Desert Tech MDR 7.62x51 assault rifle", 91556}},
        {"59c1383d86f774290a37e0ca", {"5.56x45 Magpul PMAG D-60 60-round magazine", 82635}},
        {"5e01ef6886f77445f643baa4", {"Team Wendy EXFIL Ballistic Helmet (Coyote Tan)", 85283}},
        {"5ea058e01dbce517f324b3e2", {"Tac-Kek Heavy Trooper mask", 93872}},
        {"5da5cdcd86f774529238fb9b", {"RB-RH key", 65208}},
        {"5dcbd6b46ec07c0c4347a564", {"MDR handguard (Black)", 81250}},
        {"5c1267ee86f77416ec610f72", {"Chain with Prokill medallion", 87669}},
        {"55d48a634bdc2d8b2f8b456a", {"Kiba Arms International SPRM rail mount for pump-action shotguns", 101260}},
        {"59bffbb386f77435b379b9c2", {"SilencerCo Hybrid 46 multi-caliber silencer", 82883}},
        {"5c1d0dc586f7744baf2e7b79", {"TerraGroup Labs keycard (Green)", 80000}},
        {"5bd704e7209c4d00d7167c31", {"MP7A2 stock", 65000}},
        {"5d8e0db586f7744450412a42", {"RB-KORL key", 74775}},
        {"60391afc25aff57af81f7085", {"Ratchet wrench", 79182}},
        {"5bcf0213d4351e0085327c17", {"MP7A1 stock", 71389}},
        {"5d2c770c48f0354b4a07c100", {"AK-74 FAB Defense PDC dust cover", 82154}},
        {"5ab8dced86f774646209ec87", {"ANA Tactical M2 armored rig", 84386}},
        {"59f8a37386f7747af3328f06", {"Fortis Shift tactical grip", 75252}},
        {"5af0534a86f7743b6f354284", {"Ophthalmoscope", 77840}},
        {"5c091a4e0db834001d5addc8", {"Maska-1Shch bulletproof helmet (Olive Drab)", 78094}},
        {"5b40e1525acfc4771e1c6611", {"Highcom Striker ULACH IIIA helmet (Black)", 80140}},
        {"5fb64bc92b1b027b1f50bcf2", {"TDI KRISS Vector Gen.2 .45 ACP submachine gun", 83501}},
        {"5d80ccdd86f77474f7575e02", {"RB-ORB2 key", 81469}},
        {"5c1d0f4986f7744bb01837fa", {"TerraGroup Labs keycard (Black)", 75000}},
        {"5fc3f2d5900b1d5091531e57", {"TDI KRISS Vector Gen.2 9x19 submachine gun", 86274}},
        {"5a7880d0c5856700142fdd9d", {"M870 SPS polymer stock", 34718}},
        {"5d43021ca4b9362eab4b5e25", {"Lone Star TX-15 DML 5.56x45 carbine", 76720}},
        {"5c86592b2e2216000e69e77c", {"IEA Mil-Optics 34mm one piece magmount", 66037}},
        {"60926df0132d4d12c81fd9df", {"SilencerCo SAKER ASR 556 5.56x45 sound suppressor", 75028}},
        {"5b7be4895acfc400170e2dd5", {"Magpul M-LOK 4.1 inch rail", 51089}},
        {"5f633f791b231926f2329f13", {"AK-74 thread type JMac Customs RRD-4C multi-caliber muzzle brake", 73793}},
        {"5ab8e79e86f7742d8b372e78", {"BNTI Gzhel-K armor (0/65)", 77212}},
        {"588892092459774ac91d4b11", {"LOBAEV Arms DVL-10 Saboteur .308 bolt-action sniper rifle", 73780}},
        {"5ba26ae8d4351e00367f9bdb", {"B&T Rotex 2 4.6x30 sound suppressor", 82488}},
        {"59eb7ebe86f7740b373438ce", {"VSS/VAL TOZ 6P29M mount", 73757}},
        {"545cdae64bdc2d39198b4568", {"Camelbak Tri-Zip backpack", 78825}},
        {"5ad5db3786f7743568421cce", {"EMERCOM medical unit key", 56481}},
        {"5f3e7801153b8571434a924c", {"M1911A1 .45 ACP National Match barrel", 70000}},
        {"5f3e7823ddc4f03b010e2045", {"M45A1 .45 ACP slide", 69855}},
        {"5d80cb3886f77440556dbf09", {"RB-PSP1 key", 79174}},
        {"5ed51652f6c34d2cc26336a1", {"M.U.L.E. stimulant injector", 67214}},
        {"544a37c44bdc2d25388b4567", {"5.56x45 Surefire MAG5-60 STANAG 60-round magazine", 75960}},
        {"5c1cd46f2e22164bef5cfedb", {"Zenit RK-1 foregrip on B-25U mount", 77199}},
        {"5d8e3ecc86f774414c78d05e", {"RB-GN key", 79908}},
        {"5a34fe59c4a282000b1521a2", {"AAC 762 SDN-6 7.62x51 sound suppressor", 66651}},
        {"5b44c6ae86f7742d1627baea", {"ANA Tactical Beta 2 Battle backpack", 74190}},
        {"5ad5cfbd86f7742c825d6104", {"OLI logistics department office key", 71802}},
        {"5c0e66e2d174af02a96252f4", {"Ops-Core SLAAP armor helmet plate (Tan)", 75115}},
        {"5da743f586f7744014504f72", {"USEC Customs stash key", 69942}},
        {"5cebec00d7f00c065c53522a", {"FN Attenuator 5.7x28 sound suppressor", 72492}},
        {"5c0e534186f7747fa1419867", {"eTG-change regenerative stimulant injector", 69666}},
        {"5c46fbd72e2216398b5a8c9c", {"SVDS 7.62x54R sniper rifle", 58418}},
        {"59c63b4486f7747afb151c1c", {"MP5SD B&T tri-rail ring mount", 148994}},
        {"5b40e2bc5acfc40016388216", {"Highcom Striker ULACH IIIA helmet (Coyote Tan)", 69116}},
        {"5a0eec9686f77402ac5c39f2", {"Health Resort east wing room 310 key", 64812}},
        {"5cfe8010d7ad1a59283b14c6", {"AK 7.62x39 X-47 50-round drum magazine", 65736}},
        {"5d0378d486f77420421a5ff4", {"Military power filter", 63587}},
        {"5d6d3716a4b9361bc8618872", {"BNTI LShZ-2DTM helmet", 67183}},
        {"55d35ee94bdc2d61338b4568", {"AR-15 5.56x45 260mm barrel", 86973}},
        {"5a0eee1486f77402aa773226", {"Health Resort east wing room 328 key", 75234}},
        {"5ea17ca01412a1425304d1c0", {"Diamond Age Bastion helmet", 66644}},
        {"5d0377ce86f774186372f689", {"Iridium military thermal vision module", 67017}},
        {"5d80c66d86f774405611c7d6", {"RB-AO key", 55718}},
        {"609e8540d5c319764c2bc2e9", {"NFM THOR Concealable Vest body armor", 64068}},
        {"5d80cb5686f77440545d1286", {"RB-PSV1 key", 50951}},
        {"5af0548586f7743a532b7e99", {"Ibuprofen painkillers", 64079}},
        {"5d8e15b686f774445103b190", {"HEP station storage room key", 60466}},
        {"609bab8b455afd752b2e6138", {"Torrey Pines Logic T12W thermal reflex sight", 74574}},
        {"5cadfbf7ae92152ac412eeef", {"ASh-12 12.7x55 assault rifle", 61054}},
        {"588200af24597742fa221dfb", {"MP-153 12ga 610mm barrel", 60000}},
        {"560837544bdc2de22e8b456e", {"MP-133 12ga 710mm barrel with rib", 45000}},
        {"590c392f86f77444754deb29", {"SSD drive", 59977}},
        {"5447a9cd4bdc2dbd208b4567", {"Colt M4A1 5.56x45 assault rifle", 59451}},
        {"5ba26586d4351e44f824b340", {"MP7 4.6x30 40-round magazine", 66134}},
        {"5cc82d76e24e8d00134b4b83", {"FN P90 5.7x28 submachine gun", 70409}},
        {"5fc2360f900b1d5091531e19", {"Mk-18 gas block", 59258}},
        {"5c0e57ba86f7747fa141986d", {"6B23-2 armor (Mountain Flora)", 61510}},
        {"5e4abc6786f77406812bd572", {"LBT-2670 Slim Field Med Pack", 58936}},
        {"5a0f0f5886f7741c4e32a472", {"Health Resort warehouse safe key", 62258}},
        {"5888956924597752983e182d", {"DVL-10 M2 .308 660mm barrel", 91176}},
        {"5df8ce05b11454561e39243b", {"Knight's Armament Company SR-25 7.62x51 marksman rifle", 57775}},
        {"5a0dc45586f7742f6b0b73e3", {"Health Resort west wing office room 104 key", 53270}},
        {"5c0e842486f77443a74d2976", {"Maska-1Shch face shield (Killa)", 56264}},
        {"5d440b9fa4b93601354d480c", {"AR-15 5.56x45 20 inch barrel", 67574}},
        {"5e54f79686f7744022011103", {"Pestily plague mask", 57776}},
        {"5c0e51be86f774598e797894", {"6B13 assault armor (Flora)", 57909}},
        {"5d1b371186f774253763a656", {"Expeditionary fuel tank (0/60)", 56879}},
        {"5a0ee37f86f774023657a86f", {"Health Resort west wing room 221 key", 58884}},
        {"5a0ee34586f774023b6ee092", {"Health Resort west wing room 220 key", 59462}},
        {"5aa7e373e5b5b000137b76f0", {"Altyn face shield", 64877}},
        {"5c5db5c62e22160012542255", {"MPX 9x19 14 inch barrel", 60607}},
        {"590c621186f774138d11ea29", {"Secure Flash drive", 56845}},
        {"5bc9bc53d4351e00367fbcee", {"Golden rooster", 56646}},
        {"5b3b99475acfc432ff4dcbee", {"EOTech Vudu 1-6x24 riflescope", 56067}},
        {"5c0e805e86f774683f3dd637", {"3V G Paratus 3-Day Operator's Tactical backpack", 68021}},
        {"5bc9c1e2d4351e00367fbcf0", {"Antique axe", 55616}},
        {"5a13f46386f7741dd7384b04", {"Health Resort west wing room 306 key", 46125}},
        {"5d80c93086f7744036212b41", {"RB-MP11 key", 63298}},
        {"5aa66be6e5b5b0214e506e97", {"Nightforce ATACR 7-35x56 riflescope", 55584}},
        {"5d95d6fa86f77424484aa5e9", {"RB-PSP2 key", 74524}},
        {"5bb20dadd4351e00367faeff", {"HK 416A5 5.56x45 20 inch barrel", 52369}},
        {"5fbe760793164a5b6278efc8", {"SIG Sauer SRD762-QD 7.62x51 sound suppressor", 58924}},
        {"5e4bfc1586f774264f7582d3", {"MSA Gallet TC 800 High Cut combat helmet", 60640}},
        {"59e62cc886f77440d40b52a1", {"AKM bakelite pistol grip", 19351}},
        {"5a13ef0686f7746e5a411744", {"Health Resort west wing room 219 key", 51446}},
        {"5f5e46b96bdad616ad46d613", {"Eberlestock F4 Terminator load bearing backpack (Tiger Stripe)", 66937}},
        {"5ad5d64486f774079b080af8", {"NecrusPharm pharmacy key", 60077}},
        {"5a0f08bc86f77478f33b84c2", {"Health Resort management office safe key", 56867}},
        {"59e3577886f774176a362503", {"Pack of sugar", 61698}},
        {"5fbe7618d6fa9c00c571bb6c", {"SIG Sauer SRD762Ti 7.62x51 sound suppressor", 53369}},
        {"5a0eeb1a86f774688b70aa5c", {"Health Resort west wing room 303 key", 55063}},
        {"5e2aee0a86f774755a234b62", {"Cyclon rechargeable battery", 52646}},
        {"5d0376a486f7747d8050965c", {"Military circuit board", 53812}},
        {"5d1b33a686f7742523398398", {"Purified water", 58705}},
        {"5c0e3eb886f7742015526062", {"6B5-16 Zh-86 \"Uley\" armored rig", 55998}},
        {"5eff09cd30a7dc22fd1ddfed", {"Health Resort east wing room 110 key with a blue tape", 41491}},
        {"5ad7217186f7746744498875", {"OLI cash register key", 53289}},
        {"5a0ec6d286f7742c0b518fb5", {"Health Resort west wing room 205 key", 55108}},
        {"57235b6f24597759bf5a30f1", {"AN/PVS-14 Night Vision Monocular", 71696}},
        {"5ad7242b86f7740a6a3abd43", {"IDEA cash register key", 52663}},
        {"60b0f7057897d47c5b04ab94", {"Loot Lord plushie", 51947}},
        {"5aa7e373e5b5b000137b76f0", {"Altyn face shield (0/50)", 62247}},
        {"5c6175362e221600133e3b94", {"AK 7.62x39 ProMag AK-A-16 73-round drum magazine", 66426}},
        {"5d5d646386f7742797261fd9", {"6B3TM-01M armored rig", 55139}},
        {"5a1ead28fcdbcb001912fa9f", {"UNV DLOC-IRD sight mount", 61526}},
        {"5c488a752e221602b412af63", {"Desert Tech MDR 5.56x45 assault rifle", 55085}},
        {"5a0f006986f7741ffd2fe484", {"Weather station safe key", 52579}},
        {"5d80c95986f77440351beef3", {"RB-MP12 key", 51582}},
        {"5648b62b4bdc2d9d488b4585", {"GP-34 underbarrel grenade launcher", 50900}},
        {"5fbcc1d9016cce60e8341ab3", {"SIG MCX .300 AAC Blackout assault rifle", 56144}},
        {"5bd70322209c4d00d7167b8f", {"HK MP7A2 4.6x30 submachine gun", 55055}},
        {"5a787f7ac5856700177af660", {"M870 12ga 508mm barrel", 42907}},
        {"5a0ee62286f774369454a7ac", {"Health Resort east wing room 209 key", 50499}},
        {"5a17fb9dfcdbcbcae6687291", {"APB detachable wire stock", 34896}},
        {"5a0eedb386f77403506300be", {"Health Resort east wing room 322 key", 52254}},
        {"5df24cf80dee1b22f862e9bc", {"Orsis T-5000M .308 bolt-action sniper rifle", 49004}},
        {"5b40e3f35acfc40016388218", {"Highcom Striker ACHHC IIIA helmet (Black)", 54505}},
        {"5d5d940f86f7742797262046", {"Oakley Mechanism heavy duty backpack (Black)", 48415}},
        {"6034d2d697633951dc245ea6", {"Eberlestock G2 Gunslinger II backpack (Dry Earth)", 57521}},
        {"59faf7ca86f7740dbe19f6c2", {"Roler Submariner gold wrist watch", 51119}},
        {"58949fac86f77409483e16aa", {"MPX single latch charging handle", 50000}},
        {"571a26d524597720680fbe8a", {"TT 7.62x25 116mm barrel", 18342}},
        {"5aafa49ae5b5b00015042a58", {"M1A SA XS Post .125 blade front sight", 21296}},
        {"5ef369b08cef260c0642acaf", {"M1911A1 NcSTAR trigger guard mount", 50000}},
        {"60391a8b3364dc22b04d0ce5", {"Can of thermite", 52739}},
        {"5d80cbd886f77470855c26c2", {"RB-MP13 key", 54576}},
        {"5d440b93a4b9364276578d4b", {"AR-15 5.56x45 18 inch barrel", 49462}},
        {"57838ad32459774a17445cd2", {"VSS Vintorez 9x39 Special Sniper Rifle", 57425}},
        {"5de8f2d5b74cd90030650c72", {"MP9 9x19 sound suppressor", 37564}},
        {"5d6fc78386f77449d825f9dc", {"Gunpowder \"Eagle\"", 48569}},
        {"5c010e350db83400232feec7", {"SP-8 Survival Machete", 52231}},
        {"5dfce88fe9dc277128008b2e", {"SVDS custom dust cover", 46520}},
        {"5c17664f2e2216398b5a7e3c", {"AK Vltor CMRD KeyMod handguard", 55482}},
        {"5f60c85b58eff926626a60f7", {"Rys-T face shield", 49226}},
        {"59e763f286f7742ee57895da", {"Pilgrim tourist backpack", 60005}},
        {"5bb2475ed4351e00853264e3", {"HK 416A5 5.56x45 assault rifle", 48700}},
        {"5a13ee1986f774794d4c14cd", {"Health Resort west wing room 323 key", 59638}},
        {"5c0a2cec0db834001b7ce47d", {"EOTech HHS-1 hybrid sight (Tan)", 51957}},
        {"5d80ca9086f774403a401e40", {"RB-MP21 key", 57281}},
        {"5c178a942e22164bef5ceca3", {"Crye Precision AirFrame Chops", 54363}},
        {"60b0f988c4449e4cb624c1da", {"Evasion armband", 53805}},
        {"5ede47405b097655935d7d16", {"40x46mm M441(HE) grenade", 48646}},
        {"5c1e2a1e86f77431ea0ea84c", {"TerraGroup Labs Manager office room key", 45774}},
        {"5f60cd6cf2bcbb675b00dac6", {"Walker's XCEL 500BT Digital headset", 56528}},
        {"5a0eecf686f7740350630097", {"Health Resort east wing room 313 key", 42715}},
        {"5b40e4035acfc47a87740943", {"Highcom Striker ACHHC IIIA helmet (Olive)", 51691}},
        {"5fc278107283c4046c581489", {"Mk-18 .338 LM upper receiver", 47111}},
        {"5f5e467b0bc58666c37e7821", {"Eberlestock F5 Switchblade backpack (Dry Earth)", 50628}},
        {"5ac66d2e5acfc43b321d4b53", {"AK-103 7.62x39 assault rifle", 48930}},
        {"5c1bc5612e221602b5429350", {"Zenit RK-1 foregrip", 62020}},
        {"57c44e7b2459772d28133248", {"AS VAL rear sight", 46667}},
        {"5a0ec70e86f7742c0b518fba", {"Health Resort west wing room 207 key", 48308}},
        {"5c471cb32e221602b177afaa", {"SVDS 7.62x54R 22 inch barrel", 46131}},
        {"5c07dd120db834001c39092d", {"EOTech HHS-1 hybrid sight", 48012}},
        {"5c0e53c886f7747fa54205c7", {"6B13 assault armor (Digital Flora)", 46737}},
        {"5d4aab30a4b9365435358c55", {"AK Vezhlivyy Strelok VS-24 + VS-33c handguard & gas block combo (White)", 52092}},
        {"5beed0f50db834001c062b12", {"RPK-16 5.45x39 light machine gun", 45008}},
        {"5aa7d193e5b5b000171d063f", {"SSSh-95 Sfera-S helmet", 46289}},
        {"57372ebf2459776862260582", {"5.45x39 PS gs 30 pcs. ammo pack", 33352}},
        {"5c878e9d2e2216000f201903", {"Lantac Dragon 7.62x51 muzzle brake", 62975}},
        {"5c1cdd302e221602b3137250", {"Compact Mount adapter for sights", 1095365}},
        {"5d2369418abbc306c62e0c80", {"Steiner DBAL-PL tactical laser device", 43709}},
        {"55d485be4bdc2d962f8b456f", {"PM 9x18PM 84-round makeshift drum magazine", 43724}},
        {"544a3a774bdc2d3a388b4567", {"Leupold Mark 4 HAMR 4x24mm DeltaPoint hybrid assault scope", 45203}},
        {"5f633f68f5750b524b45f112", {"AK 7.62x39 JMAC RRD-4C muzzle brake", 44585}},
        {"5c1d0d6d86f7744bb2683e1f", {"TerraGroup Labs keycard (Yellow)", 45000}},
        {"6087e570b998180e9f76dc24", {"Superfors DB 2020 Dead Blow Hammer", 45000}},
        {"5ede474b0c226a66f5402622", {"40x46mm M381(HE) grenade", 47169}},
        {"5da46e3886f774653b7a83fe", {"RB-RS key", 43944}},
        {"5e9db13186f7742f845ee9d3", {"LBT-1961A Load Bearing chest rig", 41861}},
        {"5737292724597765e5728562", {"5.45x39 BP gs 120 pcs. ammo pack", 41671}},
        {"5ed5160a87bb8443d10680b5", {"Meldonin injector", 48580}},
        {"5d44334ba4b9362b346d1948", {"AR-15 Radian Weapons Raptor charging handle (Grey)", 44494}},
        {"5aafa857e5b5b00018480968", {"Springfield Armory M1A 7.62x51 carbine", 44761}},
        {"5d4406a8a4b9361e4f6eb8b7", {"Magpul PRS GEN3 stock (Grey)", 50758}},
        {"5c1e2d1f86f77431e9280bee", {"TerraGroup Labs Weapons testing area key", 45855}},
        {"5c066e3a0db834001b7353f0", {"Armasight N-15 Night Vision Goggles", 62224}},
        {"5a0ee4b586f7743698200d22", {"Health Resort east wing room 206 key", 44553}},
        {"5c0000c00db834001a6697fc", {"MP5 3-lug threaded muzzle protector", 67743}},
        {"5a0eeb8e86f77461257ed71a", {"Health Resort west wing room 309 key", 49497}},
        {"5d235a5986f77443f6329bc6", {"Gold skull ring", 45410}},
        {"5e00cfa786f77469dc6e5685", {"TW EXFIL Ear Covers (Black)", 44169}},
        {"5c5db6742e2216000f1b2852", {"MPX 9x19 F5 50-round drum magazine", 40986}},
        {"5ae09bff5acfc4001562219d", {"Mosin 730mm regular barrel", 52777}},
        {"57372a7f24597766fe0de0c1", {"5.45x39 BP gs 120 pcs. ammo pack", 60625}},
        {"5a13f24186f77410e57c5626", {"Health Resort east wing room 222 key", 48175}},
        {"5a13eebd86f7746fd639aa93", {"Health Resort west wing room 218 key", 43441}},
        {"5926f34786f77469195bfe92", {"MP5SD polymer handguard", 38904}},
        {"5df8a42886f77412640e2e75", {"Velocity Systems Multi-Purpose Patrol Vest", 46833}},
        {"5a9fbb84a2750c00137fa685", {"Rotor 43 5.56x45 muzzle brake", 39790}},
        {"5a788068c5856700137e4c8f", {"M870 Magpul MOE handguard", 60346}},
        {"5a0ea64786f7741707720468", {"Health Resort east wing office room 107 key", 37754}},
        {"590de7e986f7741b096e5f32", {"Antique vase", 41949}},
        {"5d6fc87386f77449db3db94e", {"Gunpowder \"Hawk\"", 42591}},
        {"5c0e5bab86f77461f55ed1f3", {"6B23-1 body armor (Digital Flora)", 44460}},
        {"5a78830bc5856700137e4c90", {"M870 12ga 7-shell magazine", 47655}},
        {"5c012ffc0db834001d23f03f", {"Camper axe", 50815}},
        {"58948c8e86f77409493f7266", {"SIG MPX 9x19 submachine gun", 41563}},
        {"5df917564a9f347bc92edca3", {"SR-25 7.62x51 16 inch barrel", 26157}},
        {"5a13f35286f77413ef1436b0", {"Health Resort east wing room 226 key", 45345}},
        {"5733279d245977289b77ec24", {"Car battery", 39638}},
        {"5c0e446786f7742013381639", {"6B5-15 Zh-86 \"Uley\" armored rig", 43263}},
        {"59fafb5d86f774067a6f2084", {"5L propane tank", 45830}},
        {"5a9e81fba2750c00164f6b11", {"9x39 SR3M.130 30-round magazine", 43065}},
        {"60785ce5132d4d12c81fd918", {"MP-155 Ultima top rail", 41389}},
        {"590c37d286f77443be3d7827", {"SAS drive", 40370}},
        {"5648a69d4bdc2ded0b8b457b", {"BlackRock chest rig", 42500}},
        {"5bfd36290db834001966869a", {"Mosin sawn-off sniper stock", 36126}},
        {"5cff9e84d7ad1a049e54ed55", {"Daniel Defense WAVE QD sound suppressor", 41355}},
        {"5f2a9575926fd9352339381f", {"Kel-Tec RFB 7.62x51 carbine", 40659}},
        {"5dfa397fb11454561e39246c", {"SR-25 7.62x51 20 inch barrel", 40300}},
        {"5b7be1265acfc400161d0798", {"SA-58 7.62x51 21 inch barrel", 39693}},
        {"5ac66cb05acfc40198510a10", {"AK-101 5.56x45 assault rifle", 40697}},
        {"57c44dd02459772d2e0ae249", {"AS VAL 9x39 integral barrel-suppressor", 37685}},
        {"592c2d1a86f7746dbe2af32a", {"ANA Tactical Alpha chest rig", 45552}},
        {"5bc9c377d4351e3bac12251b", {"Old firesteel", 39416}},
        {"5a0ee72c86f77436955d3435", {"Health Resort east wing room 213 key", 38038}},
        {"5a9d6d13a2750c00164f6b03", {"Strike Industries KeyMod 6 inch rail", 33776}},
        {"5bc9c049d4351e44f824d360", {"Battered antique book", 38967}},
        {"5d80c60f86f77440373c4ece", {"RB-BK marked key", 40366}},
        {"5cf656f2d7f00c06585fb6eb", {"AK Vezhlivyy Strelok VS-24 + VS-33c handguard & gas block combo", 46632}},
        {"5f60c076f2bcbb675b00dac2", {"Caiman Ballistic Mandible Guard", 46705}},
        {"59e649f986f77411d949b246", {"AKM type Molot gas tube", 36709}},
        {"5b237e425acfc4771e1be0b6", {"AK TROY Industries handguard & gas block combo", 38056}},
        {"5d80c62a86f7744036212b3f", {"RB-VO marked key", 39579}},
        {"59e3647686f774176a362507", {"Wooden clock", 39136}},
        {"60a272cc93ef783291411d8e", {"Hazard 4 Drawbridge backpack", 43179}},
        {"5d03784a86f774203e7e0c4d", {"Military gyrotachometer", 39339}},
        {"5d403f9186f7743cac3f229b", {"Bottle of Dan Jackiel whiskey", 43575}},
        {"5fc382a9d724d907e2077dab", {".338 Lapua Magnum AP", 39650}},
        {"5ba26383d4351e00334c93d9", {"HK MP7A1 4.6x30 submachine gun", 53595}},
        {"5b43575a86f77424f443fe62", {"Fuel conditioner", 38474}},
        {"55d6190f4bdc2d87028b4567", {"Surefire SOCOM556-MINI MONSTER 5.56x45 sound suppressor", 35526}},
        {"5df256570dee1b22f862e9c4", {"T-5000M .308 660mm barrel", 38737}},
        {"5f60b85bbdb8e27dee3dc985", {"Caiman Hybrid Ballistic Applique (Black)", 38403}},
        {"5fca138c2a7b221b2852a5c6", {"xTG-12 antidote injector", 44495}},
        {"5e01ea19e9dc277128008c0b", {"Rotor 43 7.62x54R muzzle brake", 31616}},
        {"55d45f484bdc2d972f8b456d", {"MP-133 custom plastic forestock with rails", 29536}},
        {"5d1b327086f7742525194449", {"Pressure gauge", 38658}},
        {"5fbcc3e4d6fa9c00c571bb58", {"MCX GEN1 upper receiver", 37710}},
        {"57cffce524597763b31685d8", {"Magpul M-LOK AFG tactical grip (Stealth Gray)", 60235}},
        {"5b3b99265acfc4704b4a1afb", {"Nightforce Magmount 30mm rings", 35193}},
        {"5c7955c22e221644f31bfd5e", {"Gemtech ONE multi-caliber sound suppressor", 33616}},
        {"5d1b317c86f7742523398392", {"Hand drill", 37177}},
        {"5bc9bdb8d4351e003562b8a1", {"Silver Badge", 37489}},
        {"5addbac75acfc400194dbc56", {"M1A 7.62x51 22 inch barrel", 38446}},
        {"5d5e9c74a4b9364855191c40", {"MSA ACH TC-2002 MICH Series helmet", 41184}},
        {"5a0ec13bfcdbcb00165aa685", {"AKMN 7.62x39 assault rifle", 35412}},
        {"6034d103ca006d2dca39b3f0", {"Hazard 4 Takedown sling backpack", 39790}},
        {"5e01f31d86f77465cf261343", {"TW EXFIL Ear Covers (Coyote Tan)", 39112}},
        {"5aa7e4a4e5b5b000137b76f2", {"ZSh-1-2M helmet (Black)", 36209}},
        {"5b44d22286f774172b0c9de8", {"BNTI Kirasa-N armor", 39255}},
        {"5ea034f65aad6446a939737e", {"PPSh-41 7.62x25 71-round drum magazine", 37106}},
        {"57adff4f24597737f373b6e6", {"SIG Sauer BRAVO4 4X30 Scope", 38038}},
        {"5fb651dc85f90547f674b6f4", {"Glock .45 ACP KRISS G30 MagEx 30-round magazine", 29831}},
        {"5ac66d015acfc400180ae6e4", {"AK-102 5.56x45 assault rifle", 39672}},
        {"5b4391a586f7745321235ab2", {"WI-FI Camera", 34363}},
        {"5a144bdb86f7741d374bbde0", {"Health Resort east wing room 205 key", 35813}},
        {"5b363dd25acfc4001a598fd2", {"SilencerCo Salvo 12 12ga sound suppressor", 37579}},
        {"5c07a8770db8340023300450", {"AR-15 Noveske Gen.3 5.56x45 upper receiver", 35240}},
        {"578395402459774a256959b5", {"VSS Vintorez dust cover", 32092}},
        {"6087e663132d4d12c81fd96b", {"AK Custom Arms AGS-74 PRO + Sniper Kit pistol grip", 44741}},
        {"5a0ea79b86f7741d4a35298e", {"Health Resort universal utility room key", 34700}},
        {"5beec2820db834001b095426", {"RPK-16 5.45x39 22 inch barrel", 39613}},
        {"5aa7e454e5b5b0214e506fa2", {"ZSh-1-2M helmet (Green)", 37317}},
        {"5c0e9f2c86f77432297fe0a3", {"Blackhawk! Commando Chest Harness (Black)", 33252}},
        {"5b0e794b5acfc47a877359b2", {"AKM/AK-74 Magpul Zhukov-S stock", 33820}},
        {"5d6d3829a4b9361bc8618943", {"LShZ-2DTM face shield", 35587}},
        {"5c0517910db83400232ffee5", {"Valday PS-320 1x/6x scope", 35893}},
        {"6038d614d10cbf667352dd44", {"Hazard 4 Takedown sling backpack (Multicam)", 37418}},
        {"5c0919b50db834001b7ce3b9", {"Maska-1Shch face shield (Olive Drab)", 35036}},
        {"5efaf417aeb21837e749c7f2", {"B-30 handguard with B-31S upper handguard rail", 36693}},
        {"5f63407e1b231926f2329f15", {"VPO-101 Vepr Hunter 7.62x51 Rotor 43 muzzle brake", 33042}},
        {"5a145d4786f7744cbb6f4a12", {"Health Resort east wing room 306 key", 38797}},
        {"5e4d34ca86f774264f758330", {"Walker's Razor digital headset", 39132}},
        {"5c6592372e221600133e47d7", {"5.56x45 MAG5-100 STANAG 100-round magazine", 37792}},
        {"5bc9b9ecd4351e3bac122519", {"Deadlyslob's beard oil", 34987}},
        {"5f745ee30acaeb0d490d8c5b", {"Veritas guitar pick", 34632}},
        {"5b057b4f5acfc4771e1bd3e9", {"Stark SE-5 Express Forward grip", 34030}},
        {"5d5e7d28a4b936645d161203", {"MSA ACH TC-2001 MICH Series helmet", 38886}},
        {"5e2aedd986f7746d404f3aa4", {"GreenBat lithium battery", 37617}},
        {"5a0ee76686f7743698200d5c", {"Health Resort east wing room 216 key", 33286}},
        {"5abcd472d8ce8700166032ae", {"AKMSN shoulder piece (6P4 Sb.1-19)", 19140}},
        {"5d0236dad7ad1a0940739d29", {"SKS FAB Defense UAS stock", 33394}},
        {"5de6556a205ddc616a6bc4f7", {"VPO-215 thread protection cap", 34066}},
        {"5ca2113f86f7740b2547e1d2", {"Vulkan-5 face shield", 35190}},
        {"60b0f6c058e0b0481a09ad11", {"WZ Wallet", 33019}},
        {"5c78f2612e221600114c9f0d", {"AR-15 SAI 10 inch QD Rail handguard", 37030}},
        {"5c0e531d86f7747fa23f4d42", {"SJ6 TGLabs combat stimulant injector", 34011}},
        {"5c5039be2e221602b177c9ff", {"VPO-101 Vepr Hunter gas tube", 33893}},
        {"5b2389515acfc4771e1be0c0", {"Burris AR-P.E.P.R. 30mm ring mount", 35465}},
        {"5f633ff5c444ce7e3c30a006", {"AR-15 Avalanche MOD2 charging handle", 32785}},
        {"5a37ca54c4a282000d72296a", {"JP Enterprises 30mm ring scope mount", 37643}},
        {"5a1452ee86f7746f33111763", {"Health Resort west wing room 222 key", 34228}},
        {"58d268fc86f774111273f8c2", {"Leupold DeltaPoint Reflex Sight", 33065}},
        {"57ac965c24597706be5f975c", {"ELCAN SpecterDR 1x/4x Scope", 35369}},
        {"5bc9b355d4351e6d1509862a", {"#FireKlean gun lube", 25283}},
        {"5b0bbe4e5acfc40dc528a72d", {"DS Arms SA-58 7.62x51 assault rifle", 32927}},
        {"5bfd297f0db834001a669119", {"Mosin 7.62x54R bolt-action infantry rifle", 32332}},
        {"599851db86f77467372f0a18", {"PP-19-01 Vityaz-SN metal skeleton stock", 25702}},
        {"5a7c4850e899ef00150be885", {"6B47 Ratnik-BSh helmet", 34073}},
        {"5f6336bbda967c74a42e9932", {"AR-10 Lancer LCH-7 12.5 inch M-LOK handguard", 38764}},
        {"5755383e24597772cb798966", {"Vaseline balm", 35185}},
        {"5a0f045e86f7745b0f0d0e42", {"Shoreline gas station safe key", 33467}},
        {"5926d3c686f77410de68ebc8", {"MP5 A2 stock", 47123}},
        {"5b4736a986f774040571e998", {"TROY QARS 3.2 inch rail", 47282}},
        {"59f9d81586f7744c7506ee62", {"Vortex RAZOR AMG UH-1 holographic sight", 32006}},
        {"59db7eed86f77461f8380365", {"Trijicon TA51 sight mount", 32889}},
        {"5bd06f5d86f77427101ad47c", {"Slender mask", 21006}},
        {"5a37cb10c4a282329a73b4e7", {"Leupold Mark 4 LR 6.5-20x50 riflescope", 32597}},
        {"5cebec10d7f00c065703d185", {"FN PS90 stock", 32500}},
        {"5cc6ea78e4a949000e1ea3c1", {"FN P90 charging handle", 32497}},
        {"5e54f6af86f7742199090bf3", {"Can of Dr. Lupo's coffee beans", 32334}},
        {"5ab372a310e891001717f0d8", {"M14 TROY S.A.S.S. chassis stock", 29353}},
        {"5addbfbb5acfc400194dbcf7", {"M14 Ultimak M8 Forward Optic mount", 37446}},
        {"5e71fad086f77422443d4604", {"Twitch Rivals 2020 half mask", 32000}},
        {"5bfd36ad0db834001c38ef66", {"Mosin sawn-off stock", 31561}},
        {"55801eed4bdc2d89578b4588", {"SV-98 7.62x54R bolt-action sniper rifle", 28575}},
        {"5cf8f3b0d7f00c00217872ef", {"SOK-12 12/76 MaxRounds Powermag 20-round magazine", 40013}},
        {"5a0dc95c86f77452440fc675", {"Health Resort west wing office room 112 key", 32007}},
        {"5d02797c86f774203f38e30a", {"Surv12 field surgical kit", 33469}},
        {"60b0f561c4449e4cb624c1d7", {"LVNDMARK's rat poison", 31863}},
        {"5e21a3c67e40bd02257a008a", {"AK 7.62x39 Magpul PMAG 30 GEN M3 30-round magazine (Banana)", 30167}},
        {"5addcce35acfc4001a5fc635", {"M14 7.62x51 30-round magazine", 29195}},
        {"57aca93d2459771f2c7e26db", {"ELCAN SpecterDR 1x/4x scope (Flat Dark Earth)", 31186}},
        {"5b432d215acfc4771e1c6624", {"LZSh light helmet", 37770}},
        {"5c1f79a086f7746ed066fb8f", {"TerraGroup Labs Arsenal storage room key", 31840}},
        {"5798a2832459774b53341029", {"Customs plan map", 37435}},
        {"5ae08f0a5acfc408fb1398a1", {"Mosin 7.62x54R bolt-action sniper rifle", 31512}},
        {"5addbf175acfc408fb13965b", {"M1A ProMag Archangel stock", 29103}},
        {"5d2c772c48f0355d95672c25", {"AK TWS Dog Leg Rail dust cover", 33181}},
        {"5b3b713c5acfc4330140bd8d", {"TT-33 7.62x25 TT pistol (Gold)", 33162}},
        {"58491f3324597764bc48fa02", {"EOTech XPS3-0 holographic sight", 35835}},
        {"560d75f54bdc2da74d8b4573", {"7.62x54R SNB 30 pcs. ammo pack", 31204}},
        {"5448ba0b4bdc2d02308b456c", {"Factory emergency exit key", 31323}},
        {"5b2388675acfc4771e1be0be", {"Burris FullField TAC30 1-4x24 riflescope", 31254}},
        {"57372bd3245977670b7cd243", {"5.45x39 BS gs 30 pcs. ammo pack", 138500}},
        {"590de71386f774347051a052", {"Antique teapot", 30398}},
        {"59d6088586f774275f37482f", {"AKM 7.62x39 assault rifle", 29792}},
        {"56ea70acd2720b844b8b4594", {"Hensoldt FF 4-16x56 scope", 31003}},
        {"5a0f068686f7745b0d4ea242", {"Shoreline cottage safe key", 39043}},
        {"590c657e86f77412b013051d", {"Grizzly medical kit", 37438}},
        {"5e85a9f4add9fe03027d9bf1", {"23x75mm \"Zvezda\" flashbang round", 30698}},
        {"5d235b4d86f7742e017bc88a", {"GP coin", 30581}},
        {"5d1b36a186f7742523398433", {"Metal fuel tank (0/100)", 28813}},
        {"590a373286f774287540368b", {"Dry fuel", 28687}},
        {"5ed5166ad380ab312177c100", {"\"Obdolbos\" cocktail injector", 29562}},
        {"5aa2ba71e5b5b000137b758f", {"MSA Sordin Supreme PRO-X/L active headset", 31569}},
        {"590c651286f7741e566b6461", {"Slim diary", 30386}},
        {"5bae13ded4351e44f824bf38", {"Mosin 7.62x54R ProMag Archangel OPFOR 10-round magazine", 27979}},
        {"57372c21245977670937c6c2", {"5.45x39 BT gs 120 pcs. ammo pack", 32963}},
        {"595cfa8b86f77427437e845b", {"AR-15 War Sport LVOA-C handguard (Black)", 31575}},
        {"584924ec24597768f12ae244", {"EOTech XPS3-2 holographic sight", 33766}},
        {"5e54f62086f774219b0f1937", {"Raven figurine", 30001}},
        {"5888945a2459774bf43ba385", {"DVL-10 .308 500mm barrel", 27998}},
        {"5c1262a286f7743f8a69aab2", {"5.45x39 PPBS gs 30 pcs. ammo pack", 67500}},
        {"5739d41224597779c3645501", {"9x19 Pst gzh 16 pcs. ammo pack", 30000}},
        {"5de8e67c4a9f347bc92edbd7", {"MP9-N 9x19 upper receiver", 45606}},
        {"5926f2e086f7745aae644231", {"MP5SD upper receiver", 30967}},
        {"56083be64bdc2d20478b456f", {"MP-133/153 plastic stock", 27320}},
        {"5a957c3fa2750c00137fa5f7", {"AKS-74U CAA XRSU47SU tactical handguard", 30672}},
        {"5c0e6a1586f77404597b4965", {"Belt-A + Belt-B gear rig", 33100}},
        {"5fc4b9b17283c4046c5814d7", {"SilencerCo Omega 45k .45 ACP sound suppressor", 28958}},
        {"5ad5d20586f77449be26d877", {"OLI outlet utility room key", 34081}},
        {"59e3658a86f7741776641ac4", {"Cat figurine", 29633}},
        {"5d1b2fa286f77425227d1674", {"Electric motor", 30337}},
        {"5f4f9eb969cdc30ff33f09db", {"EYE MK.2 professional hand-held compass", 30935}},
        {"5a398b75c4a282000a51a266", {"Ops-Core Picatinny Rail Adapter mount", 65416}},
        {"5bc9b720d4351e450201234b", {"Golden 1GPhone", 28330}},
        {"5e208b9842457a4a7a33d074", {"AK Hexagon DTKP MK.2 7.62x39 sound suppressor", 28820}},
        {"5ea17bbc09aa976f2e7a51cd", {"Surefire SOCOM556-RC2 5.56x45 sound suppressor", 30499}},
        {"5c0e5edb86f77461f55ed1f7", {"BNTI Zhuk-3 press armor", 32862}},
        {"57372c89245977685d4159b1", {"5.45x39 BT gs 30 pcs. ammo pack", 29480}},
        {"5df25b6c0b92095fd441e4cf", {"Orsis T-5000M .308 5-round magazine", 21811}},
        {"5de910da8b6c4240ba2651b5", {"MP9 stock", 30130}},
        {"57cffb66245977632f391a99", {"Magpul M-LOK AFG tactical grip (Black)", 45996}},
        {"5f63405df5750b524b45f114", {"VPO-101 Vepr Hunter SVD-style stock", 26087}},
        {"5a0eed4386f77405112912aa", {"Health Resort east wing room 314 key", 27853}},
        {"5aa7cfc0e5b5b00015693143", {"6B47 Ratnik-BSh helmet with cover (Digital Flora)", 30573}},
        {"57505f6224597709a92585a9", {"Alyonka chocolate bar", 35138}},
        {"5c0696830db834001d23f5da", {"PNV-10T Night Vision Goggles", 39370}},
        {"5e997f0b86f7741ac73993e2", {"Sanitar's bag", 31657}},
        {"606f2696f2cb2e02a42aceb1", {"MP-155 Ultima thermal camera", 29077}},
        {"5ab8e4ed86f7742d8e50c7fa", {"MF-UNTAR body armor", 30870}},
        {"5bfea6e90db834001b7347f3", {"Remington Model 700 .308 bolt-action sniper rifle", 27010}},
        {"5913915886f774123603c392", {"Military checkpoint key", 27882}},
        {"5645bcc04bdc2d363b8b4572", {"Peltor ComTac 2 headset", 28922}},
        {"5fc3e272f8b6a877a729eac5", {"HK UMP .45 ACP submachine gun", 28786}},
        {"5dcbe9431e1f4616d354987e", {"MDR .308 16 inch barrel", 27990}},
        {"5dfe6104585a0c3e995c7b82", {"NcSTAR ADO P4 Sniper 3-9x42 riflescope", 29246}},
        {"6087e0336d0bd7580617bb7a", {"AR-15 Unique-ARs Wing & Skull 12 inch handguard", 29888}},
        {"5644bd2b4bdc2d3b4c8b4572", {"AK-74N 5.45x39 assault rifle", 29698}},
        {"5cc7012ae4a949001252b43e", {"FN P90 EFFEN 90 receiver rail", 24041}},
        {"560838c94bdc2d77798b4569", {"Remington Tactical Choke 12ga", 27440}},
        {"5d80cb8786f774405611c7d9", {"RB-PP key", 36706}},
        {"5cf78496d7f00c065703d6ca", {"Lantac BMD Blast Mitigation Device A3 direct thread adapter", 25063}},
        {"5a0d63621526d8dba31fe3bf", {"PBS-1 7.62x39 sound suppressor", 27516}},
        {"5943eeeb86f77412d6384f6b", {"PWS CQB 74 5.45x39 muzzle brake", 32202}},
        {"5d1b32c186f774252167a530", {"Analog thermometer", 27878}},
        {"5aa66a9be5b5b0214e506e89", {"Nightforce Magmount 34mm rings", 26626}},
        {"5a3501acc4a282000d72293a", {"7.62x51 Magpul PMAG SR-LR GEN M3 20 20-round magazine", 24166}},
        {"5a9fbacda2750c00141e080f", {"Rotor 43 7.62x39 muzzle brake", 25928}},
        {"5a16b9fffcdbcb0176308b34", {"Ops-Core FAST RAC Headset", 28681}},
        {"5a7b4900e899ef197b331a2a", {"UM Tactical UM3 pistol sight mount", 31207}},
        {"55d3632e4bdc2d972f8b4569", {"AR-15 5.56x45 370mm barrel", 28114}},
        {"5d1b385e86f774252167b98a", {"Water filter", 27910}},
        {"5648a7494bdc2d9d488b4583", {"PACA soft armor", 28106}},
        {"593d490386f7745ee97a1555", {"SKS Hexagon 7.62x39 sound suppressor", 26510}},
        {"5c0695860db834001b735461", {"PNV-10T dovetail adapter", 50327}},
        {"57838e1b2459774a256959b1", {"VSS Vintorez rear sight", 27548}},
        {"5ac50da15acfc4001718d287", {"AK-74M dust cover (6P34 0-1)", 24581}},
        {"59d6514b86f774171a068a08", {"AKM wooden stock (6P1 Sb.5)", 21374}},
        {"57dbb57e2459774673234890", {"KAC QDSS NT-4 5.56x45 sound suppressor (Flat Dark Earth)", 27340}},
        {"59fb257e86f7742981561852", {"Zenit DTK-4? 7.62x39 muzzle brake", 26806}},
        {"5ba2657ed4351e0035628ff2", {"MP7 4.6x30 30-round magazine", 34326}},
        {"5cf4e3f3d7f00c06595bc7f0", {"AK 5.45 Design Aggressor handguard", 30722}},
        {"5a32a064c4a28200741e22de", {"SilencerCo Osprey 9 9x19mm sound suppressor", 28527}},
        {"5c6bf4aa2e2216001219b0ae", {"AK US Palm pistol grip", 23192}},
        {"56083e1b4bdc2dc8488b4572", {"SV-98 rear sight", 27059}},
        {"5addccf45acfc400185c2989", {"M14 7.62x51 X-14 50-round drum magazine", 33725}},
        {"5b3b6e495acfc4330140bd88", {"Armasight Vulcan MG 3.5x night vision scope", 26170}},
        {"5df8e053bb49d91fb446d6a6", {"SR-25 charging handle", 17269}},
        {"5ab8dab586f77441cd04f2a2", {"WARTECH MK3 TV-104 chest rig", 26480}},
        {"57838c962459774a1651ec63", {"VSS Vintorez 9x39 integral barrel-suppressor", 31866}},
        {"5926d33d86f77410de68ebc0", {"MP5SD 9x19 sound suppressor", 26709}},
        {"5d3ef698a4b9361182109872", {"Gemtech SFN-57 5.7x28 sound suppressor", 24815}},
        {"5ac66d725acfc43b321d4b60", {"AK-104 7.62x39 assault rifle", 29328}},
        {"57372c56245977685e584582", {"5.45x39 BT gs 120 pcs. ammo pack", 32113}},
        {"5b80242286f77429445e0b47", {"AK Hexagon handguard (Anodized Red)", 27831}},
        {"5a0eebed86f77461230ddb3d", {"Health Resort west wing room 325 key", 30508}},
        {"5ba26b01d4351e0085325a51", {"MP7 flip up front sight", 21636}},
        {"5fd8d28367cb5e077335170f", {"Smoke balaclava", 26963}},
        {"5b3a16655acfc40016387a2a", {"AR-15 Yankee Hill Annihilator multi-caliber flash hider", 25219}},
        {"60a6220e953894617404b00a", {"Stich Profi Chest Rig MK2 (Recon, A-TACS FG)", 27960}},
        {"5b2240bf5acfc40dc528af69", {"AR-15 Radian Weapons Raptor charging handle", 23752}},
        {"5a34fae7c4a2826c6e06d760", {"AR-10 7.62x51 22 inch barrel", 27084}},
        {"6087e2a5232e5a31c233d552", {"AKM/AK-74 ProMag Archangel OPFOR AA47 buttstock", 29542}},
        {"59fafc9386f774067d462453", {"AK 7.62x39 Palm US AK30 30-round magazine (Flat Dark Earth)", 28924}},
        {"590a391c86f774385a33c404", {"Magnet", 22656}},
        {"5b86a0e586f7745b600ccb23", {"Mosin 7.62x54R Bramit sound suppressor", 26592}},
        {"5a7dbfc1159bd40016548fde", {"Hera Arms CQR tactical grip", 26207}},
        {"55d4491a4bdc2d882f8b456e", {"MP-133 12ga 510mm barrel", 24943}},
        {"5d44069ca4b9361ebd26fc37", {"Magpul PRS GEN3 stock", 29784}},
        {"5caf1109ae9215753c44119f", {"ASh-12 12.7x55 20-round magazine", 27719}},
        {"5d2702e88abbc31ed91efc44", {"Remington M700 7.62x51 26 inch stainless steel barrel", 25900}},
        {"5e54f76986f7740366043752", {"Shroud half-mask", 25476}},
        {"57da93632459771cb65bf83f", {"KAC QDSS NT-4 5.56x45 sound suppressor (Black)", 26764}},
        {"5c066ef40db834001966a595", {"Armasight NVG head strap", 50587}},
        {"57f3c6bd24597738e730fa2f", {"PP-91-01 Kedr-B 9x18PM submachine gun", 27096}},
        {"5780cf942459777df90dcb72", {"Dorm room 214 key", 26188}},
        {"59c0ec5b86f77435b128bfca", {"Hexagon 12K 12ga sound suppressor", 26067}},
        {"5ef3448ab37dfd6af863525c", {"M1911A1 .45 ACP Mec-Gar 11-round magazine", 26933}},
        {"5ef1ba28c64c5d0dfc0571a5", {"Mesa Tactical Crosshair Hydraulic buffer tube", 27577}},
        {"5e87076ce2db31558c75a11d", {"M590A1 SpeedFeed short forestock", 15749}},
        {"59e0bed186f774156f04ce84", {"Vltor CASV KeyMod 6 inch rail", 28195}},
        {"564caa3d4bdc2d17108b458e", {"AK 5.45x39 TGP-A muzzle device/suppressor", 25410}},
        {"5af0561e86f7745f5f3ad6ac", {"Powerbank", 26981}},
        {"57c44f4f2459772d2c627113", {"AS VAL dust cover", 27640}},
        {"55d614004bdc2d86028b4568", {"Surefire SOCOM556-MONSTER 5.56x45 sound suppressor", 25209}},
        {"59ecc3dd86f7746dc827481c", {"AK Zenit PT-3 \"Klassika\" stock", 25508}},
        {"5c4eecc32e221602b412b440", {"SV-98 7.62x54R sound suppressor", 25008}},
        {"5ad5ccd186f774446d5706e9", {"OLI administration office key", 22970}},
        {"5bfebc320db8340019668d79", {"Remington M700 7.62x51 20 inch barrel", 28692}},
        {"5d67abc1a4b93614ec50137f", {"FN Five-seveN MK2 5.7x28 pistol (Flat Dark Earth)", 25670}},
        {"5ac733a45acfc400192630e2", {"AK-105 rear sight (6P44 Sb.1-30)", 25000}},
        {"57c5ac0824597754771e88a9", {"March Tactical 3-24x42 FFP optical scope", 23895}},
        {"56dee2bdd2720bc8328b4567", {"MP-153 12ga semi-automatic shotgun", 28741}},
        {"5cdeac42d7f00c000d36ba73", {"Remington M700 Magpul Pro 700 folding stock", 24968}},
        {"5e848d1c264f7c180b5e35a9", {"KS-23 23x75 510mm barrel", 22336}},
        {"57f3c8cc2459773ec4480328", {"PP-91-01 Kedr-B 9x18PM sound suppressor", 12668}},
        {"5bfd37c80db834001d23e842", {"Mosin sniper carbine stock", 13122}},
        {"5d2dc3e548f035404a1a4798", {"Monstrum Compact prism scope 2x32", 27578}},
        {"590c645c86f77412b01304d9", {"Diary", 26105}},
        {"5f6331e097199b7db2128dc2", {"AK TDI X47 tactical handguard rail system", 24561}},
        {"5a7ad74e51dfba0015068f45", {"Glock 9x19 Fischer Development FD917 sound suppressor", 24510}},
        {"5734758f24597738025ee253", {"Golden neck chain", 24041}},
        {"5a398ab9c4a282000c5a9842", {"Ops Core Single Clamp Rail Adapter mount", 65199}},
        {"5d5d85c586f774279a21cbdb", {"Haley Strategic D3CRX Chest Harness", 24745}},
        {"593d493f86f7745e6b2ceb22", {"AK-74 Hexagon 5.45x39 sound suppressor", 23551}},
        {"5a34f7f1c4a2826c6e06d75d", {"AR-10 7.62x51 18 inch barrel", 24081}},
        {"59984ab886f7743e98271174", {"PP-19-01 Vityaz-SN 9x19 submachine gun", 21137}},
        {"603409c80ca681766b6a0fb2", {"NPP KLASS Condor glasses", 26786}},
        {"60098ad7c2240c0fe85c570a", {"AFAK personal tactical first aid kit", 25807}},
        {"5cf6937cd7f00c056c53fb39", {"AR-15 Bulletec ST-6012 5.56x45 muzzle brake", 26774}},
        {"5ab8e9fcd8ce870019439434", {"AKS-74N 5.45x39 assault rifle", 23783}},
        {"5a33e75ac4a2826c6e06d759", {"AR-15 Hera Arms CQR pistol grip-stock", 24889}},
        {"5447ac644bdc2d6c208b4567", {"5.56x45 M855 30 pcs. ammo pack", 24125}},
        {"5a71e4f48dc32e001207fb26", {"Glock ZEV Tech Hex Spartan pistol slide", 26475}},
        {"60a621c49c197e4e8c4455e6", {"Stich Profi Chest Rig MK2 (Assault, A-TACS FG)", 25406}},
        {"609269c3b0e443224b421cc1", {"SilencerCo ASR 51T 5.56x45 flash hider", 22558}},
        {"5de8eac42a78646d96665d91", {"MP9 9x19 30-round magazine", 25514}},
        {"59e6687d86f77411d949b251", {"Molot VPO-209 .366 TKM carbine", 23041}},
        {"57cd379a24597778e7682ecf", {"Kiba Arms Tactical Tomahawk", 24000}},
        {"5e71f6be86f77429f2683c44", {"Twitch Rivals 2020 mask", 24000}},
        {"5926bb2186f7744b1c6c6e60", {"HK MP5 9x19 submachine gun (Navy 3 Round Burst)", 26552}},
        {"5c6165902e22160010261b28", {"SIG Sauer SRD9 9x19mm sound suppressor", 21868}},
        {"5c88f24b2e22160bc12c69a6", {"SVD 7.62x54R 20-round magazine", 26205}},
        {"5c12688486f77426843c7d32", {"Paracord", 25475}},
        {"5b432b2f5acfc4771e1c6622", {"Shattered light armored mask", 27236}},
        {"55d482194bdc2d1d4e8b456b", {"AK-74 5.45x39 6L31 60-round magazine", 20723}},
        {"5c165d832e2216398b5a7e36", {"Peltor Tactical Sport headset", 23599}},
        {"5a145d7b86f7744cbb6f4a13", {"Health Resort east wing room 308 key", 26513}},
        {"5e2192a498a36665e8337386", {"AK KGB MG-47 pistol grip (Anodized Red)", 21475}},
        {"5fd4c60f875c30179f5d04c2", {"Gear Craft GC-BSS-MK1 chest rig", 24129}},
        {"5d1b304286f774253763a528", {"Working LCD", 23423}},
        {"5d4405f0a4b9361e6a4e6bd9", {"AR-15 Lone Star Armory Ion Lite handguard", 17496}},
        {"593d489686f7745c6255d58a", {"AKM Hexagon 7.62x39 sound suppressor", 23769}},
        {"5d122e7bd7ad1a07102d6d7f", {"AR-15 URX 3.1 10.75 inch handguard", 16980}},
        {"5a351711c4a282000b1521a4", {"MP5 9x19 X Products X-5 50-round drum magazine", 30093}},
        {"5f60bf4558eff926626a60f2", {"Caiman Fixed Arm Visor", 22111}},
        {"5b099bb25acfc400186331e8", {"SA-58 Extreme Duty dust cover", 25166}},
        {"5beec8b20db834001961942a", {"RPK-16 buffer tube", 21232}},
        {"544909bb4bdc2d6f028b4577", {"AN/PEQ-15 tactical device", 22591}},
        {"5cc70093e4a949033c734312", {"FN P90 5.7x28 50-round magazine", 27342}},
        {"5c0e533786f7747fa23f4d47", {"Zagustin hemostatic drug injector", 23075}},
        {"59db3acc86f7742a2c4ab912", {"AR-15 Stark AR Rifle grip (Black)", 29468}},
        {"5c0e531286f7747fa54205c2", {"SJ1 TGLabs combat stimulant injector", 24524}},
        {"5e00903ae9dc277128008b87", {"B&T MP9 9x19 submachine gun", 23623}},
        {"5649a2464bdc2d91118b45a8", {"NcStar MPR45 Backup mount", 24032}},
        {"5cbdb1b0ae9215000d50e105", {"AK-74 polymer stock (6P20 Sb.7) Plum", 18345}},
        {"5e848db4681bea2ada00daa9", {"KS-23 wooden stock", 24959}},
        {"5649b0fc4bdc2d17108b4588", {"AK-74 polymer stock (6P20 Sb.7)", 11366}},
        {"5aa2a7e8e5b5b00016327c16", {"USEC baseball cap", 7771}},
        {"57371e4124597760ff7b25f1", {"9x18mm PM PPT gzh", 11348}},
        {"5df8f541c41b2312ea3335e3", {"KAC 7.62x51 20-round steel magazine", 23182}},
        {"5c7954d52e221600106f4cc7", {"Gemtech ONE direct thread mount adapter", 23196}},
        {"57347c2e24597744902c94a1", {"Power supply unit", 25071}},
        {"5e00cdd986f7747473332240", {"TW EXFIL Ballistic helmet face shield (Black)", 23479}},
        {"5d3eb536a4b9363b1f22f8e2", {"FN Five-seveN MK2 front sight", 20541}},
        {"5b7be1125acfc4001876c0e5", {"SA-58 7.62x51 16 inch barrel", 21606}},
        {"5d2703038abbc3105103d94c", {"Remington M700 7.62x51 20 inch stainless steel barrel", 22800}},
        {"60391b0fb847c71012789415", {"TP-200 TNT brick", 22380}},
        {"5a7882dcc5856700177af662", {"M870 12ga 4-shell magazine", 16395}},
        {"603648ff5a45383c122086ac", {"Azimut SS Zhuk chest harness (Black)", 23271}},
        {"5dff8db859400025ea5150d4", {"SVD SAG low sidemount", 22302}},
        {"602e3f1254072b51b239f713", {"STM Arms buffer tube", 21130}},
        {"5d3eb3b0a4b93615055e84d2", {"FN Five-seveN MK2 5.7x28 pistol", 24471}},
        {"5bfe89510db834001808a127", {"FAB Defense buffer tube for AGR-870", 24728}},
        {"5a144dfd86f77445cb5a0982", {"Health Resort west wing room 203 key", 27202}},
        {"5b07db875acfc40dc528a5f6", {"AR-15 Tactical Dynamics Skeletonized pistol grip", 19036}},
        {"5d1c702ad7ad1a632267f429", {"Glock FAB Defense GLR-17 stock", 25613}},
        {"59136e1e86f774432f15d133", {"Dorm room 110 key", 22569}},
        {"6040dd4ddcf9592f401632d2", {"Azimut SS Zhuk Chest Harness (SURPAT)", 23474}},
        {"5aa7d03ae5b5b00016327db5", {"UNTAR helmet", 22944}},
        {"5cc701d7e4a94900100ac4e7", {"FN P90 5.7x28 16 inch barrel", 22300}},
        {"5de65547883dde217541644b", {"VPO-215 .366TKM 23 inch barrel", 12407}},
        {"5ba26b17d4351e00367f9bdd", {"MP7 flip up rear sight", 30746}},
        {"60339954d62c9b14ed777c06", {"STM-9 Gen.2 9x19 carbine", 21911}},
        {"5a32aa8bc4a2826c6e06d737", {"Trijicon RMR reflex sight", 22215}},
        {"5e01f37686f774773c6f6c15", {"TW EXFIL Ballistic helmet face shield (Coyote Tan)", 22530}},
        {"5e340dcdcb6d5863cc5e5efb", {"VOG-25 Khattabka grenade", 23166}},
        {"5c5db6652e221600113fba51", {"MPX 9x19 41-round magazine", 16209}},
        {"5bbde409d4351e003562b036", {"Mosin AIM Sports Recoil pad", 28766}},
        {"58889c7324597754281f9439", {"DVL-10 muzzle device", 22595}},
        {"5ed515f6915ec335206e4152", {"AHF1-M stimulant injector", 21921}},
        {"5fc64ea372b0dd78d51159dc", {"Cultist knife", 20965}},
        {"5df8a2ca86f7740bfe6df777", {"6B2 armor (Flora)", 23531}},
        {"5a7d9122159bd4001438dbf4", {"Glock Dead Ringer Snake Eye rear sight", 26695}},
        {"5cc6ea85e4a949000e1ea3c3", {"FN P90 K&M The Handler charging handle", 18521}},
        {"5b30ac585acfc433000eb79c", {"AK Magpul MOE pistol grip", 26327}},
        {"5bae13bad4351e00320204af", {"Mosin ProMag Archangel OPFOR PRS stock", 16551}},
        {"5a0ea69f86f7741cd5406619", {"Health Resort east wing office room 108 key", 22375}},
        {"5b7d37845acfc400170e2f87", {"SA-58/FAL 7.62x51 British 30-round magazine", 21531}},
        {"5e217ba4c1434648c13568cd", {"AKM/AK-74 Hexagon \"Kocherga\" stock (Anodized Red)", 18490}},
        {"5c1127bdd174af44217ab8b9", {"9x19mm RIP 20-round ammo box", 22463}},
        {"5a16badafcdbcb001865f72d", {"Ops-Core FAST Side Armor", 23388}},
        {"5c1265fc86f7743f896a21c2", {"Broken GPhone X", 21682}},
        {"5b7be46e5acfc400170e2dcf", {"Vltor CASV 5 inch rail", 28537}},
        {"5a0eff2986f7741fd654e684", {"Health Resort west wing room 321 safe key", 22827}},
        {"59fafc5086f7740dbe19f6c3", {"AK 7.62x39 Palm US AK30 30-round magazine (Black)", 25075}},
        {"5894a2c386f77427140b8342", {"MPX 9x19 203mm barrel", 18084}},
        {"5c87a07c2e2216001219d4a2", {"HK E1 stock", 27398}},
        {"57cffcd624597763133760c5", {"Magpul M-LOK AFG tactical grip (Flat Dark Earth)", 37765}},
        {"55d485804bdc2d8c2f8b456b", {"MP-133 12ga 8-shell magazine", 28144}},
        {"5a27b6bec4a282000e496f78", {"SR-1MP 9x21 silencer", 21147}},
        {"57347c5b245977448d35f6e1", {"Bolts", 21994}},
        {"5c1793902e221602b21d3de2", {"Crye Precision AirFrame Ears", 22267}},
        {"5ea02bb600685063ec28bfa1", {"PPSh-41 7.62x25 10.6 inch barrel", 21525}},
        {"56eabf3bd2720b75698b4569", {"Magpul MOE Carbine stock (Black)", 32758}},
        {"5bffdc370db834001d23eca8", {"6Kh5 Bayonet", 18642}},
        {"5888961624597754281f93f3", {"Harris HBR Bipod", 21014}},
        {"5991b51486f77447b112d44f", {"MS2000 Marker", 17031}},
        {"5bed625c0db834001c062946", {"RPK-16 5.45x39 95-round drum magazine", 26156}},
        {"5b44c8ea86f7742d1627baf1", {"Blackhawk! Commando Chest Harness (Coyote Tan)", 23676}},
        {"5ea172e498dacb342978818e", {"AR-15 SureFire FH556RC 5.56x45 flash hider", 18547}},
        {"5c7fb51d2e2216001219ce11", {"AR-15 Surefire SF3P 5.56x45 Flash hider", 23772}},
        {"5a16b8a9fcdbcb00165aa6ca", {"Norotos Titanium Advanced Tactical Mount", 35030}},
        {"5fc2369685fd526b824a5713", {"B5 Systems Precision stock", 22201}},
        {"5a6b5b8a8dc32e001207faf3", {"Glock 9x19 Lone Wolf threaded barrel", 14966}},
        {"5e2af4a786f7746d3f3c3400", {"Ripstop fabric", 24263}},
        {"5fbcbd10ab884124df0cd563", {"SIG Sauer Two Port Brake 7.62x51 muzzle brake", 19834}},
        {"5f6341043ada5942720e2dc5", {"AK Aeroknox Scorpius pistol grip", 23681}},
        {"5ab8f20c86f7745cdb629fb2", {"Ski hat with holes for eyes", 21973}},
        {"5bbdb870d4351e00367fb67d", {"Mosin ATI Monte Carlo stock", 18585}},
        {"570fd6c2d2720bc6458b457f", {"EOTech 553 holographic sight", 22395}},
        {"5f6340d3ca442212f4047eb2", {"Tactical Dynamics aluminum skeletonized vertical grip", 23363}},
        {"58d2912286f7744e27117493", {"Magpul MOE Carbine stock series Rubber Butt-Pad", 29596}},
        {"5d6d3be5a4b9361bc73bc763", {"LSHZ-2DTM Aventail", 20588}},
        {"59fb137a86f7740adb646af1", {"Tromix Monster Claw 12ga muzzle brake", 24439}},
        {"603372f153a60014f970616d", {"STM-9 9x19 14 inch barrel", 12425}},
        {"5d2da1e948f035477b1ce2ba", {"Trijicon SRS-02 reflex sight", 22607}},
        {"5b7be1ca5acfc400170e2d2f", {"SA-58 quad rail full length handguard", 13361}},
        {"5abcbc27d8ce8700182eceeb", {"AKMSN 7.62x39 assault rifle", 20981}},
        {"5d1340cad7ad1a0b0b249869", {"5.56x45 Magpul PMAG GEN M3 W 30 STANAG 30-round magazine (Flat Dark Earth)", 20956}},
        {"5c0e530286f7747fa1419862", {"Propital regenerative stimulant injector", 21491}},
        {"5c878ebb2e2216001219d48a", {"AK 7.62x39 Lantac Dragon muzzle brake & compensator", 19663}},
        {"57cff947245977638e6f2a19", {"AK Magpul MOE AKM handguard (Black)", 19022}},
        {"5c05293e0db83400232fff80", {"Trijicon ACOG TA01NSN 4x32 scope (Black)", 18598}},
        {"5beec9450db83400970084fd", {"RPK-16 rear sight base", 20583}},
        {"5d026791d7ad1a04a067ea63", {"AR-10 Fortis RED Brake 7.62x51 muzzle brake", 21624}},
        {"5c6d85e02e22165df16b81f4", {"HK 416A5 5.56x45 10.6 inch barrel", 13961}},
        {"5c48a2852e221602b21d5923", {"MDR 5.56x45 406mm barrel", 21366}},
        {"5c7e8fab2e22165df16b889b", {"AAC Illusion 9 9x19mm sound suppressor", 19345}},
        {"5e2af02c86f7746d420957d4", {"Pack of chlorine", 18831}},
        {"5b1fa9b25acfc40018633c01", {"Glock 18C 9x19 machine pistol", 23548}},
        {"5d133067d7ad1a33013f95b4", {"KAC URX 3 3 inch rail", 14460}},
        {"5d40407c86f774318526545a", {"Bottle of Tarkovskaya vodka", 19646}},
        {"59f98b4986f7746f546d2cef", {"Serdyukov SR-1MP Gyurza 9x21 pistol", 19583}},
        {"5b07dd285acfc4001754240d", {"Steiner LAS/TAC 2 tactical flashlight", 24066}},
        {"5d3eb4aba4b93650d64e497d", {"FN Five-seveN MK2 rear sight", 17852}},
        {"5a7828548dc32e5a9c28b516", {"Remington Model 870 12ga pump-action shotgun", 21077}},
        {"5a7b4960e899ef197b331a2d", {"Glock Pachmayr tactical rubber grip", 17614}},
        {"5d010d1cd7ad1a59283b1ce7", {"MP5 CAA HX-5 handguard", 17865}},
        {"5ca20d5986f774331e7c9602", {"WARTECH Berkut BB-102 backpack", 20981}},
        {"56deeefcd2720bc8328b4568", {"MP-153 8-shell magazine extension", 20000}},
        {"544a378f4bdc2d30388b4567", {"5.56x45 Magpul PMAG GEN M3 40 STANAG 40-round magazine", 16036}},
        {"55d4af3a4bdc2d972f8b456f", {"AR-15 UTG Low Profile A2 front sight", 6926}},
        {"5df8a77486f77412672a1e3f", {"Christmas tree ornament (Violet)", 20000}},
        {"5f9949d869e2777a0e779ba5", {"Rivals 2020 armband", 20000}},
        {"5f99418230835532b445e954", {"Rivals 2020 cap", 20000}},
        {"5f994730c91ed922dd355de3", {"Rivals 2020 beanie", 20000}},
        {"5d2f25bc48f03502573e5d85", {"MP5K End Cap stock", 19999}},
        {"60a7acf20c5cb24b01346648", {"BOSS cap", 15957}},
        {"5a33a8ebc4a282000c5a950d", {"Alpha Dog Alpha 9 9x19 sound suppressor", 20093}},
        {"5d15cf3bd7ad1a67e71518b2", {"AR-15 Magpul MOE pistol grip (Flat Dark Earth)", 26846}},
        {"5ea03f7400685063ec28bfa8", {"PPSh-41 7.62x25 submachine gun", 20444}},
        {"5cbdc23eae9215001136a407", {"AK 7.62x39 Molot 75-round drum magazine", 24285}},
        {"5ab8e4ed86f7742d8e50c7fa", {"MF-UNTAR body armor (0/50)", 23154}},
        {"5bb20da5d4351e0035629dbf", {"HK 416A5 5.56x45 16.5 inch barrel with flip-up front sight", 20369}},
        {"5bc9be8fd4351e00334cae6e", {"42nd Signature Blend English Tea", 19503}},
        {"5c5db6f82e2216003a0fe914", {"MPX PMM ULSS foldable stock", 15900}},
        {"5b099a765acfc47a8607efe3", {"SA-58 7.62x51 11 inch barrel", 18594}},
        {"5a0f075686f7745bcc42ee12", {"Shoreline store safe key", 20182}},
        {"5d00ef6dd7ad1a0940739b16", {"AR-10 Noveske SWS N6 Split handguard", 20461}},
        {"5b800e9286f7747a8b04f3ff", {"AK Hexagon handguard", 20379}},
        {"5f5f41f56760b4138443b352", {"Direct Action Thunderbolt compact chest rig", 20928}},
        {"590c35a486f774273531c822", {"Shustrilo sealing foam", 15856}},
        {"5d135ecbd7ad1a21c176542e", {"Magpul CTR carbine stock (Flat Dark Earth)", 20475}},
        {"60a23797a37c940de7062d02", {"SIG Sauer ROMEO8T reflex sight", 20544}},
        {"5ac78a9b86f7741cca0bbd8d", {"Signal Jammer", 18846}},
        {"5df916dfbb49d91fb446d6b9", {"AR-10 URX 4 handguard", 21809}},
        {"5a33bab6c4a28200741e22f8", {"Trijicon RMR mount for ACOG scopes", 15131}},
        {"5de8eaadbbaf010b10528a6d", {"MP9 9x19 25-round magazine", 20437}},
        {"5d4405aaa4b9361e6a4e6bd3", {"TX-15 5.56x45 Lightweight upper receiver", 19446}},
        {"5d40419286f774318526545f", {"Metal cutting scissors", 21712}},
        {"606dae0ab0e443224b421bb7", {"MP-155 12ga semi-automatic shotgun", 22946}},
        {"5645bc214bdc2d363b8b4571", {"FORT Kiver-M bulletproof helmet", 20244}},
        {"607ea812232e5a31c233d53c", {"MP-155 Ultima short rail", 20876}},
        {"5c06c6a80db834001b735491", {"SSh-68 steel helmet", 19195}},
        {"58ac1bf086f77420ed183f9f", {"MPX retractable stock pipe adapter", 22389}},
        {"6033fa48ffd42c541047f728", {"Opsmen Earmor M32 headset", 18944}},
        {"5b432c305acfc40019478128", {"GP-5 gas mask", 21793}},
        {"544fb45d4bdc2dee738b4568", {"Salewa first aid kit", 20097}},
        {"5a71e22f8dc32e00094b97f4", {"Glock ZEV Tech HEX Gen3 pistol slide", 20770}},
        {"5648b4534bdc2d3d1c8b4580", {"AK Zenit B-10M handguard with B-19 upper handguard mount", 22141}},
        {"5ea05cf85ad9772e6624305d", {"Tac-Kek FAST MT Helmet", 19996}},
        {"5c471bd12e221602b4129c3a", {"SVDS dust cover", 10437}},
        {"5a1eacb3fcdbcb09800872be", {"Trijicon REAP-IR scope eyecup", 16931}},
        {"5bbdb811d4351e45020113c7", {"Mosin AIM Sports Tri-Rail mount", 15134}},
        {"572b7adb24597762ae139821", {"Scav Vest", 18153}},
        {"58d399e486f77442e0016fe7", {"Aimpoint Micro T-1 reflex sight", 19776}},
        {"5d1b2ffd86f77425243e8d17", {"NIXXOR lens", 19631}},
        {"5ab8ee7786f7742d8f33f0b9", {"VKBO army bag", 22048}},
        {"5c0d2727d174af02a012cf58", {"PSh-97 \"Djeta\" riot helmet", 19389}},
        {"5c920e902e221644f31c3c99", {"P226 9x19 20-round extended magazine", 19420}},
        {"577d141e24597739c5255e01", {"Burris FastFire 3 reflex sight", 19013}},
        {"55802f5d4bdc2dac148b458f", {"AR-15 Magpul MOE pistol grip (Black)", 20135}},
        {"5ed515c8d380ab312177c0fa", {"3-(b-TG) stimulant injector", 19450}},
        {"5ed515ece452db0eb56fc028", {"P22 injector", 19208}},
        {"57ffb0e42459777d047111c5", {"PBS-4 5.45x39 sound suppressor", 18582}},
        {"5e9dcf5986f7746c417435b3", {"LBT-8005A Day Pack backpack", 19375}},
        {"5b7d679f5acfc4001a5c4024", {"SA-58 FAB Defense AG-FAL pistol grip", 16625}},
        {"60a2828e8689911a226117f9", {"Hazard4 Pillbox backpack", 19463}},
        {"5a145ebb86f77458f1796f05", {"Health Resort east wing room 316 key", 24218}},
        {"5bbde41ed4351e003562b038", {"Mosin Tacfire pistol grip", 21791}},
        {"5bb20dcad4351e3bac1212da", {"HK 416A5 low profile gas block", 18667}},
        {"590c2e1186f77425357b6124", {"Toolset", 18747}},
        {"5c6d11152e2216000f2003e7", {"HK 416A5 Strike Industries CRUX 15 inch M-LOK handguard", 20112}},
        {"55d449444bdc2d962f8b456d", {"MP-133 12ga 610mm barrel with rib", 18500}},
        {"544fb5454bdc2df8738b456a", {"Leatherman Multitool", 18681}},
        {"5b800ebc86f774394e230a90", {"Hexagon medium length rail", 19192}},
        {"57c55efc2459772d2c6271e7", {"Hogue Overmolded Rubber Grip (Black)", 15750}},
        {"5a9eb32da2750c00171b3f9c", {"FAB Defense GL-SHOCK buttstock", 18763}},
        {"5de8ea8ffd6b4e6e2276dc35", {"MP9 9x19 20-round magazine", 17555}},
        {"5ed515e03a40a50460332579", {"L1 (Norepinephrine) injector", 18100}},
        {"5ca20abf86f77418567a43f2", {"Dynaforce Triton M43-A chest harness", 19226}},
        {"5c0e2f94d174af029f650d56", {"AR-15 5.56x45 406mm barrel", 18591}},
        {"5d135e83d7ad1a21b83f42d8", {"Magpul CTR Carbine stock", 23642}},
        {"5fbc210bf24b94483f726481", {"MCX gas block", 18333}},
        {"5649b2314bdc2d79388b4576", {"AKM/AK-74 ME4 buffer tube adapter", 15381}},
        {"5c07c5ed0db834001b73571c", {"MP5 Noveske-style muzzle brake & compensator", 20427}},
        {"5649ae4a4bdc2d1b2b8b4588", {"AK Zenit RK-3 pistol grip", 20938}},
        {"5649b1c04bdc2d16268b457c", {"AK-74 wooden stock (6P20 Sb.5)", 11453}},
        {"5c5970672e221602b21d7855", {"SKS 7.62x39 ProMag AALVX 35-round magazine", 13470}},
        {"5aa7e3abe5b5b000171d064d", {"ZSh-1-2M face shield", 19911}},
        {"5afd7ded5acfc40017541f5e", {"SKS TAPCO Intrafuse stock", 23182}},
        {"59ef13ca86f77445fd0e2483", {"Jack-o'-lantern tactical pumpkin helmet", 16264}},
        {"5c07c9660db834001a66b588", {"MP5 End Cap stock", 26757}},
        {"5fbc22ccf24b94483f726483", {"SIG Sauer Taper-LOK muzzle adapter", 19314}},
        {"5bb20d92d4351e00853263eb", {"HK 416A5 5.56x45 11 inch barrel", 18329}},
        {"57cffcdd24597763f5110006", {"Magpul M-LOK AFG tactical grip (Olive Drab)", 18111}},
        {"5de7bd7bfd6b4e6e2276dc25", {"B&T MP9-N 9x19 submachine gun", 19605}},
        {"5e87080c81c4ed43e83cefda", {"M590A1 12ga 8-shell magazine cap", 22440}},
        {"587e02ff24597743df3deaeb", {"Simonov OP-SKS 7.62x39 semi-automatic carbine (Hunting Rifle Version)", 17614}},
        {"5c07c60e0db834002330051f", {"ADAR 2-15 5.56x45 carbine", 18188}},
        {"5ae096d95acfc400185c2c81", {"Mosin rifle standard stock", 16358}},
        {"5a5f1ce64f39f90b401987bc", {"Zenit 2IRS Klesch flashlight + laser designator", 24341}},
        {"5caf187cae92157c28402e43", {"ASh-12 12.7x55 tactical sound suppressor", 19814}},
        {"5c7d55de2e221644f31bff68", {"Aimpoint COMP M4 reflex sight", 17105}},
        {"5c5952732e2216398b5abda2", {"Zenit Perst-3 tactical device", 19142}},
        {"58d3db5386f77426186285a0", {"M67 Hand grenade", 18185}},
        {"59e35de086f7741778269d84", {"Electric drill", 18379}},
        {"5c9a07572e221644f31c4b32", {"AK Magpul Zhukov-U handguard (Black)", 17009}},
        {"56742c324bdc2d150f8b456d", {"Broken GPhone", 18084}},
        {"57c69dd424597774c03b7bbc", {"30mm Scope mount", 16805}},
        {"5c4eec9b2e2216398b5aaba2", {"SV-98 7.62x54R thread adapter", 18550}},
        {"5bfebc250db834001a6694e1", {"Remington M700 7.62x51 26 inch barrel", 16553}},
        {"5cc9a96cd7f00c011c04e04a", {"AK-74 5.45x39 SRVV muzzle brake", 21733}},
        {"5c06595c0db834001a66af6c", {"LA-5B/PEQ tactical device", 17252}},
        {"602a9740da11d6478d5a06dc", {"PL-15 9x19 pistol", 16013}},
        {"59ecc28286f7746d7a68aa8c", {"AKS-74/AKS-74U Zenit PT Lock", 17138}},
        {"5780cfa52459777dfb276eb1", {"Dorm room 220 key", 19057}},
        {"5b7bedd75acfc43d825283f9", {"SA-58/FAL Vltor CASV-FAL handguard", 18389}},
        {"5b2cfa535acfc432ff4db7a0", {"AR-15 Alexander Arms MK10 handguard", 17596}},
        {"590a3b0486f7743954552bdb", {"Printed circuit board", 17717}},
        {"5b46238386f7741a693bcf9c", {"Kiver face shield", 18340}},
        {"57fd23e32459772d0805bcf1", {"Holosun LS321 Tactical device", 16635}},
        {"5e848d2eea0a7c419c2f9bfd", {"KS-23 23x75 700mm barrel", 15792}},
        {"5926dad986f7741f82604363", {"MP5 MFI HK universal low profile scope mount", 18615}},
        {"5d25d0ac8abbc3054f3e61f7", {"Remington M700 AT AICS polymer stock", 17707}},
        {"59e35abd86f7741778269d82", {"Sodium bicarbonate", 17983}},
        {"602a97060ddce744014caf6f", {"PL-15 9x19 sound suppressor", 17046}},
        {"5d4aaa54a4b9365392071170", {"AK TDI AKM-L handguard (Anodized Red)", 17855}},
        {"5c1cdd512e22161b267d91ae", {"Primary Arms Compact prism scope 2.5x", 17292}},
        {"5d02778e86f774203e7dedbe", {"CMS kit", 18825}},
        {"5ea03e9400685063ec28bfa4", {"PPSh-41 stock", 13475}},
        {"60363c0c92ec1c31037959f5", {"GP-7 gas mask", 17012}},
        {"5c501a4d2e221602b412b540", {"VPO-101 Vepr Hunter 7.62x51 carbine", 16194}},
        {"59e7635f86f7742cbf2c1095", {"BNTI Module-3M body armor", 17413}},
        {"5c0e2f26d174af02a9625114", {"ADAR 2-15 5.56x45 upper receiver", 16244}},
        {"5b222d405acfc400153af4fe", {"AK Zenit PT-1 \"Klassika\" stock", 14853}},
        {"5fd4c5477a8d854fa0105061", {"Security vest", 15131}},
        {"5e2af29386f7746d4159f077", {"KEKTAPE duct tape", 17170}},
        {"5dfcd0e547101c39625f66f9", {"SVD SAG MK1 Freefloat Chassis", 18040}},
        {"5b40e61f5acfc4001a599bec", {"USEC baseball cap (Black)", 7964}},
        {"5a7b483fe899ef0016170d15", {"SureFire XC1 tactical flashlight", 17722}},
        {"583990e32459771419544dd2", {"AKS-74UN 5.45x39 assault rifle", 17940}},
        {"5e2af22086f7746d3f3c33fa", {"Tube of Poxeram cold welding", 15796}},
        {"5cc7015ae4a949001152b4c6", {"FN P90 upper receiver top rail", 19656}},
        {"5b7bef9c5acfc43d102852ec", {"SA-58/FAL 7.62x51 X-FAL 50-round drum magazine", 21265}},
        {"59d6272486f77466146386ff", {"AK 7.62x39 Magpul PMAG 30 GEN M3 30-round magazine", 19099}},
        {"5d40412b86f7743cb332ac3a", {"Schaman shampoo", 18513}},
        {"60bf74184a63fc79b60c57f6", {"Bomber Beanie", 17256}},
        {"5894a13e86f7742405482982", {"MPX collapsing/telescoping stock", 40338}},
        {"5839a40f24597726f856b511", {"AKS-74UB 5.45x39 assault rifle", 17458}},
        {"5cdeac22d7f00c000f26168f", {"Remington M700 Magpul Pro 700 chassis", 13845}},
        {"5649af884bdc2d1b2b8b4589", {"AK Zenit B-33 dust cover", 21138}},
        {"59e3596386f774176c10a2a2", {"PAID AntiRoach spray", 17288}},
        {"5b3116595acfc40019476364", {"SIG Sauer ROMEO4 reflex sight", 15520}},
        {"5a718f958dc32e00094b97e7", {"Glock 9x19 SGMT 50-round drum magazine", 20935}},
        {"5ac66d9b5acfc4001633997a", {"AK-105 5.45x39 assault rifle", 17271}},
        {"5926d40686f7740f152b6b7e", {"MP5 A3 old model stock", 17076}},
        {"5ef35bc243cb350a955a7ccd", {"M1911A1 Wilson Ultralight skeletonized hammer", 21892}},
        {"5cf50fc5d7f00c056c53f83c", {"AK-74M CAA AKTS AK74 buffer tube", 17622}},
        {"6034cf5fffd42c541047f72e", {"Umka ?33-SET1 hunter vest", 17133}},
        {"5e32f56fcb6d5863cc5e5ee4", {"VOG-17 Khattabka grenade", 18232}},
        {"5b8403a086f7747ff856f4e2", {"Hexagon medium length rail (Anodized Red)", 15950}},
        {"5ad5d49886f77455f9731921", {"ULTRA power substation utility cabin key", 13403}},
        {"5abccb7dd8ce87001773e277", {"APB 9x18PM silenced machine pistol", 17751}},
        {"5de652c31b7e3716273428be", {"Molot VPO-215 .366 TKM bolt-action rifle", 16573}},
        {"59e35cbb86f7741778269d83", {"Corrugated hose", 13347}},
        {"5e848d99865c0f329958c83b", {"KS-23M polymer pistol grip", 14704}},
        {"587de4282459771bca0ec90b", {"P226 9x19 threaded barrel", 13049}},
        {"577e1c9d2459773cd707c525", {"Printer paper", 15899}},
        {"5d19cd96d7ad1a4a992c9f52", {"MP5 PTR Tri-Rail handguard", 17507}},
        {"5a718da68dc32e000d46d264", {"Glock 9x19 Magpul PMAG GL9 21-round magazine", 19063}},
        {"5c471c842e221615214259b5", {"SVDS gas tube", 16410}},
        {"5839a7742459773cf9693481", {"AKS-74UB dust cover", 15445}},
        {"5caf1041ae92157c28402e3f", {"ASh-12 12.7x55 10-round magazine", 16600}},
        {"5cf518cfd7f00c065b422214", {"AKM/AK-74 CAA AKTS AK buffer tube", 15923}},
        {"57838f9f2459774a150289a0", {"VSS 9x39 6L25 20-round magazine", 14153}},
        {"5af0484c86f7740f02001f7f", {"Majaica coffee", 17066}},
        {"59985a6c86f77414ec448d17", {"PP-19-01 Vityaz-SN dust cover", 11737}},
        {"5d3eb5eca4b9363b1f22f8e4", {"FN Five-seveN 5.7x28 20-round magazine", 15680}},
        {"576167ab2459773cad038c43", {"SOK-12 thread protection tube", 15714}},
        {"5cc9bcaed7f00c011c04e179", {"AR-15 Hera Arms HG-15 pistol grip", 17643}},
        {"5e848dc4e4dbc5266a4ec63d", {"KS-23M wire stock", 14079}},
        {"56ea8180d2720bf2698b456a", {"KAC QDC 5.56x45 flash suppressor kit", 16739}},
        {"5e870397991fd70db46995c8", {"Mossberg 590A1 12ga pump-action shotgun", 17869}},
        {"5a9fbb74a2750c0032157181", {"Rotor 43 .366TKM muzzle brake", 16266}},
        {"5e2af51086f7746d3f3c3402", {"UZRGM grenade fuze", 14969}},
        {"5c9a25172e2216000f20314e", {"AR-15 Daniel Defense RIS II 12.25 handguard", 16338}},
        {"603373004e02ce1eaa358814", {"STM-9 9x19 16 inch barrel", 16763}},
        {"5d4aaa73a4b9365392071175", {"AK TDI AKM-L handguard (Anodized Bronze)", 15690}},
        {"59e7708286f7742cbd762753", {"Ushanka ear flap hat", 15951}},
        {"5fc3e466187fea44d52eda90", {"HK UMP .45 ACP 25-round magazine", 15741}},
        {"57a3459f245977764a01f703", {"VSS/VAL Zenit B-3 ring mount", 17177}},
        {"5d1b3f2d86f774253763b735", {"Disposable syringe", 15502}},
        {"5bb20d9cd4351e00334c9d8a", {"HK 416A5 5.56x45 14.5 inch barrel", 15797}},
        {"5bfeaa0f0db834001b734927", {"Remington M700 .308 Wyatt's Outdoor 10-round magazine", 17038}},
        {"574dad8024597745964bf05c", {"SKS TOZ wooden stock (56-A-231 Sb.5)", 11099}},
        {"5c052a900db834001a66acbd", {"Trijicon ACOG TA01NSN 4x32 scope (Tan)", 15835}},
        {"5cde7b43d7f00c000d36b93e", {"Remington M700 AB Arms MOD*X rail mount", 14504}},
        {"58d2946c86f7744e271174b5", {"Magpul MOE Carbine stock (Foliage Green)", 16928}},
        {"5cc700ede4a949033c734315", {"FN P90 EFFEN 90 upper receiver", 16055}},
        {"5c6d46132e221601da357d56", {"5.56x45 TROY BattleMag STANAG 30-round magazine", 17857}},
        {"5e56991336989c75ab4f03f6", {"SVD modern handguard", 15251}},
        {"5a6b5ed88dc32e000c52ec86", {"Glock 9x19 SAI threaded barrel", 16255}},
        {"5e2af41e86f774755a234b67", {"Cordura polyamide fabric", 17504}},
        {"6034e3d953a60014f970617b", {"AR-15 STM 15 inch M-LOK handguard", 15294}},
        {"5e01e9e273d8eb11426f5bc3", {"SVDS Rotor 43 thread adapter", 12801}},
        {"5a329052c4a28200741e22d3", {"Remington R11 RSASS handguard", 16656}},
        {"590c5a7286f7747884343aea", {"Gunpowder \"Kite\"", 16658}},
        {"5cda9bcfd7f00c0c0b53e900", {"ASh-12 Vertical foregrip", 37021}},
        {"5df35ddddfc58d14537c2036", {"Orsis T-5000M stock", 15599}},
        {"5c0102b20db834001d23eebc", {"Remington RAHG 4 inch rail", 14765}},
        {"5c5db63a2e2216000f1b284a", {"MPX Midwest Industries 14 inch M-LOK handguard", 17147}},
        {"5cde739cd7f00c0010373bd3", {"Remington M700 AB Arms MOD*X GEN 3 stock", 14808}},
        {"5fce0cf655375d18a253eff0", {"Magpul RVG foregrip (Flat Dark Earth)", 16836}},
        {"5cc9ad73d7f00c000e2579d4", {"AK 7.62x39 SRVV muzzle brake & compensator", 16712}},
        {"5c59529a2e221602b177d160", {"MPX Lancer OEM 14 inch M-LOK handguard", 15008}},
        {"56e335e4d2720b6c058b456d", {"Scav backpack", 17513}},
        {"590c31c586f774245e3141b2", {"Pack of nails", 13019}},
        {"5c0548ae0db834001966a3c2", {"AK-101/SLR-106 5.56x45 Circle 10 30-round magazine", 16964}},
        {"5ea16ada09aa976f2e7a51be", {"AR-15 Geissele SMR MK16 13.5 inch M-LOK handguard", 15183}},
        {"5bf3e03b0db834001d2c4a9c", {"AK-74 5.45x39 assault rifle", 16727}},
        {"5ac7655e5acfc40016339a19", {"AK-74M 5.45x39 muzzle brake & compensator (6P20 0-20)", 10103}},
        {"5a0c59791526d8dba737bba7", {"AK GP-25 accessory kit recoil pad", 16993}},
        {"59db7e1086f77448be30ddf3", {"Trijicon ACOG 3.5x35 scope", 15383}},
        {"5af0454c86f7746bf20992e8", {"Aluminum splint", 14889}},
        {"576165642459773c7a400233", {"Saiga 12ga ver.10 12/76 semi-automatic shotgun", 16965}},
        {"5fb6567747ce63734e3fa1dc", {"KRISS Defiance low profile flip-up front sight", 10336}},
        {"5656eb674bdc2d35148b457c", {"40mm VOG-25", 13712}},
        {"5ac4cd105acfc40016339859", {"AK-74M 5.45x39 assault rifle", 16937}},
        {"57347c77245977448d35f6e2", {"Screw nuts", 14711}},
        {"5c793fde2e221601da358614", {"Strike Industries Viper Mod 1 stock", 14557}},
        {"5c10c8fd86f7743d7d706df3", {"Adrenaline injector", 15503}},
        {"5cf12a15d7f00c05464b293f", {"Remington M700 .308 ProMag AA-70 20-round magazine", 13766}},
        {"5737250c2459776125652acc", {"9x18PM PBM gzh 16 pcs. ammo pack", 14388}},
        {"5734773724597737fd047c14", {"Condensed milk", 18597}},
        {"60b0f93284c20f0feb453da7", {"Can of RatCola", 14739}},
        {"573477e124597737dd42e191", {"PC CPU", 16494}},
        {"5a7ad55551dfba0015068f42", {"Glock Aimtech Tiger Shark sight mount", 15133}},
        {"5c18b90d2e2216152142466b", {"Magpul MBUS Gen2 front flip-up sight (Flat Dark Earth)", 12954}},
        {"56deee15d2720bee328b4567", {"MP-153 12ga 4-shell forend cap", 15111}},
        {"5e87071478f43e51ca2de5e1", {"M590A1 12ga 20 inch barrel", 29987}},
        {"5732ee6a24597719ae0c0281", {"Waist pouch", 15000}},
        {"5947f92f86f77427344a76b1", {"AK TAPCO SAW-Style pistol grip (Black)", 13715}},
        {"5a9fb739a2750c003215717f", {"Rotor 43 9x19 muzzle brake", 14489}},
        {"5cf13123d7f00c1085616a50", {"Remington M700 ProMag Archangel polymer stock", 13046}},
        {"5b800ed086f7747baf6e2f9e", {"Hexagon short length rail", 13438}},
        {"5aa2b923e5b5b000137b7589", {"Round frame sunglasses", 15427}},
        {"590a3efd86f77437d351a25b", {"Gas analyzer", 15373}},
        {"5b7d64555acfc4001876c8e2", {"SA-58 BRS stock", 15313}},
        {"587e0531245977466077a0f7", {"OP-SKS wooden stock", 18768}},
        {"56ea8222d2720b69698b4567", {"SV-98 bipod", 10178}},
        {"5d1340b3d7ad1a0b52682ed7", {"5.56x45 Magpul PMAG GEN M3 30 STANAG 30-round magazine (Flat Dark Earth)", 15059}},
        {"5a7ae0c351dfba0017554310", {"Glock 17 9x19 pistol", 14413}},
        {"59fc48e086f77463b1118392", {"Magpul RVG foregrip (Black)", 16610}},
        {"5b30bc285acfc47a8608615d", {"Alexander Arms 10 inch rail", 17937}},
        {"5bd073a586f7747e6f135799", {"Fake mustache", 14037}},
        {"5a16ba61fcdbcb098008728a", {"Ops-Core FAST Gunsight Mandible", 14461}},
        {"574d967124597745970e7c94", {"Simonov SKS 7.62x39 semi-automatic carbine", 13748}},
        {"5c791e872e2216001219c40a", {"Strike Industries Cobra Tactical foregrip", 16432}},
        {"602a95fe4e02ce1eaa358729", {"PL-15 9x19 threaded barrel", 13912}},
        {"5bd073c986f7747f627e796c", {"Kotton beanie", 14404}},
        {"5b7be47f5acfc400170e2dd2", {"Magpul M-LOK 2.5 inch rail", 19038}},
        {"54491c4f4bdc2db1078b4568", {"MP-133 12ga pump-action shotgun", 14443}},
        {"5648b0744bdc2d363b8b4578", {"AK-74 wooden handguard (6P20 Sb.6)", 12417}},
        {"59e36c6f86f774176c10a2a7", {"Power cord", 16155}},
        {"5addc7005acfc4001669f275", {"M14 SAGE International M14ALCS (MOD-0) handguard", 13714}},
        {"5c82342f2e221644f31c060e", {"Zenit-BelOMO PSO-1 4x24 scope", 13251}},
        {"5a800961159bd4315e3a1657", {"Glock GTL 21 tactical flashlight with laser", 15385}},
        {"5c0672ed0db834001b7353f3", {"PP-19-01 Vityaz-SN 9x19 PUFGUN SG-919 30 30-round magazine", 17061}},
        {"57f4c844245977379d5c14d1", {"PP-9 Klin 9x18PMM submachine gun", 15106}},
        {"5a8036fb86f77407252ddc02", {"Shoreline plan map", 16099}},
        {"57486e672459770abd687134", {"OKP-7 reflex sight (Dovetail)", 15653}},
        {"59ff346386f77477562ff5e2", {"AKMS 7.62x39 assault rifle", 15165}},
        {"590c5c9f86f77477c91c36e7", {"WD-40 (400ml)", 14457}},
        {"5a787fadc5856700155a6ca1", {"M870 12ga 660mm vent rib barrel", 14215}},
        {"590c678286f77426c9660122", {"IFAK individual first aid kit", 16191}},
        {"609a63b6e2ff132951242d09", {"Valday Krechet reflex sight", 14299}},
        {"59e89d0986f77427600d226e", {"VPO-209 wooden stock", 10280}},
        {"5a7afa25e899ef00135e31b0", {"Glock Polymer80 PS9 pistol slide", 14122}},
        {"591af28e86f77414a27a9e1d", {"VTAC UVG Tactical grip", 15615}},
        {"58d2664f86f7747fec5834f6", {"DeltaPoint Cross Slot Mount base", 14091}},
        {"5448be9a4bdc2dfd2f8b456a", {"RGD-5 hand grenade", 13768}},
        {"5929a2a086f7744f4b234d43", {"UMTBS 6sh112 Scout-Sniper", 14882}},
        {"6034d0230ca681766b6a0fb5", {"CSA chest rig", 15223}},
        {"5c99f3592e221644fc633070", {"TOZ-106 custom cut Mosin stock", 19479}},
        {"59db3b0886f77429d72fb895", {"AR-15 Stark AR rifle grip (Flat Dark Earth)", 16861}},
        {"595cf16b86f77427440c32e2", {"AR-15 War Sport LVOA-S handguard (Black)", 13905}},
        {"5f3e77f59103d430b93f94c1", {"M1911A1 .45 ACP threaded barrel", 14242}},
        {"58aeac1b86f77457c419f475", {"MPX-SD 9x19 integrated sound suppressor", 13078}},
        {"5aaa5dfee5b5b000140293d3", {"5.56x45 Magpul PMAG GEN M3 30 STANAG 30-round magazine", 16411}},
        {"5926c32286f774616e42de99", {"MP5 Cocking Handle", 70247}},
        {"591c4efa86f7741030027726", {"Axion Kobra EKP-8-18 reflex sight", 14095}},
        {"5bbdb8bdd4351e4502011460", {"AR-10 Odin Works Atlas 7 7.62x51 muzzle brake", 12699}},
        {"5d2f0d8048f0356c925bc3b0", {"HK MP5K 9x19 submachine gun", 15048}},
        {"5fb653962b1b027b1f50bd03", {"KRISS Vector .45 ACP 6 inch barrel", 14960}},
        {"5b04473a5acfc40018632f70", {"AKM/AK-74 FAB Defense UAS stock", 14304}},
        {"5cf67cadd7f00c065a5abab7", {"SKS 7.62x39 Weapon Tuning thread adapter", 16831}},
        {"5b7d63de5acfc400170e2f8d", {"SA-58 SPR stock", 13584}},
        {"55f84c3c4bdc2d5f408b4576", {"AR-15 Daniel Defense RIS II 9.5 handguard (Flat Dark Earth)", 13882}},
        {"5ac72e725acfc400180ae701", {"AK-102 5.56x45 muzzle brake & compensator (6P44 0-20)", 13750}},
        {"5d63d33b86f7746ea9275524", {"Flat screwdriver", 14234}},
        {"5710c24ad2720bc3458b45a3", {"F-1 hand grenade", 14090}},
        {"5a787fdfc5856700142fdd9a", {"M870 12ga cut off 325mm barrell", 14329}},
        {"570fd721d2720bc5458b4596", {"Walther MRS reflex sight", 13220}},
        {"55802d5f4bdc2dac148b458e", {"5.56x45 Magpul PMAG GEN M3 W 30 STANAG 30-round magazine", 16873}},
        {"5b0800175acfc400153aebd4", {"ERGO F93 Pro stock", 15675}},
        {"6065881d1246154cad35d637", {"AR-10 CMMG MK3 RML15 15 inch M-LOK handguard", 14278}},
        {"5bc09a18d4351e003562b68e", {"Magpul MBUS Gen2 rear flip-up sight", 11895}},
        {"5a0eb38b86f774153b320eb0", {"SMW car key", 12155}},
        {"5d123102d7ad1a004e475fe5", {"AR-15 URX 3 8 inch handguard", 12901}},
        {"59d64ec286f774171d1e0a42", {"AKM gas tube (6P1 Sb.1-2)", 10420}},
        {"5a787f25c5856700186c4ab9", {"M870 12ga 355mm barrel", 10984}},
        {"574eb85c245977648157eec3", {"Factory plan map", 14374}},
        {"5d0a3e8cd7ad1a6f6a3d35bd", {"KMZ 1P69 3-10x riflescope", 14001}},
        {"5bc09a30d4351e00367fb7c8", {"Magpul MBUS Gen2 front flip-up sight", 12187}},
        {"5c4eecde2e221602b3140418", {"SV-98 sound suppressor heat shield", 9861}},
        {"5fc23426900b1d5091531e15", {"Mk-18 .338 LM 10-round magazine", 15061}},
        {"5a27b3d0c4a282000d721ec1", {"SR-1MP sound suppressor mount", 11100}},
        {"6086b5731246154cad35d6c7", {"SOK-12 Custom Guns Type-340 handguard", 13304}},
        {"5c1bc7432e221602b412949d", {"Zenit RK-5 foregrip", 15194}},
        {"5a78832ec5856700155a6ca3", {"M870 12ga 10-shell magazine", 23356}},
        {"5947e98b86f774778f1448bc", {"Magpul UBR GEN2 stock (Black)", 13539}},
        {"5f63418ef5750b524b45f116", {"SOK-12 Bravo-18 aluminium handguard", 15487}},
        {"590a386e86f77429692b27ab", {"Damaged hard drive", 12643}},
        {"5d1340bdd7ad1a0e8d245aab", {"5.56x45 Magpul PMAG GEN M3 40 STANAG 40-round magazine (Flat Dark Earth)", 14429}},
        {"5d1c819a86f774771b0acd6c", {"Weapon parts", 13737}},
        {"5f60e6403b85f6263c14558c", {"Beret (Black)", 13426}},
        {"5c82343a2e221644f31c0611", {"Zenit-BelOMO PSO-1M2 4x24 scope", 12361}},
        {"5de8e8dafd6b4e6e2276dc32", {"MP9 9x19 15-round magazine", 17631}},
        {"5a16b672fcdbcb001912fa83", {"Ops-Core FAST Visor", 13375}},
        {"56ea7165d2720b6e518b4583", {"Badger Ordnance Tactical Charging Handle Latch", 17149}},
        {"5aa66c72e5b5b00016327c93", {"Nightforce Magmount 34mm rings with Ruggedized Accessory Platform", 12560}},
        {"56deed6ed2720b4c698b4583", {"MP-153 polymer stock", 15408}},
        {"5d5d8ca986f7742798716522", {"SOE Micro Rig", 11022}},
        {"5caf1691ae92152ac412efb9", {"ASh-12 rear sight carry handle", 13402}},
        {"5a6f5f078dc32e00094b97dd", {"Glock 9x19 Viper Cut pistol slide", 10229}},
        {"5fbbc383d5cb881a7363194a", {"KRISS Vector 9x19 6 inch barrel", 13091}},
        {"5dfa3d7ac41b2312ea33362a", {"KAC Folding Micro rear sight", 11678}},
        {"59bfc5c886f7743bf6794e62", {"PP-19-01 Vityaz-SN 9x19 sound suppressor", 12579}},
        {"576fd4ec2459777f0b518431", {"Zenit-BelOMO PSO-1M2-1 4x24 scope", 11737}},
        {"5c503af12e221602b177ca02", {"VPO-101 Vepr Hunter stock", 9810}},
        {"5c7951452e221644f31bfd5c", {"AK 7.62x39 Venom Tactical Antidote muzzle brake & compensator", 12726}},
        {"5eeb2ff5ea4f8b73c827350b", {"M590A1 tactical rail", 13766}},
        {"5b3a337e5acfc4704b4a19a0", {"Zenit Klesch-2U tactical flashlight", 22191}},
        {"5e87114fe2db31558c75a120", {"M590 ghost ring rear sight", 12378}},
        {"5448fee04bdc2dbc018b4567", {"0.6 liter water bottle", 13368}},
        {"5c6d42cb2e2216000e69d7d1", {"5.56x45 HK 30 STANAG polymer 30-round magazine", 13366}},
        {"5926e16e86f7742f5a0f7ecb", {"MP5 3-lug thread protector", 14831}},
        {"5d443f8fa4b93678dd4a01aa", {"Thunder Beast Arms 30CB 7.62x51 muzzle brake", 14121}},
        {"5648ae314bdc2d3d1c8b457f", {"AK CAA RS47 handguard", 12737}},
        {"60658776f2cb2e02a42ace2b", {"Mk47 254mm barrel", 12670}},
        {"590c595c86f7747884343ad7", {"Gas mask air filter", 12441}},
        {"5b432b965acfc47a8774094e", {"GSSh-01 active headset", 13247}},
        {"57dc2fa62459775949412633", {"AKS-74U 5.45x39 assault rifle", 13134}},
        {"5bd071d786f7747e707b93a3", {"Jason mask", 10017}},
        {"5bf3e0490db83400196199af", {"AKS-74 5.45x39 assault rifle", 14658}},
        {"5a966ec8a2750c00171b3f36", {"MP5 B&T tri-rail receiver mount", 12941}},
        {"593962ca86f774068014d9af", {"Unknown key", 10821}},
        {"5c08f87c0db8340019124324", {"ShPM Firefighter helmet", 9530}},
        {"57372deb245977685d4159b3", {"5.45x39 PRS gs 120 pcs. ammo pack", 11587}},
        {"59bffc1f86f77435b128b872", {"SilencerCo Hybrid 46 Direct Thread Mount adapter", 12125}},
        {"5b3f7c1c5acfc40dc5296b1d", {"PU 3.5x riflescope", 12842}},
        {"5fbbfacda56d053a3543f799", {"MCX .300 BLK 229mm barrel", 12344}},
        {"5cf78720d7f00c06595bc93e", {"Lantac BMD 7.62x51 Blast Mitigation Device", 12027}},
        {"59e7643b86f7742cbf2c109a", {"WARTECH TV-109 + TV-106 chest rig", 12196}},
        {"5e4abfed86f77406a2713cf7", {"Splav Tarzan M22 chest rig", 12807}},
        {"588b56d02459771481110ae2", {"AR-15 Daniel Defense RIS II 9.5 handguard", 13977}},
        {"57c450252459772d28133253", {"AS VAL skeleton stock", 8540}},
        {"573728cc24597765cc785b5d", {"9x18PM SP7 gzh 16 pcs. ammo pack", 13900}},
        {"5c6d450c2e221600114c997d", {"5.56x45 HK PM Gen.2 STANAG 30-round magazine", 13987}},
        {"5ea16d4d5aad6446a939753d", {"AR-15 Geissele ACH charging handle", 12638}},
        {"57372e4a24597768553071c2", {"5.45x39 PRS gs 30 pcs. ammo pack", 9989}},
        {"5947c73886f7747701588af5", {"MFT BUS Stock", 11617}},
        {"590c695186f7741e566b64a2", {"Augmentin antibiotic pills", 15000}},
        {"5827272a24597748c74bdeea", {"SOK-12 Leapers UTG PRO MTU002 Long Top aluminum handguard", 13052}},
        {"5d0a3a58d7ad1a669c15ca14", {"KMZ 1P59 3-10x riflescope", 12374}},
        {"5a16b93dfcdbcbcae6687261", {"AN/PVS-14 Dual Dovetail Mount", 14386}},
        {"5ac72e945acfc43f3b691116", {"AK-105 5.45x39 muzzle brake & compensator (6P44 0-20)", 10914}},
        {"5cff9e5ed7ad1a09407397d4", {"Daniel Defense WAVE 5.56x45 muzzle brake", 11791}},
        {"5cadc2e0ae9215051e1c21e7", {"M9A3 9x19 17-round magazine", 17021}},
        {"588226ef24597767af46e39c", {"Magpul AFG grip (Olive Drab)", 12359}},
        {"59ff3b6a86f77477562ff5ed", {"AKMS shoulder piece (6P4 Sb.1-19)", 13291}},
        {"5cde7afdd7f00c000d36b89d", {"Remington M700 AB Arms MOD*X GEN 3 KeyMod handguard", 13467}},
        {"5aaf9d53e5b5b00015042a52", {"M1A 7.62x51 16 inch barrel", 11375}},
        {"5c0faf68d174af02a96260b8", {"ADAR 2-15 charging handle", 14561}},
        {"5a0071d486f77404e23a12b2", {"AKM wooden pistol grip", 15845}},
        {"5649d9a14bdc2d79388b4580", {"AK Taktika Tula TT01 rear sight Weaver adapter", 13045}},
        {"5df8f535bb49d91fb446d6b0", {"KAC 7.62x51 10-round steel magazine", 12023}},
        {"588226d124597767ad33f787", {"Magpul AFG grip (Black)", 14249}},
        {"5672cb724bdc2dc2088b456b", {"Geiger-Muller counter", 13800}},
        {"57af48872459771f0b2ebf11", {"Hogue Overmolded Rubber Grip (Flat Dark Earth)", 14786}},
        {"5a7ad2e851dfba0016153692", {"Glock 9x19 \"Big Stick\" 33-round magazine", 11898}},
        {"5af04b6486f774195a3ebb49", {"Pliers Elite", 12374}},
        {"5addc7ac5acfc400194dbd90", {"M14 SAGE International M14ALCS (MOD-0) stock", 12390}},
        {"5cf54404d7f00c108840b2ef", {"AK KGB MG-47 pistol grip", 11150}},
        {"5fbbaa86f9986c4cff3fe5f6", {"KRISS Defiance DS150 stock (Black)", 11866}},
        {"5d00ede1d7ad1a0940739a76", {"AR-10 Noveske SWS N6 10.5 inch handguard", 12098}},
        {"59fb375986f7741b681b81a6", {"AK Krebs Custom UFM KeyMod handguard", 12517}},
        {"5c471c6c2e221602b66cd9ae", {"SVDS polymer handguard", 11875}},
        {"5f6372e2865db925d54f3869", {"Ferfrans CQB 5.56x45 muzzle brake", 11592}},
        {"5894a5b586f77426d2590767", {"MPX GEN1 upper receiver", 22570}},
        {"5ab8f85d86f7745cd93a1cf5", {"Shemagh (Green)", 13544}},
        {"5bfd35380db83400232fe5cc", {"Mosin Infantry stock", 11356}},
        {"5c1bc5fb2e221602b1779b32", {"Zenit RK-4 foregrip", 12428}},
        {"5a34fd2bc4a282329a73b4c5", {"AAC Blackout 51T 7.62x51 flash hider", 10888}},
        {"5a27b281c4a28200741e1e52", {"SR-1MP single rail mount", 12058}},
        {"5cf6935bd7f00c06585fb791", {"MPX TACCOM muzzle brake", 11784}},
        {"5c13cd2486f774072c757944", {"Soap", 12834}},
        {"5bb20df1d4351e00347787d5", {"HK 416A5 Quad Rail handguard with flip up front sight", 6390}},
        {"5a16bb52fcdbcb001a3b00dc", {"Wilcox Skull Lock head mount", 13702}},
        {"5d1b39a386f774252339976f", {"Silicone tube", 11526}},
        {"5c6161fb2e221600113fbde5", {"TOZ-106 20ga MC 20-01 Sb.3 5-shot magazine", 11432}},
        {"560d657b4bdc2da74d8b4572", {"Zenit 2P Klesch flashlight + laser designator", 14240}},
        {"5947eab886f77475961d96c5", {"Magpul UBR GEN2 stock (Flat Dark Earth)", 13554}},
        {"606ee5c81246154cad35d65e", {"MP-155 Ultima polymer stock", 10871}},
        {"5c78f26f2e221601da3581d1", {"AR-15 Magpul MOE SL mid length M-LOK handguard", 11051}},
        {"5cc9c20cd7f00c001336c65d", {"NcSTAR Tactical blue laser LAM-Module", 11945}},
        {"5aa2b9ede5b5b000137b758b", {"Kinda cowboy hat", 12085}},
        {"5b099bf25acfc4001637e683", {"SA-58 buffer tube adapter", 18192}},
        {"6034e3cb0ddce744014cb870", {"AR-15 STM 9 inch M-LOK handguard", 11196}},
        {"5c78f2882e22165df16b832e", {"AR-15 SAI JailBrake 5.56x45 muzzle device", 11455}},
        {"5d96141523f0ea1b7f2aacab", {"\"Door Kicker\" Boonie hat", 11341}},
        {"5bfe86df0db834001b734685", {"FAB Defense GLR-16-S stock", 10157}},
        {"593d1fa786f7746da62d61ac", {"SKS UTG SOCOM rail mount", 13019}},
        {"5c6d10e82e221601da357b07", {"HK 416A5 MRS KeyMod 14 inch handguard", 12295}},
        {"5a9d6d00a2750c5c985b5305", {"Strike Industries KeyMod 4 inch rail", 11021}},
        {"5c471bfc2e221602b21d4e17", {"SVDS 7.62x54R muzzle brake & compensator", 12523}},
        {"5c9a26332e2216001219ea70", {"AR-15 Daniel Defense RIS II FSP 9.5 handguard (Flat Dark Earth)", 13180}},
        {"59f9cabd86f7743a10721f46", {"Saiga-9 9x19 carbine", 9491}},
        {"5c48a2c22e221602b313fb6c", {"MDR pistol grip", 11539}},
        {"5947fa2486f77425b47c1a9b", {"AK TAPCO SAW-Style pistol grip (Flat Dark Earth)", 10859}},
        {"57c55f112459772d28133310", {"Hogue Overmolded Rubber Grip (Ghillie Green)", 10053}},
        {"5fbc227aa56d053a3543f79e", {"MCX 12 inch KeyMod handguard", 11695}},
        {"5b7bef5d5acfc43bca7067a3", {"SA-58/FAL 7.62x51 30-round magazine", 12805}},
        {"5e2af37686f774755a234b65", {"SurvL Survivor Lighter", 11352}},
        {"6034e3e20ddce744014cb878", {"AR-15 STM 12 inch M-LOK handguard", 11970}},
        {"57f3a5ae2459772b0e0bf19e", {"PSO scope eyecup", 9565}},
        {"5900b89686f7744e704a8747", {"Woods plan map", 10642}},
        {"5d25af8f8abbc3055079fec5", {"Remington M700 .308 ProMag AA-70 10-round magazine", 10646}},
        {"5c05413a0db834001c390617", {"5.56x45 HK Steel Maritime STANAG 30-round magazine", 12338}},
        {"5f0c892565703e5c461894e9", {"40x46mm M433 (HEDP) grenade", 9316}},
        {"57c55f092459772d291a8463", {"Hogue Overmolded Rubber Grip (Ghillie Earth)", 10318}},
        {"606f263a8900dc2d9a55b68d", {"MP-155 Ultima large recoil pad", 11374}},
        {"5c9a1c422e221600106f69f0", {"AK Magpul Zhukov-U handguard (Plum)", 11926}},
        {"5e81c4ca763d9f754677befa", {"M1911A1 .45 ACP 7-round magazine", 12872}},
        {"57372f7d245977699b53e301", {"5.45x39 US gs 120 pcs. ammo pack", 9828}},
        {"5448ff904bdc2d6f028b456e", {"Army crackers", 11790}},
        {"5ae30e795acfc408fb139a0b", {"M4A1 front sight", 11657}},
        {"5c87ca002e221600114cb150", {"KAC vertical grip", 10519}},
        {"5926d2be86f774134d668e4e", {"MP5 Drum rear sight", 18088}},
        {"59d36a0086f7747e673f3946", {"AKS-74U gas tube", 15770}},
        {"5bb20e58d4351e00320205d7", {"HK Enhanced Tube buffer tube", 11485}},
        {"5c617a5f2e2216000f1e81b3", {"AK Zenit B-10 Handguard", 13645}},
        {"5b84038986f774774913b0c1", {"Hexagon short length rail (Anodized Red)", 12216}},
        {"59387a4986f77401cc236e62", {"Dorm room 114 key", 11659}},
        {"591383f186f7744a4c5edcf3", {"Dorm room 104 key", 10992}},
        {"5aaf8a0be5b5b00015693243", {"M1A 7.62x51 20-round magazine", 13988}},
        {"5b1fa9ea5acfc40018633c0a", {"Glock 18C 9x19 barrel with compensator", 9405}},
        {"5c0e2ff6d174af02a1659d4a", {"ADAR 2-15 wooden stock", 9562}},
        {"5d1f819086f7744b355c219b", {"Daniel Defense WAVE 7.62x51 muzzle brake", 12861}},
        {"5e8f3423fd7471236e6e3b64", {"Premium Kvass \"Norvinskiy Yadreniy\" 0.6L bottle", 11777}},
        {"570fd79bd2720bc7458b4583", {"OKP-7 reflex sight", 11197}},
        {"5649be884bdc2d79388b4577", {"Colt buffer tube", 8135}},
        {"59e3606886f77417674759a5", {"Saline solution", 12001}},
        {"56def37dd2720bec348b456a", {"Surefire X400 Ultra tactical flashlight", 13478}},
        {"5de922d4b11454561e39239f", {"MP9 charging handle", 10500}},
        {"5d3eb5b6a4b9361eab311902", {"FN Five-seveN 5.7x28 barrel", 45089}},
        {"5d3eb44aa4b93650d64e4979", {"FN Five-seveN MK2 pistol slide", 9923}},
        {"5c07df7f0db834001b73588a", {"Freeman crowbar", 10660}},
        {"5734779624597737e04bf329", {"CPU Fan", 9807}},
        {"544fb3f34bdc2d03748b456a", {"Morphine injector", 11185}},
        {"59e3556c86f7741776641ac2", {"Ox bleach", 12587}},
        {"5bfd4cd60db834001c38f095", {"Mosin 7.62x54R sawn-off 220mm barrel", 10146}},
        {"5c503ad32e2216398b5aada2", {"VPO-101 Vepr Hunter 7.62x51 10-round magazine", 11386}},
        {"5cadc190ae921500103bb3b6", {"Beretta M9A3 9x19 pistol", 10731}},
        {"5c9a1c3a2e2216000e69fb6a", {"AK Magpul Zhukov-U handguard (Flat Dark Earth)", 11557}},
        {"5a7c74b3e899ef0014332c29", {"NSPU-M night vision scope", 10483}},
        {"5c5db6b32e221600102611a0", {"MPX Geissele SCH charging handle", 11801}},
        {"5bc5a35cd4351e450201232f", {"Mosin Witt Machine muzzle brake", 10421}},
        {"5c6d5d8b2e221644fc630b39", {"AR-15 STNGR VYPR 10 inch M-LOK handguard", 11206}},
        {"5f36a0e5fbf956000b716b65", {"Colt M45A1 .45 ACP pistol", 11161}},
        {"59e61eb386f77440d64f5daf", {"VPO-136 Vepr KM 7.62x39 muzzle brake & compensator", 11135}},
        {"5afd7e095acfc40017541f61", {"SKS TAPCO Intrafuse buffer tube", 14309}},
        {"5d25a6a48abbc306c62e6310", {"Remington M700 .308 MDT AICS 12-round magazine", 9687}},
        {"5a17fc70fcdbcb0176308b3d", {"APS bakelite side-pieces", 10149}},
        {"5ea16acdfadf1d18c87b0784", {"AR-15 Geissele SMR MK16 9.5 inch M-LOK handguard", 10839}},
        {"57c55f172459772d27602381", {"Hogue Overmolded Rubber Grip (Olive Drab)", 10460}},
        {"593aa4be86f77457f56379f8", {"Dorm room 303 key", 11028}},
        {"57cffddc24597763133760c6", {"AK Magpul MOE AKM handguard (Olive Drab)", 10019}},
        {"5b39f8db5acfc40016387a1b", {"Vltor EMOD stock", 9920}},
        {"5d1b309586f77425227d1676", {"Broken LCD", 10972}},
        {"5c6c2c9c2e2216000f2002e4", {"HK 416A5 TROY Industries M-LOK 13 inch handguard", 10558}},
        {"5938144586f77473c2087145", {"Portable bunkhouse key", 10354}},
        {"5a27bad7c4a282000b15184b", {"SR-1MP quad rail mount", 10121}},
        {"5c78f2792e221600106f4683", {"AR-15 Magpul MOE SL Carbine Length M-LOK handguard", 10858}},
        {"5cf508bfd7f00c056e24104e", {"AK Strike Industries Enhanced Pistol Grip (Flat Dark Earth)", 10149}},
        {"5addc00b5acfc4001669f144", {"M14 Vltor CASV-14 rail system", 9045}},
        {"58d2946386f774496974c37e", {"Magpul MOE Carbine stock (Flat Dark Earth)", 10942}},
        {"5fc23636016cce60e8341b05", {"SilencerCo AC-858 ASR .338 LM Muzzle brake", 14991}},
        {"590c346786f77423e50ed342", {"Xenomorph sealing foam", 13157}},
        {"5a9548c9159bd400133e97b3", {"MP5 TL-99 aluminum handguard", 11272}},
        {"5de8fbad2fbe23140d3ee9c4", {"MP9-N vertical foregrip", 17997}},
        {"5dcbd6dddbd3d91b3e5468de", {"MDR pistol grip (Black)", 11589}},
        {"5beec8ea0db834001a6f9dbf", {"AK-12 pistol grip", 11561}},
        {"5d1b3a5d86f774252167ba22", {"Pile of meds", 10814}},
        {"5e5699df2161e06ac158df6f", {"SVD CAA XRS-DRG handguard", 10840}},
        {"59e0bdb186f774156f04ce82", {"Vltor CASV KeyMod 2 inch rail", 11980}},
        {"5fb6564947ce63734e3fa1da", {"KRISS Defiance low profile flip up rearsight", 9868}},
        {"5b363e1b5acfc4771e1c5e80", {"SilencerCo Salvo 12 thread adapter", 10330}},
        {"5ab8f4ff86f77431c60d91ba", {"Ghost balaclava", 11637}},
        {"5beec1bd0db834001e6006f3", {"RPK-16 5.45x39 15 inch barrel", 10908}},
        {"590c5d4b86f774784e1b9c45", {"Iskra ration pack", 9904}},
        {"59e366c186f7741778269d85", {"Plexiglass piece", 12525}},
        {"5d00f63bd7ad1a59283b1c1e", {"AR-15 Strike Industries Viper Carbine Length M-LOK handguard (FDE)", 9574}},
        {"5dff772da3651922b360bf91", {"VOMZ Pilad 4x32 riflescope", 10096}},
        {"5fc275cf85fd526b824a571a", {".338 Lapua Magnum FMJ", 13102}},
        {"59e5f5a486f7746c530b3ce2", {"AK 7.62x39 Molot 40-round magazine (6P2.Sb-11)", 8810}},
        {"573722e82459776104581c21", {"9x18PM BZhT gzh 16 pcs. ammo pack", 14333}},
        {"544a5cde4bdc2d39388b456b", {"Flyye MBSS backpack", 10388}},
        {"5c7d55f52e221644f31bff6a", {"Aimpoint LRP mount for COMP M4 sights", 10239}},
        {"5d00e0cbd7ad1a6c6566a42d", {"AR-15 Strike Industries Viper Carbine Length M-LOK handguard", 9775}},
        {"59148c8a86f774197930e983", {"Dorm room 204 key", 10052}},
        {"5c6d10fa2e221600106f3f23", {"HK 416A5 Midwest Industries 9 inch M-LOK handguard", 11150}},
        {"590a358486f77429692b2790", {"Rechargeable battery", 10117}},
        {"591af10186f774139d495f0e", {"TROY M7A1 PDW stock (Flat Dark Earth)", 10418}},
        {"56e0598dd2720bb5668b45a6", {"PB 9x18PM silenced pistol", 11744}},
        {"5751487e245977207e26a315", {"Emelya rye croutons", 11785}},
        {"5926c3b286f774640d189b6b", {"MP5 9x19 30-round magazine", 10723}},
        {"544fb62a4bdc2dfb738b4568", {"Russian Army pineapple juice", 10740}},
        {"5a33b2c9c4a282000c5a9511", {"Trijicon RMR low profile mount", 12172}},
        {"57cffe0024597763b03fc60b", {"AK Magpul MOE AKM handguard (Plum)", 10377}},
        {"57347d90245977448f7b7f65", {"Pack of oat flakes", 11362}},
        {"5c18b9192e2216398b5a8104", {"Magpul MBUS Gen2 rear flip-up sight (Flat Dark Earth)", 11165}},
        {"5c7e5f112e221600106f4ede", {"AAC Blackout 51T 5.56x45 flash hider", 10035}},
        {"5783c43d2459774bbe137486", {"Simple wallet", 9817}},
        {"5947db3f86f77447880cf76f", {"Axion Kobra EKP-8-02 reflex sight (Dovetail)", 10167}},
        {"5d0a29fed7ad1a002769ad08", {"KMZ 1P69 Weaver mount", 10922}},
        {"5c0505e00db834001b735073", {"Valday PK-120 (1P87) holographic sight", 11426}},
        {"5bd0716d86f774171822ef4b", {"Misha Mayorov mask", 7276}},
        {"5fbbfabed5cb881a7363194e", {"MCX .300 BLK 171mm barrel", 9631}},
        {"5d120a10d7ad1a4e1026ba85", {"AR-15 DoubleStar ACE SOCOM Gen.4 stock", 11289}},
        {"57347c1124597737fb1379e3", {"Duct tape", 9670}},
        {"5e2af2bc86f7746d3f3c33fc", {"Hunting matches", 9674}},
        {"5a787ebcc5856700142fdd98", {"M870 12ga 508mm barrel with a fixed sight", 10744}},
        {"57cffd8224597763b03fc609", {"AK Magpul MOE AKM handguard (Flat Dark Earth)", 10822}},
        {"54491bb74bdc2d09088b4567", {"ER FULCRUM BAYONET", 10088}},
        {"5b30bc165acfc40016387293", {"Alexander Arms 3 inch rail", 8326}},
        {"5bfd384c0db834001a6691d3", {"Mosin carbine stock", 7348}},
        {"5a33cae9c4a28232980eb086", {"Magpul PRS GEN2 stock (Flat Dark Earth)", 10620}},
        {"5a6b5e468dc32e001207faf5", {"Glock 9x19 Double Diamond threaded barrel", 13197}},
        {"5ac78eaf5acfc4001926317a", {"AK-74M/AK-100 Zenit PT Lock", 12108}},
        {"5c6d710d2e22165df16b81e7", {"AR-15 Surefire WarComp 5.56x45 Flash hider", 10612}},
        {"58aeaaa886f7744fc1560f81", {"MPX-SD 9x19 165mm barrel", 10420}},
        {"591afe0186f77431bd616a11", {"ZB-014 key", 11114}},
        {"5a34fbadc4a28200741e230a", {"JP Enterprises Gas System-6", 10021}},
        {"5c90c3622e221601da359851", {"Zenit B-13V \"Klassika\" dovetail rail platform", 10876}},
        {"5e4abc1f86f774069619fbaa", {"Spiritus Systems Bank Robber chest rig", 11112}},
        {"5c1bc4812e22164bef5cfde7", {"Zenit RK-0 foregrip", 13278}},
        {"6065dc8a132d4d12c81fd8e3", {"CMMG Low Profile gas block", 10350}},
        {"5d123b7dd7ad1a004f01b262", {"KAC URX 3/3.1 stopper panel", 6189}},
        {"57347d8724597744596b4e76", {"Can of squash spread", 10455}},
        {"5b099a9d5acfc47a8607efe7", {"SA-58 quad rail handguard", 10076}},
        {"5c06779c86f77426e00dd782", {"Wires", 9515}},
        {"5f6339d53ada5942720e2dc3", {"Ferfrans CRD Concussion Reduction Device 5.56x45", 11426}},
        {"5b4326435acfc433000ed01d", {"Neoprene mask", 11088}},
        {"5aa2ba46e5b5b000137b758d", {"UX PRO beanie hat", 7372}},
        {"5df8a72c86f77412640e2e83", {"Christmas tree ornament (White)", 10000}},
        {"573727c624597765cc785b5b", {"9x18PM Pst gzh 16 pcs. ammo pack", 10882}},
        {"5c1260dc86f7746b106e8748", {"9x39 BP gs 8 pcs. ammo pack", 11000}},
        {"5c12619186f7743f871c8a32", {"9x39 SPP 8 pcs. ammo pack", 10933}},
        {"57372e1924597768553071c1", {"5.45x39 PRS gs 120 pcs. ammo pack", 10000}},
        {"5cadd940ae9215051e1c2316", {"M9A3 rear sight", 9999}},
        {"5f3e76d86cda304dcc634054", {"M45A1 hammer", 9999}},
        {"606ef0812535c57a13424d20", {"MP-155 Ultima small recoil pad", 11498}},
        {"5c0fafb6d174af02a96260ba", {"ADAR 2-15.56x45 flash hider", 8624}},
        {"57d14d2524597714373db789", {"PP-91 Kedr 9x18PM submachine gun", 11894}},
        {"5913877a86f774432f15d444", {"Gas station storage room key", 10008}},
        {"59e361e886f774176c10a2a5", {"Hydrogen peroxide", 9898}},
        {"5a7ad4af51dfba0013379717", {"Glock Aimtech mount base", 9281}},
        {"57cffe20245977632f391a9d", {"AK Magpul MOE AKM handguard (Stealth Gray)", 10526}},
        {"6065880c132d4d12c81fd8da", {"AR-10 CMMG MK3 RML9 9 inch M-LOK handguard", 10058}},
        {"5f3e78a7fbf956000b716b8e", {"M45A1 Novak Lomount front sight", 9876}},
        {"5fce16961f152d4312622bc9", {"KRISS Defiance DS150 stock (Flat Dark Earth)", 10681}},
        {"59faf98186f774067b6be103", {"Alkaline cleaner for heat exchangers", 11909}},
        {"5cebec38d7f00c00110a652a", {"FN P90 Ring Sight reflex sight", 10107}},
        {"5d25a6538abbc306c62e630d", {"Remington M700 .308 AICS 10-round magazine", 9915}},
        {"5751435d24597720a27126d1", {"Max Energy energy drink", 9960}},
        {"5e2af4d286f7746d4159f07a", {"Aramid fiber fabric", 10418}},
        {"5f3e772a670e2a7b01739a52", {"M45A1 trigger", 9833}},
        {"5c471b7e2e2216152006e46c", {"SVDS rear sight", 10806}},
        {"5fd4c4fa16cac650092f6771", {"DIY IDEA chest rig", 10426}},
        {"5b7d63b75acfc400170e2f8a", {"SA-58/FAL Magpul PRS 2 polymer stock", 10787}},
        {"5aaf8e43e5b5b00015693246", {"M1A SOCOM 16 stock", 9774}},
        {"5d25a7b88abbc3054f3e60bc", {"Remington M700 .308 Magpul PMAG AC 10-round magazine", 10037}},
        {"5fbbc366ca32ed67276c1557", {"KRISS Vector 9x19 5 inch barrel", 9940}},
        {"5bb20d53d4351e4502010a69", {"HK 416A5 5.56x45 upper receiver", 9550}},
        {"5a9d56c8a2750c0032157146", {"AK Strike Industries TRAX 1 handguard", 11407}},
        {"5d0a29ead7ad1a0026013f27", {"KMZ 1P59 Dovetail mount", 9755}},
        {"5e81c6bf763d9f754677beff", {"M1911A1 polymer pistol grip", 7946}},
        {"5c471c2d2e22164bef5d077f", {"SVDS Upper Band", 12536}},
        {"5e569a0156edd02abe09f27d", {"SVD modern top rail", 10129}},
        {"5ab3afb2d8ce87001660304d", {"M1A Smith Enterprise SOCOM 16 7.62x51 threaded muzzle brake & compensator", 9428}},
        {"5a9d6d34a2750c00141e07da", {"AK Strike Industries TRAX 2 handguard extension", 10526}},
        {"5a7b32a2e899ef00135e345a", {"Glock 9x19 Strike Industries G4 slide compensator", 10753}},
        {"5b222d335acfc4771e1be099", {"AKM/AK-74 Zenit PT Lock", 9951}},
        {"587df583245977373c4f1129", {"SKS 7.62x39 ProMag SKS-A5 20-round magazine", 10715}},
        {"5addbfe15acfc4001a5fc58b", {"M14 A.R.M.S. #18 scope mount", 9733}},
        {"57347b8b24597737dd42e192", {"Classic matches", 9904}},
        {"5998517986f7746017232f7e", {"PP-19-01 Vityaz-SN pistol grip", 9431}},
        {"5b30b0dc5acfc400153b7124", {"Holosun HS401G5 reflex sight", 9645}},
        {"5f2aa43ba9b91d26f20ae6d2", {"RFB thread spacer", 9333}},
        {"590a3d9c86f774385926e510", {"Ultraviolet lamp", 11391}},
        {"5b7bee755acfc400196d5383", {"SA-58/FAL Vltor CASV FAS handguard", 10147}},
        {"5beecbb80db834001d2c465e", {"RPK-16 handguard rail", 9504}},
        {"5b7be4575acfc400161d0832", {"Vltor CASV 2 inch rail", 11071}},
        {"5c1bc7752e221602b1779b34", {"Zenit RK-6 foregrip", 9360}},
        {"6076c1b9f2cb2e02a42acedc", {"MP-155 510mm barrel", 9946}},
        {"5d1b313086f77425227d1678", {"Phase control relay", 8449}},
        {"5c010a700db834001d23ef5d", {"P226 Emperor Scorpion pistol slide", 7314}},
        {"5e81c3cbac2bb513793cdc75", {"Colt M1911A1 .45 ACP pistol", 9619}},
        {"590a3cd386f77436f20848cb", {"Energy-saving lamp", 10720}},
        {"56d59948d2720bb7418b4582", {"P226 9x19 15-round magazine", 12583}},
        {"5f3e777688ca2d00ad199d25", {"M45A1 slide lock", 9623}},
        {"584984812459776a704a82a6", {"VOMZ Pilad P1x42 Weaver reflex sight", 9933}},
        {"606587a88900dc2d9a55b659", {"Mk47 Resolute 7.62x39 upper receiver", 9305}},
        {"5e8488fa988a8701445df1e4", {"CALOK-B hemostatic applicator", 11182}},
        {"5a38eecdc4a282329a73b512", {"TOZ-106 002 pistol grip", 5855}},
        {"5eea217fc64c5d0dfc05712a", {"M590A1 Magpul SGA stock", 12269}},
        {"5fc0f9b5d724d907e2077d82", {"MVF001 A3 KeyMod vertical grip (Black)", 9964}},
        {"57347baf24597738002c6178", {"RAM", 9235}},
        {"5e569a2e56edd02abe09f280", {"SVD CAA XD RGL receiver mount", 9581}},
        {"5bc9b156d4351e00367fbce9", {"Jar of DevilDog mayo", 10265}},
        {"5de8fb539f98ac2bc659513a", {"MP9 rear sight", 10544}},
        {"5fc0f9cbd6fa9c00c571bb90", {"SIG Sauer Vertical Foregrip KeyMod (Black)", 9813}},
        {"5e81edc13397a21db957f6a1", {"M1911A1 .45 ACP pistol slide", 9587}},
        {"5fb655b748c711690e3a8d5a", {"KRISS Vector non-folding stock adapter", 9756}},
        {"5addc7db5acfc4001669f279", {"M14 SAGE International M14ALCS (MOD-0) pistol grip", 8192}},
        {"59e6152586f77473dc057aa1", {"Molot VPO-136 Vepr KM 7.62x39 carbine", 9849}},
        {"5f60e784f2bcbb675b00dac7", {"Beret (Olive)", 9471}},
        {"57347d9c245977448b40fa85", {"Can of herring", 10382}},
        {"5beec3e30db8340019619424", {"RPK-16 handguard", 9950}},
        {"56083eab4bdc2d26448b456a", {"SV-98 anti-heat ribbon", 13012}},
        {"590a3c0a86f774385a33c450", {"Spark plug", 8422}},
        {"5d02676dd7ad1a049e54f6dc", {"AR-15 Nordic Components Corvette 5.56x45 compensator", 10311}},
        {"57347d3d245977448f7b7f61", {"Rye croutons", 8531}},
        {"5bed61680db834001d2c45ab", {"AK-12 5.45x39 30-round magazine", 7430}},
        {"5cdeac5cd7f00c000f261694", {"Remington M700 Magpul Pro 700 pistol grip", 7870}},
        {"5bfebc530db834001d23eb65", {"Remington M700 extended multi-slot Weaver rail base", 9867}},
        {"56ea8d2fd2720b7c698b4570", {"AR-15 Windham Weaponry Rail Gas Block", 18124}},
        {"5d1c774f86f7746d6620f8db", {"Radiator helix", 9173}},
        {"5a7033908dc32e000a311392", {"Glock 9x19 Alpha Wolf custom pistol slide", 9169}},
        {"609b9e31506cf869cf3eaf41", {"VOMZ PILAD Target Ring reflex sight", 9156}},
        {"5894a81786f77427140b8347", {"MPX flip-up rear sight", 9226}},
        {"5fc3e4a27283c4046c5814ab", {"HK UMP .45 ACP 8 inch barrel", 9631}},
        {"5d2f213448f0355009199284", {"MP5 9x19 20-round magazine", 13394}},
        {"5c1780312e221602b66cc189", {"KAC Folding rear sight", 7670}},
        {"60098b1705871270cd5352a1", {"Emergency Water Ration", 10291}},
        {"59136a4486f774447a1ed172", {"Dorm guard desk key", 8919}},
        {"57acb6222459771ec34b5cb0", {"Pilad 043-02 dovetail mount", 10107}},
        {"5ab8f39486f7745cd93a1cca", {"Cold Fear Infrared balaclava", 9300}},
        {"5649ab884bdc2ded0b8b457f", {"AK Zenit DTK-1 7.62x39 & 5.45x39 muzzle brake & compensator", 9509}},
        {"5ef32e4d1c1fd62aea6a150d", {"M1911A1 Caspian Arms Trik Trigger", 10166}},
        {"603372d154072b51b239f9e1", {"STM-9 9x19 12 inch barrel", 7884}},
        {"5beec91a0db834001961942d", {"RPK-16 dust cover", 9567}},
        {"57347c93245977448d35f6e3", {"Toothpaste", 11433}},
        {"5de655be4a9f347bc92edb88", {"VPO-215 stock", 9089}},
        {"5bc5a351d4351e003477a414", {"Mosin Texas Precision Products muzzle brake", 8579}},
        {"5a0060fc86f7745793204432", {"AK 7.62x39 aluminium 30-round magazine", 9245}},
        {"5dfa3cd1b33c0951220c079b", {"KAC QDC 7.62x51 flash suppressor kit", 9845}},
        {"606eef756d0bd7580617baf8", {"MP-155 Ultima polymer stock", 7247}},
        {"5a788169c5856700142fdd9e", {"M870 Shockwave Raptor grip", 7607}},
        {"58d2947e86f77447aa070d53", {"Magpul MOE Carbine stock (Stealth Gray)", 10319}},
        {"5cadc431ae921500113bb8d5", {"M9A3 polymer pistol grip", 5747}},
        {"58d2947686f774485c6a1ee5", {"Magpul MOE Carbine stock (Olive Drab)", 9586}},
        {"5b7d645e5acfc400170e2f90", {"SA-58 humpback polymer stock", 5369}},
        {"5d124c0ed7ad1a10d168dd9b", {"KAC URX 3/3.1 long panel (Flat Dark Earth)", 6682}},
        {"588226e62459776e3e094af7", {"Magpul AFG grip (Forest Green)", 9576}},
        {"5be4038986f774527d3fae60", {"Interchange paper map", 9518}},
        {"5ac72e7d5acfc40016339a02", {"AK-103 7.62x39 muzzle brake & compensator", 14604}},
        {"5cde77a9d7f00c000f261009", {"Remington M700 AB Arms buffer tube side folder adapter", 8960}},
        {"607ffb988900dc2d9a55b6e4", {"AR-10 SureFire ProComp 7.62x51 muzzle brake", 8381}},
        {"56d59856d2720bd8418b456a", {"SIG P226R 9x19 pistol", 9498}},
        {"5d5fca1ea4b93635fd598c07", {"Crossbow tactical glasses", 8959}},
        {"5d10b49bd7ad1a1a560708b0", {"AN/PEQ-2 tactical device", 9370}},
        {"5aba639ed8ce8700182ece67", {"APB rear sight", 8888}},
        {"576a581d2459771e7b1bc4f1", {"Yarygin MP-443 Grach 9x19 pistol", 9081}},
        {"5c61a40d2e2216001403158d", {"Zenit B-13 \"Klassika\" dovetail rail platform", 10285}},
        {"5c00076d0db834001d23ee1f", {"P226 Elite Wooden pistol grip", 8015}},
        {"591aef7986f774139d495f03", {"TROY M7A1 PDW stock (Black)", 9816}},
        {"5a38e6bac4a2826c6e06d79b", {"TOZ-106 20ga bolt-action shotgun", 8345}},
        {"5cdd7693d7f00c0010373aa5", {"AR-10 Precision Armanent M11 7.62x51 muzzle brake", 7602}},
        {"56742c2e4bdc2d95058b456d", {"Zibbo lighter", 8812}},
        {"5cf638cbd7f00c06595bc936", {"NPZ USP-1 4x scope", 8604}},
        {"58272b392459774b4c7b3ccd", {"SOK-12 Leapers UTG PRO MTU002 Short Top aluminum handguard", 9173}},
        {"5a966f51a2750c00156aacf6", {"SOK-12 12/76 SAI-02 10-round magazine", 8402}},
        {"5c064c400db834001d23f468", {"LaRue LT101 QD tactical picatinny riser mount", 8197}},
        {"5937ee6486f77408994ba448", {"Machinery key", 9123}},
        {"590c5f0d86f77413997acfab", {"MRE ration pack", 8449}},
        {"5943ee5a86f77413872d25ec", {"PWS CQB 5.56x45 muzzle brake", 9389}},
        {"5c0fa877d174af02a012e1cf", {"Aquamari water bottle with filter", 10639}},
        {"57514643245977207f2c2d09", {"TarCola can", 9033}},
        {"571a28e524597720b4066567", {"TT 7.62x25 makeshift sound suppressor", 8812}},
        {"5a2a57cfc4a2826c6e06d44a", {"RDG-2B smoke grenade", 8122}},
        {"579204f224597773d619e051", {"PM (t) \"Makarov\" 9x18PM pistol", 12505}},
        {"5d2f2d5748f03572ec0c0139", {"MP5K cocking handle", 30757}},
        {"5780d0532459777a5108b9a2", {"Tarcone Director's office key", 8790}},
        {"5f3e7897ddc4f03b010e204a", {"M45A1 Novak Lomount rear sight", 8777}},
        {"5c079ec50db834001966a706", {"TT Razor Arms rubber grip", 7706}},
        {"5b7be2345acfc400196d524a", {"SA-58/FAL AIM Sports Universal KeyMod handguard", 8468}},
        {"606f262c6d0bd7580617bafa", {"MP-155 Ultima medium recoil pad", 9427}},
        {"5a339805c4a2826c6e06d73d", {"AR-15 Magpul MIAD pistol grip (Flat Dark Earth)", 8934}},
        {"573476d324597737da2adc13", {"Malboro Cigarettes", 8376}},
        {"573478bc24597738002c6175", {"Horse figurine", 8586}},
        {"575146b724597720a27126d5", {"Pack of milk", 9624}},
        {"590c311186f77424d1667482", {"Wrench", 9655}},
        {"5cbda392ae92155f3c17c39f", {"AK-100 series polymer handguard", 8393}},
        {"544fb6cc4bdc2d34748b456e", {"Slickers chocolate bar", 10544}},
        {"5c6d11072e2216000e69d2e4", {"HK 416A5 Midwest Industries 13.5 inch M-LOK handguard", 8688}},
        {"5a9685b1a2750c0032157104", {"Glock 9x19 Moto Cut pistol slide", 9288}},
        {"5ae30db85acfc408fb139a05", {"AR-15 Colt M4 Carbine Length handguard", 6866}},
        {"577d128124597739d65d0e56", {"Burris FastFire Weaver Base", 9192}},
        {"5734795124597738002c6176", {"Insulating tape", 7711}},
        {"5b7d693d5acfc43bca706a3d", {"AR-10 2A Armanent X3 7.62x51 compensator", 8830}},
        {"5c5db6302e2216000e5e47f0", {"MPX Midwest Industries 10.5 inch M-LOK handguard", 8114}},
        {"5c06782b86f77426df5407d2", {"Capacitors", 8641}},
        {"5734781f24597737e04bf32a", {"DVD drive", 7946}},
        {"59e0be5d86f7742d48765bd2", {"Vltor CASV KeyMod 4 inch rail", 9007}},
        {"5dfa3d950dee1b22f862eae0", {"KAC Folding Micro front sight", 9283}},
        {"5bc9c29cd4351e003562b8a3", {"Can of sprats", 8325}},
        {"5f3e77b26cda304dcc634057", {"M45A1 .45 ACP 7-round magazine", 10962}},
        {"5a702d198dc32e000b452fc3", {"Glock Alpha Wolf pistol slide", 7729}},
        {"59136f6f86f774447a1ed173", {"Folding car key", 8389}},
        {"5eea21647547d6330471b3c9", {"M590A1 Magpul MOE forestock", 9295}},
        {"5c471ba12e221602b3137d76", {"SVDS front sight", 8469}},
        {"57a9b9ce2459770ee926038d", {"SOK-12 rear sight", 8499}},
        {"56deec93d2720bec348b4568", {"MP-153 12ga 750mm barrel", 8960}},
        {"5bfeb32b0db834001a6694d9", {"Remington M700 Hogue Overmolded Ghillie stock", 12951}},
        {"590c5bbd86f774785762df04", {"WD-40 (100ml)", 8311}},
        {"602e63fb6335467b0c5ac94d", {"STM-9 9x19 upper receiver", 6557}},
        {"5c7fc87d2e221644f31c0298", {"BCM GUNFIGHTER MOD.3 vertical grip", 8392}},
        {"5c471b5d2e221602b21d4e14", {"SVDS polymer stock", 8854}},
        {"5e2aef7986f7746d3f3c33f5", {"Repellent", 9723}},
        {"5addbb6e5acfc408fb1393fd", {"M1A National Match 7.62x51 muzzle brake & compensator", 4837}},
        {"5ae0973a5acfc4001562206c", {"Mosin 7.62x54R 5-round magazine", 6465}},
        {"5d023784d7ad1a049d4aa7f2", {"SKS/VZ-58 FAB Defense AG-58 pistol grip", 7966}},
        {"59e770b986f7742cbd762754", {"Anti-fragmentation glasses", 8379}},
        {"5a80a29286f7742b25692012", {"Shoreline Health Resort plan map", 9675}},
        {"564ca9df4bdc2d35148b4569", {"AK-74 5.45x39 6L18 45-round magazine", 7715}},
        {"5c503d0a2e221602b542b7ef", {"VPO-101 Vepr Hunter dust cover", 11872}},
        {"5e87116b81c4ed43e83cefdd", {"M590A1 polymer stock", 10905}},
        {"5a38ef1fc4a282000b1521f6", {"TOZ-106 stock", 8316}},
        {"5d25a4a98abbc30b917421a4", {"Remington M700 .308 AICS 5-round magazine", 7974}},
        {"57513fcc24597720a31c09a6", {"Vita juice", 10610}},
        {"5d15ce51d7ad1a1eff619092", {"AKS-74U Alfa Arms Goliaf handguard", 8299}},
        {"5bffef760db8340019668fe4", {"P226 Hogue Chain Link pistol grip", 8300}},
        {"5c0102aa0db834001b734ba1", {"Remington RAHG 2 inch rail", 6656}},
        {"5b4335ba86f7744d2837a264", {"Medical bloodset", 8883}},
        {"57ae0171245977343c27bfcf", {"BelOMO PK-06 reflex sight", 8677}},
        {"5ef35f46382a846010715a96", {"M1911A1 STI HEX hammer", 9256}},
        {"588226dd24597767ad33f789", {"Magpul AFG grip (Flat Dark Earth)", 9683}},
        {"5ab24ef9e5b5b00fe93c9209", {"M1A SOCOM 16 upper part", 5781}},
        {"5c0e2f5cd174af02a012cfc9", {"ADAR 2-15 wooden handguard", 8362}},
        {"5a17f98cfcdbcb0980087290", {"APS 9x18PM machine pistol", 9039}},
        {"5913611c86f77479e0084092", {"Trailer park portable cabin key", 7840}},
        {"5bb20dfcd4351e00334c9e24", {"HK 416A5 Extended Quad Rail handguard", 7824}},
        {"5bfebc5e0db834001a6694e5", {"Remington M700 30mm integral ring-mount", 7893}},
        {"5aba62f8d8ce87001943946b", {"APS front sight", 7966}},
        {"5a33ca0fc4a282000d72292f", {"Colt A2 buffer tube", 10702}},
        {"5c5db5b82e2216003a0fe71d", {"MPX 9x19 10.5 inch barrel", 8174}},
        {"5df36948bb49d91fb446d5ad", {"Orsis T-5000M padded handguard grip", 7304}},
        {"5bfe86a20db834001d23e8f7", {"M870 FAB Defense AGR-870 pistol grip", 7817}},
        {"5ac66bea5acfc43b321d4aec", {"AK-103 7.62x39 30-round magazine", 11647}},
        {"587e08ee245977446b4410cf", {"OP-SKS dovetail mount", 8578}},
        {"5894a73486f77426d259076c", {"MPX flip-up front sight", 8141}},
        {"57ffb0062459777a045af529", {"AKS-74U Zenit B-18 Mount", 9000}},
        {"5a6b585a8dc32e5a9c28b4f1", {"Glock 9x19 Alpha Wolf thread protector", 5357}},
        {"5a9fc7e6a2750c0032157184", {"VSS/VAL B-3 mount combo", 9384}},
        {"5d1b392c86f77425243e98fe", {"Light bulb", 8111}},
        {"5b3f7bf05acfc433000ecf6b", {"Mosin Kochetov mount", 9472}},
        {"603618feffd42c541047f771", {"Army cap (Black)", 9967}},
        {"5afd7e445acfc4001637e35a", {"SKS TAPCO Intrafuse kit SAW-Style pistol grip", 6602}},
        {"5cdd7685d7f00c000f260ed2", {"AR-10 Keeno Arms SHREWD 7.62x51 muzzle brake", 8614}},
        {"5ac72e475acfc400180ae6fe", {"AK-74M rear sight (6P20 Sb.2)", 8059}},
        {"5a7893c1c585673f2b5c374d", {"M870 Leapers UTG PRO MTU-028SG rail", 7075}},
        {"5b7d63cf5acfc4001876c8df", {"SA-58 folding stock", 8331}},
        {"578395e82459774a0e553c7b", {"VSS Vintorez wooden stock", 7650}},
        {"5bb20e0ed4351e3bac1212dc", {"AR-15 HK Battle Grip pistol grip with Beavertail", 8010}},
        {"5b4329075acfc400153b78ff", {"Pompon hat", 7735}},
        {"59e7711e86f7746cae05fbe1", {"Kolpak-1S riot helmet", 9117}},
        {"5bb20e49d4351e3bac1212de", {"HK 416A5 flip up rear sight", 7143}},
        {"5d4042a986f7743185265463", {"Long flathead screwdriver", 8069}},
        {"5dfa3d45dfc58d14537c20b0", {"SR-25 Low Profile Gas Block", 10174}},
        {"5a78948ec5856700177b1124", {"M870 XS SHOTRAIL rail with Ghost ring", 8115}},
        {"56083a334bdc2dc8488b4571", {"MP-133/153 plastic pistol grip", 8268}},
        {"58949edd86f77409483e16a9", {"MPX double latch charging handle", 11165}},
        {"5f60e7788adaa7100c3adb49", {"Beret (Blue)", 8846}},
        {"5c48a2a42e221602b66d1e07", {"Desert Tech 5.56x45 flash hider", 7962}},
        {"5ba26acdd4351e003562908e", {"MP7A1 4.6x30 flash hider", 7379}},
        {"5780d0652459777df90dcb74", {"Gas station office key", 8142}},
        {"5a7d90eb159bd400165484f1", {"Glock Dead Ringer Snake Eye front sight", 7423}},
        {"59e358a886f7741776641ac3", {"Clin window cleaner", 8347}},
        {"57347d692459774491567cf1", {"Can of green peas", 8107}},
        {"5e2af00086f7746d3f3c33f7", {"Smoked Chimney drain cleaner", 7689}},
        {"57347da92459774491567cf5", {"Large can of beef stew", 8102}},
        {"5f2aa4464b50c14bcf07acdb", {"RFB thread protection cap", 8537}},
        {"5b3a08b25acfc4001754880c", {"P226 bridge sight mount", 8993}},
        {"588200cf2459774414733d55", {"MP-153 12ga 710mm barrel", 7856}},
        {"590c639286f774151567fa95", {"Vehicle manual", 7518}},
        {"59985a8086f77414ec448d1a", {"PP-19-01 Vityaz-SN dust cover", 7643}},
        {"5ac4c50d5acfc40019262e87", {"Kolpak-1S visor", 9010}},
        {"59d6507c86f7741b846413a2", {"AKM dust cover (6P1 0-1)", 5400}},
        {"5b1fb3e15acfc4001637f068", {"AK 7.62x39 bakelite 40-round magazine", 6990}},
        {"5c6162682e22160010261a2b", {"TOZ-106 dovetail mount", 4572}},
        {"5a9d6d21a2750c00137fa649", {"Strike Industries TRAX bridge rail", 6160}},
        {"57347d7224597744596b4e72", {"Small can of beef stew", 7443}},
        {"5b1fd4e35acfc40018633c39", {"AK 7.62x39 aluminium 10-round magazine", 4903}},
        {"5c1a1cc52e221602b3136e3d", {"Oakley SI M Frame safety glasses", 7213}},
        {"5fb65363d1409e5ca04b54f5", {"KRISS Vector .45 ACP 5 inch barrel", 9424}},
        {"59d64f2f86f77417193ef8b3", {"AK-74 wooden handguard (6P1 Sb.6-1)", 5637}},
        {"5888976c24597754281f93f5", {"DVL-10 M2 handguard", 7857}},
        {"5608379a4bdc2d26448b4569", {"MP-133 12ga 750mm barrel with rib", 7680}},
        {"571a279b24597720b4066566", {"TT 7.62x25 121mm homespun threaded barrel", 7676}},
        {"57dc347d245977596754e7a1", {"AKS-74U metal skeleton stock (6P26 Sb.5)", 8995}},
        {"5ac66c5d5acfc4001718d314", {"AK-101 5.56x45 6L29 30-round magazine", 8367}},
        {"5d440625a4b9361eec4ae6c5", {"Thunder Beast Arms 223CB 5.56x45 muzzle brake", 7686}},
        {"58d39d3d86f77445bb794ae7", {"Aimpoint Micro Standard Mount", 7702}},
        {"5c0009510db834001966907f", {"P226 Stainless Elite pistol slide", 5762}},
        {"5b432f3d5acfc4704b4a1dfb", {"Momex balaclava", 7491}},
        {"5f2aa49f9b44de6b1b4e68d4", {"RFB scope mount rail", 6817}},
        {"56e33634d2720bd8058b456b", {"Duffle bag", 7369}},
        {"59d64fc686f774171b243fe2", {"AKM 7.62x39 muzzle brake & compensator (6P1 0-14)", 5535}},
        {"5d02677ad7ad1a04a15c0f95", {"AR-10 Nordic Components Corvette 7.62x51 muzzle brake", 7299}},
        {"5b31163c5acfc400153b71cb", {"SIG Sauer ROMEO sights mount", 7007}},
        {"5b363dea5acfc4771e1c5e7e", {"SilencerCo 12ga choke adapter", 7721}},
        {"5888988e24597752fe43a6fa", {"DVL-10 .308 10-round magazine", 9678}},
        {"5913651986f774432f15d132", {"VAZ car key", 8003}},
        {"5c1a1e3f2e221602b66cc4c2", {"Fake white beard", 7500}},
        {"55d459824bdc2d892f8b4573", {"AR-15 KAC RIS handguard", 8116}},
        {"5c079ed60db834001a66b372", {"TT DLP Tactical Precision LAM module", 8619}},
        {"5a7c147ce899ef00150bd8b8", {"Vendetta Precision 5.56x45 VP-09 Interceptor muzzle brake", 7620}},
        {"5df35e970b92095fd441e4d2", {"Orsis T-5000M scope mount", 6622}},
        {"57c44fa82459772d2d75e415", {"AS VAL pistol grip", 6962}},
        {"5ef61964ec7f42238c31e0c1", {"M1911A1 Anarchy Outdoors muzzle brake", 7700}},
        {"5bb20e18d4351e00320205d5", {"AR-15 HK Battle Grip pistol grip", 7452}},
        {"55d355e64bdc2d962f8b4569", {"M4A1 5.56x45 upper receiver", 8696}},
        {"5ce69cbad7f00c00b61c5098", {"Remington M700 .308 Magpul PMAG AC 5-round magazine", 6462}},
        {"5f2aa47a200e2c0ee46efa71", {"RFB handguard", 6845}},
        {"5b3f3ade86f7746b6b790d8e", {"Armband (Red)", 4457}},
        {"602e620f9b513876d4338d9a", {"FAB Defense GL-Core buttstock", 7339}},
        {"5ac72e895acfc43b321d4bd5", {"AK-104 7.62x39 muzzle brake & compensator (6P46 0-20)", 8299}},
        {"607d5a891246154cad35d6aa", {"MP-155 walnut stock", 10630}},
        {"55d481904bdc2d8c2f8b456a", {"AK-74 5.45x39 6L26 45-round magazine", 9117}},
        {"5ae099925acfc4001a5fc7b3", {"Mosin rear sight", 5890}},
        {"5fc3e4ee7283c4046c5814af", {"HK UMP polymer stock", 7490}},
        {"5fc0fa362770a0045c59c677", {"MCX flip-up front sight", 7887}},
        {"5672cb124bdc2d1a0f8b4568", {"AA Battery", 7585}},
        {"57d1519e24597714373db79d", {"PP-91 9x18PM 30-round magazine", 8350}},
        {"5bfea7ad0db834001c38f1ee", {"Remington M700 .308 Wyatt's Outdoor 5-round magazine", 7585}},
        {"599860ac86f77436b225ed1a", {"PP-19-01 Vityaz-SN 9x19 30-round magazine", 6408}},
        {"5de653abf76fdc1ce94a5a2a", {"VPO-215 .366 TKM metal 4-round magazine", 6902}},
        {"55d4887d4bdc2d962f8b4570", {"5.56x45 Colt AR-15 STANAG 30-round magazine", 8840}},
        {"588200c224597743990da9ed", {"MP-153 12ga 660mm barrel", 7179}},
        {"5894a51286f77426d13baf02", {"MPX pistol grip", 7468}},
        {"5d024f5cd7ad1a04a067e91a", {"Mosin Arbalet Patriot K+W rail mount", 8528}},
        {"5fbcc429900b1d5091531dd7", {"MCX telescoping stock", 6631}},
        {"5a0f096dfcdbcb0176308b15", {"AKMP system front sight device", 5840}},
        {"5a7d912f159bd400165484f3", {"Glock TruGlo TFX rear sight", 6900}},
        {"5f2aa493cd375f14e15eea72", {"RFB handguard rail mount", 6061}},
        {"5ef3553c43cb350a955a7ccb", {"M1911A1 Wilson Extended slide stop", 7656}},
        {"560837824bdc2d57468b4568", {"MP-133 12ga 750mm barrel", 7062}},
        {"5b7c2d1d5acfc43d1028532a", {"SA-58/FAL 7.62x51 \"MMW\" plastic 20-round magazine", 8479}},
        {"5b3b6dc75acfc47a8773fb1e", {"Armasight Vulcan universal base", 8180}},
        {"59148f8286f7741b951ea113", {"Weapon safe key", 6755}},
        {"5addbfd15acfc40015621bde", {"M14 Mini Scout Mount system", 6892}},
        {"5737256c2459776125652acd", {"9x18mm PMM PstM gzh ammo box, 16 cartridges", 13137}},
        {"5d2c76ed48f03532f2136169", {"AK AKademia Bastion dust cover", 6820}},
        {"5df8a6a186f77412640e2e80", {"Christmas tree ornament (Red)", 7000}},
        {"5cadd919ae921500126a77f3", {"M9A3 front sight", 6999}},
        {"5caf16a2ae92152ac412efbc", {"ASh-12 folding front sight", 9404}},
        {"5f5e45cc5021ce62144be7aa", {"LK 3F Transfer tourist backpack", 7243}},
        {"5b7be4645acfc400170e2dcc", {"Vltor CASV 4 inch rail", 8967}},
        {"56e05b06d2720bb2668b4586", {"PB 9x18PM sound suppressor", 7405}},
        {"5780cf692459777de4559321", {"Dorm room 315 key", 7151}},
        {"5abcbb20d8ce87001773e258", {"M14 Enlarged Military Aperture rear sight", 20290}},
        {"5fb6558ad6f0b2136f2d7eb7", {"KRISS Vector Gen.2 folding stock", 8645}},
        {"5fc4b992187fea44d52edaa9", {"SilencerCo Omega 45k direct thread mount adapter", 7113}},
        {"590c661e86f7741e566b646a", {"Car first aid kit", 6813}},
        {"5b099b965acfc400186331e6", {"SA-58 TAPCO SAW-style pistol grip (Black)", 6853}},
        {"56eabcd4d2720b66698b4574", {"MK12 Low Profile Gas Block", 7428}},
        {"5c17804b2e2216152006c02f", {"KAC Folding front sight", 7778}},
        {"5dfe14f30b92095fd441edaf", {"ETMI-019 shotgun rail mount", 7160}},
        {"5fbc226eca32ed67276c155d", {"MCX 8 inch KeyMod handguard", 5981}},
        {"5df8a58286f77412631087ed", {"TSh-4M-L soft tank crew helmet", 6937}},
        {"6033749e88382f4fab3fd2c5", {"AR-15 MASP Industries Ambidextrous Battle Charging Handle", 6785}},
        {"57e3dba62459770f0c32322b", {"AK-74 textolite pistol grip (6P4 Sb.9)", 5151}},
        {"5f647d9f8499b57dc40ddb93", {"KS-23M 23x75 3-shell magazine cap", 7759}},
        {"5a0c27731526d80618476ac4", {"Zarya stun grenade", 7325}},
        {"5aa2b9aee5b5b00015693121", {"RayBench Hipster Reserve sunglasses", 6042}},
        {"5c5db5fc2e2216000f1b2842", {"MPX Midwest Industries 6.5 inch M-LOK handguard", 6783}},
        {"5bfd4cbe0db834001b73449f", {"Mosin 7.62x54R 514mm carbine barrel", 7348}},
        {"5673de654bdc2d180f8b456d", {"Can of pacific saury", 6754}},
        {"602286df23506e50807090c6", {"PL-15 9x19 16-round magazine", 5644}},
        {"5a788031c585673f2b5c1c79", {"M870 FAB Defense PR870 forestock", 7687}},
        {"5ede475b549eed7c6d5c18fb", {"40x46mm M386 (HE) grenade", 8823}},
        {"57347d5f245977448b40fa81", {"Can of humpback salmon", 6460}},
        {"56742c284bdc2d98058b456d", {"Crickent lighter", 6267}},
        {"5c7d560b2e22160bc12c6139", {"Aimpoint Standard Spacer", 7042}},
        {"5a9ea27ca2750c00137fa672", {"AK Spikes Tactical Dynacomp 7.62x39 muzzle brake & compensator", 7886}},
        {"57ee59b42459771c7b045da5", {"PP-91 Kedr Rotor 43 RIS mount", 8053}},
        {"5c4ee3d62e2216152006f302", {"SV-98 7.62x54R SRVV mk.2.0 compensator", 6555}},
        {"587df3a12459772c28142567", {"SKS 7.62x39 10-round internal box magazine", 7941}},
        {"5d123b70d7ad1a0ee35e0754", {"KAC URX 3/3.1 long panel", 8923}},
        {"5caf17c9ae92150b30006be1", {"ASh-12 12.7x55 muzzle brake", 6726}},
        {"5b3f16c486f7747c327f55f7", {"Armband (White)", 2580}},
        {"5734770f24597738025ee254", {"Strike Cigarettes", 6177}},
        {"5c6d7b3d2e221600114c9b7d", {"AR-15 HK V2 pistol grip", 6319}},
        {"55d484b44bdc2d1d4e8b456d", {"MP-133 12ga 6-shell magazine", 8457}},
        {"5addbffe5acfc4001714dfac", {"M14 SAGE International DCSB mount", 6387}},
        {"5b1faa0f5acfc40dc528aeb5", {"Glock 18C 9x19 pistol slide", 6537}},
        {"5cc70102e4a949035e43ba74", {"FN P90 upper receiver", 6187}},
        {"5751496424597720a27126da", {"Hot Rod energy drink", 7440}},
        {"573475fb24597737fb1379e1", {"Apollon Soyuz cigarettes", 6471}},
        {"56ea6fafd2720b844b8b4593", {"Noveske KX3 5.56x45 flash hider", 5858}},
        {"5b39ffbd5acfc47a8773fb06", {"P226 Hogue rubber pistol grip with finger grooves", 6800}},
        {"57372db0245977685d4159b2", {"5.45x39 PP gs 30 pcs. ammo pack", 6476}},
        {"590c2d8786f774245b1f03f3", {"Screwdriver", 7014}},
        {"5c11046cd174af02a012e42b", {"Wilcox Interface for PVS-7", 7602}},
        {"5fbcc437d724d907e2077d5c", {"MCX thin lightweight stock", 6275}},
        {"58c157c886f774032749fb06", {"TangoDown Stubby BGV-MK46K tactical grip (Stealth Gray)", 5447}},
        {"575062b524597720a31c09a1", {"Green Ice can", 6656}},
        {"5fbcbd02900b1d5091531dd3", {"SIG Sauer Micro Brake 7.62x51 muzzle brake", 6490}},
        {"5dcbe965e4ed22586443a79d", {"Desert Tech .308 flash hider", 6460}},
        {"56083cba4bdc2de22e8b456f", {"MP-133/153 wooden stock", 7787}},
        {"5894a05586f774094708ef75", {"MPX 9x19 30-round magazine", 7720}},
        {"5cc9b815d7f00c000e2579d6", {"AR-15 TROY Claymore 5.56x45 muzzle brake", 5806}},
        {"5a789261c5856700186c65d3", {"M870 Mesa Tactical magazine clamp", 6887}},
        {"5a71e1868dc32e00094b97f3", {"Glock ZEV Tech sight mount cap", 6294}},
        {"55d45d3f4bdc2d972f8b456c", {"MP-133 beechwood forestock", 8328}},
        {"603372b4da11d6478d5a07ff", {"STM-9 9x19 10.5 inch barrel", 6235}},
        {"5d1b198cd7ad1a604869ad72", {"AK TDI AKM-L handguard", 7589}},
        {"609a4b4fe2ff132951242d04", {"VPO-102 Arbalet mount", 6225}},
        {"5d2f261548f03576f500e7b7", {"MP5K 9x19 upper receiver", 7681}},
        {"60338ff388382f4fab3fd2c8", {"STM-9 magwell (Grey)", 6351}},
        {"5d2c829448f0353a5c7d6674", {"WASR-10/63 CAF wooden foregrip", 7576}},
        {"57347cd0245977445a2d6ff1", {"T-Shaped plug", 7155}},
        {"58272d7f2459774f6311ddfd", {"GK-02 12ga muzzle brake", 6897}},
        {"5938603e86f77435642354f4", {"Dorm room 206 key", 6634}},
        {"5780cf9e2459777df90dcb73", {"Dorm room 218 key", 5900}},
        {"5b3baf8f5acfc40dc5296692", {"TT 7.62x25 116mm gilded barrel", 16556}},
        {"59c6633186f7740cf0493bb9", {"AK-74 gas tube", 7430}},
        {"5888996c24597754281f9419", {"DVL-10 M2 muzzle brake", 6398}},
        {"5d123a3cd7ad1a004e476058", {"KAC URX 3/3.1 short panel", 6462}},
        {"57f3c7e024597738ea4ba286", {"PP-91-01 Kedr-B muzzle thread piece", 8444}},
        {"5938504186f7740991483f30", {"Dorm room 203 key", 6071}},
        {"5608373c4bdc2dc8488b4570", {"MP-133 12ga 710mm barrel", 6123}},
        {"57d152ec245977144076ccdf", {"PP-91 ZMZ polymer pistol grip", 8311}},
        {"5d7b6bafa4b93652786f4c76", {"FN Five-seveN MK2 RMR mount", 6640}},
        {"5bb20e70d4351e0035629f8f", {"HK Slim Line Stock", 6796}},
        {"5d1b31ce86f7742523398394", {"Round pliers", 7293}},
        {"5cf79599d7f00c10875d9212", {"Mosin Tiger Rock thread adapter", 5633}},
        {"5b43271c5acfc432ff4dce65", {"Bandana", 5766}},
        {"5addbb825acfc408fb139400", {"M14 JP Enterprises 7.62x51 tactical muzzle brake & compensator", 6436}},
        {"60098af40accd37ef2175f27", {"CAT hemostatic tourniquet", 7662}},
        {"606587bd6d0bd7580617bacc", {"Mk47 ambidextrous charging handle", 6528}},
        {"590c2b4386f77425357b6123", {"Pliers", 7515}},
        {"606587e18900dc2d9a55b65f", {"CMMG buffer tube", 7913}},
        {"5ef5d994dfbc9f3c660ded95", {"M1911A1 Weigand Weig-a-tinny rail mount", 6022}},
        {"571a12c42459771f627b58a0", {"TT-33 7.62x25 TT pistol", 6315}},
        {"5ac72e615acfc43f67248aa0", {"AK-101 5.56x45 muzzle brake & compensator", 6019}},
        {"5ae30bad5acfc400185c2dc4", {"AR-15 rear sight carry handle", 8050}},
        {"573728f324597765e5728561", {"9x18PM SP8 gzh 16 pcs. ammo pack", 6697}},
        {"5b3cbc235acfc4001863ac44", {"Armasight Vulcan MG scope eyecup", 6146}},
        {"5bbdb83fd4351e44f824c44b", {"Mosin Tacfire Tanker Style muzzle brake", 5365}},
        {"58d39b0386f77443380bf13c", {"Aimpoint Micro Spacer High", 5910}},
        {"5beec8c20db834001d2c465c", {"AK-12 stock", 7548}},
        {"5addbb945acfc4001a5fc44e", {"M14 Good Iron 7.62x51 muzzle brake & compensator", 5451}},
        {"591ee00d86f774592f7b841e", {"Axion Kobra dovetail mount", 6728}},
        {"5cf67a1bd7f00c06585fb6f3", {"Mosin Weapon Tuning thread adapter", 6082}},
        {"5a6b59a08dc32e000b452fb7", {"Glock SAI thread protector", 3304}},
        {"5bfd4c980db834001b73449d", {"Mosin carbine rear sight", 5947}},
        {"57ade1442459771557167e15", {"Armacon Baskak stock", 6111}},
        {"5926c0df86f77462f647f764", {"MP5 9x19 upper receiver", 5745}},
        {"5fbcbd6c187fea44d52eda14", {"MCX pistol grip", 6227}},
        {"5bffe7c50db834001d23ece1", {"P226 Axelson tactical Mk.25 pistol slide", 6604}},
        {"560e620e4bdc2d724b8b456b", {"SV-98 muzzle device", 6524}},
        {"5b432be65acfc433000ed01f", {"6B34 anti-fragmentation glasses", 4446}},
        {"5e2af47786f7746d404f3aaa", {"Fleece fabric", 5809}},
        {"57ffa9f4245977728561e844", {"AKS-74U Zenit B-11 handguard", 6093}},
        {"5c471be12e221602b66cd9ac", {"SVDS pistol grip", 5640}},
        {"5c5db6552e2216001026119d", {"MPX 9x19 20-round magazine", 4019}},
        {"5fc4b97bab884124df0cd5e3", {"SilencerCo Omega 45k piston mount adapter", 5908}},
        {"5fce0f9b55375d18a253eff2", {"KRISS Vector side rail", 5356}},
        {"5d2f259b48f0355a844acd74", {"MP5K polymer handguard", 4935}},
        {"5ba264f6d4351e0034777d52", {"MP7 4.6x30 20-round magazine", 5684}},
        {"59e7715586f7742ee5789605", {"Respirator", 5078}},
        {"5a33b652c4a28232996e407c", {"Trijicon RMR high profile mount", 6012}},
        {"5b432b6c5acfc4001a599bf0", {"Deadly Skull mask", 5828}},
        {"6076c87f232e5a31c233d50e", {"?P-155 6-round magazine extension", 6797}},
        {"5cf4fb76d7f00c065703d3ac", {"RTM Pillau tactical foregrip", 5901}},
        {"5df8e4080b92095fd441e594", {"SR-25 7.62x51 upper receiver", 5432}},
        {"5d6d2ef3a4b93618084f58bd", {"RayBench Aviator glasses", 6260}},
        {"5926c36d86f77467a92a8629", {"MP5 Wide Tropical Polymer handguard", 5321}},
        {"57513f9324597720a7128161", {"Grand juice", 6220}},
        {"57616ca52459773c69055192", {"SOK-12 AK-style stock", 4637}},
        {"5ede4739e0350d05467f73e8", {"40x46mm M406 (HE) grenade", 7875}},
        {"5aaa4194e5b5b055d06310a5", {"AK-74 5.45x39 Magpul PMAG 30 GEN M3 30-round magazine", 5232}},
        {"5a0d716f1526d8000d26b1e2", {"AKML 7.62x39 system Izhmash flash hider", 5270}},
        {"5a6b60158dc32e000a31138b", {"Glock 17 9x19 Barrel with compensator", 5471}},
        {"5bfe7fb30db8340018089fed", {"MP-133/153 Taktika Tula 12003 stock adapter", 6662}},
        {"602f85fd9b513876d4338d9c", {"STM-9 magwell", 4378}},
        {"5fbb978207e8a97d1f0902d3", {"KRISS Vector Mk.5 modular rail", 4801}},
        {"544fb37f4bdc2dee738b4567", {"Analgin painkillers", 5621}},
        {"59d790f486f77403cb06aec6", {"Armytek Predator Pro v3 XHP35 HI flashlight", 6615}},
        {"5e569a132642e66b0b68015c", {"SVD CAA DRG L-1 mount rail", 7434}},
        {"6040de02647ad86262233012", {"Army cap (CADPAT)", 7382}},
        {"5ae30c9a5acfc408fb139a03", {"LMT SOPMOD stock", 6706}},
        {"5b4325355acfc40019478126", {"Shemagh (Tan)", 5970}},
        {"5448bd6b4bdc2dfc2f8b4569", {"PM \"Makarov\" 9x18PM pistol", 5525}},
        {"5648b1504bdc2d9d488b4584", {"AK-74 polymer handguard (6P20 Sb.9)", 4211}},
        {"560837154bdc2da74d8b4568", {"MP-133 12ga 660mm barrel with rib", 5501}},
        {"558032614bdc2de7118b4585", {"TangoDown Stubby BGV-MK46K tactical grip (Black)", 6453}},
        {"5b7bebc85acfc43bca706666", {"SA-58/FAL AIM Sports Universal M-LOK handguard", 5484}},
        {"572b7fa524597762b747ce82", {"Lower half-mask", 6633}},
        {"5649ed104bdc2d3d1c8b458b", {"7.62x39 PS gzh 30 pcs. ammo pack", 6979}},
        {"59e35ef086f7741777737012", {"Pack of screws", 6059}},
        {"5f2aa4559b44de6b1b4e68d1", {"RFB 7.62x51 flash hider", 4469}},
        {"58c157be86f77403c74b2bb6", {"TangoDown Stubby BGV-MK46K tactical grip (Flat Dark Earth)", 5501}},
        {"5fb65424956329274326f316", {"KRISS Vector .45 ACP flash hider", 6741}},
        {"5c471c442e221602b542a6f8", {"SVD 7.62x54R 10-round magazine", 5012}},
        {"5d124c01d7ad1a115c7d59fb", {"KAC URX 3/3.1 short panel (Flat Dark Earth)", 5434}},
        {"5ae35b315acfc4001714e8b0", {"M870 Mesa Tactical LEO stock adapter", 6165}},
        {"5bffd7ed0db834001d23ebf9", {"TT PM-Laser DTK-TT muzzle brake", 6247}},
        {"5780d07a2459777de4559324", {"Portable cabin key", 5073}},
        {"5addbba15acfc400185c2854", {"M14 Smith Enterprise Vortex 7.62x51 muzzle brake & compensator", 5185}},
        {"5ef35d2ac64c5d0dfc0571b0", {"M1911A1 hammer", 3405}},
        {"5c61627a2e22160012542c55", {"TOZ-106 scope mount", 4198}},
        {"5cf7acfcd7f00c1084477cf2", {"FN PS90 upper receiver", 5813}},
        {"606587d11246154cad35d635", {"CMMG RipStock buttstock", 5077}},
        {"5bb20de5d4351e0035629e59", {"HK 416A5 Quad Rail handguard", 5264}},
        {"5c0111ab0db834001966914d", {"ME Cylinder 12ga muzzle adapter", 6008}},
        {"5d6d2e22a4b9361bd5780d05", {"Gascan glasses", 5111}},
        {"559ba5b34bdc2d1f1a8b4582", {"SV-98 7.62x54R polymer 10-round magazine", 5021}},
        {"5a32aa0cc4a28232996e405f", {"P226 Trijicon RMR mount", 5708}},
        {"5de8fc0b205ddc616a6bc51b", {"MP9 side rail", 5764}},
        {"5ef1b9f0c64c5d0dfc0571a1", {"M590A1 Mesa Tactical LEO gen.1 stock adapter", 5924}},
        {"5b099ac65acfc400186331e1", {"SA-58/FAL 7.62x51 20-round magazine", 4890}},
        {"6065c6e7132d4d12c81fd8e1", {"AR-10 CMMG SV Brake 7.62x51 muzzle brake", 5471}},
        {"5c5db5962e2216000e5e46eb", {"MPX 9x19 6.5 inch barrel", 5174}},
        {"5c5db5f22e2216000e5e47e8", {"MPX Midwest Industries 4.5 inch M-LOK handguard", 6303}},
        {"5bffcf7a0db83400232fea79", {"TT PM-Laser TT-206 side grips with laser sight", 6782}},
        {"5c0d32fcd174af02a1659c75", {"Pyramex Proximity safety glasses", 5588}},
        {"5909e99886f7740c983b9984", {"USB Adapter", 5050}},
        {"5894a42086f77426d2590762", {"MPX GEN1 handguard", 5003}},
        {"5ea034eb5aad6446a939737b", {"PPSh-41 7.62x25 35-round magazine", 4479}},
        {"55d4b9964bdc2d1d4e8b456e", {"AR-15 A2 pistol grip", 4223}},
        {"5aa2ba19e5b5b00014028f4e", {"Tactical fleece hat", 5724}},
        {"5649ade84bdc2d1b2b8b4587", {"AK polymer pistol grip (6P1 Sb.8)", 5505}},
        {"5bffec120db834001c38f5fa", {"P226 Axelson Tactical MK.25 pistol grip", 6152}},
        {"57d17c5e2459775a5c57d17d", {"Ultrafire WF-501B Flashlight", 5459}},
        {"560836fb4bdc2d773f8b4569", {"MP-133 12ga 660mm barrel", 5005}},
        {"56d5a407d2720bb3418b456b", {"P226R MK25 pistol slide", 6845}},
        {"5df25d3bfd6b4e6e2276dc9a", {"Orsis T-5000M handguard", 5000}},
        {"5df35e59c41b2312ea3334d5", {"Orsis T-5000M aluminium body", 4999}},
        {"5e81ee213397a21db957f6a6", {"M1911A1 front sight", 4333}},
        {"5bb20dbcd4351e44f824c04e", {"HK Extended Latch charging handle", 7470}},
        {"5780cda02459777b272ede61", {"Dorm room 306 key", 4184}},
        {"573474f924597738002c6174", {"Chainlet", 5070}},
        {"573476f124597737e04bf328", {"Wilston cigarettes", 5080}},
        {"5cbda9f4ae9215000e5b9bfc", {"AK-74 polymer handguard (6P20 Sb.9) Plum", 4384}},
        {"57d17e212459775a1179a0f5", {"25mm mount ring", 4200}},
        {"58a5c12e86f7745d585a2b9e", {"MPX GEN1 handguard 4 inch rail", 5162}},
        {"5fc0fa957283c4046c58147e", {"MCX flip-up rear sight", 7003}},
        {"5a7d9104159bd400134c8c21", {"Glock TruGlo TFX front sight", 5421}},
        {"5fbb976df9986c4cff3fe5f2", {"KRISS Vector bottom rail", 5555}},
        {"5cc70146e4a949000d73bf6b", {"FN P90 upper receiver side rail", 4897}},
        {"5c13cef886f774072e618e82", {"Toilet paper", 5196}},
        {"55d448594bdc2d8c2f8b4569", {"MP-133 12ga 610mm barrel", 4902}},
        {"5998597786f77414ea6da093", {"PP-19-01 Vityaz-SN 9x19 muzzle brake/compensator", 6240}},
        {"58949dea86f77409483e16a8", {"MPX A2 9x19 flash hider", 3962}},
        {"5bfe86bd0db83400232fe959", {"FAB Defense protection cap for AGR-870", 7337}},
        {"5e0090f7e9dc277128008b93", {"MP9 9x19 upper receiver", 4880}},
        {"591ae8f986f77406f854be45", {"Yotota car key", 6717}},
        {"59ccfdba86f7747f2109a587", {"AK UltiMAK M1-B gas tube & handguard", 5519}},
        {"5672cb304bdc2dc2088b456a", {"D Size battery", 5487}},
        {"5c503ac82e221602b21d6e9a", {"VPO-101 Vepr Hunter 7.62x51 5-round magazine", 5971}},
        {"5d4041f086f7743cac3f22a7", {"Ortodontox toothpaste", 4868}},
        {"59f99a7d86f7745b134aa97b", {"SR-1MP 9x21 18-round magazine", 4656}},
        {"5fbcbcf593164a5b6278efb2", {"SIG Sauer 7.62x51 3-prong flash hider", 5179}},
        {"602e71bd53a60014f9705bfa", {"AR-15 DLG-123 pistol grip", 4700}},
        {"5c0faeddd174af02a962601f", {"ADAR 2-15 buffer tube", 6468}},
        {"5fbbc3324e8a554c40648348", {"KRISS Vector 9x19 flash hider", 4721}},
        {"5a01c29586f77474660c694c", {"AK 7.62x39 6L10 30-round magazine", 5446}},
        {"5a7037338dc32e000d46d257", {"Glock 9x19 CARVER Custom Decelerator 3 Port compensator", 4928}},
        {"5649aa744bdc2ded0b8b457e", {"AK-74 5.45x39 muzzle brake & compensator (6P20 0-20)", 4117}},
        {"606f26752535c57a13424d22", {"MP-155 Ultima underbarrel mount", 4779}},
        {"5cdeaca5d7f00c00b61c4b70", {"Remington M700 Magpul Pro 700 chassis inline mount", 3985}},
        {"5d40425986f7743185265461", {"Nippers", 5151}},
        {"5df38a5fb74cd90030650cb6", {"Orsis T-5000M pistol grip", 4430}},
        {"5beec3420db834001b095429", {"RPK-16 5.45x39 muzzle brake & compensator", 6027}},
        {"5a6f5e048dc32e00094b97da", {"Glock 9x19 pistol slide", 4106}},
        {"5bc5a372d4351e44f824d17f", {"Mosin AIM Sports MNG rail mount", 6713}},
        {"5c6beec32e221601da3578f2", {"P226 9x19 TJ's Custom compensator", 4967}},
        {"60b52e5bc7d8103275739d67", {"Stich Profi Chimera boonie hat", 5154}},
        {"5e848d51e4dbc5266a4ec63b", {"KS-23M forestock", 5533}},
        {"5a7ad1fb51dfba0013379715", {"Glock 9x19 Lone Wolf LWD-COMP9 compensator", 3862}},
        {"5c0125fc0db834001a669aa3", {"P226 Legion full size pistol slide", 4920}},
        {"5df35e7f2a78646d96665dd4", {"Orsis T-5000M muzzle brake", 5523}},
        {"5e81c519cb2b95385c177551", {"M1911A1 .45 ACP 127mm barrel", 5387}},
        {"55d4ae6c4bdc2d8b2f8b456e", {"High Standard M4SS Stock", 4521}},
        {"603619720ca681766b6a0fc4", {"Army cap (Coyote Tan)", 5323}},
        {"5a7ad0c451dfba0013379712", {"Glock 9x19 Carver Custom 4 Port muzzle brake", 4548}},
        {"6086b5392535c57a13424d70", {"Custom Guns rail guide", 3651}},
        {"5de8f237bbaf010b10528a70", {"MP9 9x19 sound suppressor adapter", 4350}},
        {"5de6558e9f98ac2bc65950fc", {"VPO-215 scope rail mount", 3899}},
        {"58a56f8d86f774651579314c", {"MPX GEN1 handguard 2 inch rail", 5550}},
        {"57513f07245977207e26a311", {"Apple juice", 5268}},
        {"57dc334d245977597164366f", {"AKS-74U dust cover (6P26 Sb.7)", 4219}},
        {"56d5a1f7d2720bb3418b456a", {"P226 9x19 112mm barrel", 6274}},
        {"574db213245977459a2f3f5d", {"SKS rear sight", 4240}},
        {"5d3eb59ea4b9361c284bb4b2", {"FN Five-seveN 5.7x28 threaded barrel", 4200}},
        {"560835c74bdc2dc8488b456f", {"MP-133 12ga 510mm barrel with rib", 17100}},
        {"560836b64bdc2d57468b4567", {"MP-133 12ga 540mm barrel with rib", 4200}},
        {"5649b0544bdc2d1b2b8b458a", {"AK-74 rear sight (6P20 Sb.2)", 3444}},
        {"571659bb2459771fb2755a12", {"AR-15 DI ECS pistol grip (Flat Dark Earth)", 4762}},
        {"5448c1d04bdc2dff2f8b4569", {"5.56x45 Magpul PMAG GEN M3 20 STANAG 20-round magazine", 4396}},
        {"5a6f58f68dc32e000a311390", {"Glock front sight", 4458}},
        {"5d0b5cd3d7ad1a3fe32ad263", {"KMZ 1P59 scope eyecup", 4610}},
        {"5aa2b87de5b5b00016327c25", {"BEAR baseball cap (Green)", 3099}},
        {"5cc700d4e4a949000f0f0f28", {"FN P90 Damage Industries buttpad", 4150}},
        {"5648ac824bdc2ded0b8b457d", {"AK Zenit RP-1 charging handle", 4550}},
        {"5d6d3943a4b9360dbc46d0cc", {"LShZ-2DTM cover", 5174}},
        {"5b3f3af486f774679e752c1f", {"Armband (Blue)", 3190}},
        {"5755356824597772cb798962", {"AI-2 medkit", 4048}},
        {"5448c12b4bdc2d02308b456f", {"PM 9x18PM 90-93 8-round magazine", 4976}},
        {"5ea03e5009aa976f2e7a514b", {"PPSh-41 dust cover", 4708}},
        {"544a38634bdc2d58388b4568", {"AR-15 Colt USGI A2 5.56x45 flash hider", 3264}},
        {"5f3e778efcd9b651187d7201", {"M45A1 polymer pistol grip", 4035}},
        {"60785c0d232e5a31c233d51c", {"MP-155 Ultima pistol grip rubber pad", 4404}},
        {"5addbbb25acfc40015621bd9", {"M14 Yankee Hill Phantom 7.62x51 muzzle brake & compensator", 4012}},
        {"572b7fa124597762b472f9d2", {"Beanie", 5398}},
        {"5c0684e50db834002a12585a", {"TT Hogue-like rubber grip", 3996}},
        {"5ab626e4d8ce87272e4c6e43", {"AKS-74 metal skeletonized stock (6P21 Sb.5)", 29196}},
        {"55d48ebc4bdc2d8c2f8b456c", {"Delta-tek Sprut mount for pump-action shotguns", 6023}},
        {"591382d986f774465a6413a7", {"Dorm room 105 key", 4231}},
        {"5672c92d4bdc2d180f8b4567", {"Dorm room 118 key", 4160}},
        {"5e8708d4ae379e67d22e0102", {"M590 ghost ring front sight", 9371}},
        {"5cbdaf89ae9215000e5b9c94", {"AK-74 5.45x39 6L23 30-round magazine (Plum)", 3637}},
        {"5ac50c185acfc400163398d4", {"AK-74M polymer stock (6P34 Sb.15)", 4973}},
        {"57ffaea724597779f52b3a4d", {"AK Zenit B-12 Mount", 4087}},
        {"5cf50850d7f00c056e24104c", {"AK Strike Industries Enhanced Pistol Grip", 3900}},
        {"560836484bdc2d20478b456e", {"MP-133 12ga 540mm barrel", 3900}},
        {"60228924961b8d75ee233c32", {"PL-15 pistol slide", 3900}},
        {"5914578086f774123569ffa4", {"Dorm room 108 key", 4140}},
        {"5a70366c8dc32e001207fb06", {"Glock Double Diamond flash hider", 4131}},
        {"5fbbc34106bde7524f03cbe9", {"KRISS Vector 9x19 thread protection cap", 3570}},
        {"5de8fbf2b74cd90030650c79", {"MP9 bottom rail", 5035}},
        {"571a282c2459771fb2755a69", {"TT side grips", 4937}},
        {"57dc32dc245977596d4ef3d3", {"AKS-74U wooden handguard (6P26 Sb.6)", 4395}},
        {"5c5db5852e2216003a0fe71a", {"MPX 9x19 4.5 inch barrel", 3800}},
        {"590c2c9c86f774245b1f03f2", {"Construction measuring tape", 4161}},
        {"602a95edda11d6478d5a06da", {"PL-15 9x19 barrel", 3063}},
        {"5c5db6ee2e221600113fba54", {"MPX Maxim Defense CQB telescoping stock", 3750}},
        {"5fb651b52b1b027b1f50bcff", {"Glock .45 ACP 13-round magazine", 4214}},
        {"5abcc328d8ce8700194394f3", {"APB 9x18PM sound suppressor", 3994}},
        {"5d124c1ad7ad1a12227c53a7", {"KAC URX 3/3.1 stopper panel (Flat Dark Earth)", 3744}},
        {"5fc5396e900b1d5091531e72", {"HK UMP side handguard rail", 3296}},
        {"5fc53954f8b6a877a729eaeb", {"HK UMP bottom handguard rail", 3414}},
        {"5998598e86f7740b3f498a86", {"Saiga-9 9x19 muzzle brake/compensator", 4383}},
        {"5cc82796e24e8d000f5859a8", {"FN P90 5.7x28 flash hider", 4501}},
        {"5e81c550763d9f754677befd", {"M1911A1 hammer", 3015}},
        {"5aa2b89be5b5b0001569311f", {"EMERCOM cap", 3138}},
        {"576a7c512459771e796e0e17", {"MP-443 Zenit B-8 mount", 4451}},
        {"5fb6548dd1409e5ca04b54f9", {"KRISS Vector .45 ACP thread protection cap", 4473}},
        {"593858c486f774253a24cb52", {"Pumping station back door key", 3627}},
        {"5a38ee51c4a282000c5a955c", {"TOZ-106 20ga MC 20-01 Sb.3 2-shot magazine", 1753}},
        {"5cadd954ae921500103bb3c2", {"M9A3 Sight Mount rear sight rail", 3600}},
        {"60361b5a9a15b10d96792291", {"Army cap (UCP)", 6425}},
        {"57a349b2245977762b199ec7", {"Pumping station front door key", 3542}},
        {"5bead2e00db834001c062938", {"MPL-50 entrenching tool", 3560}},
        {"5df35ea9c41b2312ea3334d8", {"Orsis T-5000M long length rail", 2953}},
        {"5a705e128dc32e000d46d258", {"Glock 9x19 Alpha Wolf bullnose compensator", 3026}},
        {"5ae099875acfc4001714e593", {"Mosin front sight", 8932}},
        {"5aafa1c2e5b5b00015042a56", {"M1A SOCOM 16 7.62x51 muzzle brake & compensator", 4309}},
        {"5780cf722459777a5108b9a1", {"Dorm room 308 key", 3524}},
        {"5ab8f04f86f774585f4237d8", {"Tactical sling bag", 3633}},
        {"5e21ca18e4d47f0da15e77dd", {"AK 5.56x45 CNC Warrior muzzle device adapter", 3565}},
        {"5a6b592c8dc32e00094b97bf", {"Glock 9x19 Double Diamond thread protector", 4399}},
        {"5cc700cae4a949035e43ba72", {"FN P90 butt pad", 3595}},
        {"57e26ea924597715ca604a09", {"Bars A-2607 Damascus knife", 3988}},
        {"5b7d68af5acfc400170e30c3", {"SA-58 7.62x51 Austrian style muzzle brake", 3303}},
        {"5aaa5e60e5b5b000140293d6", {"5.56x45 Magpul PMAG GEN M3 10 STANAG 10-round magazine", 2372}},
        {"57e26fc7245977162a14b800", {"Bars A-2607 - 95x18 knife", 3540}},
        {"56d5a2bbd2720bb8418b456a", {"P226 polymer pistol grip (Black)", 3300}},
        {"56e33680d2720be2748b4576", {"Transformer Bag", 3302}},
        {"572b7d8524597762b472f9d1", {"Baseball cap", 3844}},
        {"5cadc55cae921500103bb3be", {"M9A3 9x19 pistol slide", 3166}},
        {"5b7d671b5acfc43d82528ddd", {"SA-58/FAL Belgian style handguard", 2983}},
        {"60361a7497633951dc245eb4", {"Army cap (Flora)", 3710}},
        {"55d5f46a4bdc2d1b198b4567", {"AR-15 A2 rear sight", 3417}},
        {"5c503b1c2e221602b21d6e9d", {"VPO-101 Vepr Hunter rear sight", 3128}},
        {"5938994586f774523a425196", {"Dorm room 103 key", 3065}},
        {"5649af094bdc2df8348b4586", {"AK-74 dust cover (6P20 0-1)", 4299}},
        {"59d625f086f774661516605d", {"AK 7.62x39 30-round magazine (issued '55 or later)", 2697}},
        {"57838f0b2459774a256959b2", {"VSS 9x39 6L24 10-round magazine", 2971}},
        {"576169e62459773c69055191", {"SOK-12 polymer handguard (Sb.7-1)", 4795}},
        {"57dc324a24597759501edc20", {"AKS-74U 5.45x39 muzzle brake (6P26 0-20)", 3404}},
        {"572b7f1624597762ae139822", {"Balaclava", 3006}},
        {"5efb0c1bd79ff02a1f5e68d9", {"7.62x51mm M993", 3208}},
        {"5b4327aa5acfc400175496e0", {"MIL-TEC panama hat", 3150}},
        {"607d5aa50494a626335e12ed", {"MP-155 walnut forestock", 6600}},
        {"5a01ad4786f77450561fda02", {"AK Kiba Arms VDM CS gas tube", 2904}},
        {"599860e986f7743bb57573a6", {"PP-19-01 Vityaz-SN rear sight", 2900}},
        {"5ef366938cef260c0642acad", {"M1911A1 Pachmayr American Legend grip #423", 2900}},
        {"564ca99c4bdc2d16268b4589", {"AK-74 5.45x39 6L20 30-round magazine", 2735}},
        {"5b3f3b0186f774021a2afef7", {"Armband (Green)", 3444}},
        {"5a6086ea4f39f99cd479502f", {"7.62x51mm M61", 3007}},
        {"5b099b7d5acfc400186331e4", {"SA-58 7.62x51 3 prong trident flash hider", 3065}},
        {"56d5a661d2720bd8418b456b", {"P226 front sight", 4279}},
        {"57616a9e2459773c7a400234", {"SOK-12 12/76 sb.5 5-round magazine", 3175}},
        {"5ba36f85d4351e0085325c81", {"NSPU-M scope eyecup", 2494}},
        {"5b7d6c105acfc40015109a5f", {"SA-58/FAL standard dust cover", 3553}},
        {"55d44fd14bdc2d962f8b456e", {"AR-15 charging handle", 2655}},
        {"60337f5dce399e10262255d1", {"STM-9 9x19 muzzle brake", 2849}},
        {"544fb3364bdc2d34748b456a", {"Immobilizing splint", 2577}},
        {"5e023d48186a883be655e551", {"7.62x54R BS", 2284}},
        {"57d14e1724597714010c3f4b", {"PP-91 9x18PM 20-round magazine", 2907}},
        {"5aa2b8d7e5b5b00014028f4a", {"Police cap", 4753}},
        {"5a0abb6e1526d8000a025282", {"AK 7.62x39 Taktika Tula muzzle adapter", 2631}},
        {"606eef46232e5a31c233d500", {"MP-155 Ultima pistol grip", 2608}},
        {"5adf23995acfc400185c2aeb", {"MC 20-01 stock", 6739}},
        {"5b7d678a5acfc4001a5c4022", {"SA-58 pistol grip", 2744}},
        {"5cdaa99dd7f00c002412d0b2", {"ASh-12 polymer handguard", 4455}},
        {"576a5ed62459771e9c2096cb", {"MP-443 9x19 18-round magazine", 2455}},
        {"5fb655a72b1b027b1f50bd06", {"KRISS Vector Pistol Sling adapter", 2783}},
        {"5998529a86f774647f44f421", {"Saiga-9 9x19 10-round magazine", 1863}},
        {"571a29dc2459771fb2755a6a", {"TT 7.62x25 tt-105 8-round magazine", 6758}},
        {"55d480c04bdc2d1d4e8b456a", {"AK-74 5.45x39 6L23 30-round magazine", 2609}},
        {"5c0006470db834001a6697fe", {"P226 Emperor Scorpion pistol grip", 2450}},
        {"5a788089c5856700142fdd9c", {"M870 SpeedFeed short handguard", 2411}},
        {"5c05295e0db834001a66acbb", {"Trijicon ACOG backup rear sight", 2400}},
        {"58272b842459774abc128d50", {"SOK-12 CSS rear sight rail mount", 2400}},
        {"576a63cd2459771e796e0e11", {"MP-443 polymer pistol grip", 2730}},
        {"59e898ee86f77427614bd225", {"VPO-209 wooden handguard", 5123}},
        {"5a718b548dc32e000d46d262", {"Glock 9x19 17-round magazine", 2155}},
        {"5751a25924597722c463c472", {"Army bandage", 2289}},
        {"60361b0b5a45383c122086a1", {"Army cap (Desert)", 4197}},
        {"57616c112459773cce774d66", {"SOK-12 dust cover (Sb.0-2)", 6245}},
        {"5c0673fb0db8340023300271", {"PP-19-01 Vityaz-SN 9x19 PUFGUN SG-919 20 20-round magazine", 2388}},
        {"56e05a6ed2720bd0748b4567", {"PB bakilte side grips", 3058}},
        {"59e770f986f7742cbe3164ef", {"Army cap", 2280}},
        {"601aa3d2b2bcb34913271e6d", {"7.62x39mm MAI AP", 2279}},
        {"56d5a77ed2720b90418b4568", {"P226 rear sight", 2407}},
        {"5c1127d0d174af29be75cf68", {"12/70 RIP 5 shell ammo box", 4541}},
        {"5dff77c759400025ea5150cf", {"UTG 25mm ring mount", 3165}},
        {"55d4837c4bdc2d1d4e8b456c", {"AK-74/Saiga 5.45x39 10-round magazine", 1965}},
        {"5df35eb2b11454561e3923e2", {"Orsis T-5000M medium length rail", 3086}},
        {"5ba26835d4351e0035628ff5", {"4.6x30mm AP SX", 2206}},
        {"5a38ed75c4a28232996e40c6", {"TOZ-106 20ga MC 20-01 Sb.3 4-shot magazine", 2806}},
        {"601949593ae8f707c4608daa", {"5.56x45mm SSA AP", 2189}},
        {"5bfd4cc90db834001d23e846", {"Mosin 7.62x54R sawn-off 200mm barrel", 2100}},
        {"59e6227d86f77440d64f5dc2", {"VPO-136 Vepr KM wooden stock", 2566}},
        {"59e6449086f7746c9f75e822", {"AKM Molot dust cover", 5318}},
        {"54527ac44bdc2d36668b4567", {"5.56x45mm M855A1", 2040}},
        {"5a17fb03fcdbcbcae668728f", {"APS 9x18PM 20-round magazine", 3227}},
        {"5b7bed205acfc400161d08cc", {"SA-58/FAL original Austrian handguard", 2539}},
        {"5a71e0fb8dc32e00094b97f2", {"Glock ZEV Tech rear sight", 2000}},
        {"5bf3f59f0db834001a6fa060", {"RPK-16 rear sight", 14370}},
        {"5b40e5e25acfc4001a599bea", {"BEAR baseball cap (Black)", 4092}},
        {"5efb0da7a29a85116f6ea05f", {"9x19mm PBP gzh", 1814}},
        {"5fc382b6d6fa9c00c571bbc3", {".338 Lapua Magnum TAC-X", 1830}},
        {"557ff21e4bdc2d89578b4586", {"Tactical glasses", 2551}},
        {"5aa2b986e5b5b00014028f4c", {"Dundukk sport sunglasses", 2257}},
        {"5b3f7c005acfc4704b4a1de8", {"PU 3.5x ring mount", 1877}},
        {"5efb0cabfb3e451d70735af5", {".45 ACP AP", 1755}},
        {"5cc80f38e4a949001152b560", {"5.7x28mm SS190", 2002}},
        {"5a6b5f868dc32e000a311389", {"Glock 17 9x19 barrel", 3031}},
        {"5649ad3f4bdc2df8348b4585", {"AK bakelite pistol grip (6P4 Sb.8V)", 4675}},
        {"59e690b686f7746c9f75e848", {"5.56x45mm M995", 1953}},
        {"544fb25a4bdc2dfb738b4567", {"Aseptic bandage", 1879}},
        {"5ba2678ad4351e44f824b344", {"4.6x30mm FMJ SX", 1611}},
        {"5cadf6eeae921500134b2799", {"12.7x55 mm PS12B", 2055}},
        {"5e85a9a6eacf8c039e4e2ac1", {"23x75mm \"Shrapnel-10\" buckshot", 1718}},
        {"5fc382c1016cce60e8341b20", {".338 Lapua Magnum UPZ", 1048}},
        {"5b7bef1e5acfc43d82528402", {"SA-58/FAL 7.62x51 10-round magazine", 2166}},
        {"5fd20ff893a8961fc660a954", {".300 AAC Blackout AP", 1732}},
        {"5882163224597757561aa920", {"MP-153 12ga 7-shell magazine extension", 1663}},
        {"5cadc1c6ae9215000f2775a4", {"M9A3 9x19 threaded barrel", 1660}},
        {"5addba3e5acfc4001669f0ab", {"M1A SA National Match .062 Blade front sight", 1628}},
        {"5c11279ad174af029d64592b", {"5.56x45 Warmageddon 20 pcs. ammo pack", 2057}},
        {"5ede475339ee016e8c534742", {"40x46mm M576 (MP-APERS) grenade", 1595}},
        {"5cf79389d7f00c10941a0c4d", {"Mosin Custom thread adapter", 1500}},
        {"5c07b36c0db834002a1259e9", {"P226 Meprolight TRU-DOT Night front sight", 1500}},
        {"5e81c6a2ac2bb513793cdc7f", {"M1911A1 trigger", 1167}},
        {"5e831507ea0a7c419c2f9bd9", {"Esmarch tourniquet", 1398}},
        {"5a608bf24f39f98ffc77720e", {"7.62x51mm M62", 1532}},
        {"5b0bc22d5acfc47a8607f085", {"SA-58 Holland type rear sight", 1420}},
        {"5c07b3850db834002330045b", {"P226 Meprolight TRU-DOT Night rear sight", 1400}},
        {"5e023d34e8a400319a28ed44", {"7.62x54R BT gzh", 1483}},
        {"591c4e1186f77410354b316e", {"Axion Kobra sight shade", 2418}},
        {"59e0d99486f7744a32234762", {"7.62x39mm BP gzh", 1225}},
        {"5c0d688c86f77413ae3407b2", {"9x39mm BP gs", 1264}},
        {"5a71e0048dc32e000c52ecc8", {"Glock ZEV Tech front sight", 1300}},
        {"5efb0fc6aeb21837e749c801", {".45 ACP Hydra-Shok", 1027}},
        {"5cc80f53e4a949000e1ea4f8", {"5.7x28mm L191", 1305}},
        {"5f647f31b6238e5dd066e196", {"23x75mm Shrapnel-25 buckshot", 1329}},
        {"57c9a89124597704ee6faec1", {"P226 Combat pistol grip (Flat Dark Earth)", 1247}},
        {"5882163824597757561aa922", {"MP-153 12ga 6-shell magazine extension", 1221}},
        {"5ea2a8e200685063ec28c05a", {".45 ACP RIP", 1542}},
        {"56dff026d2720bb8668b4567", {"5.45x39mm BS gs", 1098}},
        {"5d6e68a8a4b9360b6c0d54e2", {"12/70 AP-20 Slug", 1232}},
        {"5cc80f67e4a949035e43bbba", {"5.7x28mm SB193", 1644}},
        {"5cf639aad7f00c065703d455", {"NPZ USP-1 scope eyecup", 1475}},
        {"5cffa483d7ad1a049e54ef1c", {"100 rounds belt", 1030}},
        {"5c0d5e4486f77478390952fe", {"5.45x39mm PPBS gs \"Igolnik\"", 990}},
        {"5c0d668f86f7747ccb7f13b2", {"9x39mm SPP gs", 1030}},
        {"57372d1b2459776862260581", {"5.45x39 PP gs 120 pcs. ammo pack", 1000}},
        {"57372ac324597767001bc261", {"5.45x39 BP gs 30 pcs. ammo pack", 1000}},
        {"57372f5c24597769917c0131", {"5.45x39 T gs 30 pcs. ammo pack", 1000}},
        {"573724b42459776125652ac2", {"9x18PM P gzh 16 pcs. ammo pack", 1000}},
        {"5737273924597765dd374461", {"9x18PM PSO gzh 16 pcs. ammo pack", 1000}},
        {"5737266524597761006c6a8c", {"9x18mm PM PRS gs ammo box, 16 cartridges", 1000}},
        {"5737280e24597765cc785b5c", {"9x18PM PSV 16 pcs. ammo pack", 1000}},
        {"5737287724597765e1625ae2", {"9x18PM RG028 gzh 16 pcs. ammo pack", 1000}},
        {"57372e73245977685d4159b4", {"5.45x39 PS gs 120 pcs. ammo pack", 1000}},
        {"5737260b24597761224311f2", {"9x18mm PM PPT gzh ammo box, 16 cartridges", 1000}},
        {"5737300424597769942d5a01", {"5.45x39 US gs 120 pcs. ammo pack", 1000}},
        {"5737330a2459776af32363a1", {"5.45x39 FMJ 30 pcs. ammo pack", 1000}},
        {"5737339e2459776af261abeb", {"5.45x39 HP 30 pcs. ammo pack", 1000}},
        {"57372ee1245977685d4159b5", {"5.45x39 T gs 120 pcs. ammo pack", 1000}},
        {"573733c72459776b0b7b51b0", {"5.45x39 SP 30 pcs. ammo pack", 1000}},
        {"57372b832459776701014e41", {"5.45x39 BP gs 120 pcs. ammo pack", 1000}},
        {"57372bad245977670b7cd242", {"5.45x39 BS gs 120 pcs. ammo pack", 1000}},
        {"57372f2824597769a270a191", {"5.45x39 T gs 120 pcs. ammo pack", 1000}},
        {"573726d824597765d96be361", {"9x18PM PS gs PPO 16 pcs. ammo pack", 1000}},
        {"57372d4c245977685a3da2a1", {"5.45x39 PP gs 120 pcs. ammo pack", 1000}},
        {"57372e94245977685648d3e1", {"5.45x39 PS gs 120 pcs. ammo pack", 1000}},
        {"57372fc52459776998772ca1", {"5.45x39 US gs 120 pcs. ammo pack", 1000}},
        {"5c925fa22e221601da359b7b", {"9x19mm AP 6.3", 1015}},
        {"5a26ac0ec4a28200741e1e18", {"9x21mm BT gzh", 787}},
        {"5e85aa1a988a8701445df1f5", {"23x75mm \"Barrikada\" slug", 1551}},
        {"5d70e500a4b9364de70d38ce", {"30x29 mm VOG-30", 980}},
        {"60228a850ddce744014caf69", {"PL-15 extended front sight", 950}},
        {"602293f023506e50807090cb", {"PL-15 extended rear sight", 950}},
        {"59e6284f86f77440d569536f", {"VPO-136 Vepr KM wooden handguard", 2405}},
        {"5882163e24597758206fee8c", {"MP-153 12ga 5-shell magazine extension", 902}},
        {"60229948cacb6b0506369e27", {"PL-15 rear sight", 900}},
        {"59e5d83b86f7745aed03d262", {"AK 7.62x39 ribbed metal 10-round magazine", 787}},
        {"5d6e68c4a4b9361b93413f79", {"12/70 shell with .50 BMG bullet", 1919}},
        {"59e6318286f77444dd62c4cc", {"AK bakelite pistol grip", 4890}},
        {"5ba26844d4351e00334c9475", {"4.6x30mm Subsonic SX", 1336}},
        {"59e77a2386f7742ee578960a", {"7.62x54R PS", 865}},
        {"560d61e84bdc2da74d8b4571", {"7.62x54R SNB", 829}},
        {"59e6906286f7746c9f75e847", {"5.56x45mm M856A1", 940}},
        {"60228a76d62c9b14ed777a66", {"PL-15 front sight", 800}},
        {"59d650cf86f7741b846413a4", {"AKM rear sight (6P1 Sb.2-1)", 3081}},
        {"5c0d56a986f774449d5de529", {"9x19mm RIP", 747}},
        {"57a0e5022459774d1673f889", {"9x39 mm SP6 gs", 793}},
        {"5cc80f8fe4a949033b0224a2", {"5.7x28mm SS197SR", 843}},
        {"5fbcc640016cce60e8341acc", {"MCX charging handle", 733}},
        {"5d6e68dea4b9361bcc29e659", {"12/70 Dual Sabot Slug", 325}},
        {"58dd3ad986f77403051cba8f", {"7.62x51mm M80", 652}},
        {"5efb0e16aeb21837e749c7ff", {"9x19mm QuakeMaker", 557}},
        {"5a6f5d528dc32e00094b97d9", {"Glock rear sight", 604}},
        {"5e81ee4dcb2b95385c177582", {"M1911A1 rear sight", 604}},
        {"59f32c3b86f77472a31742f0", {"Dogtag USEC", 600}},
        {"59f32bb586f774757e1e8442", {"Dogtag BEAR", 600}},
        {"59e8a00d86f7742ad93b569c", {"VPO-209 thread protector", 600}},
        {"5d270ca28abbc31ee25ee821", {"Remington M700 thread protection cap (Stainless steel)", 600}},
        {"5aba637ad8ce87001773e17f", {"APS rear sight", 600}},
        {"5cc80f79e4a949033c7343b2", {"5.7x28mm SS198LF", 653}},
        {"5cadf6ddae9215051e1c23b2", {"12.7x55 mm PS12", 655}},
        {"56dff061d2720bb5668b4567", {"5.45x39mm BT gs", 597}},
        {"5f0596629e22f464da6bbdd9", {".366 TKM AP-M", 527}},
        {"5e023e88277cce2b522ff2b1", {"7.62x51mm Ultra Nosler", 462}},
        {"5b3f3b0e86f7746752107cda", {"Armband (Yellow)", 621}},
        {"5a43957686f7742a2c2f11b0", {"Santa's hat", 500}},
        {"5a43943586f77416ad2f06e2", {"Ded Moroz hat", 500}},
        {"5cadc390ae921500126a77f1", {"M9A3 thread protection cap", 4077}},
        {"5d270b3c8abbc3105335cfb8", {"Remington M700 thread protection cap", 500}},
        {"59e8977386f77415a553c453", {"VPO-209 rear sight", 688}},
        {"573719df2459775a626ccbc2", {"9x18mm PM PBM gzh", 448}},
        {"5a269f97c4a282000b151807", {"9x21mm PS gzh", 528}},
        {"5e81f423763d9f754677bf2e", {".45 ACP Match FMJ", 444}},
        {"5a0eb980fcdbcb001a3b00a6", {"AKMB system rear sight", 471}},
        {"5a0ed824fcdbcb0176308b0d", {"AKMP system rear sight device", 470}},
        {"59e4d3d286f774176a36250a", {"7.62x39mm HP", 408}},
        {"5cc86840d7f00c002412c56c", {"5.7x28mm R37.X", 425}},
        {"5efb0d4f4bc50b58e81710f3", {".45 ACP Lasermatch FMJ", 521}},
        {"5736026a245977644601dc61", {"7.62x25mm TT P gl", 405}},
        {"587de5ba2459771c0f1e8a58", {"P226 thread protection cap", 400}},
        {"5a38ebd9c4a282000d722a5b", {"20/70 7.5mm Buckshot", 187}},
        {"5a3c16fe86f77452b62de32a", {"9x19mm Luger CCI", 442}},
        {"57371aab2459775a77142f22", {"9x18mm PMM PstM gzh", 362}},
        {"573725b0245977612125bae2", {"9x18mm PM Ppe gzh ammo box, 16 cartridges", 13234}},
        {"5cc86832d7f00c000d3a6e6c", {"5.7x28mm R37.F", 407}},
        {"573718ba2459775a75491131", {"9x18mm PM BZhT gzh", 391}},
        {"5d6e6a5fa4b93614ec501745", {"20/70 Devastator Slug", 368}},
        {"5d6e67fba4b9361bc73bc779", {"12/70 6.5mm Express buckshot", 471}},
        {"60194943740c5d77f6705eea", {"5.56x45mm MK 318 Mod 0 (SOST)", 366}},
        {"5a26ac06c4a282000c5a90a8", {"9x21mm PE gzh", 298}},
        {"57372140245977611f70ee91", {"9x18mm PM SP7 gzh", 400}},
        {"56dfef82d2720bbd668b4567", {"5.45x39mm BP gs", 343}},
        {"54527a984bdc2d4e668b4567", {"5.56x45mm M855", 321}},
        {"5d6e6911a4b9361bd5780d52", {"12/70 Flechette", 418}},
        {"5d6e68e6a4b9361c140bcfe0", {"12/70 FTX Custom Lite Slug", 262}},
        {"5d6e6806a4b936088465b17e", {"12/70 8.5mm \"Magnum\" Buckshot", 368}},
        {"5d6e6a42a4b9364f07165f52", {"20/70 \"Poleva-6u\" slug", 220}},
        {"5e81c539cb2b95385c177553", {"M1911A1 slide stop", 300}},
        {"5e023cf8186a883be655e54f", {"7.62x54R T-46M", 320}},
        {"5887431f2459777e1612938f", {"7.62x54R LPS gzh", 287}},
        {"5cadf6e5ae921500113bb973", {"12.7x55 mm PS12A", 322}},
        {"59e4d24686f7741776641ac7", {"7.62x39mm US gzh", 457}},
        {"5c0d591486f7744c505b416f", {"12/70 RIP", 408}},
        {"57a0dfb82459774d3078b56c", {"9x39 mm SP5 gs", 250}},
        {"59e6658b86f77411d949b250", {".366 TKM Geksa", 197}},
        {"5fbe3ffdf8b6a877a729ea82", {".300 AAC Blackout BCP FMJ", 261}},
        {"5d6e68d1a4b93622fe60e845", {"12/70 SuperFormance HP Slug", 207}},
        {"5a26abfac4a28232980eabff", {"9x21mm P gzh", 224}},
        {"56d59d3ad2720bdb418b4577", {"9x19mm Pst gzh", 323}},
        {"573720e02459776143012541", {"9x18mm PM RG028 gzh", 242}},
        {"59e68f6f86f7746c9f75e846", {"5.56x45mm M856", 222}},
        {"5d6e6891a4b9361bd473feea", {"12/70 \"Poleva-3\" Slug", 135}},
        {"5c0d5ae286f7741e46554302", {"5.56x45mm Warmageddon", 213}},
        {"5737218f245977612125ba51", {"9x18mm PM SP8 gzh", 234}},
        {"5737207f24597760ff7b25f2", {"9x18mm PM PSV", 200}},
        {"5d6e689ca4b9361bc8618956", {"12/70 \"Poleva-6u\" Slug", 272}},
        {"5d6e68b3a4b9361bca7e50b5", {"12/70 Copper Sabot Premier HP Slug", 192}},
        {"57371b192459775a9f58a5e0", {"9x18mm PM PPe gzh", 3798}},
        {"573601b42459776410737435", {"7.62x25mm TT LRN", 160}},
        {"5d6e6a53a4b9361bd473feec", {"20/70 \"Poleva-3\" slug", 160}},
        {"5e023e53d4353e3302577c4c", {"7.62x51mm BCP FMJ", 126}},
        {"57371f8d24597761006c6a81", {"9x18mm PM PSO gzh", 102}},
        {"5d6e6a05a4b93618084f58d0", {"20/70 Star Slug", 201}},
        {"569668774bdc2da2298b4568", {"Euros", 142}},
        {"56dff2ced2720bb4668b4567", {"5.45x39mm PP gs", 152}},
        {"5e023e6e34d52a55c3304f71", {"7.62x51mm TCW SP", 125}},
        {"5696686a4bdc2da3298b456a", {"Dollars", 123}},
        {"5c3df7d588a4501f290594e5", {"9x19mm T gzh", 120}},
        {"59e6918f86f7746c9f75e849", {"5.56x45mm MK 255 Mod 0 (RRLP)", 118}},
        {"5ba26812d4351e003201fef1", {"4.6x30mm Action SX", 148}},
        {"59e655cb86f77411dc52a77b", {".366 TKM Eko", 141}},
        {"56dff3afd2720bba668b4567", {"5.45x39mm PS gs", 97}},
        {"5d6e6869a4b9361c140bcfde", {"12/70 Grizzly 40 Slug", 93}},
        {"5656d7c34bdc2d9d198b4587", {"7.62x39mm PS gzh", 92}},
        {"59e6920f86f77411d82aa167", {"5.56x45mm FMJ", 106}},
        {"56dff216d2720bbd668b4568", {"5.45x39mm HP", 102}},
        {"5735ff5c245977640e39ba7e", {"7.62x25mm TT FMJ43", 72}},
        {"59e4cf5286f7741778269d8a", {"7.62x39mm T-45M1 gzh", 94}},
        {"56dff4ecd2720b5f5a8b4568", {"5.45x39mm US gs", 69}},
        {"573603562459776430731618", {"7.62x25mm TT Pst gzh", 70}},
        {"59e6927d86f77411da468256", {"5.56x45mm HP", 86}},
        {"573602322459776445391df1", {"7.62x25mm TT LRNPC", 68}},
        {"56dff421d2720b5f5a8b4567", {"5.45x39mm SP", 76}},
        {"573603c924597764442bd9cb", {"7.62x25mm TT PT gzh", 63}},
        {"58864a4f2459770fcc257101", {"9x19mm PSO gzh", 797}},
        {"58820d1224597753c90aeb13", {"12/70 Lead slug", 59}},
        {"5735fdcd2459776445391d61", {"7.62x25mm TT AKBS", 49}},
        {"5737201124597760fc4431f1", {"9x18mm PM Pst gzh", 176}},
        {"59e6542b86f77411dc52a77a", {".366 TKM FMJ", 44}},
        {"5d6e695fa4b936359b35d852", {"20/70 5.6mm Buckshot", 100}},
        {"560d5e524bdc2d25448b4571", {"12/70 7mm buckshot", 43}},
        {"57371eb62459776125652ac1", {"9x18mm PM PRS gs", 39}},
        {"5d6e69c7a4b9360b6c0d54e4", {"20/70 7.3mm Buckshot", 62}},
        {"5d6e6772a4b936088465b17c", {"12/70 5.25mm Buckshot", 35}},
        {"56dff0bed2720bb0668b4567", {"5.45x39mm FMJ", 41}},
        {"57371f2b24597761224311f1", {"9x18mm PM PS gs PPO", 38}},
        {"56dff4a2d2720bbd668b456a", {"5.45x39mm T gs", 31}},
        {"56dff338d2720bbd668b4569", {"5.45x39mm PRS gs", 35}},
        {"5d6e69b9a4b9361bc8618958", {"20/70 6.2mm Buckshot", 107}},
        {"573719762459775a626ccbc1", {"9x18mm PM P gzh", 49}},
        {"5449016a4bdc2d6f028b456f", {"Roubles", 0}},


wats the hash to the left?

ecthirune 31st December 2021 09:39 AM

Quote:

Originally Posted by C0le (Post 3333210)
wats the hash to the left?

bsg id of item, they create it unique for each item/container/even quest stuff

C0le 31st December 2021 09:41 AM

Quote:

Originally Posted by ecthirune (Post 3333211)
bsg id of item, they create it unique for each item/container/even quest stuff

is that id readable anywhere?

ecthirune 31st December 2021 09:58 AM

Quote:

Originally Posted by C0le (Post 3333212)
is that id readable anywhere?

yes, it is. This info revealed a lot of times, few pages ago sm1 posted full dump, search in it, and you will find out how to access it.

C0le 31st December 2021 10:12 AM

Quote:

Originally Posted by ecthirune (Post 3333221)
yes, it is. This info revealed a lot of times, few pages ago sm1 posted full dump, search in it, and you will find out how to access it.

are you refering to this?

-> mono dump (CE style):
https://ghostbin.com/iVEnQ

was taken down. do you happen to have it?

ecthirune 31st December 2021 10:39 AM

Quote:

Originally Posted by C0le (Post 3333226)
are you refering to this?

-> mono dump (CE style):
https://ghostbin.com/iVEnQ

was taken down. do you happen to have it?


Escape from Tarkov Reversal, Structs and Offsets

just few pages back. No, rly, how you can create cheats if you can't just click pages...

C0le 31st December 2021 10:51 AM

Quote:

Originally Posted by ecthirune (Post 3333238)
Escape from Tarkov Reversal, Structs and Offsets

just few pages back. No, rly, how you can create cheats if you can't just click pages...


You said "full dump"
I was assuming you where referring to the link, as the other post, which i had already seen, was simply just a sanitized dump, for a few things

vZnu 31st December 2021 10:52 AM

Hey, i would acquire some knowledge, what is the name of the grenade class? i got the list but not the class sadly.

ecthirune 31st December 2021 10:55 AM

Quote:

Originally Posted by C0le (Post 3333243)
You said "full dump"
I was assuming you where referring to the link, as the other post, which i had already seen, was simply just a sanitized dump, for a few things

okay, mybad then.
"Full offsets dump", will concrete in future.

IntPtr 31st December 2021 11:20 AM

Any idea how to fix the internal WorldToScreen with Optics ?

vZnu 31st December 2021 11:23 AM

Quote:

Originally Posted by IntPtr (Post 3333262)
Any idea how to fix the internal WorldToScreen with Optics ?

get the optic camera and read the view matrix

LmfaoGameIsRat 31st December 2021 12:15 PM

What health controller is even used online? "ActiveHealthController" and "PlayerHealthController" both seem to give bad data when reading the ValueStructs off each bodypart.

Also for what it's worth I don't think doing world to screen from the "OpticCameraManager" works. I've tried calling "WorldToScreenPoint" from the camera inside it and it just gives very broken screen coords back. Is there a way to do this with the actual Unity functions? Writing own w2s is not very ideal IMO.

24jared24 31st December 2021 04:16 PM

Does anyone know why fireport position seems to constantly jump back and forth between 2 points? Doesn't matter if all swaying is disabled or not. Makes anything where you're using fireport's w2s for drawing awful


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

C0le 31st December 2021 04:29 PM

Quote:

Originally Posted by ecthirune (Post 3333221)
yes, it is. This info revealed a lot of times, few pages ago sm1 posted full dump, search in it, and you will find out how to access it.

i assume you are talking about one of these ids under lootitem

constexpr auto StaticId = 0x68;//(类型 : System.String)
constexpr auto ItemId = 0x70;//(类型 : System.String)
constexpr auto TemplateId = 0x78;//(类型: System.String)

all of these are not valid for me although i dont have any problem reading the item name:

constexpr auto Name = 0x60;//(类型 : System.String)

vZnu 31st December 2021 04:49 PM

Quote:

Originally Posted by 24jared24 (Post 3333430)
Does anyone know why fireport position seems to constantly jump back and forth between 2 points? Doesn't matter if all swaying is disabled or not. Makes anything where you're using fireport's w2s for drawing awful

i'll give you the fireport position code if you send me the viewmatrix or optics

failnoobgamer 31st December 2021 05:01 PM

Quote:

Originally Posted by 24jared24 (Post 3333430)
Does anyone know why fireport position seems to constantly jump back and forth between 2 points? Doesn't matter if all swaying is disabled or not. Makes anything where you're using fireport's w2s for drawing awful

Is you fov above 50? Happens to me when its not 50

ecthirune 31st December 2021 05:02 PM

nvm. // 2short

C0le 31st December 2021 05:06 PM

Quote:

Originally Posted by ecthirune (Post 3333455)
nvm. // 2short

I saw your post before you edit, is that not the ID?

24jared24 31st December 2021 05:51 PM

Quote:

Originally Posted by vZnu (Post 3333449)
i'll give you the fireport position code if you send me the viewmatrix or optics

I know how to get fireport position lmao. That's not the issue. Also I and other have posted how to get/use optical view matrix like 5 times in the last few pages.

Quote:

Originally Posted by failnoobgamer (Post 3333452)
Is you fov above 50? Happens to me when its not 50

It still happens at 50 fov, just way less distance between the two points so it's less obvious. Still way too obvious for me tho.

Also it's way more dramatic when using a sniper or walking, so it must be something to do with weapon sway or whatever. I've tried aimSwayMax and aimSwayMin in ProceduralWeaponAnimation but they didn't seem to affect it.

Quote:

Originally Posted by C0le (Post 3333439)
i assume you are talking about one of these ids under lootitem

constexpr auto StaticId = 0x68;//(类型 : System.String)
constexpr auto ItemId = 0x70;//(类型 : System.String)
constexpr auto TemplateId = 0x78;//(类型: System.String)

all of these are not valid for me although i dont have any problem reading the item name:

constexpr auto Name = 0x60;//(类型 : System.String)

Item guid (the value you're looking for) can be found at
Code:

item + 0x10] + 0x28] + 0x50] + 0x40] + 0x50
That's a pointer to what I've seen named "Engine String" in this thread. engineString + 0x10 = string length, you start reading the actual string at engineString + 0x14 and read the length * 2

vZnu 31st December 2021 06:21 PM

Quote:

Originally Posted by 24jared24 (Post 3333482)
I know how to get fireport position lmao. That's not the issue. Also I and other have posted how to get/use optical view matrix like 5 times in the last few pages.



It still happens at 50 fov, just way less distance between the two points so it's less obvious. Still way too obvious for me tho.

Also it's way more dramatic when using a sniper or walking, so it must be something to do with weapon sway or whatever. I've tried aimSwayMax and aimSwayMin in ProceduralWeaponAnimation but they didn't seem to affect it.



Item guid (the value you're looking for) can be found at
Code:

item + 0x10] + 0x28] + 0x50] + 0x40] + 0x50
That's a pointer to what I've seen named "Engine String" in this thread. engineString + 0x10 = string length, you start reading the actual string at engineString + 0x14 and read the length * 2

The view matrix that you sent dont work, it doesnt find the OpticBaseCamera

LoneSurvivor88 31st December 2021 06:26 PM

Any idea why my bones read fails mid-raid? Seems to work fine if I startup before the raid starts, but if I close down to adjust any code and re-launch, I get exceptions on 2-3 players total (almost always including my OWN character), but the rest update fine.

Code:

_bonesPtr = _mem.AddressOf(_playerBase, new uint[] { 0xA8, 0x28, 0x28, 0x10, 0x20 }); // returns ulong
Stack trace indicates it fails mid-way through the chain, reads 0 bytes at one of the offsets and causes it to throw. Verified playerBase is still valid because other addresses that rely on it are reading OK.

Some further testing shows the start of raid is 100% fine, then after additional players enter the raid (scavs, late spawners) i get exceptions on the line listed up above, which causes the object constructor to throw/fail.

My game loop loops through Registered Players , checks PlayerID String, checks if they exist and then allocates a new Player() if they don't

Code:

var listBase = _mem.AddressOf(_rgtPlayers + 0x0010, 0);
            for (uint i = 0; i < playerCnt; i++) // Add new players
            {
                    var playerBase = _mem.AddressOf(listBase + 0x20 + (i * 0x8), 0);
                    var playerProfile = _mem.AddressOf(playerBase + 0x4B8, 0);
                    var playerId = _mem.AddressOf(playerProfile + 0x10, 0);
                    var playerIdString = _mem.ReadMemoryUnityString(playerId, 0);
                    if (!this.Players.ContainsKey(playerIdString)) // See if already exists
                    {
                        this.Players.TryAdd(playerIdString, new Player(_mem, playerBase, playerProfile));
                    }
            }


cxtgirl 31st December 2021 08:40 PM

Quote:

Originally Posted by C0le (Post 3333212)
is that id readable anywhere?

literally 4 posts above this i gave someone that exact code

https://www.unknowncheats.me/forum/3...-post5765.html

n7292 1st January 2022 01:54 AM

Quote:

Originally Posted by cxtgirl (Post 3321060)
Code:

inline glm::vec3 get_position( const uintptr_t transform )
{
        uintptr_t matrix_list_base = 0;
        uintptr_t dependency_index_table_base = 0;

        auto transform_internal = driver->read<uintptr_t>( transform + 0x10 );

        auto matrices = driver->read<uintptr_t>( transform_internal + 0x38 );
        auto index = driver->read<int>( transform_internal + 0x40 );

        driver->read_buffer( ( uintptr_t )( matrices + 0x18 ), &matrix_list_base, sizeof( matrix_list_base ) );

        driver->read_buffer( ( uintptr_t )( matrices + 0x20 ), &dependency_index_table_base, sizeof( dependency_index_table_base ) );

        static auto get_dependency_index = [ & ]( uintptr_t base, int32_t index )
        {
                driver->read_buffer( ( uintptr_t )( base + index * 4 ), &index, sizeof( index ) );
                return index;
        };

        static auto get_matrix_blob = [ & ]( uintptr_t base, uintptr_t offs, float* blob, uint32_t size )
        {
                driver->read_buffer( ( uintptr_t )( base + offs ), blob, size );
        };

        int32_t index_relation = get_dependency_index( dependency_index_table_base, index );

        glm::vec3 ret_value;
        {
                float* base_matrix3x4 = ( float* )malloc( 64 ),
                        * matrix3x4_buffer0 = ( float* )( ( uintptr_t )base_matrix3x4 + 16 ),
                        * matrix3x4_buffer1 = ( float* )( ( uintptr_t )base_matrix3x4 + 32 ),
                        * matrix3x4_buffer2 = ( float* )( ( uintptr_t )base_matrix3x4 + 48 );

                get_matrix_blob( matrix_list_base, index * 48, base_matrix3x4, 16 );

                __m128 xmmword_1410D1340 = { -2.f, 2.f, -2.f, 0.f };
                __m128 xmmword_1410D1350 = { 2.f, -2.f, -2.f, 0.f };
                __m128 xmmword_1410D1360 = { -2.f, -2.f, 2.f, 0.f };

                while ( index_relation >= 0 )
                {
                        uint32_t matrix_relation_index = 6 * index_relation;

                        get_matrix_blob( matrix_list_base, 8 * matrix_relation_index, matrix3x4_buffer2, 16 );
                        __m128 v_0 = *( __m128* )matrix3x4_buffer2;

                        get_matrix_blob( matrix_list_base, 8 * matrix_relation_index + 32, matrix3x4_buffer0, 16 );
                        __m128 v_1 = *( __m128* )matrix3x4_buffer0;

                        get_matrix_blob( matrix_list_base, 8 * matrix_relation_index + 16, matrix3x4_buffer1, 16 );
                        __m128i v9 = *( __m128i* )matrix3x4_buffer1;

                        __m128* v3 = ( __m128* )base_matrix3x4; // [email protected]
                        __m128 v10; // [email protected]
                        __m128 v11; // [email protected]
                        __m128 v12; // [email protected]
                        __m128 v13; // [email protected]
                        __m128 v14; // [email protected]
                        __m128 v15; // [email protected]
                        __m128 v16; // [email protected]
                        __m128 v17; // [email protected]

                        v10 = _mm_mul_ps( v_1, *v3 );
                        v11 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, 0 ) );
                        v12 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, 85 ) );
                        v13 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, -114 ) );
                        v14 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, -37 ) );
                        v15 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, -86 ) );
                        v16 = _mm_castsi128_ps( _mm_shuffle_epi32( v9, 113 ) );

                        v17 = _mm_add_ps(
                                _mm_add_ps(
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps( _mm_mul_ps( v11, ( __m128 )xmmword_1410D1350 ), v13 ),
                                                                _mm_mul_ps( _mm_mul_ps( v12, ( __m128 )xmmword_1410D1360 ), v14 ) ),
                                                        _mm_castsi128_ps( _mm_shuffle_epi32( _mm_castps_si128( v10 ), -86 ) ) ),
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps( _mm_mul_ps( v15, ( __m128 )xmmword_1410D1360 ), v14 ),
                                                                _mm_mul_ps( _mm_mul_ps( v11, ( __m128 )xmmword_1410D1340 ), v16 ) ),
                                                        _mm_castsi128_ps( _mm_shuffle_epi32( _mm_castps_si128( v10 ), 85 ) ) ) ),
                                        _mm_add_ps(
                                                _mm_mul_ps(
                                                        _mm_sub_ps(
                                                                _mm_mul_ps( _mm_mul_ps( v12, ( __m128 )xmmword_1410D1340 ), v16 ),
                                                                _mm_mul_ps( _mm_mul_ps( v15, ( __m128 )xmmword_1410D1350 ), v13 ) ),
                                                        _mm_castsi128_ps( _mm_shuffle_epi32( _mm_castps_si128( v10 ), 0 ) ) ),
                                                v10 ) ),
                                v_0 );

                        *v3 = v17;

                        index_relation = get_dependency_index( dependency_index_table_base, index_relation );
                }

                ret_value = *( glm::vec3* )base_matrix3x4;
                delete[ ] base_matrix3x4;
        }

        return ret_value;
}



fyi, this code makes zero sense. you are switching off between read_buffer and read for no reason...

this:
Code:

driver->read_buffer( ( uintptr_t )( base + index * 4 ), &index, sizeof( index ) );
can be:
Code:

auto index = driver->read<int>( ( uintptr_t )( base + index * 4 ) );
this is just one example... it is rampant in your function making it unreadable. sizeof() is resolved at compile-time, not runtime, the sizeof(index) will always be 4.

jesus christ eft sub-forum is such a mess, why do you guys use auto everywhere? it is actually retarded. just use proper types, auto makes for a mess of convoluted code.

bhehe6813 1st January 2022 02:46 AM

Quote:

Originally Posted by liquidace (Post 2778505)
but yeah never posted the chain because cant feed the pasters :D I don't think the chain has ever been posted as it requires inheritance. IIRC it's not an easy jump if you purely look at the mono dump and not reverse it properly.

It's not that hard, nor is it that unique of a feature, no shade intended, pasters rejoice.

Code:

struct InventoryLogicWeapon {

  [FieldOffset(0xA8)]
  Intptr pMagSlotCache;

  public Slot MagazineSlot => M.Read < Slot > (this.pMagSlotCache);

  public Magazine Magazine => M.Read < Magazine > (this.MagazineSlot.pContainedItem);

  public int AmmoCount => this.Magazine.Count;
}

[StructLayout(LayoutKind.Explicit)]
public struct Slot {
  [FieldOffset(0x38)]
  public IntPtr pContainedItem;
  [FieldOffset(0x40)]
  public IntPtr pParentItem;
  [FieldOffset(0x50)]
  public byte Required;

  public Classes.InventoryLogicItem ContainedItem => M.Read < Classes.InventoryLogicItem > (this.pContainedItem);

  public Classes.InventoryLogicItem ParentItem => M.Read < Classes.InventoryLogicItem > (this.pParentItem);
}

[StructLayout(LayoutKind.Explicit)]
public struct Magazine {
  [FieldOffset(0x88)]
  public IntPtr pCartridgesStackSlot;

  public StackSlot Catridges => M.Read < StackSlot > (this.pCartridgesStackSlot);

  public int Count => this.Catridges.Count;
}

[StructLayout(LayoutKind.Explicit)]
public struct StackSlot {
  [FieldOffset(0x10)]
  public IntPtr pList;

  public unsafe int Count {
    get {
      List list = M.Read < List > (this.pList);
      if (list.itemCount == 0) {
        return 0;
      }
      byte[] itemPtrData = M.Read(list.listBase + 0x20, Math.Min(20000, list.itemCount * 0x8));
      ref byte itemData = ref itemPtrData[0];
      int total = 0;
      for (int i = 0x0; i < itemPtrData.Length; i += 0x8) {
        var itemPtr = Unsafe.As < byte,
          IntPtr > (ref Unsafe.Add(ref itemData, i));
        if (!itemPtr.IsValid())
          continue;
        InventoryLogicItem item = M.Read < InventoryLogicItem > (itemPtr);
        total += item.StackObjectsCount;
      }
      return total;
    }
  }
}

[StructLayout(LayoutKind.Explicit)]
public struct InventoryLogicItem {
  [FieldOffset(0x40)]
  public IntPtr pItemTemplate;
  [FieldOffset(0x64)]
  public byte bSpawnedInSession;
  [FieldOffset(0x68)]
  public IntPtr pGrids;
  [FieldOffset(0x78)]
  public IntPtr pSlots;

  [FieldOffset(0x5C)]
  public int StackObjectsCount;

  public Classes.ItemTemplate ItemTemplate => M.Read < Classes.ItemTemplate > (this.pItemTemplate);

  public Classes.Grids Grids => M.Read < Classes.Grids > (this.pGrids);

  public Classes.Slots Slots => M.Read < Classes.Slots > (this.pSlots);
}

Specifically, pay attention to StackSlot.Count method. I've included the rest of the structs that are used, with some irrelevant removals. I retrieve the ammo count by doing InventoryLogicWeapon.AmmoCount (which is basically a getter in the struct). I would do a longer writeup on how this is all setup / how ammo loaded into a magazine works, but it's new years :).

Sometimes magslotCache is empty, just swap which slot the weapon is in / swap weapons. C# is easy to read, don't be like other guys and PM me all confused. FieldOffset is basically the offset which that field is at, basically the same as a pad in c++.

HelpMeOrUrCunt 1st January 2022 04:33 AM

how to find local_game_world ? and item list?
like: what tools are you using to get "netvars" like health hex or position hex ?

imkeez 1st January 2022 07:10 AM

How can I generate a game dump that is formatted the same as this? for offsets
Code:

class CGClass1097 : public CUnityBaseMonoBehaviour
{
public:
        char _0x0010[0x18];                                                        //0x0010
        CESkillId Id;                                                                //000028
        float Current;                                                                //0x002C
};
class CGameWorld : public CUnityMonoBehaviourScript
{
public:
        class CGClass687* gclass687_0;//0x000018[0x000008]
        CUnityString* string_0;//0x000020[0x000008]
        class CGClass916* GameDateTime;//0x000028[0x000008]
        class CConfig* SpeedLimits;//0x000030[0x000008]
        CUnityString* CurrentProfileId;//0x000038[0x000008]
        class CGClass446* gclass446_0;//0x000040[0x000008]
        class CAudioSourceCulling* AudioSourceCulling;//0x000048[0x000008]
        class CGInterface215* ginterface215_0;//0x000050[0x000008]
        class CBallisticsCalculator* _sharedBallisticsCalculator;//0x000058[0x000008]
        CUnityTList<class CGInterface7*>* LootList;//0x000060[0x000008]
        CUnityDictionary<class CIItemOwner*, class CGStruct77>* ItemOwners;//0x000068[0x000008]
        void* LootItems;//0x000070[0x000008]
        CUnityTList<class CGClass747*>* AllLoot;//0x000078[0x000008]
        CUnityTList<class CPlayer*>* RegisteredPlayers;//0x000080[0x000008]
};

class CItem : public CObject
{
public:
        CUnityString* Id;//0x000010[0x000008]
        void* OriginalAddress;//0x000018[0x000008]
        void* Components;//0x000020[0x000008]
        CUnityString* _toStringCache;//0x000028[0x000008]
        void* CurrentAddress;//0x000030[0x000008]
        void* _template;//0x000038[0x000008]
        void* Attributes;//0x000040[0x000008]
        void* ChildrenChanged;//0x000048[0x000008]
        bool UnlimitedCount;//0x000050[0x000001]
        unsigned char _0x00000051[0x3];//0x00000051 (0x3) MISSED OFFSET
        __int32 BuyRestrictionMax;//0x000054[0x000004]
        __int32 BuyRestrictionCurrent;//0x000058[0x000004]
        __int32 StackObjectsCount;//0x00005C[0x000004]
        __int32 Version;//0x000060[0x000004]
        bool SpawnedInSession;//0x000064[0x000001]
        unsigned char _0x00000065[0x3];//0x00000065 (0x3) MISSED OFFSET
};
class CGClass1765 : public CItem
{
public:
        void* SideEffect;//0x000068[0x000008]
        void* Repairable;//0x000070[0x000008]
        void* KnifeComponent;//0x000078[0x000008]
};


cxtgirl 1st January 2022 11:48 AM

anyone know of any other methods of getting the price of items since they stopped using credits price completely or should I just crumble and use an api

https://cdn.discordapp.com/attachmen...76/unknown.png

24jared24 1st January 2022 02:50 PM

Quote:

Originally Posted by cxtgirl (Post 3333937)
anyone know of any other methods of getting the price of items since they stopped using credits price completely or should I just crumble and use an api

https://cdn.discordapp.com/attachmen...76/unknown.png

I'd suggest just going with an api, you'll get way better prices with things like 24 hour avg, 7 day avg, price per slot etc. Can also do interesting stuff with the tarkov-market api giving images and stuff for each item.

vZnu 1st January 2022 03:20 PM

Quote:

Originally Posted by 24jared24 (Post 3334050)
I'd suggest just going with an api, you'll get way better prices with things like 24 hour avg, 7 day avg, price per slot etc. Can also do interesting stuff with the tarkov-market api giving images and stuff for each item.

but it will take so much time to request and get a response so the esp will lag

ecthirune 1st January 2022 03:23 PM

Quote:

Originally Posted by vZnu (Post 3334067)
but it will take so much time to request and get a response so the esp will lag

lolmao, you can cache data. You can download already finished json with text(name/description/shortname/id/whatever)/pricing/slots/blahblahblah.

vZnu 1st January 2022 03:33 PM

Quote:

Originally Posted by ecthirune (Post 3334071)
lolmao, you can cache data. You can download already finished json with text(name/description/shortname/id/whatever)/pricing/slots/blahblahblah.

i dont think they provide a full list of all items on the api :Flush:

24jared24 1st January 2022 03:42 PM

Quote:

Originally Posted by vZnu (Post 3334083)
i dont think they provide a full list of all items on the api :Flush:

You're somehow wrong again... Tarkov-Market literally has an end point to get all items

Olofx 1st January 2022 03:55 PM

Quote:

Originally Posted by 24jared24 (Post 3334092)
You're somehow wrong again... Tarkov-Market literally has an end point to get all items

You can also get them from the github of tarkovtools:
https://github.com/TarkovTracker/tarkovdata


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

ecthirune 1st January 2022 03:56 PM

Quote:

Originally Posted by vZnu (Post 3334083)
i dont think they provide a full list of all items on the api :Flush:

Check this then, if you still doubt for NO reason at all. This is dump from december 20.

vZnu 1st January 2022 04:04 PM

that dump is old, thats why im trying to find a way to get the newest item list info

ecthirune 1st January 2022 04:19 PM

Quote:

Originally Posted by vZnu (Post 3334107)
that dump is old, thats why im trying to find a way to get the newest item list info

you mind broken i guess. Or i don't know wtf wrong with you.

You said "i doubt they give all items". I prove - they give all items.

Now you saying "this is old", but i recently wrote "This is dump from december 20", because i don't wanna provide fresh data for pasters.

I can update all this info >5 times each minute, to get "FRESH" info if you wanna get actual pricing.

So wtf your problem?

overboostaltima 1st January 2022 04:22 PM

Item ESP
 
Hey @cxtgirl thank for your help... BTW + rep.

In case this helps some one, Here is how I am filtering the items.
I will work on making it faster, the performance isn't great, but it works.
Later I will do all the rpms in a separate thread...

If some one has a faster way of doing this, please share :D

Render Thread: (I shouldn't have all this in the render thread but it is what it is for now.)

Render()

Code:

if (itemesp == 1)
                {
                  // ImColor COLOR;
                    RGBA color2;
                   
                    uint64_t loot_array = driver::read<uint64_t>(local_game_world + 0x60); //Loot list    local game world + 60
                    uint32_t count = driver::read<uint32_t>(loot_array + 0x18);          //_size int 32                  +18
                    uint64_t get_item_list = driver::read<uint64_t>(loot_array + 0x10); //items                            +10

                    if (!loot_array || count <= 0 || count >= 6000 || !get_item_list)
                    {
                        return;
                    }
                   
                    for (int i = 0; i < count; i++)
                    {
                        uint64_t loot = driver::read<uint64_t>(get_item_list + 0x20 + (i * 0x8)); 
                       
                        std::string OutputStr = "";
                        std::string OutputStr2 = "";

                      // float Distance = 0.f;
                        //float Distance = 0.f;
                        int f1 = 0;
                       
                       
                        uint64_t itemObject = driver::read<uintptr_t>(loot + 0x10);
                        uint64_t itemProfile = driver::read<uintptr_t>(itemObject + 0x28);
                      // ------------------------------------------------------------------
                        uint64_t itemtemp11 = driver::read<uintptr_t>(itemObject + 0x30);
                        uint64_t transform_1 = driver::read<uintptr_t>(itemtemp11 + 0x30);
                        uint64_t TransformTwo = driver::read<uintptr_t>(transform_1 + 0x08);
                      // ------------------------------------------------------------------
                        uint64_t m_pItemPosition = driver::read<uint64_t>(TransformTwo + 0x38);                       
                        Vector3 itemCoord = driver::read<Vector3>(m_pItemPosition + 0x90);                                                                   
                           
                      //  long long Distance = getDistance(local_player.Root_pos, itemCoord);
                      // std::string xetaldistance;
                      // xetaldistance = std::to_string(Distance);
                      int Distance = fast_sqrt(pow(itemCoord.x - local_player.head_pos.x, 2) + pow(itemCoord.y - local_player.head_pos.y, 2) + pow(itemCoord.z - local_player.head_pos.z, 2));

                            Vector3 item_screenx;                           
                            world_to_screen(itemCoord, item_screenx);
                            if (!world_to_screen(itemCoord, item_screenx))
                            {
                                continue;
                            }
                           
                            //CatG
                            auto interactive = driver::read<uintptr_t>(itemObject + 0x28);
                            auto item_template_temp1 = driver::read<uintptr_t>(interactive + 0x50);
                            auto item_template = driver::read<uintptr_t>(item_template_temp1 + 0x40);

                            auto id_obj = driver::read<uintptr_t>(item_template + 0x50);
                                                       
                            std::string itemName = GetWString(id_obj);
                           
                            //itemName = itemName.substr(0, itemName.size() - 1);

                          // OutputStr += itemName;     
                            //testing xetal speed
                           
                            if (ItemFilterLevel == 0)
                            {
                                int j = 0;
                                while (j < ItemFilterNamespace::n1)
                                {
                                    if (ItemFilterNamespace::Array1[j] == itemName)
                                    {
                                        f1 = 1;
                                        color2 = redcolor;
                                        OutputStr += " " + ItemFilterNamespace::Array2[j];

                                        break;
                                    }
                                    j++;
                                }                               
                            }

                            if (ItemFilterLevel == 1)
                            {
                                int k = 0;
                                while (k < ItemFilterNamespace::n2)
                                {
                                    if (ItemFilterNamespace::Exensive1[k] == itemName)
                                    {
                                        f1 = 2;
                                        color2 = pinkcolor;
                                        OutputStr += " " + ItemFilterNamespace::Expensive2[k];

                                        break;
                                    }
                                    k++;
                                }
                            }

                            if (ItemFilterLevel == 2)
                            {
                                int l = 0;
                                while (l < ItemFilterNamespace::n3)
                                {
                                    if (ItemFilterNamespace::Food1[l] == itemName)
                                    {
                                        f1 = 3;
                                        color2 = yellowcolor;
                                        OutputStr += " " + ItemFilterNamespace::Food2[l];

                                        break;
                                    }
                                    l++;
                                }
                            }

                            if (ItemFilterLevel == 3)
                            {
                               
                                    int j = 0;
                                    while (j < ItemFilterNamespace::n1)
                                    {
                                        if (ItemFilterNamespace::Array1[j] == itemName)
                                        {
                                            f1 = 4;
                                            color2 = redcolor;
                                            OutputStr += " " + ItemFilterNamespace::Array2[j];

                                            break;
                                        }
                                        j++;
                                    }                             
                             

                             
                                    int k = 0;
                                    while (k < ItemFilterNamespace::n2)
                                    {
                                        if (ItemFilterNamespace::Exensive1[k] == itemName)
                                        {
                                            f1 = 4;
                                            color2 = pinkcolor;
                                            OutputStr += " " + ItemFilterNamespace::Expensive2[k];

                                            break;
                                        }
                                        k++;
                                    }
                               

                                    int l = 0;
                                    while (l < ItemFilterNamespace::n3)
                                    {
                                        if (ItemFilterNamespace::Food1[l] == itemName)
                                        {
                                            f1 = 4;
                                            color2 = yellowcolor;
                                            OutputStr += " " + ItemFilterNamespace::Food2[l];

                                            break;
                                        }
                                        l++;
                                    }                                 
                            }
                          // OutputStr += " " + xetaldistance;

                            if (f1 == 0)
                            {
                                continue;
                            }

                                OutputStr += " " + std::to_string(Distance);

                             
                                if (Distance > KM_itemesp)
                                {
                                    continue;
                                }

                                // OutputStr += " (" + std::to_string(Distance) + "m)";
                             
                                DrawFilledRect(item_screenx.x, item_screenx.y, TextWidthitem + 10.f, TextDimensionitem.y + 5.f, &BK_color); //xetal
                                DrawNewText(item_screenx.x, item_screenx.y, &color2, OutputStr.c_str());
                                std::string status = "";
                                if (f1 == 1)
                                {
                                    status = (XorStr("Health Items"));
                                }
                                if (f1 == 2)
                                {
                                    status = (XorStr("Expensive Items"));
                                }
                                if (f1 == 3)
                                {
                                    status = (XorStr("Food Items"));
                                }
                                if (f1 == 4)
                                {
                                    status = (XorStr("All Items"));
                                }

                                DrawFilledRect(400, 10, 180, 20 , &BK_color); //xetal
                                DrawNewText(400, 10, &color2, status.c_str());
                             
                    }               
                }

Then, in the filter file, filterd.h

Code:


#pragma once
#include <string>

namespace filterx
{
        // Health Items 1
        std::string arr1[] = {
                /*1*/(XorStr("544fb45d4bdc2dee738b4568")),
                /*2*/(XorStr("5af0454c86f7746bf20992e8")),
                /*3*/(XorStr("544fb3364bdc2d34748b456a")),
                /*4*/(XorStr("5755383e24597772cb798966")),
                /*5*/(XorStr("5d02778e86f774203e7dedbe")),
                /*6*/(XorStr("5d02797c86f774203f38e30a")),
                /*7*/(XorStr("5e8488fa988a8701445df1e4")),
                /*8*/(XorStr("5751a89d24597722aa0e8db0")),
                /*9*/(XorStr("5d6e6869a4b9361c140bcfde")),
                /*10*/(XorStr("60098ad7c2240c0fe85c570a")),
                /*11*/(XorStr("590c678286f77426c9660122")),
                /*12*/(XorStr("544fb3f34bdc2d03748b456a")),
                /*13*/(XorStr("5af0548586f7743a532b7e99")),
                /*14*/(XorStr("544fb37f4bdc2dee738b4567")),
                /*15*/(XorStr("5c0e530286f7747fa1419862")),  //2139095040 dead body
                /*16*/(XorStr("2139095040"))

        };
        // Health Items 2
        std::string arr2[] = {
                /*1*/(XorStr("Salewa")),
                /*2*/(XorStr("Alu Splint")),
                /*3*/(XorStr("Splint")),
                /*4*/(XorStr("Vaseline")),
                /*5*/(XorStr("CMS surgical")),
                /*6*/(XorStr("Surv12 surgical")),
                /*7*/(XorStr("CALOK-B Bandage")),
                /*8*/(XorStr("Golden Star")),
                /*9*/(XorStr("Grizzly slug")),
                /*10*/(XorStr("AFAK")),
                /*11*/(XorStr("IFAK")),
                /*12*/(XorStr("Morphine")),
                /*13*/(XorStr("Ibuprofen")),
                /*14*/(XorStr("Analgin")),
                /*15*/(XorStr("Propital")),
                /*16*/(XorStr("Difunto"))
               

        };       
        int n1 = sizeof(arr1) / sizeof(arr1[0]);


        // Expensive Items 1
        std::string expI[] = {
                /*1*/(XorStr("5c0530ee86f774697952d952")),
                /*2*/(XorStr("5c12613b86f7743bbe2c3f76")),
                /*3*/(XorStr("57347ca924597744596b4e71")),
                /*4*/(XorStr("5c052e6986f7746b207bc3c9")),
                /*5*/(XorStr("5c1267ee86f77416ec610f72")),
                /*6*/(XorStr("590c392f86f77444754deb29")),
                /*7*/(XorStr("5c05308086f7746b2101e90b")),
                /*8*/(XorStr("5c12688486f77426843c7d32")),
                /*9*/(XorStr("5af0534a86f7743b6f354284")),
                /*10*/(XorStr("5d0377ce86f774186372f689")),
                /*11*/(XorStr("5c12620d86f7743f8b198b72")),
                /*12*/(XorStr("59faf7ca86f7740dbe19f6c2")),
                /*13*/(XorStr("5bc9b9ecd4351e3bac122519")),
                /*14*/(XorStr("5c05300686f7746dce784e5d")),
                /*15*/(XorStr("590c621186f774138d11ea29")),
                /*16*/(XorStr("59faf7ca86f7740dbe19f6c2")),
                /*17*/(XorStr("5bc9c377d4351e3bac12251b")),
                /*18*/(XorStr("5b43575a86f77424f443fe62")),
                /*19*/(XorStr("5bc9bdb8d4351e003562b8a1")),
                /*20*/(XorStr("5bc9b720d4351e450201234b")),
                /*21*/(XorStr("5d1b385e86f774252167b98a")),
                /*22*/(XorStr("5d1b3f2d86f774253763b735")),
                /*23*/(XorStr("5d6fc87386f77449db3db94e")),
                /*24*/(XorStr("5d1b327086f7742525194449")),
                /*25*/(XorStr("5c0126f40db834002a125382")),
                /*26*/(XorStr("57347baf24597738002c6178")),
                /*27*/(XorStr("5e2af41e86f774755a234b67")),
                /*28*/(XorStr("5d1b2f3f86f774252167a52c")),
                /*29*/(XorStr("5d6fc78386f77449d825f9dc")),
                /*30*/(XorStr("5d0378d486f77420421a5ff4")),
                /*31*/(XorStr("5c052f6886f7746b1e3db148")),
                /*32*/(XorStr("5af0561e86f7745f5f3ad6ac")),
                /*33*/(XorStr("5d0376a486f7747d8050965c")),
                /*34*/(XorStr("5d235a5986f77443f6329bc6")),
                /*35*/(XorStr("5d03775b86f774203e7e0c4b")),
                /*36*/(XorStr("59faff1d86f7746c51718c9c")),
                /*37*/(XorStr("5d03794386f77420415576f5")),
                /*38*/(XorStr("59e3639286f7741777737013")),
                /*39*/(XorStr("5bc9bc53d4351e00367fbcee")),
                /*40*/(XorStr("5e2aee0a86f774755a234b62"))
               

        };
        // Expensive Items 2
        std::string expI2[] = {
                /*1*/(XorStr("LEDX")),
                /*2*/(XorStr("Intelligence folder")),
                /*3*/(XorStr("Graphics card")),
                /*4*/(XorStr("Portable defibrillator")),
                /*5*/(XorStr("Prokill medallion")),
                /*6*/(XorStr("SSD drive")),
                /*7*/(XorStr("Virtex processor")),
                /*8*/(XorStr("Paracord")),
                /*9*/(XorStr("Ophthalmoscope")),
                /*10*/(XorStr("Iridium thermal")),
                /*11*/(XorStr("Tetriz")),
                /*12*/(XorStr("Roler Watch")),
                /*13*/(XorStr("Deadlyslob's beard oil")),
                /*14*/(XorStr("VPX Flash Storage ")),
                /*15*/(XorStr("Secure Flash drive?")),
                /*16*/(XorStr("Roler Submariner")),
                /*17*/(XorStr("Old firesteel")),
                /*18*/(XorStr("Fuel conditioner")),
                /*19*/(XorStr("Silver Badge")),
                /*20*/(XorStr("Golden 1GPhone S.Phone")),
                /*21*/(XorStr("Water filter")),  //tirar
                /*22*/(XorStr("Disposable syringe")),
                /*23*/(XorStr("Gunpowder Hawk")), 
                /*24*/(XorStr("Pressure gauge")),
                /*25*/(XorStr("R. R. Ice Pick")),
                /*26*/(XorStr("RAM")),            // tirar
                /*27*/(XorStr("Cordura polyamide fabric")),
                /*28*/(XorStr("FP-100 filter absorber")),
                /*29*/(XorStr("Gunpowder Eagle")),
                /*30*/(XorStr("Military P. filter")),
                /*31*/(XorStr("Military Transmitter")),
                /*32*/(XorStr("Portable Powerbank")),
                /*33*/(XorStr("Military M.board")),
                /*34*/(XorStr("Gold skull ring")),
                /*35*/(XorStr("Phased array ")),
                /*36*/(XorStr("Physical bitcoin")),
                /*37*/(XorStr("military battery")),
                /*38*/(XorStr("Bronze lion")),
                /*39*/(XorStr("Golden rooster")),
                /*40*/(XorStr("Cyclon battery"))
       
        };
        int n2 = sizeof(expI) / sizeof(expI[0]);

        // Food Items 1
        std::string fud1[] = {
                /*1*/(XorStr("544fb6cc4bdc2d34748b456e")),
                /*2*/(XorStr("59e3577886f774176a362503")),
                /*3*/(XorStr("5673de654bdc2d180f8b456d")),
                /*4*/(XorStr("57347d3d245977448f7b7f61")),
                /*5*/(XorStr("5751487e245977207e26a315")),
                /*6*/(XorStr("57347d5f245977448b40fa81")),
                /*7*/(XorStr("57347d692459774491567cf1")),
                /*8*/(XorStr("57347da92459774491567cf5")),
                /*9*/(XorStr("57347d7224597744596b4e72")),
                /*10*/(XorStr("57347d90245977448f7b7f65")),
                /*11*/(XorStr("57347d9c245977448b40fa85")),
                /*12*/(XorStr("57347d8724597744596b4e76")),
                /*13*/(XorStr("57505f6224597709a92585a9")),
                /*14*/(XorStr("590c5d4b86f774784e1b9c45")),
                /*15*/(XorStr("590c5f0d86f77413997acfab")),
                /*16*/(XorStr("60098b1705871270cd5352a1")),
                /*17*/(XorStr("5448fee04bdc2dbc018b4567")),
                /*18*/(XorStr("5c0fa877d174af02a012e1cf")),
                /*19*/(XorStr("544fb62a4bdc2dfb738b4568")),
                /*20*/(XorStr("57513f07245977207e26a311")),
                /*21*/(XorStr("57513f9324597720a7128161")),
                /*22*/(XorStr("57513fcc24597720a31c09a6")),
                /*23*/(XorStr("5751435d24597720a27126d1")),
                /*24*/(XorStr("57514643245977207f2c2d09")),
                /*25*/(XorStr("575146b724597720a27126d5")),
                /*26*/(XorStr("5e8f3423fd7471236e6e3b64")),
                /*27*/(XorStr("5751496424597720a27126da")),
                /*28*/(XorStr("5bc9b156d4351e00367fbce9")),
                /*29*/(XorStr("5bc9c29cd4351e003562b8a3")),
                /*30*/(XorStr("5d1b33a686f7742523398398")),
                /*31*/(XorStr("5d1b376e86f774252519444e")),
                /*32*/(XorStr("5d40407c86f774318526545a")),
                /*33*/(XorStr("5d403f9186f7743cac3f229b")),
                /*34*/(XorStr("60b0f93284c20f0feb453da7"))
               
               
        };
        // Food Items 2
        std::string fud2[] = {
                /*1*/(XorStr("Slickers Chocolate")),
                /*2*/(XorStr("Pack of sugar ")),
                /*3*/(XorStr("Can of Saury")),
                /*4*/(XorStr("Rye Croutons ")),
                /*5*/(XorStr("Emelya croutons")),
                /*6*/(XorStr("Can of Salmon")),
                /*7*/(XorStr("Can of green peas")),
                /*8*/(XorStr("Large beef stew ")),
                /*9*/(XorStr("Small beef stew")),
                /*10*/(XorStr("Pack of flakes")),
                /*11*/(XorStr("Can of herring")),
                /*12*/(XorStr("Can of squash")),
                /*13*/(XorStr("Alyonka")),
                /*14*/(XorStr("Iskra ration")),
                /*15*/(XorStr("MRE ration")),
                /*16*/(XorStr("Water Ration")),
                /*17*/(XorStr("water bottle")),
                /*18*/(XorStr("Aquamari water")),
                /*19*/(XorStr("pineapple juice")),
                /*20*/(XorStr("Apple juice")),
                /*21*/(XorStr("Grand juice")),  //tirar
                /*22*/(XorStr("Vita juice")),
                /*23*/(XorStr("Max Energy")),
                /*24*/(XorStr("TarCola can")),
                /*25*/(XorStr("Pack of milk")),
                /*26*/(XorStr("Premium Kvass Drink")),            // tirar
                /*27*/(XorStr("Hot Rod Drink")),
                /*28*/(XorStr("Jar of DevilDog mayo")),
                /*29*/(XorStr("Can of sprats")),
                /*30*/(XorStr("Purified water ")),
                /*31*/(XorStr("moonshine")),
                /*32*/(XorStr("Tarkovskaya vodka")),
                /*33*/(XorStr("Jackiel whiskey")),
                /*34*/(XorStr("Can of RatCola"))
       

        };
        int n3 = sizeof(fud1) / sizeof(fud2[0]);

        std::string key[] = {
                /*1*/(XorStr("5448ba0b4bdc2d02308b456c")),
                /*2*/(XorStr("5d80c62a86f7744036212b3f")),
                /*3*/(XorStr("5d80c60f86f77440373c4ece")),
                /*4*/(XorStr("5780cf7f2459777de4559322")),
                /*5*/(XorStr("5a0f045e86f7745b0f0d0e42")),
                /*6*/(XorStr("5780d0652459777df90dcb74")),
                /*7*/(XorStr("5913877a86f774432f15d444")),
                /*8*/(XorStr("5751a89d24597722aa0e8db0")),
                /*9*/(XorStr("5d6e6869a4b9361c140bcfde")),
                /*10*/(XorStr("60098ad7c2240c0fe85c570a")),
                /*11*/(XorStr("590c678286f77426c9660122")),
                /*12*/(XorStr("544fb3f34bdc2d03748b456a")),
                /*13*/(XorStr("5af0548586f7743a532b7e99")),
                /*14*/(XorStr("544fb37f4bdc2dee738b4567")),
                /*15*/(XorStr("5c0e530286f7747fa1419862")),  //2139095040 dead body
                /*16*/(XorStr("2139095040"))

        };
        // Health Items 2
        std::string key2[] = {
                /*1*/(XorStr("Factory exit key")),
                /*2*/(XorStr("RB-VO marked key")),
                /*3*/(XorStr("RB-BK marked key")),
                /*4*/(XorStr("314 marked key")),
                /*5*/(XorStr("Gas station safe key")),
                /*6*/(XorStr("Gas station office")),
                /*7*/(XorStr("Gas station storage")),
                /*8*/(XorStr("Golden Star")),
                /*9*/(XorStr("Grizzly slug")),
                /*10*/(XorStr("AFAK")),
                /*11*/(XorStr("IFAK")),
                /*12*/(XorStr("Morphine")),
                /*13*/(XorStr("Ibuprofen")),
                /*14*/(XorStr("Analgin")),
                /*15*/(XorStr("Propital")),
                /*16*/(XorStr("Difunto"))


        };
        int n4 = sizeof(key) / sizeof(key2[0]);

}


ecthirune 1st January 2022 04:26 PM

Quote:

Originally Posted by overboostaltima (Post 3334126)
If some one has a faster way of doing this, please share

Yes, load all PTRs in 1 read
Iterate them in that way:
do you have PTR in your cached stuff (vector array whatever)?
Yes = skip it.
No = read data, detect wtf is it (corpse/container/item), cache it.
Run this once in each 3-5 seconds and you definitely good.

vZnu 1st January 2022 04:28 PM

Quote:

Originally Posted by ecthirune (Post 3334124)
you mind broken i guess. Or i don't know wtf wrong with you.

You said "i doubt they give all items". I prove - they give all items.

Now you saying "this is old", but i recently wrote "This is dump from december 20", because i don't wanna provide fresh data for pasters.

I can update all this info >5 times each minute, to get "FRESH" info if you wanna get actual pricing.

So wtf your problem?

the problem is peoples like you, if you are not going to provide any help just shut your mouth and sit in your corner

ecthirune 1st January 2022 04:29 PM

Quote:

Originally Posted by vZnu (Post 3334128)
the problem is peoples like you, if you are not going to provide any help just shut your mouth and sit in your corner

You really have some problems.
We already helped you, provide you services, where you can get info, provided you chain and code how to get "id", you need only turn on brain, look on code, look on services, and think how you can use it all-together.

So please don't be like :motiass:

vZnu 1st January 2022 04:32 PM

Quote:

Originally Posted by ecthirune (Post 3334130)
You really have some problems.
We already helped you, provide you services, where you can get info, provided you chain and code how to get "id", you need only turn on brain, look on code, look on services, and think how you can use it all-together.

So please don't be like :motiass:

ok lets say that list is 7 days ago, then in 1 month what im i going to do to get a new list? im going to start begging in this forum? idc about getting a list i want the method to get it

ecthirune 1st January 2022 04:53 PM

Quote:

Originally Posted by vZnu (Post 3334134)
ok lets say that list is 7 days ago, then in 1 month what im i going to do to get a new list? im going to start begging in this forum? idc about getting a list i want the method to get it

google "tarkov-market"
google "tarkov tools"
holy fck why we should explain each step?

vZnu 1st January 2022 05:05 PM

Quote:

Originally Posted by ecthirune (Post 3334147)
google "tarkov-market"
google "tarkov tools"
holy fck why we should explain each step?

i dont wanna pay 5$ a month to get a dump list

ecthirune 1st January 2022 05:08 PM

Quote:

Originally Posted by vZnu (Post 3334153)
i dont wanna pay 5$ a month to get a dump list

Why you reading only first words in message, and never go for next?
Okay, tarkov market requires 5$ for api access and a lot of other interesting stuff inside it.
Okay you don't wanna pay it.
But wait, i wrote "tarkov-market" and "tarkov tools".
Did you spent more than 1 minute on exploring both sites? Because the second one provide literally same api access... FOR FREE

vZnu 1st January 2022 05:27 PM

Quote:

Originally Posted by ecthirune (Post 3334155)
Why you reading only first words in message, and never go for next?
Okay, tarkov market requires 5$ for api access and a lot of other interesting stuff inside it.
Okay you don't wanna pay it.
But wait, i wrote "tarkov-market" and "tarkov tools".
Did you spent more than 1 minute on exploring both sites? Because the second one provide literally same api access... FOR FREE

tarkov tools dont give all loot lists

gabbo200 1st January 2022 05:37 PM

Quote:

Originally Posted by vZnu (Post 3334164)
tarkov tools dont give all loot lists

It does, just learn how to use the API.

ecthirune 1st January 2022 06:05 PM

Quote:

Originally Posted by vZnu (Post 3334164)
tarkov tools dont give all loot lists

It gives all loot list.
I would say more: you can modify request as you wanna, and get MORE info than for 5$ from tarkov-market. In most comfortable way.

bhehe6813 1st January 2022 11:18 PM

All quest zones, by map, with vector3 position, latest update:

Code:

// customs
room214 (176.4, 3.3, 184.2)
room206_water (232.2, 3.4, 138.9)
room114 (235.5, 0.4, 160.1)
vaz (579.4, 0.1, -1.8)
dead_posylny (27.5, 1.5, -110.2)
vremyan_case (368.9, 1.6, -49.9)
bomj (487.9, 6.1, -139.8)
gazel (480.8, 3.3, -76.7)
extraction_zone_zibbo (-193.0, 1.9, -206.9)
fuel1 (429.9, 2.7, 16.2)
fuel2 (101.4, 3.1, -14.1)
fuel3 (335.0, 3.0, -190.0)
fuel4 (-334.9, 2.2, -163.5)
place_peacemaker_002_N1 (505.0, 1.2, -11.3)
place_peacemaker_002_N2 (565.8, 0.0, -24.2)
place_peacemaker_007_N1 (184.1, 7.2, 183.4)
place_peacemaker_002_N3 (17.9, 0.3, 0.4)
place_SADOVOD_03 (-212.6, 1.2, -109.1)
place_skier_12_2 (170.8, 6.9, 172.0)
place_skier_11_2 (24.4, 0.2, 102.6)
Q019_3 (181.0, 6.3, 162.1)
huntsman_020 (201.2, 5.3, 154.5)
mech_41_1 (170.5, 2.3, -107.1)
mech_41_2 (425.0, 2.3, 28.4)
prapor_27_1 (202.7, 7.9, -126.8)
q_ny_find_christmas_tree_cust (199.0, -0.8, 150.6)
q_ny_kill_christmas_guys_cust (202.9, 1.2, 148.6)
q_ny_hide_christmas_tree_cust (199.0, -0.8, 150.6)

//shoreline
q_ny_kill_christmas_guys_shorl (-251.9, -4.0, -112.3)
q_ny_find_christmas_tree_shorl (-251.9, -4.0, -112.5)
q_ny_hide_christmas_tree_shorl (-251.9, -4.0, -112.5)
place_peacemaker_001 (-182.0, -63.7, 459.9)
place_peacemaker_003_N1 (-153.1, -17.1, -280.2)
place_peacemaker_003_N2 (378.7, -54.4, 166.9)
place_peacemaker_003_N3 (-349.7, -39.9, 185.9)
place_peacemaker_004_N1 (-717.1, -42.9, 225.6)
place_peacemaker_004_N2 (-57.4, -19.4, -310.3)
place_peacemaker_007_1_N1 (287.1, -49.4, -42.3)
place_peacemaker_007_2_N3 (-336.6, 3.5, -88.7)
place_peacemaker_008_2_N1 (-250.5, -5.1, -48.3)
place_peacemaker_008_2_N2 (-280.6, -4.8, -41.3)
place_peacemaker_005_N1 (-234.5, -3.5, -164.4)
place_peacemaker_008_4_N1 (-336.5, 0.1, -76.4)
place_peacemaker_008_4_N2 (-171.2, 0.1, -75.5)
place_peacemaker_009_2 (-337.0, -2.7, -88.1)
place_peacemaker_009_3_N1 (-149.9, -6.1, -77.0)
place_peacemaker_010_2 (235.6, -64.5, 442.0)
place_peacemaker_010_3 (72.9, -59.7, 348.7)
place_peacemaker_005_N2 (-596.3, -58.5, 475.5)
ter_013_area_1 (312.7, -59.2, 314.5)
ter_013_area_2 (354.9, -58.6, 306.1)
ter_013_area_3 (-258.1, -4.0, -85.7)
place_SIGNAL_01_1 (-230.4, 8.4, -93.6)
place_SIGNAL_01_2 (-483.3, -25.8, 253.7)
place_SIGNAL_03_1 (-483.8, -24.5, 248.8)
place_SIGNAL_03_3 (-708.7, -26.2, 90.6)
place_SIGNAL_03_2 (-230.6, 8.3, -92.4)
huntsman_026 (-229.1, 3.3, -88.9)
huntsman_024_1 (405.9, -51.9, -44.5)
huntsman_024_2 (382.9, -51.9, -125.9)
huntsman_024_3 (287.1, -49.2, -46.3)
prapor_022_area_1 (-264.0, -4.0, -85.3)
prapor_022_area_2 (96.7, -47.2, 97.1)
prapor_022_area_3 (-306.2, -60.9, 494.1)
ter_023_area_1_1 (-253.2, -4.1, -56.9)
ter_023_area_2_1 (94.2, -47.5, 62.0)
ter_023_area_3_1 (-311.9, -60.9, 489.7)
skier_022_area_1 (-263.6, -4.0, -85.7)
skier_022_area_2 (98.1, -47.2, 97.0)
skier_022_area_3 (-305.4, -60.9, 492.2)
place_meh_sanitar_room (-322.8, -2.8, -77.5)
prapor_27_3 (-337.0, -61.1, 517.4)
prapor_27_4 (-416.4, -56.9, 546.5)

// interchange
place_WARBLOOD_04_1 (-208.4, 22.8, -74.4)
place_WARBLOOD_04_2 (274.3, 22.9, 14.5)
place_WARBLOOD_04_3 (-172.6, 22.8, -359.5)
place_SALE_03_KOSTIN (-24.7, 28.6, -103.5)
place_SALE_03_AVOKADO (-33.2, 28.6, 25.8)
place_SALE_03_DINO (94.4, 28.2, -120.6)
place_SALE_03_TREND (64.2, 28.1, -155.4)
place_SALE_03_TOPBRAND (94.2, 28.2, 10.2)
q_ny_kill_christmas_guys_int (255.2, 21.4, -59.0)
q_ny_find_christmas_tree_int (255.9, 21.4, -59.0)
q_ny_hide_christmas_tree_int (255.9, 21.4, -59.0)
place_merch_21_1 (109.9, 22.3, 288.8)
place_merch_21_2 (17.6, 22.8, -25.5)
place_merch_21_3 (-49.8, 22.9, 59.0)
place_skier_11_3 (8.1, 27.6, -36.7)
place_skier_12_1 (-27.2, 28.1, 2.4)
place_merch_020_1 (-50.4, 27.7, 25.1)
place_merch_020_2 (179.9, 22.3, -40.9)
place_merch_022_1 (-19.4, 33.1, -239.9)
place_merch_022_2 (-19.4, 33.1, 129.3)
place_merch_022_3 (-40.7, 33.1, -54.6)
place_merch_022_4 (103.5, 33.1, -54.6)
place_merch_022_5 (109.2, 33.1, -54.6)
place_merch_022_6 (-189.3, 33.1, -54.6)
place_merch_022_7 (92.3, 33.1, -265.8)

// factory
place_SADOVOD_01_1 (68.2, 1.1, -7.4)
place_SADOVOD_01_2 (1) (59.8, 1.1, -48.4)
place_pacemaker_SCOUT_01 (66.1, -1.7, -30.4)
place_pacemaker_SCOUT_02 (-53.1, 2.3, 58.2)
place_pacemaker_SCOUT_03 (59.7, 1.2, 57.3)
huntsman_013 (27.9, 5.1, 48.2)

// labs
peace_027_area (-131.9, 5.4, -336.9)

// reserve
q_ny_kill_christmas_guys_rez (166.9, -5.6, 0.9)
q_ny_find_christmas_tree_rez (166.9, -7.0, 0.9)
q_ny_hide_christmas_tree_rez (166.9, -7.0, 0.9)
prapor_025_area_1 (-90.3, -13.4, -5.1)
prapor_025_area_2 (-144.3, -10.0, 6.2)
prapor_025_area_3 (-149.4, -9.3, 50.0)
prapor_025_area_4 (-107.0, -9.4, 77.5)
prapor_025_area_5 (-73.0, -9.7, 30.0)
prapor_024_area_2 (-115.0, -11.9, 33.9)
prapor_024_area_1 (-116.8, -13.2, 31.7)
tadeush_t90_area_check_1 (-160.6, -4.3, -117.6)
tadeush_bmp2_area_check_2 (-100.4, -4.3, -155.7)
tadeush_bmp2_area_mark_2 (-100.6, -3.7, -155.9)
tadeush_stryker_area_check_3 (42.0, 0.3, -195.2)
tadeush_stryker_area_mark_3 (42.1, 0.9, -195.2)
tadeush_stryker_area_check_4 (-107.2, -5.7, -67.3)
tadeush_stryker_area_mark_4 (-107.1, -5.1, -67.4)
tadeush_tunguska_area_check_5 (211.0, -4.9, -86.3)
tadeush_tunguska_area_mark_5 (211.1, -4.3, -86.2)
tadeush_tunguska_area_check_6 (229.0, -3.7, -55.4)
tadeush_tunguska_area_mark_6 (228.9, -2.9, -55.5)
tadeush_tunguska_area_check_7 (184.6, -3.7, 21.2)
tadeush_tunguska_area_mark_7 (183.8, -2.9, 22.0)
tadeush_tunguska_area_check_8 (144.2, -8.6, 34.9)
tadeush_tunguska_area_mark_8 (144.1, -8.7, 34.9)
tadeush_tunguska_area_check_9 (-264.6, -8.6, -71.4)
tadeush_tunguska_area_mark_9 (-267.7, -9.1, -69.5)
tadeush_tunguska_area_check_10 (-247.0, -3.2, -3.0)
tadeush_tunguska_area_mark_10 (-249.6, -3.6, -3.4)
tadeush_bmp2_area_check_11 (79.0, -4.6, -31.5)
tadeush_bmp2_area_mark_11 (79.0, -5.4, -31.8)
tadeush_bmp2_area_check_12 (103.4, -4.6, 63.9)
tadeush_bmp2_area_mark_12 (101.7, -5.6, 64.4)
tadeush_bmp2_area_check_13 (53.8, -4.1, 122.0)
tadeush_bmp2_area_mark_13 (53.6, -4.0, 122.7)
eger_barracks_area_1 (-102.9, -4.1, 92.5)
eger_barracks_area_2 (-164.1, -4.1, 54.1)
lijnik_storage_area_1 (65.4, -21.0, -104.6)
baraholshik_arsenal_area_1 (-167.4, -1.3, 31.4)
baraholshik_dejurniy_area_2 (-165.0, -4.2, 34.5)
baraholshik_arsenal_area_3 (-167.4, -7.0, 31.4)
baraholshik_arsenal_area_4 (-125.5, -1.3, 95.7)
baraholshik_arsenal_area_5 (-125.5, -7.0, 95.7)
baraholshik_fuel_area_1 (-9.4, -9.5, 83.3)
baraholshik_fuel_area_2 (11.9, -9.9, 73.8)
baraholshik_fuel_area_3 (170.0, -9.3, -97.9)
baraholshik_fuel_area_4 (178.7, -3.2, -123.6)
prapor_HQ_area_check_1 (-109.7, -12.8, 37.5)
mechanik_exit_area_1 (-119.8, -29.3, 171.8)
fuel4 (-334.9, -101.5, -163.5)

// woods
q_ny_kill_christmas_guys_wood (-21.9, -14.3, 163.0)
q_ny_find_christmas_tree_wood (-21.4, -15.7, 163.2)
q_ny_hide_christmas_tree_wood (-22.0, -15.7, 163.1)
pr_scout_base (283.1, 24.0, -439.4)
pr_scout_col (195.6, 12.2, -595.8)
place_peacemaker_007_2_N2 (196.0, 1.0, -7.2)
ter_015_area_1 (-97.2, -13.2, 219.8)
place_THX_15 (23.8, -15.4, 99.8)
place_skier_12_3 (-6.2, -0.5, -75.6)
place_skier_11_1 (31.1, -13.6, 83.0)
bar_fuel3_1 (356.5, 0.4, -85.9)
bar_fuel3_2 (-325.0, 15.3, 24.0)
bar_fuel3_3 (-200.4, 31.3, -210.9)
huntsman_001 (-256.0, 9.6, 9.7)
huntsman_005_1 (-386.8, 4.2, 22.6)
huntsman_005_2 (448.0, -13.2, 71.3)
place_peacemaker_007_2_N2_1 (-88.7, 12.6, -717.6)
prapor_27_2 (-189.1, 0.3, 232.2)

// lighthouse
q_ny_kill_christmas_guys_light (114.8, 5.2, 267.6)
q_ny_find_christmas_tree_light (114.3, 2.8, 268.1)
q_ny_hide_christmas_tree_light (114.6, 2.8, 268.1)
qlight_fuel_blood (-116.6, 11.7, -921.8)
qlight_pr1_heli2_kill (-51.2, 14.5, -573.2)
qlight_pr1_heli1_mark (-96.5, 2.4, -552.6)
qlight_pc1_ucot_kill (-108.9, 22.2, -2.3)
qlight_find_scav_group1 (-70.4, 26.8, 132.2)
qlight_find_light_merchant (156.9, 1.7, 519.7)
qlight_pr1_heli1_find (-95.9, 2.4, -553.3)
qlight_hunt_fr_find (-246.6, 0.9, -328.3)
qlight_fuel_blood_bezovoz1 (-73.7, 11.6, -875.5)
qlight_fuel_blood_bezovoz2 (-158.5, 6.0, -608.0)
qlight_fuel_blood_bezovoz3 (29.1, 6.0, -423.4)
qlight_mark_vech1 (13.1, 2.8, -503.2)
qlight_mark_vech2 (-65.2, 3.4, -691.5)
qlight_mark_vech4 (-41.5, 10.2, 16.5)
qlight_mark_vech3 (66.1, 2.8, 516.6)
qlight_find_crushed_heli (-126.7, 22.4, 301.5)
qlight_br_secure_road (0.0, 7.8, 47.7)
qlight16_peace_terra (136.9, 0.8, 47.9)

How to use:

1. Iterate quests
2. Find the quest conditions
3. Find the conditions with type ConditionVisitPlace or ConditionPlaceBeacon
4. Use my data above

Heashey 2nd January 2022 12:24 AM

anyone willing to tell me how they do nosway? I do this but it doesn't work:
Code:

local::WeaponAnim = read<UINT64>(local::local_player + 0x190);        //[Class] EFT.Player -> [190] proceduralWeaponAnimation_0x190 : EFT.Animations.ProceduralWeaponAnimation
write<glm::vec3>(local::WeaponAnim + 0x20C, { 0.f, 0.f, 0.f });        //[20C] AimSwayMax : UnityEngine.Vector3


NotATrap 2nd January 2022 12:29 AM

Quote:

Originally Posted by Heashey (Post 3334432)
anyone willing to tell me how they do nosway? I do this but it doesn't work:
Code:

local::WeaponAnim = read<UINT64>(local::local_player + 0x190);        //[Class] EFT.Player -> [190] proceduralWeaponAnimation_0x190 : EFT.Animations.ProceduralWeaponAnimation
write<glm::vec3>(local::WeaponAnim + 0x20C, { 0.f, 0.f, 0.f });        //[20C] AimSwayMax : UnityEngine.Vector3


Mask : System.Int32

set to 0!!!!

Heashey 2nd January 2022 12:30 AM

Quote:

Originally Posted by NotATrap (Post 3334437)
Mask : System.Int32

set to 0!!!!

oh shit mb, I thought i was already setting it to 0 but i was setting it to 1. Thanks it works now.

vZnu 2nd January 2022 01:54 AM

Quote:

Originally Posted by Heashey (Post 3334439)
oh shit mb, I thought i was already setting it to 0 but i was setting it to 1. Thanks it works now.

any gamer show me how to use _shotdirection

MaiGuaQQqun 2nd January 2022 03:47 AM

Quote:

Originally Posted by bhehe6813 (Post 3334393)
All quest zones, by map, with vector3 position, latest update:

Code:

// customs
room214 (176.4, 3.3, 184.2)
room206_water (232.2, 3.4, 138.9)
room114 (235.5, 0.4, 160.1)
vaz (579.4, 0.1, -1.8)
dead_posylny (27.5, 1.5, -110.2)
vremyan_case (368.9, 1.6, -49.9)
bomj (487.9, 6.1, -139.8)
gazel (480.8, 3.3, -76.7)
extraction_zone_zibbo (-193.0, 1.9, -206.9)
fuel1 (429.9, 2.7, 16.2)
fuel2 (101.4, 3.1, -14.1)
fuel3 (335.0, 3.0, -190.0)
fuel4 (-334.9, 2.2, -163.5)
place_peacemaker_002_N1 (505.0, 1.2, -11.3)
place_peacemaker_002_N2 (565.8, 0.0, -24.2)
place_peacemaker_007_N1 (184.1, 7.2, 183.4)
place_peacemaker_002_N3 (17.9, 0.3, 0.4)
place_SADOVOD_03 (-212.6, 1.2, -109.1)
place_skier_12_2 (170.8, 6.9, 172.0)
place_skier_11_2 (24.4, 0.2, 102.6)
Q019_3 (181.0, 6.3, 162.1)
huntsman_020 (201.2, 5.3, 154.5)
mech_41_1 (170.5, 2.3, -107.1)
mech_41_2 (425.0, 2.3, 28.4)
prapor_27_1 (202.7, 7.9, -126.8)
q_ny_find_christmas_tree_cust (199.0, -0.8, 150.6)
q_ny_kill_christmas_guys_cust (202.9, 1.2, 148.6)
q_ny_hide_christmas_tree_cust (199.0, -0.8, 150.6)

//shoreline
q_ny_kill_christmas_guys_shorl (-251.9, -4.0, -112.3)
q_ny_find_christmas_tree_shorl (-251.9, -4.0, -112.5)
q_ny_hide_christmas_tree_shorl (-251.9, -4.0, -112.5)
place_peacemaker_001 (-182.0, -63.7, 459.9)
place_peacemaker_003_N1 (-153.1, -17.1, -280.2)
place_peacemaker_003_N2 (378.7, -54.4, 166.9)
place_peacemaker_003_N3 (-349.7, -39.9, 185.9)
place_peacemaker_004_N1 (-717.1, -42.9, 225.6)
place_peacemaker_004_N2 (-57.4, -19.4, -310.3)
place_peacemaker_007_1_N1 (287.1, -49.4, -42.3)
place_peacemaker_007_2_N3 (-336.6, 3.5, -88.7)
place_peacemaker_008_2_N1 (-250.5, -5.1, -48.3)
place_peacemaker_008_2_N2 (-280.6, -4.8, -41.3)
place_peacemaker_005_N1 (-234.5, -3.5, -164.4)
place_peacemaker_008_4_N1 (-336.5, 0.1, -76.4)
place_peacemaker_008_4_N2 (-171.2, 0.1, -75.5)
place_peacemaker_009_2 (-337.0, -2.7, -88.1)
place_peacemaker_009_3_N1 (-149.9, -6.1, -77.0)
place_peacemaker_010_2 (235.6, -64.5, 442.0)
place_peacemaker_010_3 (72.9, -59.7, 348.7)
place_peacemaker_005_N2 (-596.3, -58.5, 475.5)
ter_013_area_1 (312.7, -59.2, 314.5)
ter_013_area_2 (354.9, -58.6, 306.1)
ter_013_area_3 (-258.1, -4.0, -85.7)
place_SIGNAL_01_1 (-230.4, 8.4, -93.6)
place_SIGNAL_01_2 (-483.3, -25.8, 253.7)
place_SIGNAL_03_1 (-483.8, -24.5, 248.8)
place_SIGNAL_03_3 (-708.7, -26.2, 90.6)
place_SIGNAL_03_2 (-230.6, 8.3, -92.4)
huntsman_026 (-229.1, 3.3, -88.9)
huntsman_024_1 (405.9, -51.9, -44.5)
huntsman_024_2 (382.9, -51.9, -125.9)
huntsman_024_3 (287.1, -49.2, -46.3)
prapor_022_area_1 (-264.0, -4.0, -85.3)
prapor_022_area_2 (96.7, -47.2, 97.1)
prapor_022_area_3 (-306.2, -60.9, 494.1)
ter_023_area_1_1 (-253.2, -4.1, -56.9)
ter_023_area_2_1 (94.2, -47.5, 62.0)
ter_023_area_3_1 (-311.9, -60.9, 489.7)
skier_022_area_1 (-263.6, -4.0, -85.7)
skier_022_area_2 (98.1, -47.2, 97.0)
skier_022_area_3 (-305.4, -60.9, 492.2)
place_meh_sanitar_room (-322.8, -2.8, -77.5)
prapor_27_3 (-337.0, -61.1, 517.4)
prapor_27_4 (-416.4, -56.9, 546.5)

// interchange
place_WARBLOOD_04_1 (-208.4, 22.8, -74.4)
place_WARBLOOD_04_2 (274.3, 22.9, 14.5)
place_WARBLOOD_04_3 (-172.6, 22.8, -359.5)
place_SALE_03_KOSTIN (-24.7, 28.6, -103.5)
place_SALE_03_AVOKADO (-33.2, 28.6, 25.8)
place_SALE_03_DINO (94.4, 28.2, -120.6)
place_SALE_03_TREND (64.2, 28.1, -155.4)
place_SALE_03_TOPBRAND (94.2, 28.2, 10.2)
q_ny_kill_christmas_guys_int (255.2, 21.4, -59.0)
q_ny_find_christmas_tree_int (255.9, 21.4, -59.0)
q_ny_hide_christmas_tree_int (255.9, 21.4, -59.0)
place_merch_21_1 (109.9, 22.3, 288.8)
place_merch_21_2 (17.6, 22.8, -25.5)
place_merch_21_3 (-49.8, 22.9, 59.0)
place_skier_11_3 (8.1, 27.6, -36.7)
place_skier_12_1 (-27.2, 28.1, 2.4)
place_merch_020_1 (-50.4, 27.7, 25.1)
place_merch_020_2 (179.9, 22.3, -40.9)
place_merch_022_1 (-19.4, 33.1, -239.9)
place_merch_022_2 (-19.4, 33.1, 129.3)
place_merch_022_3 (-40.7, 33.1, -54.6)
place_merch_022_4 (103.5, 33.1, -54.6)
place_merch_022_5 (109.2, 33.1, -54.6)
place_merch_022_6 (-189.3, 33.1, -54.6)
place_merch_022_7 (92.3, 33.1, -265.8)

// factory
place_SADOVOD_01_1 (68.2, 1.1, -7.4)
place_SADOVOD_01_2 (1) (59.8, 1.1, -48.4)
place_pacemaker_SCOUT_01 (66.1, -1.7, -30.4)
place_pacemaker_SCOUT_02 (-53.1, 2.3, 58.2)
place_pacemaker_SCOUT_03 (59.7, 1.2, 57.3)
huntsman_013 (27.9, 5.1, 48.2)

// labs
peace_027_area (-131.9, 5.4, -336.9)

// reserve
q_ny_kill_christmas_guys_rez (166.9, -5.6, 0.9)
q_ny_find_christmas_tree_rez (166.9, -7.0, 0.9)
q_ny_hide_christmas_tree_rez (166.9, -7.0, 0.9)
prapor_025_area_1 (-90.3, -13.4, -5.1)
prapor_025_area_2 (-144.3, -10.0, 6.2)
prapor_025_area_3 (-149.4, -9.3, 50.0)
prapor_025_area_4 (-107.0, -9.4, 77.5)
prapor_025_area_5 (-73.0, -9.7, 30.0)
prapor_024_area_2 (-115.0, -11.9, 33.9)
prapor_024_area_1 (-116.8, -13.2, 31.7)
tadeush_t90_area_check_1 (-160.6, -4.3, -117.6)
tadeush_bmp2_area_check_2 (-100.4, -4.3, -155.7)
tadeush_bmp2_area_mark_2 (-100.6, -3.7, -155.9)
tadeush_stryker_area_check_3 (42.0, 0.3, -195.2)
tadeush_stryker_area_mark_3 (42.1, 0.9, -195.2)
tadeush_stryker_area_check_4 (-107.2, -5.7, -67.3)
tadeush_stryker_area_mark_4 (-107.1, -5.1, -67.4)
tadeush_tunguska_area_check_5 (211.0, -4.9, -86.3)
tadeush_tunguska_area_mark_5 (211.1, -4.3, -86.2)
tadeush_tunguska_area_check_6 (229.0, -3.7, -55.4)
tadeush_tunguska_area_mark_6 (228.9, -2.9, -55.5)
tadeush_tunguska_area_check_7 (184.6, -3.7, 21.2)
tadeush_tunguska_area_mark_7 (183.8, -2.9, 22.0)
tadeush_tunguska_area_check_8 (144.2, -8.6, 34.9)
tadeush_tunguska_area_mark_8 (144.1, -8.7, 34.9)
tadeush_tunguska_area_check_9 (-264.6, -8.6, -71.4)
tadeush_tunguska_area_mark_9 (-267.7, -9.1, -69.5)
tadeush_tunguska_area_check_10 (-247.0, -3.2, -3.0)
tadeush_tunguska_area_mark_10 (-249.6, -3.6, -3.4)
tadeush_bmp2_area_check_11 (79.0, -4.6, -31.5)
tadeush_bmp2_area_mark_11 (79.0, -5.4, -31.8)
tadeush_bmp2_area_check_12 (103.4, -4.6, 63.9)
tadeush_bmp2_area_mark_12 (101.7, -5.6, 64.4)
tadeush_bmp2_area_check_13 (53.8, -4.1, 122.0)
tadeush_bmp2_area_mark_13 (53.6, -4.0, 122.7)
eger_barracks_area_1 (-102.9, -4.1, 92.5)
eger_barracks_area_2 (-164.1, -4.1, 54.1)
lijnik_storage_area_1 (65.4, -21.0, -104.6)
baraholshik_arsenal_area_1 (-167.4, -1.3, 31.4)
baraholshik_dejurniy_area_2 (-165.0, -4.2, 34.5)
baraholshik_arsenal_area_3 (-167.4, -7.0, 31.4)
baraholshik_arsenal_area_4 (-125.5, -1.3, 95.7)
baraholshik_arsenal_area_5 (-125.5, -7.0, 95.7)
baraholshik_fuel_area_1 (-9.4, -9.5, 83.3)
baraholshik_fuel_area_2 (11.9, -9.9, 73.8)
baraholshik_fuel_area_3 (170.0, -9.3, -97.9)
baraholshik_fuel_area_4 (178.7, -3.2, -123.6)
prapor_HQ_area_check_1 (-109.7, -12.8, 37.5)
mechanik_exit_area_1 (-119.8, -29.3, 171.8)
fuel4 (-334.9, -101.5, -163.5)

// woods
q_ny_kill_christmas_guys_wood (-21.9, -14.3, 163.0)
q_ny_find_christmas_tree_wood (-21.4, -15.7, 163.2)
q_ny_hide_christmas_tree_wood (-22.0, -15.7, 163.1)
pr_scout_base (283.1, 24.0, -439.4)
pr_scout_col (195.6, 12.2, -595.8)
place_peacemaker_007_2_N2 (196.0, 1.0, -7.2)
ter_015_area_1 (-97.2, -13.2, 219.8)
place_THX_15 (23.8, -15.4, 99.8)
place_skier_12_3 (-6.2, -0.5, -75.6)
place_skier_11_1 (31.1, -13.6, 83.0)
bar_fuel3_1 (356.5, 0.4, -85.9)
bar_fuel3_2 (-325.0, 15.3, 24.0)
bar_fuel3_3 (-200.4, 31.3, -210.9)
huntsman_001 (-256.0, 9.6, 9.7)
huntsman_005_1 (-386.8, 4.2, 22.6)
huntsman_005_2 (448.0, -13.2, 71.3)
place_peacemaker_007_2_N2_1 (-88.7, 12.6, -717.6)
prapor_27_2 (-189.1, 0.3, 232.2)

// lighthouse
q_ny_kill_christmas_guys_light (114.8, 5.2, 267.6)
q_ny_find_christmas_tree_light (114.3, 2.8, 268.1)
q_ny_hide_christmas_tree_light (114.6, 2.8, 268.1)
qlight_fuel_blood (-116.6, 11.7, -921.8)
qlight_pr1_heli2_kill (-51.2, 14.5, -573.2)
qlight_pr1_heli1_mark (-96.5, 2.4, -552.6)
qlight_pc1_ucot_kill (-108.9, 22.2, -2.3)
qlight_find_scav_group1 (-70.4, 26.8, 132.2)
qlight_find_light_merchant (156.9, 1.7, 519.7)
qlight_pr1_heli1_find (-95.9, 2.4, -553.3)
qlight_hunt_fr_find (-246.6, 0.9, -328.3)
qlight_fuel_blood_bezovoz1 (-73.7, 11.6, -875.5)
qlight_fuel_blood_bezovoz2 (-158.5, 6.0, -608.0)
qlight_fuel_blood_bezovoz3 (29.1, 6.0, -423.4)
qlight_mark_vech1 (13.1, 2.8, -503.2)
qlight_mark_vech2 (-65.2, 3.4, -691.5)
qlight_mark_vech4 (-41.5, 10.2, 16.5)
qlight_mark_vech3 (66.1, 2.8, 516.6)
qlight_find_crushed_heli (-126.7, 22.4, 301.5)
qlight_br_secure_road (0.0, 7.8, 47.7)
qlight16_peace_terra (136.9, 0.8, 47.9)

How to use:

1. Iterate quests
2. Find the quest conditions
3. Find the conditions with type ConditionVisitPlace or ConditionPlaceBeacon
4. Use my data above

How do you get the position? By completing all quests yourself and record all position? Or a better way? Any idea to get which key is needed for some visiting or picking quest item quests?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

djskullyx64 2nd January 2022 04:02 AM

Position Offset Updates
 
Has anything changed in the last few months with bone position/bone transform?

My direction/rotation is still working but I'm getting all 1's for X,Y,Z.

Code:

POINT3D Player::GetPos() {

        POINT3D pos;
        // Get the player's position based on their bones matrix
        uint64_t bone_matrix = this->GetBoneTransform();
        uint64_t bone = ma.ReadChain(bone_matrix, { 0x20, 0x10, 0x38 });
        //pos = ma.ReadVector3Memory(bone + 0xB0);
          pos = ma.ReadVector3Memory(bone + 0x90);



        // Swap them around
        return { pos.x, pos.y, pos.z };
}

float Player::GetDirection() {
        // Get the direction (degrees) the player is facing
        return this->GetMovementContextObject().GetDirection();
}

uint64_t Player::GetBoneTransform() {
        uint64_t transformAddr = 0;
        return ma.ReadChain(this->addr, { 0xA8, 0x28, 0x28, 0x10});
}

Thanks for the help

Edit: 0xB0 changed to 0x90. Credits to cxtgirl

bhehe6813 2nd January 2022 04:30 AM

A map for the above names to an ESP friendly / readable name:

Code:


        public static Dictionary<string, string> QuestMarkerNameToSimpleNameMap = new Dictionary<string, string>() {
            { "place_SALE_03_AVOKADO", "Avokado" },
            { "place_SALE_03_KOSTIN", "Kostin" },
            { "place_SALE_03_TREND", "Trend" },
            { "place_SALE_03_DINO", "Dino" },
            { "place_SALE_03_TOPBRAND", "Top Brand" },
            { "place_merch_21_1", "Minibus 1" },
            { "place_merch_21_2", "Minibus 2" },
            { "place_merch_21_3", "Minibus 3" },
            { "place_WARBLOOD_04_1", "Tank 1" },
            { "place_WARBLOOD_04_2", "Tank 2" },
            { "place_WARBLOOD_04_3", "Tank 3" },
            { "huntsman_024_1", "Chairman House" },
            { "huntsman_024_2", "Fisherman House" },
            { "huntsman_024_3", "Priest House" },
            { "huntsman_026", "Bay View Room" },
            { "FTank_1", "Fuel Tank 1" },
            { "FTank_2", "Fuel Tank 2" },
            { "place_meh_sanitar_room", "Sanitar's Office" },
            { "place_SIGNAL_01_1", "1st Signal" },
            { "place_SIGNAL_01_2", "2nd Signal" },
            { "place_SIGNAL_03_1", "Jammer 1" },
            { "place_SIGNAL_03_2", "Jammer 2" },
            { "place_SIGNAL_03_3", "Jammer 3" },
            { "place_peacemaker_010_3", "Artyom's Car" },
            { "place_peacemaker_010_2", "Fisher's Dwelling" },
            { "place_peacemaker_009_3_N1", "Terragroup Cargo" },
            { "place_peacemaker_009_2", "Resevoir Room" },
            { "place_peacemaker_007_1_N1", "Missing Informant" },
            { "place_peacemaker_005_N2", "2nd Truck" },
            { "place_peacemaker_005_N1", "1st Truck" },
            { "place_peacemaker_004_N2", "2nd UAV" },
            { "place_peacemaker_004_N1", "1st UAV" },
            { "place_peacemaker_003_N3", "Tank 3" },
            { "place_peacemaker_003_N2", "Tank 2" },
            { "place_peacemaker_003_N1", "Tank 1" },
            { "place_peacemaker_001", "Secret Spot" },
            { "place_peacemaker_008_4_N2", "Left Wing Generator" },
            { "place_peacemaker_008_4_N1", "Right Wing Generator" },
            { "place_peacemaker_008_2_N2", "Safe Road" },
            { "place_peacemaker_008_2_N1", "Helicopter" },
            { "skier_022_area_1", "Medical 1" },
            { "skier_022_area_2", "Medical 2" },
            { "skier_022_area_3", "Medical 3" },
            { "ter_013_area_3", "Ambulance 3" },
            { "ter_013_area_2", "Ambulance 2" },
            { "ter_013_area_1", "Ambulance 1" },
            { "ter_023_area_3_1", "Pier Group" },
            { "ter_023_area_2_1", "Cottage Group" },
            { "ter_023_area_1_1", "HR Group" },
            { "prapor_022_area_3", "Trading 3" },
            { "prapor_022_area_2", "Trading 2" },
            { "prapor_022_area_1", "Trading 1" },
            { "place_SADOVOD_03", "Confiscate Warehouse" },
            { "place_peacemaker_002_N3", "Tigr 3" },
            { "place_peacemaker_002_N2", "Tigr 2" },
            { "place_peacemaker_002_N1", "Tigr 1" },
            { "vremyan_case", "Messenger Item" },
            { "room114", "Room 114" },
            { "room206_water", "Room 206" },
            { "fuel1", "Fuel 1" },
            { "fuel2", "Fuel 2" },
            { "fuel3", "Fuel 3" },
            { "fuel4", "Fuel 4" },
            { "gazel", "Transport" },
            { "room214", "Room 214" },
            { "bar_fuel3_1", "Fuel Stash 1" },
            { "bar_fuel3_2", "Fuel Stash 2" },
            { "bar_fuel3_3", "Fuel Stash 3" },
            { "pr_scout_col", "Convoy" },
            { "pr_scout_base", "USEC Camp" },
            { "ter_015_area_1", "Med Car" },
            { "bunker2", "Bunker" },
            { "huntsman_029", "Food Storage" },
            { "prapor_025_area_5", "Hermetic Door" },
            { "prapor_025_area_4", "White Pawn" },
            { "prapor_025_area_3", "Black Pawn" },
            { "prapor_025_area_2", "Black Bishop" },
            { "prapor_025_area_1", "White Bishop" },
            { "prapor_024_area_1", "Control Room" },
            { "prapor_024_area_2", "Underground Bunker" },
            { "baraholshik_fuel_area_2", "Fuel 1" },
            { "baraholshik_fuel_area_3", "Fuel 2" },
            { "baraholshik_arsenal_area_1", "W First Arsenal" },
            { "baraholshik_arsenal_area_3", "W Second Arsenal" },
            { "baraholshik_arsenal_area_4", "N First Arensal" },
            { "baraholshik_arsenal_area_5", "N Second Arsenal" },
            { "baraholshik_dejurniy_area_2", "Duty Room" },
            { "place_pacemaker_SCOUT_03", "Exit 3" },
            { "place_pacemaker_SCOUT_02", "Exit 2" },
            { "place_pacemaker_SCOUT_01", "Exit 1" },
            { "mechanik_exit_area_1", "Secret Exit" },
            { "tadeush_bmp2_area_check_13", "1st BMP" },
            { "tadeush_bmp2_area_mark_13", "1st BMP"},
            { "tadeush_bmp2_area_check_12", "2nd BMP"},
            { "tadeush_bmp2_area_mark_12", "2nd BMP" },
            { "tadeush_bmp2_area_check_11","3rd BMP"},
            { "tadeush_bmp2_area_mark_11", "3rd BMP"},
            { "tadeush_bmp2_area_check_2", "4th BMP"},
            { "tadeush_bmp2_area_mark_2", "4th BMP"},
            { "tadeush_stryker_area_check_3", "1st LAV"},
            { "tadeush_stryker_area_mark_3", "1st LAV"},
            { "tadeush_stryker_area_check_4", "2nd LAV"},
            { "tadeush_t90_area_check_1", "T-90 Tank"},
            { "qlight_pr1_heli1_find", "Find Heli 1"  },
            { "qlight_pr1_heli1_mark", "Mark Heli 1"},
            { "qlight_find_light_merchant","Merchant"},
            { "qlight_mark_vech1","BDRM 1"},
            { "qlight_mark_vech2","BDRM 2"},
            { "qlight_mark_vech3","Stryker 1"},
            { "qlight_mark_vech4","Stryker 2"},
            { "qlight_hunt_fr_find","Jaegers Friend"},
        };


pinefin 2nd January 2022 06:07 AM

does anyone have a dictionary class that i can use

C0le 2nd January 2022 07:55 AM

Quote:

Originally Posted by Heashey (Post 3334432)
anyone willing to tell me how they do nosway? I do this but it doesn't work:
Code:

local::WeaponAnim = read<UINT64>(local::local_player + 0x190);        //[Class] EFT.Player -> [190] proceduralWeaponAnimation_0x190 : EFT.Animations.ProceduralWeaponAnimation
write<glm::vec3>(local::WeaponAnim + 0x20C, { 0.f, 0.f, 0.f });        //[20C] AimSwayMax : UnityEngine.Vector3


What dump/dumper are you using?

Olofx 2nd January 2022 08:41 AM

Quote:

Originally Posted by pinefin (Post 3334621)
does anyone have a dictionary class that i can use

Assuming you use C++:
What's wrong with std::map / std::unordered_map

Python:
dict()

Rust:
std::collections::HashMap

...

Also I think that's more a general programming question

xzackcc 2nd January 2022 09:00 AM

Quote:

Originally Posted by Olofx (Post 3334666)
Assuming you use C++:
What's wrong with std::map / std::unordered_map

Python:
dict()

Rust:
std::collections::HashMap

...

Also I think that's more a general programming question

no, he wants the class that unity uses with it's offset and ptrs to list, entities and size. pretty basic stuff - he might figure it out himself, otherwise i'll post it later. :P

pinefin 2nd January 2022 09:21 AM

Quote:

Originally Posted by Olofx (Post 3334666)
Assuming you use C++:
What's wrong with std::map / std::unordered_map

Python:
dict()

Rust:
std::collections::HashMap

...

Also I think that's more a general programming question

are std::map the same as dictionaries?

i always thought that maps had different fields/field positions

edit: nvm i think what xzackcc said proved this to be false

Quote:

Originally Posted by xzackcc (Post 3334677)
no, he wants the class that unity uses with it's offset and ptrs to list, entities and size. pretty basic stuff - he might figure it out himself, otherwise i'll post it later. :P

i was recreating it like i did for lists but its pretty confusing how its structured so i gave up (this was last night)

imkeez 2nd January 2022 09:57 AM

how can i dump all tarkov classes and structs in a certain format to fit my cheat

hollow 2nd January 2022 10:33 AM

Quote:

Originally Posted by imkeez (Post 3334710)
how can i dump all tarkov classes and structs in a certain format to fit my cheat

that is a very good question only you know the answer to

C0le 2nd January 2022 11:08 AM

Is there an eft alternative to something like il2cpp for rust? I am very confused on how people dump this game and read through classes/structs. I have searched the forums for quite some time and i do not know if i just have not found it, or its not possible. sorry if this questions is asked many times, i have seen 3/4 references, but i just do not see an answer to any of them. thanks!

xzackcc 2nd January 2022 11:44 AM

Quote:

Originally Posted by C0le (Post 3334736)
Is there an eft alternative to something like il2cpp for rust? I am very confused on how people dump this game and read through classes/structs. I have searched the forums for quite some time and i do not know if i just have not found it, or its not possible. sorry if this questions is asked many times, i have seen 3/4 references, but i just do not see an answer to any of them. thanks!

assembly csharp -> dnspy -> profit.

C0le 2nd January 2022 12:00 PM

Quote:

Originally Posted by xzackcc (Post 3334757)
assembly csharp -> dnspy -> profit.

dnspy good for showing the functions, but it is hard to see what fields are, ​is there something that is more simular to il2cpp where it shows what a field is and with its corresponding offset


edit example:

dnspy:
// Token: 0x0400821B RID: 33307
public float AimSwayMaxThreshold = 7f;

sanatized dump from MaiGuaQQqun:
constexpr auto AimSwayMaxThreshold = 0x22C;//(类型 : System.Single)

can you reference the token or RID for that offset?
thanks!

pattyz 2nd January 2022 12:09 PM

Quote:

Originally Posted by C0le (Post 3334763)
~snip~

Kind sir, I think you're in need of UnIspect, check that out.

C0le 2nd January 2022 12:19 PM

Quote:

Originally Posted by pattyz (Post 3334768)
Kind sir, I think you're in need of UnIspect, check that out.

perfect, thanks so much +rep

cxtgirl 2nd January 2022 03:08 PM

Quote:

Originally Posted by C0le (Post 3334736)
Is there an eft alternative to something like il2cpp for rust? I am very confused on how people dump this game and read through classes/structs. I have searched the forums for quite some time and i do not know if i just have not found it, or its not possible. sorry if this questions is asked many times, i have seen 3/4 references, but i just do not see an answer to any of them. thanks!

unispect, cheat engine, dnspy or a really simple mono library to dump them however you want

Quote:

Originally Posted by C0le (Post 3334736)
Is there an eft alternative to something like il2cpp for rust? I am very confused on how people dump this game and read through classes/structs. I have searched the forums for quite some time and i do not know if i just have not found it, or its not possible. sorry if this questions is asked many times, i have seen 3/4 references, but i just do not see an answer to any of them. thanks!

unispect, cheat engine, dnspy or a really simple mono library to dump them however you want

Heashey 2nd January 2022 08:28 PM

Quote:

Originally Posted by C0le (Post 3334653)
What dump/dumper are you using?

i use unispect, it's on github to download

--------------

idk if i am being stupid or what, but i'd appreciate if anyone can help lol:

https://streamable.com/qepgf3

the distance does not update when i go closer to them, yet it updates when they run or go somewhere and the distance is also not correct lol.

Code:

uint64_t bone_matrix = getbone_matrix(player);
uint64_t bone = ReadChain(bone_matrix, { 0x20, 0x10, 0x38 });
glm::vec3 location = read<glm::vec3>(bone + 0x90);

const int player_distance = glm::distance(location, get_obj_pos(local::local_player));


dddd2v 3rd January 2022 12:02 AM

Quote:

Originally Posted by Heashey (Post 3335151)
i use unispect, it's on github to download

--------------

idk if i am being stupid or what, but i'd appreciate if anyone can help lol:

https://streamable.com/qepgf3

the distance does not update when i go closer to them, yet it updates when they run or go somewhere and the distance is also not correct lol.

Code:

uint64_t bone_matrix = getbone_matrix(player);
uint64_t bone = ReadChain(bone_matrix, { 0x20, 0x10, 0x38 });
glm::vec3 location = read<glm::vec3>(bone + 0x90);

const int player_distance = glm::distance(location, get_obj_pos(local::local_player));


[[nodiscard]] float LengthSqr( ) const {
return ( x * x ) + ( y * y ) + ( z * z );
}

[[nodiscard]] float Length( ) const {
return crt::sqrt( LengthSqr( ) );
}
[[nodiscard]] float Distance( Vector3 input ) const {
return ( *this - input ).Length( );
}

Artur1338 3rd January 2022 01:22 AM

@overboostaltima
Currently you are doing a lot of str compare in your code which is super slow compared to ptrs.
As I don't have a Tarkov cheat and know nothing about mono I can just give you a possible solution and don't know if this even work's.

Basically the idea would be to cache all string pointers to their text representation respectively.
This will only work if all instances have the same item id pointer. This might be the case since in other non mono game engines you often see text only allocated once and basically each object just has a pointer to that given string on memory. So basically you would create a mapping of this string pointer ( under the assumption that all item id is a pointer to the same address ) why only once string comparing the string text and then only use the cached ptr value for every other string compare.

As I am on my smartphone I can't give a you quick pseudo code example to get the message across.
I will edit this post tomorrow once I have time.

Maybe some of the others here know if all instances of an item have the same System.String as their item id or if they have a separate copy each.

xzackcc 3rd January 2022 01:48 AM

Quote:

Originally Posted by bhehe6813 (Post 3334574)
A map for the above names to an ESP friendly / readable name:

Code:


        public static Dictionary<string, string> QuestMarkerNameToSimpleNameMap = new Dictionary<string, string>() {
            { "place_SALE_03_AVOKADO", "Avokado" },
            { "place_SALE_03_KOSTIN", "Kostin" },
            { "place_SALE_03_TREND", "Trend" },
            { "place_SALE_03_DINO", "Dino" },
            { "place_SALE_03_TOPBRAND", "Top Brand" },
            { "place_merch_21_1", "Minibus 1" },
            { "place_merch_21_2", "Minibus 2" },
            { "place_merch_21_3", "Minibus 3" },
            { "place_WARBLOOD_04_1", "Tank 1" },
            { "place_WARBLOOD_04_2", "Tank 2" },
            { "place_WARBLOOD_04_3", "Tank 3" },
            { "huntsman_024_1", "Chairman House" },
            { "huntsman_024_2", "Fisherman House" },
            { "huntsman_024_3", "Priest House" },
            { "huntsman_026", "Bay View Room" },
            { "FTank_1", "Fuel Tank 1" },
            { "FTank_2", "Fuel Tank 2" },
            { "place_meh_sanitar_room", "Sanitar's Office" },
            { "place_SIGNAL_01_1", "1st Signal" },
            { "place_SIGNAL_01_2", "2nd Signal" },
            { "place_SIGNAL_03_1", "Jammer 1" },
            { "place_SIGNAL_03_2", "Jammer 2" },
            { "place_SIGNAL_03_3", "Jammer 3" },
            { "place_peacemaker_010_3", "Artyom's Car" },
            { "place_peacemaker_010_2", "Fisher's Dwelling" },
            { "place_peacemaker_009_3_N1", "Terragroup Cargo" },
            { "place_peacemaker_009_2", "Resevoir Room" },
            { "place_peacemaker_007_1_N1", "Missing Informant" },
            { "place_peacemaker_005_N2", "2nd Truck" },
            { "place_peacemaker_005_N1", "1st Truck" },
            { "place_peacemaker_004_N2", "2nd UAV" },
            { "place_peacemaker_004_N1", "1st UAV" },
            { "place_peacemaker_003_N3", "Tank 3" },
            { "place_peacemaker_003_N2", "Tank 2" },
            { "place_peacemaker_003_N1", "Tank 1" },
            { "place_peacemaker_001", "Secret Spot" },
            { "place_peacemaker_008_4_N2", "Left Wing Generator" },
            { "place_peacemaker_008_4_N1", "Right Wing Generator" },
            { "place_peacemaker_008_2_N2", "Safe Road" },
            { "place_peacemaker_008_2_N1", "Helicopter" },
            { "skier_022_area_1", "Medical 1" },
            { "skier_022_area_2", "Medical 2" },
            { "skier_022_area_3", "Medical 3" },
            { "ter_013_area_3", "Ambulance 3" },
            { "ter_013_area_2", "Ambulance 2" },
            { "ter_013_area_1", "Ambulance 1" },
            { "ter_023_area_3_1", "Pier Group" },
            { "ter_023_area_2_1", "Cottage Group" },
            { "ter_023_area_1_1", "HR Group" },
            { "prapor_022_area_3", "Trading 3" },
            { "prapor_022_area_2", "Trading 2" },
            { "prapor_022_area_1", "Trading 1" },
            { "place_SADOVOD_03", "Confiscate Warehouse" },
            { "place_peacemaker_002_N3", "Tigr 3" },
            { "place_peacemaker_002_N2", "Tigr 2" },
            { "place_peacemaker_002_N1", "Tigr 1" },
            { "vremyan_case", "Messenger Item" },
            { "room114", "Room 114" },
            { "room206_water", "Room 206" },
            { "fuel1", "Fuel 1" },
            { "fuel2", "Fuel 2" },
            { "fuel3", "Fuel 3" },
            { "fuel4", "Fuel 4" },
            { "gazel", "Transport" },
            { "room214", "Room 214" },
            { "bar_fuel3_1", "Fuel Stash 1" },
            { "bar_fuel3_2", "Fuel Stash 2" },
            { "bar_fuel3_3", "Fuel Stash 3" },
            { "pr_scout_col", "Convoy" },
            { "pr_scout_base", "USEC Camp" },
            { "ter_015_area_1", "Med Car" },
            { "bunker2", "Bunker" },
            { "huntsman_029", "Food Storage" },
            { "prapor_025_area_5", "Hermetic Door" },
            { "prapor_025_area_4", "White Pawn" },
            { "prapor_025_area_3", "Black Pawn" },
            { "prapor_025_area_2", "Black Bishop" },
            { "prapor_025_area_1", "White Bishop" },
            { "prapor_024_area_1", "Control Room" },
            { "prapor_024_area_2", "Underground Bunker" },
            { "baraholshik_fuel_area_2", "Fuel 1" },
            { "baraholshik_fuel_area_3", "Fuel 2" },
            { "baraholshik_arsenal_area_1", "W First Arsenal" },
            { "baraholshik_arsenal_area_3", "W Second Arsenal" },
            { "baraholshik_arsenal_area_4", "N First Arensal" },
            { "baraholshik_arsenal_area_5", "N Second Arsenal" },
            { "baraholshik_dejurniy_area_2", "Duty Room" },
            { "place_pacemaker_SCOUT_03", "Exit 3" },
            { "place_pacemaker_SCOUT_02", "Exit 2" },
            { "place_pacemaker_SCOUT_01", "Exit 1" },
            { "mechanik_exit_area_1", "Secret Exit" },
            { "tadeush_bmp2_area_check_13", "1st BMP" },
            { "tadeush_bmp2_area_mark_13", "1st BMP"},
            { "tadeush_bmp2_area_check_12", "2nd BMP"},
            { "tadeush_bmp2_area_mark_12", "2nd BMP" },
            { "tadeush_bmp2_area_check_11","3rd BMP"},
            { "tadeush_bmp2_area_mark_11", "3rd BMP"},
            { "tadeush_bmp2_area_check_2", "4th BMP"},
            { "tadeush_bmp2_area_mark_2", "4th BMP"},
            { "tadeush_stryker_area_check_3", "1st LAV"},
            { "tadeush_stryker_area_mark_3", "1st LAV"},
            { "tadeush_stryker_area_check_4", "2nd LAV"},
            { "tadeush_t90_area_check_1", "T-90 Tank"},
            { "qlight_pr1_heli1_find", "Find Heli 1"  },
            { "qlight_pr1_heli1_mark", "Mark Heli 1"},
            { "qlight_find_light_merchant","Merchant"},
            { "qlight_mark_vech1","BDRM 1"},
            { "qlight_mark_vech2","BDRM 2"},
            { "qlight_mark_vech3","Stryker 1"},
            { "qlight_mark_vech4","Stryker 2"},
            { "qlight_hunt_fr_find","Jaegers Friend"},
        };


https://i.imgur.com/u3gW5jE.png
works like a charm, tyvm! :)

GotSomePills 3rd January 2022 02:15 AM

Sorry in advance for posting what I presume is a reapeatedly asked question but I can't seem to get the search function to actually find what I need.

How do people find the offset for GameObjectManager? As opposed to just waiting for somebody to post it? I can see using Unispect how to get offsets for each struct/class in the game but I'm unsure on how people are finding the GOM offset from the base of UnityEngine.dll

EDIT*
I Found this post about finding the GOM in Rust, is is the same process for Tarkov? Package with the same unity engine version with il2cpp then search it with IDA?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

Heashey 3rd January 2022 03:04 AM

Quote:

Originally Posted by GotSomePills (Post 3335372)
Sorry in advance for posting what I presume is a reapeatedly asked question but I can't seem to get the search function to actually find what I need.

How do people find the offset for GameObjectManager? As opposed to just waiting for somebody to post it? I can see using Unispect how to get offsets for each struct/class in the game but I'm unsure on how people are finding the GOM offset from the base of UnityEngine.dll

EDIT*
I Found this post about finding the GOM in Rust, is is the same process for Tarkov? Package with the same unity engine version with il2cpp then search it with IDA?


how to find gom: https://www.unknowncheats.me/forum/2...-post1694.html

Exliation 3rd January 2022 04:14 AM

Quote:

Originally Posted by Heashey (Post 3335151)
i use unispect, it's on github to download

--------------

idk if i am being stupid or what, but i'd appreciate if anyone can help lol:

https://streamable.com/qepgf3

the distance does not update when i go closer to them, yet it updates when they run or go somewhere and the distance is also not correct lol.

Code:

uint64_t bone_matrix = getbone_matrix(player);
uint64_t bone = ReadChain(bone_matrix, { 0x20, 0x10, 0x38 });
glm::vec3 location = read<glm::vec3>(bone + 0x90);

const int player_distance = glm::distance(location, get_obj_pos(local::local_player));


It's more then likely getting the distance to the zero position, double check local position and make sure it's valid.

GotSomePills 3rd January 2022 12:49 PM

Quote:

Originally Posted by Heashey (Post 3335399)

Awesome ty!

wasd2 3rd January 2022 01:21 PM

Quote:

Originally Posted by Heashey (Post 3335151)
i use unispect, it's on github to download

--------------

idk if i am being stupid or what, but i'd appreciate if anyone can help lol:

https://streamable.com/qepgf3

the distance does not update when i go closer to them, yet it updates when they run or go somewhere and the distance is also not correct lol.

Code:

uint64_t bone_matrix = getbone_matrix(player);
uint64_t bone = ReadChain(bone_matrix, { 0x20, 0x10, 0x38 });
glm::vec3 location = read<glm::vec3>(bone + 0x90);

const int player_distance = glm::distance(location, get_obj_pos(local::local_player));


it's something I use in all games.
Get local player Location. Do Not Use W2S After Receiving

The code below will be more helpful for you
Code:

                if (ReadMemory<int>(entity + 0x18))
                {
                        LocalPlayerPos = GetPosition(ReadMemory<uintptr_t>(ReadChain(entity, { 0xA8, 0x28, 0x28, 0x10 }) + (0x20 + (HumanBase * 8)))); //Vector3 LocalPlayerPos 
//Don't define it inside the loop.
                        continue;
                }

                float Distance = LocalPlayerPos.Distance(enmybasepos);


GotSomePills 3rd January 2022 03:31 PM

Quote:

Originally Posted by Heashey (Post 3335399)

So i've been trying to figure this out, i've managed to get to this point where I have the GetGameObjectManager() function,

Code:

.text:00000001805A67B0 ; struct GameObjectManager *GetGameObjectManager(void)
.text:00000001805A67B0 [email protected]@[email protected]@XZ proc near
.text:00000001805A67B0                                        ; CODE XREF: FindGameObjectWithTag(uint)+8p
.text:00000001805A67B0                                        ; FindMainCamera(void)+Fp ...
.text:00000001805A67B0                mov    rax, cs:[email protected]@@[email protected] ; GameObjectManager * GameObjectManager::s_Instance
.text:00000001805A67B7                retn
.text:00000001805A67B7 [email protected]@[email protected]@XZ endp
.text:00000001805A67B7
.text:00000001805A67B7 ; ---------------------------------------------------------------------------
.text:00000001805A67B8                align 20h

But I don't understand where I go from here to finding the offset I need.


*EDIT:
So turns out I just needed to open IDA without pdb and jump to the address. Not sure if there's a way to just unload pdb files to avoid opening it again but I got there in the end :)

Artur1338 3rd January 2022 05:22 PM

Quote:

Originally Posted by Artur1338 (Post 3335345)
@overboostaltima
Currently you are doing a lot of str compare in your code which is super slow compared to ptrs.
As I don't have a Tarkov cheat and know nothing about mono I can just give you a possible solution and don't know if this even work's.

Basically the idea would be to cache all string pointers to their text representation respectively.
This will only work if all instances have the same item id pointer. This might be the case since in other non mono game engines you often see text only allocated once and basically each object just has a pointer to that given string on memory. So basically you would create a mapping of this string pointer ( under the assumption that all item id is a pointer to the same address ) why only once string comparing the string text and then only use the cached ptr value for every other string compare.

As I am on my smartphone I can't give a you quick pseudo code example to get the message across.
I will edit this post tomorrow once I have time.

Maybe some of the others here know if all instances of an item have the same System.String as their item id or if they have a separate copy each.

Just checked and all items share the same ptr to the item sid.

GotSomePills 4th January 2022 01:11 AM

So i'm having trouble actually getting the module base of UnityPlayer.dll in the live version. Its working fine with SP-Tarkov but trying to match via name doesn't find anything and if I match by size I get an absolutely huge value for DLLBase.

The way i'm trying to get the module base is basically as described in this post. Its working fine for SP-Tarkov so I think its battleye obfuscating something.

Any tips?

OxiJeans 4th January 2022 02:53 AM

Anyone has got ingame/lobby control, I couldn't find it, I want use prevent from crash ( internal)

cxtgirl 4th January 2022 02:55 AM

Quote:

Originally Posted by OxiJeans (Post 3336152)
Anyone has got ingame/lobby control, I couldn't find it, I want use prevent from crash ( internal)

im guessing you mean a check for if you are in game or not, just check if gameworld exists

OxiJeans 4th January 2022 03:01 AM

Quote:

Originally Posted by cxtgirl (Post 3336153)
im guessing you mean a check for if you are in game or not, just check if gameworld exists

Yeah but over usage for find Gameworld with getobjectfromlist give crash, I tried all methods local player , camera, Gameworld, user count etc

Quote:

Originally Posted by cxtgirl (Post 3336153)
im guessing you mean a check for if you are in game or not, just check if gameworld exists

Yeah but over usage for find Gameworld with getobjectfromlist give crash, I tried all methods local player , camera, Gameworld, user count etc

pinefin 4th January 2022 03:17 AM

Quote:

Originally Posted by OxiJeans (Post 3336155)
Yeah but over usage for find Gameworld with getobjectfromlist give crash, I tried all methods local player , camera, Gameworld, user count etc



Yeah but over usage for find Gameworld with getobjectfromlist give crash, I tried all methods local player , camera, Gameworld, user count etc

you only have to get the object every few seconds, now if any of the contents in the chain from GameWorld to LocalGameWorld is 0 (that would be your check)

OxiJeans 4th January 2022 03:21 AM

Quote:

Originally Posted by pinefin (Post 3336164)
you only have to get the object every few seconds, now if any of the contents in the chain from GameWorld to LocalGameWorld is 0 (that would be your check)

I m in hook, that mean I read all objects every milliseconds , gc collector instant free pages so that it give crash with acces violation

pinefin 4th January 2022 04:58 AM

Quote:

Originally Posted by OxiJeans (Post 3336166)
I m in hook, that mean I read all objects every milliseconds , gc collector instant free pages so that it give crash with acces violation

try out UnityEngine::GameObject.Find();

Respecter 4th January 2022 01:22 PM

What the bell happened with item prices in this game

a930232832 4th January 2022 01:29 PM

pls bro ,“GameWorld” now is not “GameWorld”?

krembo 4th January 2022 02:03 PM

Quote:

Originally Posted by Respecter (Post 3336394)
What the bell happened with item prices in this game

All high end armor/ammo is no longer sellable at the flea market as of 12.12

Artur1338 4th January 2022 02:23 PM

@GotSomePills
Have no issues using the method that I posted in the other thread.
BE doesn't monitor StackAttach or AttachProc so you can skip the stuff with cr3 etc.

LoneSurvivor88 4th January 2022 05:02 PM

Quote:

Originally Posted by pinefin (Post 3336164)
you only have to get the object every few seconds, now if any of the contents in the chain from GameWorld to LocalGameWorld is 0 (that would be your check)

The GameWorld object will move around DURING a raid? I guess that makes sense since it's Unity/C# and the GC can move things around, but I thought it was pinned

ecthirune 4th January 2022 05:03 PM

Quote:

Originally Posted by LoneSurvivor88 (Post 3336582)
The GameWorld object will move around DURING a raid? I guess that makes sense since it's Unity/C# and the GC can move things around, but I thought it was pinned

no.
Everything starting from GOM is static while you raiding.

hollow 4th January 2022 05:19 PM

Quote:

Originally Posted by LoneSurvivor88 (Post 3336582)
The GameWorld object will move around DURING a raid? I guess that makes sense since it's Unity/C# and the GC can move things around, but I thought it was pinned

why would the gc delete an object that’s actively being used?


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

LoneSurvivor88 4th January 2022 05:24 PM

Quote:

Originally Posted by hollow (Post 3336599)
why would the gc delete an object that’s actively being used?

I didn't say delete, I said move. The CLR normally will move things around in C#

I was only responding to the guy who was saying you had to re-get GW/LGW every few seconds, because I was skeptical

hollow 4th January 2022 06:17 PM

Quote:

Originally Posted by LoneSurvivor88 (Post 3336604)
I didn't say delete, I said move. The CLR normally will move things around in C#

I was only responding to the guy who was saying you had to re-get GW/LGW every few seconds, because I was skeptical

i don�t think mono moves anything, not in my experience at least

JasonSnell 4th January 2022 06:43 PM

Quote:

Originally Posted by Respecter (Post 3336394)
What the bell happened with item prices in this game

Im thinking the same thing, only decided to launch today to see all my prices at 0. I guess they dont populate it anymore.

bhehe6813 4th January 2022 06:43 PM

Quote:

Originally Posted by hollow (Post 3336643)
i don’t think mono moves anything, not in my experience at least

There's no way it could move GameWorld anyways without causing major issues. Already started, is running, can't just suspend every thread using it and then move it gracefully.

Artur1338 4th January 2022 08:35 PM

Is there a way to load the Assembly-CSharp.dll into UnInspect?
Seems by default its accessing the game directly and has no option to simply load the DLL without attaching to the game.

azmwsuwakwuvrbc 4th January 2022 10:38 PM

I used to get item information with any unity resource extractor from .\EscapeFromTarkov_Data\resources.assets extracting two files: TestItemTemplates.txt and TestBackendLocaleEn.txt - but somehow right now these files do not contain info on recently added items (only old ones, like before 12.12 or something) - have they moved actual information somewhere else?

GotSomePills 4th January 2022 11:30 PM

Quote:

Originally Posted by Artur1338 (Post 3336448)
@GotSomePills
Have no issues using the method that I posted in the other thread.
BE doesn't monitor StackAttach or AttachProc so you can skip the stuff with cr3 etc.

Oh really? Thats interesting, I heard EAC did so I just assumed BE also would. Thanks for the tip!


So, I finally got it going thanks to that tip.

Now when i'm loaded in to an offline raid (do these work differently?) I'm trying to get the number of players by doing the following:

To get the GOM:
Code:

if (!read_value<uintptr_t>(pid, modBase + 0x17F8D28, offsets.gameObjectManager))
and then localGameWorld:
Code:

this->offsets.gameWorld = GetObjectFromList(active_objects[1], active_objects[0], _xor_("GameWorld"))));
this->offsets.localGameWorld = read_chain(pid, offsets.gameWorld, { 0x30, 0x18, 0x28 });

Then to get the player list and the count:
Code:

uint64_t playersListPtr;
read_value<uint64_t>(pid, locWorld + 0x80, playersListPtr);
int playerCount;
read_value<int>(pid, playersListPtr + 0x18, playerCount);

But the value is always insanely high. I've double checked the GOM offset with IDA, though i'm guessing some of my game offsets may be wrong in this case?

montroisiemecon 5th January 2022 03:07 AM

Quote:

Originally Posted by GotSomePills (Post 3336913)
Oh really? Thats interesting, I heard EAC did so I just assumed BE also would. Thanks for the tip!


So, I finally got it going thanks to that tip.

Now when i'm loaded in to an offline raid (do these work differently?) I'm trying to get the number of players by doing the following:

To get the GOM:
Code:

if (!read_value<uintptr_t>(pid, modBase + 0x17F8D28, offsets.gameObjectManager))
and then localGameWorld:
Code:

this->offsets.gameWorld = GetObjectFromList(active_objects[1], active_objects[0], _xor_("GameWorld"))));
this->offsets.localGameWorld = read_chain(pid, offsets.gameWorld, { 0x30, 0x18, 0x28 });

Then to get the player list and the count:
Code:

uint64_t playersListPtr;
read_value<uint64_t>(pid, locWorld + 0x80, playersListPtr);
int playerCount;
read_value<int>(pid, playersListPtr + 0x18, playerCount);

But the value is always insanely high. I've double checked the GOM offset with IDA, though i'm guessing some of my game offsets may be wrong in this case?

There can be multiple game worlds

vZnu 5th January 2022 01:59 PM

Quote:

Originally Posted by montroisiemecon (Post 3336989)
There can be multiple game worlds

how to make silent aim

montroisiemecon 5th January 2022 02:16 PM

Quote:

Originally Posted by vZnu (Post 3337288)
how to make silent aim

Recompute the bullet trajectory, one read one write

vZnu 5th January 2022 02:30 PM

Quote:

Originally Posted by montroisiemecon (Post 3337301)
Recompute the bullet trajectory, one read one write

where i need to write ? bullet start velocity or shotdirection im external

kickbar 5th January 2022 03:43 PM

hi guys, i'm looking for the map name (NameID or Real name, both will be ok)

I read somewhere that the name is stored on the GameWorld at 0x20.

Code:

[Class] EFT.GameWorld : MonoBehaviour, GInterface40E7, GInterface89FD, IEnumerable`1, IEnumerable, IDisposable
[20] string_0x20 : String

but in my GameWorld from where i got item/player etc... there is no ptr at 0x20.

Someone have an idea ?

https://pasteboard.co/foW4Pf0DNUId.png

krembo 5th January 2022 05:13 PM

Quote:

Originally Posted by kickbar (Post 3337378)
hi guys, i'm looking for the map name (NameID or Real name, both will be ok)

I read somewhere that the name is stored on the GameWorld at 0x20.

Code:

[Class] EFT.GameWorld : MonoBehaviour, GInterface40E7, GInterface89FD, IEnumerable`1, IEnumerable, IDisposable
[20] string_0x20 : String

but in my GameWorld from where i got item/player etc... there is no ptr at 0x20.

Someone have an idea ?

https://pasteboard.co/foW4Pf0DNUId.png

only works in an online raid

Heashey 5th January 2022 09:31 PM

anyone know whats the other single player tarkov called? I know spt tarkov, i also know there is another one idk the name of it tho

ofrujaslo 5th January 2022 09:41 PM

some offsets/info for anyone returning to the game like me:
GOM has changed due to unity update:
uint64_t LastTaggedNode; //0x0000
uint64_t taggedNodes; //0x0008
uint64_t LastMainCameraTaggedNode; //0x0010
uint64_t MainCameraTaggedNodes; //0x0018
uint64_t LastActiveNode; //0x0020
uint64_t ActiveNodes; //0x0028


offsets
uintptr_t OFFSET_GOM = 0x17F8D28; //2-
uintptr_t OFFSET_PROCEDURALWEAPONANIMATION = 0x190; //u
uintptr_t OFFSET_PROCEDURALWEAPONANIMATION_breath = 0x28; //28 : Breath (type: EFT.Animations.BreathEffector)
uintptr_t OFFSET_PROCEDURALWEAPONANIMATION_walk = 0x30; //30 : Walk (type: WalkEffector)
uintptr_t OFFSET_PROCEDURALWEAPONANIMATION_motionreact = 0x38; //38 : MotionReact (type: MotionEffector)
uintptr_t OFFSET_PROCEDURALWEAPONANIMATION_x = 0x0;
uintptr_t OFFSET_PROCEDURALWEAPONANIMATION_y = 0x0;
uintptr_t OFFSET_HANDSCONTROLLER = 0x508; //_handsController (type: EFT.Player.AbstractHandsController)
uintptr_t OFFSET_PLAYERPROFILE = 0x4B8; //profile_0 (type: EFT.Profile)
uintptr_t OFFSET_INVENTORYCONTROLLER = 0x500; //u _inventoryController (type: )
uintptr_t OFFSET_PLAYERBODY = 0xA8; //u _playerBody (type: EFT.PlayerBody)
uintptr_t OFFSET_HEALTHCONTROLLER = 0x4f0; //u
uintptr_t OFFSET_INTERACTABLEOBJECT = 0x490; //420 : interactableObject_0 (type: EFT.Interactive.InteractableObject)
uintptr_t OFFSET_TIMESCALE = 0x17F1AD8;

ilahigod31 6th January 2022 12:08 AM

view matrix still 0xDC?
Reading schema
GetObjectFromList(Fps Camera) + 0x30 + 0x18 + 0xDC = Matrix4x4
cuz inside is currently blank

Heashey 6th January 2022 12:16 AM

Quote:

Originally Posted by ilahigod31 (Post 3337722)
view matrix still 0xDC?
Reading schema
GetObjectFromList(Fps Camera) + 0x30 + 0x18 + 0xDC = Matrix4x4
cuz inside is currently blank

yes it's still 0xDC. Make sure your tagged objects is 0x8

ilahigod31 6th January 2022 12:18 AM

hmm.. lemme try

still blank

auto tagged_objects = memory::read<std::array<uint64_t, 2>>(eft_data::gom + 0x8);

Heashey 6th January 2022 12:25 AM

Quote:

Originally Posted by ilahigod31 (Post 3337726)
hmm.. lemme try

still blank

auto tagged_objects = memory::read<std::array<uint64_t, 2>>(eft_data::gom + 0x8);

show your full code of how you get view matrix and fps camera

ilahigod31 6th January 2022 12:29 AM

Code:

auto tagged_objects = memory::read<std::array<uint64_t, 2>>(eft_data::gom + 0x8);
if (tagged_objects[0] == NULL || tagged_objects[1] == NULL) return false;
                fps_camera = get_object_from_list(tagged_objects[1], tagged_objects[0], "FPS Camera");

        if (fps_camera) {
                        uint64_t temp = fps_camera;
                        if (!(temp = memory::read<uint64_t>(temp + 0x30)) || !(temp = memory::read<uint64_t>(temp + 0x18))) return;
                        D3DXMATRIX temp_matrix;
                        safe_memcpy(temp + 0xDC, &temp_matrix, sizeof(temp_matrix));
                        D3DXMatrixTranspose(&view_matrix, &temp_matrix);
                }

also fps camera correct with 0x10 lastTaggedObject strange... i looked objects on memory


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

Heashey 6th January 2022 12:41 AM

Quote:

Originally Posted by ilahigod31 (Post 3337732)
Code:

auto tagged_objects = memory::read<std::array<uint64_t, 2>>(eft_data::gom + 0x8);
if (tagged_objects[0] == NULL || tagged_objects[1] == NULL) return false;
                fps_camera = get_object_from_list(tagged_objects[1], tagged_objects[0], "FPS Camera");

        if (fps_camera) {
                        uint64_t temp = fps_camera;
                        if (!(temp = memory::read<uint64_t>(temp + 0x30)) || !(temp = memory::read<uint64_t>(temp + 0x18))) return;
                        D3DXMATRIX temp_matrix;
                        safe_memcpy(temp + 0xDC, &temp_matrix, sizeof(temp_matrix));
                        D3DXMatrixTranspose(&view_matrix, &temp_matrix);
                }

also fps camera correct with 0x10 lastTaggedObject strange... i looked objects on memory

hm idk, this is how I get I get fps cam + matrix
Code:

uint64_t get_camera_entity() {
        auto tagged_objects = read<std::array<uint64_t, 2>>(gom + 0x8);
        uint64_t FpsCamera2 = GetObjectFromList(tagged_objects[1], tagged_objects[0], "FPS Camera");
        uint64_t temp = FpsCamera2;
        if (!(temp = read<uint64_t>(temp + 0x30)) || !(temp = read<uint64_t>(temp + 0x18)))
                return 0;
        return temp;
}

glm::mat4x4 get_view_matrix() {

        return read<glm::mat4x4>(get_camera_entity() + 0xDC);
}


ilahigod31 6th January 2022 12:55 AM

JUST shitty windows function bugs. Other way thank you.

ofrujaslo 6th January 2022 02:58 AM

Anyone got a fix for the loot menu getting stuck when playing with timescale? (external)
ie
https://i.imgur.com/oVWbnBw.png
on his teammate stuck on this: https://i.imgur.com/telx8og.png

happens to me 50% of time when using timescale :(

NotATrap 6th January 2022 03:09 AM

Quote:

Originally Posted by ofrujaslo (Post 3337795)
Anyone got a fix for the loot menu getting stuck when playing with timescale? (external)
ie
https://i.imgur.com/oVWbnBw.png
on his teammate stuck on this: https://i.imgur.com/telx8og.png

happens to me 50% of time when using timescale :(

by any chance are you setting it to an unfathomable value?

ofrujaslo 6th January 2022 03:13 AM

Quote:

Originally Posted by NotATrap (Post 3337801)
by any chance are you setting it to an unfathomable value?

2.3f (used to be able to go MUCH higher before they capped it serverside)
What do you recommend?

NotATrap 6th January 2022 03:54 AM

Quote:

Originally Posted by ofrujaslo (Post 3337803)
2.3f (used to be able to go MUCH higher before they capped it serverside)
What do you recommend?

well i had that issue and some other issues like not being able to uncrouch and gun being bugged in animation, now im using 1.2

ofrujaslo 6th January 2022 03:56 AM

Quote:

Originally Posted by NotATrap (Post 3337821)
well i had that issue and some other issues like not being able to uncrouch and gun being bugged in animation, now im using 1.2

I thought for sure 2.3 would be low enough (used to play with 5) Can't be arsed moving my ass across the map. Besides, you gotta get to the chinese RWT farmers on shoreline before they can put the ledx up their ass...

sigh, i'll lower it. ty for your insights.

LowkeyCharmzz 6th January 2022 05:27 AM

does creditprice no longer work for getting trader value of items? just returns 0 for everything

xXBradXx 6th January 2022 09:06 AM

Quote:

Originally Posted by LowkeyCharmzz (Post 3337854)
does creditprice no longer work for getting trader value of items? just returns 0 for everything

yes they no longer populate that field. that field is pretty useless anyway, it's the "base price" of the item not even what traders actually pay for it or what you could get for it on the flea. better option is to use the tarkov-tools API to get actual flea market/trader prices and use whichever is highest.

cxtgirl 6th January 2022 10:29 AM

Quote:

Originally Posted by ofrujaslo (Post 3337795)
Anyone got a fix for the loot menu getting stuck when playing with timescale? (external)
ie
https://i.imgur.com/oVWbnBw.png
on his teammate stuck on this: https://i.imgur.com/telx8og.png

happens to me 50% of time when using timescale :(

ive been using timescale at 2 for weeks and never had any issues

Artur1338 6th January 2022 12:21 PM

Quote:

Originally Posted by ecthirune (Post 3334200)
It gives all loot list.
I would say more: you can modify request as you wanna, and get MORE info than for 5$ from tarkov-market. In most comfortable way.

But there isn't a single method to get them right?
In their GraphQl API they only offer to lookup by type. But you can just get the types and loop through them.
Haven't seen that there is an any type

@EliteProducer
I was talking about https://tarkov-tools.com/ and their gql API.

EliteProducer 6th January 2022 12:26 PM

Quote:

Originally Posted by Artur1338 (Post 3338031)
But there isn't a single method to get them right?
In their GraphQl API they only offer to lookup by type. But you can just get the types and loop through them.

If you're talking about items; https://tarkov-market.com/api/v1/ite...=aAFBNc*******

Quote:

Originally Posted by ofrujaslo (Post 3337795)
Anyone got a fix for the loot menu getting stuck when playing with timescale? (external)
ie
https://i.imgur.com/oVWbnBw.png
on his teammate stuck on this: https://i.imgur.com/telx8og.png

happens to me 50% of time when using timescale :(

I've definitely experienced similar issues. Not being able to use meds/eat after a while of using timescale is my main issue. I only set it to 2.f, never higher. (I suggest doing the same tbh)

Quote:

Originally Posted by Artur1338 (Post 3336794)
Is there a way to load the Assembly-CSharp.dll into UnInspect?
Seems by default its accessing the game directly and has no option to simply load the DLL without attaching to the game.

I don't think so, no. Pretty sure unispect does something along the lines of enumerating Tarkov's modules and finding Assembly-CSharp.dll. You can however, go to the tarkov directory and just launch "EscapeFromTarkov.exe", then use unispect there.

ecthirune 6th January 2022 12:38 PM

Quote:

Originally Posted by Artur1338 (Post 3338031)
But there isn't a single method to get them right?

Yes, by type, but this is a method actually. You can pull all items trough their type with needed fields.

Artur1338 6th January 2022 03:56 PM

Quote:

Originally Posted by ecthirune (Post 3338040)
Yes, by type, but this is a method actually. You can pull all items trough their type with needed fields.

Yeah, I edited my previous post.
You can call itemsByType(type: any) and will get all items.

Heashey 6th January 2022 03:57 PM

Quote:

Originally Posted by ofrujaslo (Post 3337822)
I thought for sure 2.3 would be low enough (used to play with 5) Can't be arsed moving my ass across the map. Besides, you gotta get to the chinese RWT farmers on shoreline before they can put the ledx up their ass...

sigh, i'll lower it. ty for your insights.

I use 2.0, never had issues or have any

LoneSurvivor88 6th January 2022 04:10 PM

Currently experiencing some odd behavior with my player positions loop. ~90% of players update OK, but a small number of players I am unable to get the transform.

Code:

_playerTransform =  _mem.ReadPtrChain(_playerBase, new uint[] { 0xA8, 0x28, 0x28, 0x10, 0x20 }); // returns ulong
I get a read error at 0x10 (List Base). I verified that the PlayerBase addr is correct because I am able to read other values chained off that address.

Also had the same thing occur after ~10-15 minutes of gameplay, suddenly my own character stopped reporting position and debug shows error reading at 0x10 in the chain above as well --- in addition to new players joining the map (while iterating the RegisteredPlayers list for newcomers)

Do any of the locations after RegisteredPlayers move around (afaik everything after GOM is static?), just curious if I need to possibly periodically refresh my pointers or something. Currently I am just caching everything in a class field during the object constructor.

I've tried shutting down my app entirely and starting it back up, gets GOM > GW > LGW> RegPlayers and starts looping through the list of players, but still get exceptions at offset 0x10 the code above. This doesn't make sense to me because it should be getting all of the addresses again for the first time.

This is how I am looping Registered Players:
Code:

            _rgtPlayers = _mem.ReadPtr(_localGameWorld + 0x80);
            int playerCnt = _mem.ReadInt(_rgtPlayers + 0x18);
            var listBase = _mem.ReadPtr(_rgtPlayers + 0x0010);
            for (uint i = 0; i < playerCnt; i++) // Check for new players
            {
                    var playerBase = _mem.ReadPtr(listBase + 0x20 + (i * 0x8));
                    // *snip* check player ID String, TryAdd player to the Dictionary collection,etc.
            }


ecthirune 6th January 2022 04:26 PM

Quote:

Originally Posted by LoneSurvivor88 (Post 3338258)
Do any of the locations after RegisteredPlayers move around (afaik everything after GOM is static?)

everything is static, except bullets/nades i suppose.
I saw some similar issues from different users, and only 1 solution found:

your problem comes from in-game memory-cleaner -> turn it off in options.

And no, you don't need to "update" each ptr some times.
I keep lists with player/items ptr from start to end, and only add/remove PTRs due to situation, the rest is stay same.

Quote:

Originally Posted by Artur1338 (Post 3338242)
Yeah, I edited my previous post.
You can call itemsByType(type: any) and will get all items.

why do you leak that? :-D now one more paster becomes happy because he can grab all items from tarkov-tools xD

LoneSurvivor88 6th January 2022 04:29 PM

Quote:

Originally Posted by ecthirune (Post 3338279)
everything is static, except bullets/nades i suppose.
I saw some similar issues from different users, and only 1 solution found:

your problem comes from in-game memory-cleaner -> turn it off in options.

And no, you don't need to "update" each ptr some times.
I keep lists with player/items ptr from start to end, and only add/remove PTRs due to situation, the rest is stay same.



why do you leak that? :-D now one more paster becomes happy because he can grab all items from tarkov-tools xD

Thank you!! +rep I do have auto-ram cleaner turned on in settings, I didn't even think of that. I bet that's it.

Will try it later and see how it goes :)

Yeah, I've been trying to get my loop time down, so have been caching as many pointers as possible to reduce reads --- glad to hear that is the right approach.

montroisiemecon 6th January 2022 04:30 PM

Quote:

Originally Posted by LoneSurvivor88 (Post 3338286)
Thank you!! I do have auto-ram cleaner turned on in settings, I didn't even think of that. I bet that's it.

Will try it later and see how it goes :)

Yeah, I've been trying to get my loop time down, so have been caching as many pointers as possible to reduce reads --- glad to hear that is the right approach.

cache values
map an uint64_t to a cached object that already contains whole bunch of informations that are not changing: faction, name, level, KD, etc... and refresh only crucial information each frame (position)

LoneSurvivor88 6th January 2022 04:34 PM

Quote:

Originally Posted by montroisiemecon (Post 3338288)
cache values
map an uint64_t to a cached object that already contains whole bunch of informations that are not changing: faction, name, level, KD, etc... and refresh only crucial information each frame (position)

Yup, my loop time was horrendous so have been doing exactly that (still have to cache a few more things)

I read only values (ints,strings,floats,etc.) fresh on each cycle and it speeds things up quite a bit.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

montroisiemecon 6th January 2022 04:47 PM

Quote:

Originally Posted by LoneSurvivor88 (Post 3338291)
Yup, my loop time was horrendous so have been doing exactly that (still have to cache a few more things)

I read only values (ints,strings,floats,etc.) fresh on each cycle and it speeds things up quite a bit.

also profiling your code in visual studio, if possible, can allow you to easily detect bottlenecks in a program

LoneSurvivor88 6th January 2022 05:09 PM

Quote:

Originally Posted by montroisiemecon (Post 3338306)
also profiling your code in visual studio, if possible, can allow you to easily detect bottlenecks in a program

Will try that, I did it with another program of mine and it helped a ton.

I've been using the Stopwatch class on my game loop so far which has been quick/easy.

thanks for suggestions +rep

ofrujaslo 6th January 2022 06:52 PM

Quote:

Originally Posted by LoneSurvivor88 (Post 3338291)
Yup, my loop time was horrendous so have been doing exactly that (still have to cache a few more things)

I read only values (ints,strings,floats,etc.) fresh on each cycle and it speeds things up quite a bit.


You can read whole blocks of memory i.e. lists of pointers. Over the course of a year i've decreased my RPM/WPM operations by 95+%

cache everything, all you really need on every update is stuff like bone positions. In fact, this approach has led to more stability also for me. Less writes, less stuff to go wrong.

I refresh entities only a few times per minute. Works well for me.

Only downside is you have more complexity/less modularity in your cheat itself, and need to put more work into updating offsets since when it breaks, it royally fucks up.

herold998 6th January 2022 08:45 PM

Hey, i was trying to draw some visuals, but i think my viewmatrix is fucked... Am i reading from the correct address?

Code:

struct matrix4x4_t
{
        float m[ 4 ][ 4 ];
};

auto fps_camera = memory.find_camera_object( crypt( "FPS Camera" ) );
auto camera_object = memory.read_chain( fps_camera, { 0x30, 0x18 } );
auto camera_matrix = memory.read<matrix4x4_t>( camera_object + 0xD8 );

for ( int i = 0; i < 4; i++ )
{
        for ( int j = 0; j < 4; j++ )
        {
                std::cout << camera_matrix.m[ i ][ j ] << ", ";
        }
        std::cout << std::endl;
}

my viewmatrix:
https://imgur.com/a/pgSLWpr

Heashey 6th January 2022 09:38 PM

Quote:

Originally Posted by herold998 (Post 3338541)
Hey, i was trying to draw some visuals, but i think my viewmatrix is fucked... Am i reading from the correct address?

Code:

struct matrix4x4_t
{
        float m[ 4 ][ 4 ];
};

auto fps_camera = memory.find_camera_object( crypt( "FPS Camera" ) );
auto camera_object = memory.read_chain( fps_camera, { 0x30, 0x18 } );
auto camera_matrix = memory.read<matrix4x4_t>( camera_object + 0xD8 );

for ( int i = 0; i < 4; i++ )
{
        for ( int j = 0; j < 4; j++ )
        {
                std::cout << camera_matrix.m[ i ][ j ] << ", ";
        }
        std::cout << std::endl;
}

my viewmatrix:
https://imgur.com/a/pgSLWpr

it's not 0xD8, it has changed to 0xDC

LoneSurvivor88 6th January 2022 11:31 PM

Turning off auto ram cleaner in settings fixed my problem with invalid memory reads (duh!)

thanks for the help everyone ;)

ofrujaslo 7th January 2022 12:05 AM

2 quick questions:
1: does the door unlocking thingy still work? Heard rumours about it triggering bans (even for reusable keys)
2: Do people only get a frame back if you take off all attachments from an insured gun in a raid? Any other suggestions for maximum carnage/loot denial? :D

Artur1338 7th January 2022 12:05 AM

Is somebody here using silent aim ?
Friend if mine using p2c eft with silent aim claims it's detected although I haven't heard anything yet.

Basically writing direction to achieve silent aim.

Gesendet von meinem IN2013 mit Tapatalk

Heashey 7th January 2022 12:14 AM

Quote:

Originally Posted by ofrujaslo (Post 3338698)
2 quick questions:
1: does the door unlocking thingy still work? Heard rumours about it triggering bans (even for reusable keys)
2: Do people only get a frame back if you take off all attachments from an insured gun in a raid? Any other suggestions for maximum carnage/loot denial? :D

I know there is an external private that has door unlock and they never gotten banned with it, I don't know how they do it all I know is it unlocks all the doors in the map for the player and you can open them. I've never tried making an unlock doors feature so I can't tell you much about it, just that i know that 1 cheat that has it.

ofrujaslo 7th January 2022 12:27 AM

Quote:

Originally Posted by Heashey (Post 3338704)
I know there is an external private that has door unlock and they never gotten banned with it, I don't know how they do it all I know is it unlocks all the doors in the map for the player and you can open them. I've never tried making an unlock doors feature so I can't tell you much about it, just that i know that 1 cheat that has it.

Well, I had the feature a while ago, but heard some warnings. It's simply a case of setting the doorstate.
Anyways, ty. Would like confirmation of someone who knows if doorstate will get you clapped or not :P

krembo 7th January 2022 12:53 AM

Quote:

Originally Posted by Heashey (Post 3338704)
I know there is an external private that has door unlock and they never gotten banned with it, I don't know how they do it all I know is it unlocks all the doors in the map for the player and you can open them. I've never tried making an unlock doors feature so I can't tell you much about it, just that i know that 1 cheat that has it.

It was patched like 1 year ago.
You can open any door but you will get rubber banded once you try to go in the room.

24jared24 7th January 2022 02:34 AM

Quote:

Originally Posted by Artur1338 (Post 3338700)
Is somebody here using silent aim ?
Friend if mine using p2c eft with silent aim claims it's detected although I haven't heard anything yet.

Basically writing direction to achieve silent aim.

Gesendet von meinem IN2013 mit Tapatalk

The way I do silent aim isn't detected and is stupid effective

Quote:

Originally Posted by ofrujaslo (Post 3338698)
2 quick questions:
2: Do people only get a frame back if you take off all attachments from an insured gun in a raid? Any other suggestions for maximum carnage/loot denial? :D

when you insure a gun it insures every part itself so if you just take them all and drop them they will get them back

Artur1338 7th January 2022 08:43 AM

@24jared24
Are you doing it through hooks or just writing the muzzle direction ?

Gesendet von meinem IN2013 mit Tapatalk

cxtgirl 7th January 2022 08:47 AM

Quote:

Originally Posted by ofrujaslo (Post 3338698)
2 quick questions:
1: does the door unlocking thingy still work? Heard rumours about it triggering bans (even for reusable keys)
2: Do people only get a frame back if you take off all attachments from an insured gun in a raid? Any other suggestions for maximum carnage/loot denial? :D

you can just set it to unlock the closest door to the player and theres no chance of any bans and no if they insured the gun they get the attachments back on their own if they are taken off the gun

montroisiemecon 7th January 2022 02:25 PM

Quote:

Originally Posted by ofrujaslo (Post 3338711)
Well, I had the feature a while ago, but heard some warnings. It's simply a case of setting the doorstate.
Anyways, ty. Would like confirmation of someone who knows if doorstate will get you clapped or not :P

you will not be instant banned for opening one door you should not. It will just instantly close the door after you open it

xzackcc 7th January 2022 04:24 PM

another quick question, does bsg calculate something on their end (server) regarding fall damage now?
the function "HandleFall" doesn't look like to take in account when i set the following to 0.f
Code:

localplayer obj] 0x4c8 (physical)] 0xb4 (FallDamageMultiplier)
i barely touch such offsets (i dont like it that ragy, but for lighthouse, falldamage is aids .. ngl), so bare with me here.

NotATrap 7th January 2022 05:31 PM

Quote:

Originally Posted by xzackcc (Post 3339259)
another quick question, does bsg calculate something on their end (server) regarding fall damage now?
the function "HandleFall" doesn't look like to take in account when i set the following to 0.f
Code:

localplayer obj] 0x4c8 (physical)] 0xb4 (FallDamageMultiplier)
i barely touch such offsets (i dont like it that ragy, but for lighthouse, falldamage is aids .. ngl), so bare with me here.

its serversided so changing that will not do shit unless you're in an offline raid iirc

ecthirune 7th January 2022 05:34 PM

Quote:

Originally Posted by xzackcc (Post 3339259)
another quick question, does bsg calculate something on their end (server) regarding fall damage now?
the function "HandleFall" doesn't look like to take in account when i set the following to 0.f
Code:

localplayer obj] 0x4c8 (physical)] 0xb4 (FallDamageMultiplier)
i barely touch such offsets (i dont like it that ragy, but for lighthouse, falldamage is aids .. ngl), so bare with me here.

i think you can do workaround with this:

https://www.unknowncheats.me/forum/3...-post5210.html

xzackcc 7th January 2022 05:36 PM

Quote:

Originally Posted by NotATrap (Post 3339312)
its serversided so changing that will not do shit unless you're in an offline raid iirc

weren't there like 2-3 ppl saying they got no fall dmg working just fine? :thinking: i might be wrong but one guy stated that for sure.

btw, any good external visible check method out yet? i've been messing around with some trajectory and raycast calculations but none of them seem to be working accurately. :/

24jared24 7th January 2022 05:39 PM

Quote:

Originally Posted by Artur1338 (Post 3338943)
@24jared24
Are you doing it through hooks or just writing the muzzle direction ?

Gesendet von meinem IN2013 mit Tapatalk

Not doing either of those. But @Behe gave me the method so up to him if he wants to share


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

MrCrashU 7th January 2022 06:08 PM

Quote:

Originally Posted by xzackcc (Post 3339317)
weren't there like 2-3 ppl saying they got no fall dmg working just fine? :thinking: i might be wrong but one guy stated that for sure.

btw, any good external visible check method out yet? i've been messing around with some trajectory and raycast calculations but none of them seem to be working accurately. :/

was looking into parsing unity maps externally but never got around to it

momopubg 7th January 2022 06:44 PM

did anyone find a counter for scav players how many other scavs they killed in that raid?

xzackcc 7th January 2022 09:02 PM

Quote:

Originally Posted by ecthirune (Post 3339316)
i think you can do workaround with this:

https://www.unknowncheats.me/forum/3...-post5210.html

that actually breaks my knees as soon as drop on the ground .. any workaround for that workaround, lol?
meanwhile im looking through all the other weird functions which seem to be half serversided.

ecthirune 7th January 2022 10:04 PM

Quote:

Originally Posted by xzackcc (Post 3339489)
that actually breaks my knees as soon as drop on the ground .. any workaround for that workaround, lol?

meanwhile im looking through all the other weird functions which seem to be half serversided.

Take grizzly xD
have no idea, I didn't ever try anything like that.. I'm nobish esp-norecoil-unStam runner

Evil Bulldog 8th January 2022 01:22 AM

Quote:

Originally Posted by MaiGuaQQqun (Post 3332404)
For version 0.12.12.11.16415
All Offsets have been verified true.

Code:

//OxygenRestoreRate
namespace _Physical
{
        constexpr auto Stamina = 0x38;
        constexpr auto HandsStamina = 0x40;
        constexpr auto Oxygen = 0x48;
}
//DisableRestoration
namespace _Stamina
{
        constexpr auto Current = 0x48;
        constexpr auto _i_BuffRestoration = 0x50;//(类型 : System.Single)
}


Are these offsets still up to date?
I did some testing and while I can set Player::Physical::Stamina::_current, the same does not apply to HandsStamina and Oxygen.
Getting the pointer to the Stamina object and then writing a float to Stamina+0x48 does the trick, but not for HandsStamina or Oxygen.
I checked the values at HandsStamina+0x48there and they dont seem to correlate with breath/hand stamina.


I also noticed that in the Skills section there is a pretty large gap between WeaponBuffs and AttentionLootSpeed, and I found some old code that mentions stuff like EnduranceBuffJumpCostRed at Skills + 0x28.
Did BSG change anything about those or is there another reason they don't show up in the offsets?

Quote:

Originally Posted by MaiGuaQQqun (Post 3332404)
For version 0.12.12.11.16415
All Offsets have been verified true.
Code:

//WeaponBuffs
        namespace _Skills
        {
                constexpr auto WeaponBuffs = 0x10;// (类型 : System.Collections.Generic.Dictionary<System.Type, System.Collections.Generic.Dictionary<EFT.EBuffId,>>)
                constexpr auto AttentionLootSpeed = 0x150;//增加搜索速度0.02f
                constexpr auto AttentionExamine = 0x158;//增加找到更好战利品的几率+检视速度0.02f
                constexpr auto AttentionEliteLuckySearch = 0x160;//有几率瞬间完成搜索0.5elite
                constexpr auto AttentionEliteExtraLootExp = 0x168;//双倍搜索经验bool
                constexpr auto MagDrillsLoadSpeed = 0x170;//提高弹药装填速度0.6
                constexpr auto MagDrillsUnloadSpeed = 0x178;//提高弹药的卸载速度0.6
                constexpr auto MagDrillsInventoryCheckSpeed = 0x180;//提高使用菜单检查弹匣的速度0.8
                constexpr auto MagDrillsInventoryCheckAccuracy = 0x188;//提高使用菜单检查弹匣的准确性
                constexpr auto MagDrillsInstantCheck = 0x190;//移动到您的库存后立即检查弹匣bool
                constexpr auto MagDrillsLoadProgression = 0x198;//bool
                //[先找Skills然后.替换为+搜索]
                namespace _Value
                {
                        constexpr auto Value = 0x28;
                }
        }



24jared24 8th January 2022 06:18 AM

Quote:

Originally Posted by xzackcc (Post 3339489)
that actually breaks my knees as soon as drop on the ground .. any workaround for that workaround, lol?
meanwhile im looking through all the other weird functions which seem to be half serversided.

Let me know if you find a fix for that. It's fun using this to fly but easy to accidently kill yourself if you ever touch the ground without resetting your fall.

Quote:

Originally Posted by Evil Bulldog (Post 3339647)
Are these offsets still up to date?
I did some testing and while I can set Player::Physical::Stamina::_current, the same does not apply to HandsStamina and Oxygen.
Getting the pointer to the Stamina object and then writing a float to Stamina+0x48 does the trick, but not for HandsStamina or Oxygen.
I checked the values at HandsStamina+0x48there and they dont seem to correlate with breath/hand stamina.


I also noticed that in the Skills section there is a pretty large gap between WeaponBuffs and AttentionLootSpeed, and I found some old code that mentions stuff like EnduranceBuffJumpCostRed at Skills + 0x28.
Did BSG change anything about those or is there another reason they don't show up in the offsets?


Those offsets for stamina are fine. Download Unispect and launch the game without BE to use it. It has all the normal offsets you'll ever need

brehchill 8th January 2022 06:30 AM

Quote:

Originally Posted by MrCrashU (Post 3328212)
Anyone know where the game applies hit punch on damage? Hit a dead end after a few minutes searching but will update if I find out

Did you ever figure out where hit punch is calculated.

ecthirune 8th January 2022 07:04 AM

Quote:

Originally Posted by Evil Bulldog (Post 3339647)
~

strength/stamina/weight skills are serversided, except buffs that you get from them.

xkp95175333 8th January 2022 10:29 AM

yo game_object_manager = ?

ecthirune 8th January 2022 11:20 AM

Quote:

Originally Posted by xkp95175333 (Post 3339876)
yo game_object_manager = ?

game_object_manager = search.

strixxr 8th January 2022 11:28 AM

Is it possible to get ItemName instead of ItemId from item in the container grids?

ecthirune 8th January 2022 11:40 AM

Quote:

Originally Posted by strixxr (Post 3339901)
Is it possible to get ItemName instead of ItemId from item in the container grids?

yes.
Item struct inside grid is literally same, as struct of any item on the ground.
https://prnt.sc/26be6l2

ClassyCode 8th January 2022 11:50 AM

Quote:

Originally Posted by xkp95175333 (Post 3339876)
yo game_object_manager = ?

Current GOM Address: 0x17F8D28

You can find it by using this sig to find a reference
Code:

48 8B ? ? ? ? ? C3 CC CC CC CC CC CC CC CC 48 8B ? ? 48 85
and if you take a look at the disassembly you can find what you're looking for (see below)
https://i.imgur.com/eZW6Z2o.png

Hope this helps, cheers!

hollow 8th January 2022 04:40 PM

Quote:

Originally Posted by xzackcc (Post 3339489)
that actually breaks my knees as soon as drop on the ground .. any workaround for that workaround, lol?
meanwhile im looking through all the other weird functions which seem to be half serversided.

the server uses the last valid on ground position for fall damage calculation

refer to this great drawing:
https://i.imgur.com/FgBXaaz.png

bhehe6813 8th January 2022 05:16 PM

Quote:

Originally Posted by hollow (Post 3340096)
the server uses the last valid on ground position for fall damage calculation

refer to this great drawing:
https://i.imgur.com/FgBXaaz.png

Yeah, you gotta watch your vertical distance. Quite easy to use once you get the hang of it though, the only real danger is when you let yourself fall and you catch yourself and want to continue running without resetting. FYI to reset if people are curious, just write up until the server sends you back to the beginnning location.

ilahigod31 8th January 2022 08:37 PM

[224] vector2_0 : UnityEngine.Vector2
[22C] vector2_1 : UnityEngine.Vector2
[234] vector2_2 : UnityEngine.Vector2

Which one of these for aimbot?

xkp95175333 8th January 2022 08:44 PM

Quote:

Originally Posted by ClassyCode (Post 3339911)
Current GOM Address: 0x17F8D28

You can find it by using this sig to find a reference
Code:

48 8B ? ? ? ? ? C3 CC CC CC CC CC CC CC CC 48 8B ? ? 48 85
and if you take a look at the disassembly you can find what you're looking for (see below)
https://i.imgur.com/eZW6Z2o.png

Hope this helps, cheers!

thank u

MrCrashU 8th January 2022 08:58 PM

Quote:

Originally Posted by brehchill (Post 3339791)
Did you ever figure out where hit punch is calculated.

no sorry, I was distracted

Quote:

Originally Posted by ilahigod31 (Post 3340285)
[224] vector2_0 : UnityEngine.Vector2
[22C] vector2_1 : UnityEngine.Vector2
[234] vector2_2 : UnityEngine.Vector2

Which one of these for aimbot?

22c iirc

xzackcc 8th January 2022 09:26 PM

Quote:

Originally Posted by hollow (Post 3340096)
the server uses the last valid on ground position for fall damage calculation

refer to this great drawing:
https://i.imgur.com/FgBXaaz.png

Quote:

Originally Posted by bhehe6813 (Post 3340128)
Yeah, you gotta watch your vertical distance. Quite easy to use once you get the hang of it though, the only real danger is when you let yourself fall and you catch yourself and want to continue running without resetting. FYI to reset if people are curious, just write up until the server sends you back to the beginnning location.

ty for input. this is what i discovered as well .. i have yet to look for the following or has one of you checked for that?

pepe big drawings
https://i.imgur.com/vrYjgzS.png

cristian151 8th January 2022 09:30 PM

Quote:

Originally Posted by xzackcc (Post 3340326)
ty for input. this is what i discovered as well .. i have yet to look for the following or has one of you checked for that?

pepe big drawings
https://i.imgur.com/vrYjgzS.png

If you go up, you will not take damage, no matter the difference, it's the fall that is causing the damage, so stopping on top of a mountain is ok.


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

xzackcc 8th January 2022 09:32 PM

Quote:

Originally Posted by cristian151 (Post 3340332)
If you go up, you will not take damage, no matter the difference, it's the fall that is causing the damage, so stopping on top of a mountain is ok.

that wouldn't explain how i still took damage from choosing one of the lowest points on lighthouse and got my legs fucked on a mountain like a mile away.

cristian151 8th January 2022 09:36 PM

Quote:

Originally Posted by xzackcc (Post 3340333)
that wouldn't explain how i still took damage from choosing one of the lowest points on lighthouse and got my legs fucked on a mountain like a mile away.

I guess there is a difference too big then, even while going up.

hollow 8th January 2022 09:43 PM

Quote:

Originally Posted by xzackcc (Post 3340326)
ty for input. this is what i discovered as well .. i have yet to look for the following or has one of you checked for that?

pepe big drawings
https://i.imgur.com/vrYjgzS.png

same vertical height is fine, going up is also fine, though you won't go too high before rubberbanding

have you considered you're not writing to the variable quickly enough and slowly falling? that is the issue my friends with an inferior cpu had when i was external.

xkp95175333 9th January 2022 08:33 AM

have recoil ?

Heashey 9th January 2022 08:48 AM

Quote:

Originally Posted by xkp95175333 (Post 3340661)
have recoil ?

?????

xkp95175333 9th January 2022 09:28 AM

Quote:

Originally Posted by Heashey (Post 3340671)
?????

local::WeaponAnim = read<UINT64>(local::local_player + 0x190); //[Class] EFT.Player -> [190] proceduralWeaponAnimation_0x190 : EFT.Animations.ProceduralWeaponAnimation
write<glm::vec3>(local::WeaponAnim + 0x20C, { 0.f, 0.f, 0.f }); //[20C] AimSwayMax : UnityEngine.Vector3


work ?

ecthirune 9th January 2022 11:19 AM

Quote:

Originally Posted by xkp95175333 (Post 3340681)
local::WeaponAnim = read<UINT64>(local::local_player + 0x190); //[Class] EFT.Player -> [190] proceduralWeaponAnimation_0x190 : EFT.Animations.ProceduralWeaponAnimation
write<glm::vec3>(local::WeaponAnim + 0x20C, { 0.f, 0.f, 0.f }); //[20C] AimSwayMax : UnityEngine.Vector3


work ?

check by yourself in game.
Why you asking this questions?

Heashey 9th January 2022 11:38 AM

Quote:

Originally Posted by xkp95175333 (Post 3340681)
local::WeaponAnim = read<UINT64>(local::local_player + 0x190); //[Class] EFT.Player -> [190] proceduralWeaponAnimation_0x190 : EFT.Animations.ProceduralWeaponAnimation
write<glm::vec3>(local::WeaponAnim + 0x20C, { 0.f, 0.f, 0.f }); //[20C] AimSwayMax : UnityEngine.Vector3


work ?

no lol, you set mask to 0 / 1 and it works.

cxtgirl 9th January 2022 02:21 PM

doesnt seem like anything changed in this update apart from the removal of christmas stuff

Xed0s 9th January 2022 03:22 PM

Why mouse Y position from InputManager -> Vector2 (0xC0) returns different value on another PC? My friend have different value but position not changed because it static, wtf? Only fuck up with Y pos :\

EliteProducer 10th January 2022 12:30 AM

What in the world has changed with items? I can't find what's changed, but something forsure has.

MrCrashU 10th January 2022 01:18 AM

Quote:

Originally Posted by EliteProducer (Post 3341227)
What in the world has changed with items? I can't find what's changed, but something forsure has.

pretty vague, wanna elaborate?

vendeta228 10th January 2022 06:58 AM

Tell me what I'm doing wrong



std::string get_player_name() {
uintptr_t profile = DriverAPI.Read<uintptr_t>(entity + 0x10);
if (!profile) return {};
uintptr_t info = DriverAPI.Read<uintptr_t>(profile + 0x28);//Info (type: GClass1042) //GClass doesn't appear unless in Emu.
if (!info)return {};
uintptr_t name = DriverAPI.Read<uintptr_t>(info + 0x10);//Nickname (type: System.String) //15 matches, be more specific.
if (!name)return {};
return read_unicode(name);
}

ecthirune 10th January 2022 07:13 AM

Quote:

Originally Posted by vendeta228 (Post 3341318)
~

0x10 is a int, that are stringSize of nickname.

Nickname itself stored at 0x14.
Use GetUnicode func from 0x14 with stringSize*2 from 0x10 to get proper name.

And ye, since you didn't snow your result and didn't show your read_Unicode i have no idea wtf wrong with your actions.

vendeta228 10th January 2022 02:42 PM

https://ibb.co/S5fq3Hh
https://ibb.co/1sm479z
https://ibb.co/3WcHDf7
Tell me what I'm doing wrong

ecthirune 10th January 2022 02:49 PM

Quote:

Originally Posted by vendeta228 (Post 3341542)

you upload small images. :-D

vendeta228 10th January 2022 03:02 PM

Quote:

Originally Posted by ecthirune (Post 3341548)
you upload small images. :-D

Code:

{

                        uint64_t exit_controller = DriverAPI.Read<uint64_t>(local_game_world.entity + 0x18);
            if (!exit_controller) return false;
                        uint64_t exit_point = DriverAPI.Read<uint64_t>(exit_controller + 0x20);
                        int exit_count = DriverAPI.Read<int>(exit_point + 0x18);
                        if (exit_count <= 0 || !exit_point)
                                return false;
                        constexpr auto BUFFER_SIZE = 24;
                        uint64_t extract_buffer[BUFFER_SIZE];
                        DriverAPI.ReadArr(exit_point + 0x20, extract_buffer, sizeof(uint64_t) * exit_count);
                        for (int i = 0; i < exit_count; i++)
                        {
                                extraction extract;
                                extract.entity = extract_buffer[i];
                                if (!extract.open_extract())
                                        continue;
                                extract.transform = read_chain<uint64_t>(extract.entity, { 0xA8, 0x28, 0x28, 0x10, 0x20 });
                                extract.location = extract.GetBone();
                                uint64_t extract_name = ReadChain<uint64_t>(extract.entity, { 0x60, 0x10 });


                                if (extract_name)
                                {
                                        int32_t nameLength = DriverAPI.Read<int32_t>(extract_name + 0x10);
                                        extract.name = GetUnicodeString(extract_name + 0x14, nameLength);
                                }

                                local_extracts.push_back(extract);
                        }


Code:

for (auto& extract : extracts) {
                                float distance2 = local_player.location.Distance(extract.location);
                                auto clr = settings.m_player_color.get_color_bydist(distance2, 5000.f);
                       

                                        Vector3 screen;
                                        if (world_to_screen(extract.location, screen)) {
                                                if (settings.esp_players_show_distance) {
                                                        const auto dist_text = string::format(xorget("%0.2fm"), distance2);
                                                        Renderer::GetInstance()->draw_text({ screen.x, screen.y, 0 }, dist_text, clr, true, true, Renderer::GetInstance()->m_pFont);
                                                }
                                                const auto name_text = string::format(xorget("%s"), extract.name);
                                                Renderer::GetInstance()->draw_text({ screen.x, screen.y - 10, 0 }, name_text, clr, true, true, Renderer::GetInstance()->m_pFont);

                                               
                                        }

                        }


https://i.ibb.co/pbhCLNt/unknown.png

the bottom line is I'm trying to display the outputs but I find a pallet

ecthirune 10th January 2022 03:23 PM

Quote:

Originally Posted by vendeta228 (Post 3341566)
the bottom line is I'm trying to display the outputs but I find a pallet

This coords (as on your screen) means that your transform function fucked somehow 100%.

I didn't iterate exfils, so can't say anything about offsets.

cxtgirl 10th January 2022 05:11 PM

Quote:

Originally Posted by vendeta228 (Post 3341566)
the bottom line is I'm trying to display the outputs but I find a pallet

extract transform is
Code:

const auto transform = driver->read_chain( extract->address, { 0x10, 0x30, 0x30, 0x8, 0x28 } );

vasterasjontek 11th January 2022 03:57 AM

Anyone that knows what i am doing wrong?
Everything seems to be up to date but i am not able to get item prices
Code:

uintptr_t Slot = driver::read<uintptr_t>(InventoryLogic_Slot + 0x20 + (i * 0x8));
uintptr_t ContainedItem = driver::read<uintptr_t>(Slot + EFT_InventoryLogic_Slot.ContainedItem); //0x38
uintptr_t grids = driver::read<uintptr_t>(ContainedItem + 0x68);
uintptr_t gridscount = driver::read<uintptr_t>(grids + 0x18);
if (gridscount > 0)
{
        uintptr_t grid = driver::read<uintptr_t>(grids + 0x20);
        uintptr_t gridDict = driver::read<uintptr_t>(grid + 0x40);
        uintptr_t dict = driver::read<uintptr_t>(gridDict + 0x10);
        int countItemsInContainer = driver::read<int>(dict + 0x40);
        if (countItemsInContainer > 0)
        {
                uintptr_t entries = driver::read<uintptr_t>(dict + 0x18);
                for (int j = 0; j < countItemsInContainer; j++)
                {
                        uintptr_t itemInContainer = driver::read<uintptr_t>(entries + 0x28 + (0x18 * j));
                        uintptr_t ItemTemplate = driver::read<uintptr_t>(itemInContainer + 0x40);
                        int itemvalue = driver::read<int32_t>(ItemTemplate + 0xC0);
                }
        }
}



All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

ecthirune 11th January 2022 06:06 AM

Quote:

Originally Posted by vasterasjontek (Post 3342022)
Anyone that knows what i am doing wrong?
Everything seems to be up to date but i am not able to get item prices
Code:

uintptr_t Slot = driver::read&lt;uintptr_t&gt;(InventoryLogic_Slot + 0x20 + (i * 0x8));
uintptr_t ContainedItem = driver::read&lt;uintptr_t&gt;(Slot + EFT_InventoryLogic_Slot.ContainedItem); //0x38
uintptr_t grids = driver::read&lt;uintptr_t&gt;(ContainedItem + 0x68);
uintptr_t gridscount = driver::read&lt;uintptr_t&gt;(grids + 0x18);
if (gridscount &gt; 0)
{
uintptr_t grid = driver::read&lt;uintptr_t&gt;(grids + 0x20);
uintptr_t gridDict = driver::read&lt;uintptr_t&gt;(grid + 0x40);
uintptr_t dict = driver::read&lt;uintptr_t&gt;(gridDict + 0x10);
int countItemsInContainer = driver::read&lt;int&gt;(dict + 0x40);
if (countItemsInContainer &gt; 0)
{
uintptr_t entries = driver::read&lt;uintptr_t&gt;(dict + 0x18);
for (int j = 0; j &lt; countItemsInContainer; j++)
{
uintptr_t itemInContainer = driver::read&lt;uintptr_t&gt;(entries + 0x28 + (0x18 * j));
uintptr_t ItemTemplate = driver::read&lt;uintptr_t&gt;(itemInContainer + 0x40);
int itemvalue = driver::read&lt;int32_t&gt;(ItemTemplate + 0xC0);
}
}
}


If you spent 2mins on reading this thread you would know what happens...

Artur1338 11th January 2022 09:45 AM

Did somebody managed to change the brightness in-game so that we can play without night vision goggles in dark maps?

ecthirune 11th January 2022 10:09 AM

Quote:

Originally Posted by Artur1338 (Post 3342175)
Did somebody managed to change the brightness in-game so that we can play without night vision goggles in dark maps?

if you good at reversing you can look here info about weather, this should be helpful:
https://www.unknowncheats.me/forum/3...-post5605.html

cxtgirl 11th January 2022 11:37 AM

Quote:

Originally Posted by Artur1338 (Post 3342175)
Did somebody managed to change the brightness in-game so that we can play without night vision goggles in dark maps?

pretty sure you can do it with the same method you would use for rust fullbright

Artur1338 11th January 2022 11:48 AM

Yeah, I am trying to get TOD_Sky external.
Does somebody know how CE finds other mono objects?
Edit:
CE injects a DLL that directly accesses the monodomain and gets all the info from there. See: https://github.com/cheat-engine/chea...PipeServer.cpp
In Rust, we are able to traverse GameAssymbly sections, but here the GameAssymbly-CSharp.dll is directly loaded by Mono I guess and I haven't found how to get the monodomain and assemblies to iterate.

Also when using CE .NET Info to write to the brightness it crashes the game. Will first try to get the scan for mono klass working and then see further.

cxtgirl 11th January 2022 12:26 PM

Quote:

Originally Posted by Artur1338 (Post 3342246)
Yeah, I am trying to get TOD_Sky external.
Does somebody know how CE finds other mono objects?
Edit:
CE injects a DLL that directly accesses the mono domain and gets all the info from there. See: https://github.com/cheat-engine/chea...PipeServer.cpp
In Rust, we are able to traverse GameAssymbly sections, but here the GameAssymbly-CSharp.dll is directly loaded by Mono I guess and I haven't found how to get the monodomain and assemblies to iterate.

to get TOD_Sky externally you should just be able to iterate the tagged objects list

Quote:

Originally Posted by Artur1338 (Post 3342246)
Yeah, I am trying to get TOD_Sky external.
Does somebody know how CE finds other mono objects?
Edit:
CE injects a DLL that directly accesses the mono domain and gets all the info from there. See: https://github.com/cheat-engine/chea...PipeServer.cpp
In Rust, we are able to traverse GameAssymbly sections, but here the GameAssymbly-CSharp.dll is directly loaded by Mono I guess and I haven't found how to get the monodomain and assemblies to iterate.

to get TOD_Sky externally you should just be able to iterate the tagged objects list

Artur1338 11th January 2022 12:34 PM

@CTXgirl
For me, TOD_Sky is neither in the tagged nor untagged array.
I also tried to scan for objects that contain sky case insensitive without any success.

BukkyTheBaka 11th January 2022 03:03 PM

Quote:

Originally Posted by Artur1338 (Post 3342277)
@CTXgirl
For me, TOD_Sky is neither in the tagged nor untagged array.
I also tried to scan for objects that contain sky case insensitive without any success.

its really easy no need to post 20 messages asking same thing.
call
Code:

        public static TOD_Sky Instance
        {
                get
                {
                        if (TOD_Sky.\uE000.Count != 0)
                        {
                                return TOD_Sky.\uE000[TOD_Sky.\uE000.Count - 1];
                        }
                        return null;
                }
        }

so call get_Instance in TOD_Sky class, then do whatever you want on it

ecthirune 11th January 2022 03:11 PM

Quote:

Originally Posted by BukkyTheBaka (Post 3342373)
its really easy no need to post 20 messages asking same thing.
call
Code:

        public static TOD_Sky Instance
        {
                get
                {
                        if (TOD_Sky.\uE000.Count != 0)
                        {
                                return TOD_Sky.\uE000[TOD_Sky.\uE000.Count - 1];
                        }
                        return null;
                }
        }

so call get_Instance in TOD_Sky class, then do whatever you want on it

he talk about external source.

Artur1338 11th January 2022 03:12 PM

@BukkyTheBaka
Bro I am external how should I call functions? Write shellcode to the game and call C# methods? As I mentioned I don't want to do that and do it externally.

Obv. if I would be internal I would just get the domain and look up the instances directly.

niceone1 11th January 2022 03:47 PM

1 Attachment(s)
Quote:

Originally Posted by Artur1338 (Post 3342277)
@CTXgirl
For me, TOD_Sky is neither in the tagged nor untagged array.
I also tried to scan for objects that contain sky case insensitive without any success.

Code:

Active | 0x2DE86DF8920 | Sky Dome | 7
Component | 0x2DE86DFAEA0 | UnityEngine.Transform
Component | 0x2DE86DFAF90 | TOD_Sky
Component | 0x2DE86DFB100 | TOD_Animation
Component | 0x2DE86DFB270 | TOD_Time
Component | 0x2DE86DFB3E0 | TOD_Weather
Component | 0x2DE86DFB550 | TOD_Components
Component | 0x2DE86DFB6C0 | TOD_Resources

The (active) object is called Sky Dome, it contains the searched TOD_Sky instance.

Code:

2dd4a53fa58 : TOD_Sky
static fields
        0 : list_0 (type: System.Collections.Generic.List<TOD_Sky>)
fields
        98 : int_0 (type: System.Int32)
        9c : ColorSpace (type: TOD_ColorSpaceType)
        a0 : ColorRange (type: TOD_ColorRangeType)
        a4 : SkyQuality (type: TOD_SkyQualityType)
        a8 : CloudQuality (type: TOD_CloudQualityType)
        ac : MeshQuality (type: TOD_MeshQualityType)
        18 : Cycle (type: TOD_CycleParameters)
        20 : World (type: TOD_WorldParameters)
        28 : Atmosphere (type: TOD_AtmosphereParameters)
        30 : Day (type: TOD_DayParameters)
        38 : Night (type: TOD_NightParameters)
        40 : Sun (type: TOD_SunParameters)
        48 : Moon (type: TOD_MoonParameters)
        50 : Stars (type: TOD_StarParameters)
        58 : Clouds (type: TOD_CloudParameters)
        60 : Light (type: TOD_LightParameters)
        68 : Fog (type: TOD_FogParameters)
        70 : Ambient (type: TOD_AmbientParameters)
        78 : Reflection (type: TOD_ReflectionParameters)
        b0 : bool_0 (type: System.Boolean)
        80 : tod_Components_0 (type: TOD_Components)
        88 : tod_Resources_0 (type: TOD_Resources)
        b1 : bool_1 (type: System.Boolean)
        b2 : bool_2 (type: System.Boolean)
        b4 : float_0 (type: System.Single)
        b8 : float_1 (type: System.Single)
        bc : float_2 (type: System.Single)
        c0 : vector3_0 (type: UnityEngine.Vector3)
        cc : vector3_1 (type: UnityEngine.Vector3)
        d8 : vector3_2 (type: UnityEngine.Vector3)
        e4 : vector3_3 (type: UnityEngine.Vector3)
        f0 : vector3_4 (type: UnityEngine.Vector3)
        fc : vector3_5 (type: UnityEngine.Vector3)
        108 : color_0 (type: UnityEngine.Color)
        118 : color_1 (type: UnityEngine.Color)
        128 : color_2 (type: UnityEngine.Color)
        138 : color_3 (type: UnityEngine.Color)
        148 : color_4 (type: UnityEngine.Color)
        158 : color_5 (type: UnityEngine.Color)
        168 : color_6 (type: UnityEngine.Color)
        178 : color_7 (type: UnityEngine.Color)
        188 : color_8 (type: UnityEngine.Color)
        198 : color_9 (type: UnityEngine.Color)
        1a8 : color_10 (type: UnityEngine.Color)
        1b8 : color_11 (type: UnityEngine.Color)
        1c8 : color_12 (type: UnityEngine.Color)
        90 : reflectionProbe_0 (type: UnityEngine.ReflectionProbe)
        1d8 : float_3 (type: System.Single)
        1dc : float_4 (type: System.Single)
        1e0 : float_5 (type: System.Single)
        1e4 : float_6 (type: System.Single)
        1e8 : float_7 (type: System.Single)
        1ec : vector3_6 (type: UnityEngine.Vector3)
        1f8 : vector4_0 (type: UnityEngine.Vector4)
        208 : vector4_1 (type: UnityEngine.Vector4)
        218 : vector4_2 (type: UnityEngine.Vector4)
        228 : vector4_3 (type: UnityEngine.Vector4)
        238 : rotationSpeed (type: System.Single)
        23c : float_10 (type: System.Single)
        240 : float_11 (type: System.Single)
        244 : float_12 (type: System.Single)
        248 : float_13 (type: System.Single)
        24c : quaternion_0 (type: UnityEngine.Quaternion)
        25c : quaternion_1 (type: UnityEngine.Quaternion)

Quote:

Originally Posted by bhehe6813 (Post 3329873)
Okay, took a look for you. First of all, it's not a MinefieldView. I'll give you a little tip, for any of these interactable zones (i.e. place a quest item here, go to this location, extract at this location, etc) are BorderZones. BorderZones are unity object, and these objects such as mines, are baked into the EscapeFromTarkov_Data folder.

One of the BorderZone's components is a transform. The position of this transform is roughly the center of the minefield.

If you're curious how mines are laid out, and how they work, it's quite simple.

BorderZones essentially act as colliders with framework on top to handle events when a player interacts with it (by moving into it). A part of this framework are callbacks, where when the player enters or leaves, it will call your function.

BSG uses these in the Minefield object I believe, it should be FireCoroutine, but you'll also notice Minefield extends from BorderZone as well.

To answer your question, instead iterate BorderZones with then name starting with "MINE_", iterate the BorderZones components (this is easy, search components in this thread), and you'll get the transform. Are you doing this automatically? It should be plenty efficient to do this automatically while the user is loading into the raid and then caching it, but it would lead to a few seconds of lag if they restarted the software, so I hardcode the positions...well I auto-generate them by basically iterating these objects like you are and then just having it output C# syntax lists/dicts/whatever, I do it all in Perl/Python + native mono on sp-tarkov for dumping. Either approach should be fine. You'll also notice what I noticed; there are 40 something mines and only 20 something are ever enabled--you'll want to iterate only active objects.


------------------------------------------------------------------------


Now that the question is out of the way, I would like to talk a little bit more about minefields, now that they are a significant part of one map (Lighthouse). I'm willing to bet that Nikita does not run this code on the server:

<snip>

Thank you for looking into this. I've been pretty busy so I haven't been able to test your ideas until now.

I hooked the IsInTriggerZone function for mines and it seems like the do only get called in an offline raid. That leads me to the conclusion that mines are triggerd serversided and the server does apply the damage to the client. So we cant simply disable them.

Also i am still unable to parse the positions from minefields:
There are no plain EFT.Interactive.BorderZone objects in the game object list. But as you said EFT.Interactive.Minefield does extand EFT.Interactive.BorderZone. So we are searching for components with the type EFT.Interactive.Minefield in the active object list. Than we should be able to just call GetTransform/use our external function to get the transform from the EFT.Interactive.Minefield object (as with exit points, containers, player bones, ...). And thats the part where the story ends. The transform of an EFT.Interactive.Minefield is 0,0,0 or invalid. The same with EFT.Interactive.MinefieldView. I am going to attach a game object dump with all the objects on lighthouse. I am pretty sure that the list is complete and the objects are valid, but i dont know why you should be able to get a valid position from those objects and i am not.

Code:

Component | 0x14297005BF0 | EFT.Interactive.Minefield
Component | 0x14296C0B1C0 | EFT.Interactive.Minefield
Component | 0x142973F5210 | EFT.Interactive.Minefield
Component | 0x142973EE0C0 | EFT.Interactive.Minefield
Component | 0x14426FA9CC0 | EFT.Interactive.Minefield
Component | 0x14426FABB70 | EFT.Interactive.Minefield
Component | 0x14426FC40F0 | EFT.Interactive.Minefield
Component | 0x14426FDB600 | EFT.Interactive.Minefield
Component | 0x14426FF2610 | EFT.Interactive.Minefield
Component | 0x14426FF89C0 | EFT.Interactive.Minefield
Component | 0x14426FF96C0 | EFT.Interactive.Minefield
Component | 0x14427013D60 | EFT.Interactive.Minefield
Component | 0x14427050230 | EFT.Interactive.Minefield
Component | 0x14427056A10 | EFT.Interactive.Minefield
Component | 0x1442706D950 | EFT.Interactive.Minefield
Component | 0x14427091CC0 | EFT.Interactive.Minefield
Component | 0x144270D1EC0 | EFT.Interactive.Minefield
Component | 0x14297058480 | EFT.Interactive.MinefieldView
Component | 0x144209AAD80 | EFT.Interactive.MinefieldView
Component | 0x1429711F5E0 | EFT.Interactive.MinefieldView
Component | 0x144209C5F50 | EFT.Interactive.MinefieldView
Component | 0x142973EE950 | EFT.Interactive.MinefieldView
Component | 0x142973F4AB0 | EFT.Interactive.MinefieldView
Component | 0x144209AAB20 | EFT.Interactive.MinefieldView
Component | 0x144209C8FD0 | EFT.Interactive.MinefieldView
Component | 0x144209DDCF0 | EFT.Interactive.MinefieldView
Component | 0x14426FA0E10 | EFT.Interactive.MinefieldView
Component | 0x14426FAE120 | EFT.Interactive.MinefieldView
Component | 0x14426FF7CC0 | EFT.Interactive.MinefieldView
Component | 0x14427005630 | EFT.Interactive.MinefieldView
Component | 0x1442706B0D0 | EFT.Interactive.MinefieldView
Component | 0x144270744F0 | EFT.Interactive.MinefieldView
Component | 0x144270B2E60 | EFT.Interactive.MinefieldView
Component | 0x144270D1760 | EFT.Interactive.MinefieldView

Edit: The dump is too large, so a screenshot has to be enough for now. The file does contain about 1.179.387 entries (~60MB).

Artur1338 11th January 2022 05:14 PM

@niceone1
As posted above active object doesn't contain any object with Sky in it.
I just dumped the names and got:
https://gist.github.com/Artur1338/34...6e3afbb18c0908

I am iterating the gom at 0x17F8D28] + 0x0] + 0x28 and with 0x20 last active. So basically the same output as when I checked it this morning.

PS: I checked ingame and in the menu.

cxtgirl 11th January 2022 07:36 PM

Quote:

Originally Posted by Artur1338 (Post 3342467)
@niceone1
As posted above active object doesn't contain any object with Sky in it.
I just dumped the names and got:
https://gist.github.com/Artur1338/34...6e3afbb18c0908

I am iterating the gom at 0x17F8D28] + 0x0] + 0x28 and with 0x20 last active. So basically the same output as when I checked it this morning.

PS: I checked ingame and in the menu.

in active objects list there is an object called "Sky Dome" which has a component called "TOD_Sky", this component is how you can access sky stuff

BukkyTheBaka 11th January 2022 07:57 PM

Quote:

Originally Posted by Artur1338 (Post 3342380)
@BukkyTheBaka
Bro I am external how should I call functions? Write shellcode to the game and call C# methods? As I mentioned I don't want to do that and do it externally.

Obv. if I would be internal I would just get the domain and look up the instances directly.

check what function does then... is really simple

niceone1 11th January 2022 08:02 PM

Quote:

Originally Posted by Artur1338 (Post 3342467)
@niceone1
As posted above active object doesn't contain any object with Sky in it.
I just dumped the names and got:
https://gist.github.com/Artur1338/34...6e3afbb18c0908

I am iterating the gom at 0x17F8D28] + 0x0] + 0x28 and with 0x20 last active. So basically the same output as when I checked it this morning.

PS: I checked ingame and in the menu.

You should be ingame to get the object. Also are you playing online or offline when dumping the objects?

montroisiemecon 11th January 2022 08:12 PM

Quote:

Originally Posted by Artur1338 (Post 3342467)
@niceone1
As posted above active object doesn't contain any object with Sky in it.
I just dumped the names and got:
https://gist.github.com/Artur1338/34...6e3afbb18c0908

I am iterating the gom at 0x17F8D28] + 0x0] + 0x28 and with 0x20 last active. So basically the same output as when I checked it this morning.

PS: I checked ingame and in the menu.

which map? online or offline?

Artur1338 11th January 2022 09:07 PM

@montroisiemecon
Factory and offline

cxtgirl 11th January 2022 09:14 PM

Quote:

Originally Posted by Artur1338 (Post 3342614)
@montroisiemecon
Factory and offline

sky dome might not exist on factory, i know for a fact it exists on customs as ive been testing on that

Schokk2016 11th January 2022 09:24 PM

Can you please tell me I just can't get the price / price for loot

herold998 11th January 2022 09:26 PM

Hey,
is optical view matrix still at "FPS Camera" +
Code:

{ 0x70, 0x10, 0x30, 0x18, 0xDC }
Doesnt seem to be working for me.

Ive seen people getting it from a different camera object, but when i read gom i have only one camera object there (last = first) -> "FPS Camera"


All times are GMT. The time now is 12:25 PM.
UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats - [Coding] Escape from Tarkov Reversal, Structs and Offsets

UnKnoWnCheaTs - Multiplayer Game Hacking and Cheats (https://www.unknowncheats.me/forum/index.php)
-   Escape from Tarkov (https://www.unknowncheats.me/forum/escape-from-tarkov/)
-   -   [Coding] Escape from Tarkov Reversal, Structs and Offsets (https://www.unknowncheats.me/forum/escape-from-tarkov/226519-escape-tarkov-reversal-structs-offsets.html)

ecthirune 11th January 2022 09:27 PM

Quote:

Originally Posted by Schokk2016 (Post 3342620)
Can you please tell me I just can't get the price / price for loot

it was removed by bsg.
Get over it. Use 3rd party sites and json extractors.

montroisiemecon 11th January 2022 09:45 PM

Quote:

Originally Posted by Artur1338 (Post 3342614)
@montroisiemecon
Factory and offline

it did not occur to you that possibly, maybe, the fact that you don't see the sky in the list of objects might be potentially linked to the fact that you can't really see the sky on the map
also testing offline mode can sometimes be far from what happens online

ZeusLord 11th January 2022 10:12 PM

Quote:

Originally Posted by Schokk2016 (Post 3342620)
Can you please tell me I just can't get the price / price for loot

tarkov-tools is what you're looking for just parse results from there and use that for ur pricing info just check if market price is 0 if it use highest trader price, etc.

Artur1338 11th January 2022 10:33 PM

Fair enough. Main reason why I wanted to get the TOD_Sky is to set brightness on factory 3 AM raids. I have already night vision but sometimes it gets to bright.

Gesendet von meinem IN2013 mit Tapatalk

SnDiX 11th January 2022 10:42 PM

Quote:

Originally Posted by niceone1 (Post 3342415)
[CODE]snip

if you have the gameobject you should be able to get its position like this, without using a transform:

Code:

    Vector3 GameObject::GetPos()
    {
        uint64_t ptr1 = read<uint64_t>(addr + 0x30);
        uint64_t ptr2 = read<uint64_t>(ptr1 + 0x08);
        uint64_t ptr3 = read<uint64_t>(ptr2+ 0x38);
        Vector3 pos = read<Vector3>(ptr3 + 0x90);

        return pos;
    }


cxtgirl 11th January 2022 10:50 PM

Quote:

Originally Posted by Artur1338 (Post 3342661)
Fair enough. Main reason why I wanted to get the TOD_Sky is to set brightness on factory 3 AM raids. I have already night vision but sometimes it gets to bright.

Gesendet von meinem IN2013 mit Tapatalk

heres some spoonfeed for you want to use it anyway, you have to loop this very very quickly for it to not flicker alot
Code:

const auto gom = driver->read<uintptr_t>( driver->get_module( "UnityPlayer.dll" ).base + 0x17F8D28 );

const auto active_objects = driver->read<std::array<uintptr_t, 2>>( gom + offsetof( game_object_manager, last_active ) );
const auto sky_dome = get_from_list( active_objects[0], active_objects[1], "Sky Dome" );

const auto tod_sky = get_object_component( sky_dome, "TOD_Sky" );

const auto atmosphere = driver->read<uintptr_t>( tod_sky + 0x28 );
driver->write<float>( atmosphere + 0x18, 100.f ); // brightness

examples of getting objects from list and components from objects can be found in this thread

edit: ignore the 100.f i was just testing the limits on it

Artur1338 11th January 2022 11:03 PM

@CTXgirl
Thanks for the pasta but I just checked on Shoreline and changed the in-game time.
As mentioned in https://www.unknowncheats.me/forum/3...-post5605.html

Guess will dig a bit tomorrow and check if Sky exists in online factory and otherwise look for an alternative method to change the brightness. Because I purely need this for factory and reserve, there Sly should exist.

niceone1 12th January 2022 01:04 AM

Quote:

Originally Posted by SnDiX (Post 3342669)
if you have the gameobject you should be able to get its position like this, without using a transform:

Code:

    Vector3 GameObject::GetPos()
    {
        uint64_t ptr1 = read<uint64_t>(addr + 0x30);
        uint64_t ptr2 = read<uint64_t>(ptr1 + 0x08);
        uint64_t ptr3 = read<uint64_t>(ptr2+ 0x38);
        Vector3 pos = read<Vector3>(ptr3 + 0x90);

        return pos;
    }


Yes, the vec3 is also a invalid position for the listed components.

Code:

        const struct UNITY_OBJECT {
                std::vector<DWORD64> transform{ 0x10, 0x30, 0x30, 0x8, 0x28, 0x0 }; // transform
                std::vector<DWORD64> position3D{ 0x10, 0x30, 0x30, 0x8, 0x38, 0x90 }; // vec3
        } unityObject;


TJ888 12th January 2022 01:38 AM

Quote:

Originally Posted by herold998 (Post 3342622)
Hey,
is optical view matrix still at "FPS Camera" +
Code:

{ 0x70, 0x10, 0x30, 0x18, 0xDC }
Doesnt seem to be working for me.

Ive seen people getting it from a different camera object, but when i read gom i have only one camera object there (last = first) -> "FPS Camera"

This has been discussed and answered a number of times already-
https://www.unknowncheats.me/forum/3...-post5290.html

bhehe6813 12th January 2022 04:43 AM

Quote:

Originally Posted by niceone1 (Post 3342743)
Yes, the vec3 is also a invalid position for the listed components.

Code:

        const struct UNITY_OBJECT {
                std::vector<DWORD64> transform{ 0x10, 0x30, 0x30, 0x8, 0x28, 0x0 }; // transform
                std::vector<DWORD64> position3D{ 0x10, 0x30, 0x30, 0x8, 0x38, 0x90 }; // vec3
        } unityObject;


Woods example:

Code:

MinefieldExploder_H
  Children:
    - Minefield_H <--- you want this, this is a unity GameObject
      Components:
        - Transform <--- this is the transform
        - MeshFilter
        - MeshRenderer
        - BoxCollider
        - EFT.Interactive.Minefield <--- notice how this is a component of the unity game object, you don't need this.
  Components:
    - Transform
    - EFT.Interactive.MinefieldView <--- notice how this is a component of the unity game object, you don't need this.

You can however find the transform using the Minefield or MinefieldView if you know how to retrieve the parent's transform.

ctrlnico 12th January 2022 07:06 AM

how did you find the current (Singleton) uint64_t tablePlayerExperience[]?

ecthirune 12th January 2022 08:57 AM

Quote:

Originally Posted by ctrlnico (Post 3342893)
how did you find the current (Singleton) uint64_t tablePlayerExperience[]?

eft.player->playerProfile(0x4B8)->playerInfo(0x0028)->Experience(0x074 int)



this is "old" exp table(1 wipe ago), i didn't checked does it actual for now.
If the question was how to update this table - we grab it from wiki :-D

BukkyTheBaka 12th January 2022 03:45 PM

patched

niceone1 12th January 2022 11:16 PM

Quote:

Originally Posted by ecthirune (Post 3342936)
eft.player->playerProfile(0x4B8)->playerInfo(0x0028)->Experience(0x074 int)



this is "old" exp table(1 wipe ago), i didn't checked does it actual for now.
If the question was how to update this table - we grab it from wiki :-D


This obfuscated class holds a table with the experience/level values. You should be able to find it in Dnspy when you are searching for the string "exp_table".

Code:

                // Token: 0x02000CE1 RID: 3297
                public sealed class GClass1160
                {
                        // Token: 0x04005193 RID: 20883
                        [JsonProperty("exp_table")]
                        public GClass1124.GClass1156.GClass1160.GClass1161[] Table;

                        // Token: 0x04005194 RID: 20884
                        [JsonProperty("mastering1")]
                        public int Mastering1;

                        // Token: 0x04005195 RID: 20885
                        [JsonProperty("mastering2")]
                        public int Mastering2;

                        // Token: 0x02000CE2 RID: 3298
                        public sealed class GClass1161
                        {
                                // Token: 0x04005196 RID: 20886
                                [JsonProperty("exp")]
                                public int Value;
                        }
                }


oq1337 13th January 2022 12:41 AM

my gameworld is saying 0x0 anyone have an idea of why?

MrCrashU 13th January 2022 12:56 AM

Quote:

Originally Posted by oq1337 (Post 3343504)
my gameworld is saying 0x0 anyone have an idea of why?

i left my crystal ball at work, post code

TJ888 13th January 2022 12:58 AM

Quote:

Originally Posted by oq1337 (Post 3343504)
my gameworld is saying 0x0 anyone have an idea of why?

Do you seriously expect someone to give you a solution when you gave 0 means of figuring out what the problem is?

Post your code, show some debug prints, etc. Otherwise, you are on your own to fix it, which should be very simple to solve.

oq1337 13th January 2022 12:59 AM

auto active_objects = memory::read<std::array<uint64_t, 2>>(eft->mem->gom + offsetof(offsets::structs::GameObjectManager, lastActiveObject));
LOG(("Active Object 1 0x%X \n"), active_objects[0]);

LOG(("Active Object 2 0x%X \n"), active_objects[1]);
if (!active_objects[0] || !active_objects[1])
continue;

globals->game_world = globals->GetObjectFromList(active_objects[1], active_objects[0], "GameWorld");
LOG(("GameWorld 0x%X \n"), globals->game_world);
if (!globals->game_world)
continue;

TJ888 13th January 2022 01:01 AM

Quote:

Originally Posted by oq1337 (Post 3343513)
auto active_objects = memory::read<std::array<uint64_t, 2>>(eft->mem->gom + offsetof(offsets::structs::GameObjectManager, lastActiveObject));
LOG(("Active Object 1 0x%X \n"), active_objects[0]);

LOG(("Active Object 2 0x%X \n"), active_objects[1]);
if (!active_objects[0] || !active_objects[1])
continue;

globals->game_world = globals->GetObjectFromList(active_objects[1], active_objects[0], "GameWorld");
LOG(("GameWorld 0x%X \n"), globals->game_world);
if (!globals->game_world)
continue;

We still don't have a crystal ball to know what your "GetObjectFromList" is or what your offsets are, but regardless. Your problem is likely your offsets are wrong for ActiveObjects which have been posted a number of times since they changed with the Unity 2019 update.

oq1337 13th January 2022 01:11 AM

Quote:

Originally Posted by TJ888 (Post 3343514)
We still don't have a crystal ball to know what your "GetObjectFromList" is or what your offsets are, but regardless. Your problem is likely your offsets are wrong for ActiveObjects which have been posted a number of times since they changed with the Unity 2019 update.

Thank you! I didnt know Unity updated as I have been gone for some time now.


All times are GMT. The time now is 12:25 PM.