Начните вводить название — например, MoreHead, Sodium или PEAK

InjectLib — иконка
Обложка GTFOМод для GTFO

InjectLib

от GTFOModding

Dauda wants to inject things

  • Эпический
  • 42,1 тыс. скачиваний
  • Версия 1.1.0
  • Обновлён 9 марта 2025
  • Не обновлялся больше года
  • Библиотека

О моде InjectLib

InjectLib — мод для GTFO (ГТФО) от автора GTFOModding. Dauda wants to inject things

Его скачали 42,1 тыс. раз: это 39-е место среди модов GTFO в нашем каталоге, редкость — «эпический» (топ-20% по скачиваниям). Мод давно не обновлялся — проверьте совместимость с текущей версией игры, актуальная версия — 1.1.0.

Для работы ему нужны: BepInExPack GTFO.

Полное описание InjectLib

Текст автора на языке оригинала

Features

  • Inject Custom Fields to Il2Cpp type
  • Inject Custom Json fields to Il2Cpp type

Referencing to your plugin

[BepInDependency("GTFO.InjectLib", BepInDependency.DependencyFlags.HardDependency)]
$(GameFolder)\BepInEx\cache


 

Inject Fields

  • Feature to extends il2cpp domain types and inject your own data to it!
//Defining Field is reqired in order to set/get data
FieldInjector.DefineValueField(string fieldName);
FieldInjector.DefineManagedField(string fieldName);

//Set data
bool FieldInjector.TrySetValueField(Il2CppType obj, string fieldName, UnmanagedType value);
bool FieldInjector.TrySetManagedField(Il2CppType obj, string fieldName, ManagedType value);

//Load Saved data
bool FieldInjector.TryGetValueField(Il2CppType obj, string fieldName, out UnmanagedType value);
bool FieldInjector.TryGetManagedField(Il2CppType obj, string fieldName, out ManagedType value);

Inject Custom Jsons to existing il2cpp type (base game json)

//SetConverter alter the whole json parse behaviour
//Useful if you want to fully alter the content of json
JsonInjector.SetConverter(Il2CppJsonReferenceTypeConverter converter);
JsonInjector.SetConverter(Il2CppJsonUnmanagedTypeConverter converter); //Type must be defined on il2cpp domain!!!

//AddHandler is similar to Harmony Postfix without out ref __result param
//You only can get JToken of parsed json and result object
//So you could inject your own field using FieldInjector
JsonInjector.AddHandler(Il2CppJsonReferenceTypeHandler handler);
JsonInjector.AddHandler(Il2CppJsonUnmanagedTypeHandler handler);
public abstract class Il2CppJsonReferenceTypeConverter : INativeJsonConverter where T : Il2CppObjectBase
{
    protected abstract T Read(JToken jToken, T existingValue, JsonSerializer serializer);
    protected abstract void Write(JsonWriter writer, T value, JsonSerializer serializer);
}

public abstract class Il2CppJsonUnmanagedTypeConverter : INativeJsonConverter where T : unmanaged
{
    protected abstract T Read(JToken jToken, T existingValue, JsonSerializer serializer);
    protected abstract void Write(JsonWriter writer, T value, JsonSerializer serializer);
    protected abstract Il2CppSystem.Object ToIl2CppObject(T value);
}

public abstract class Il2CppJsonReferenceTypeHandler : INativeJsonHandler where T : Il2CppObjectBase
{
    public abstract void OnRead(in Il2CppSystem.Object result, in JToken jToken);
}

public abstract class Il2CppJsonUnmanagedTypeHandler : INativeJsonHandler where T : unmanaged
{
    public abstract void OnRead(in Il2CppSystem.Object result, in JToken jToken);
}

Bare example of Json Injection

JsonInjector.SetConverter(new EventTypeConverter());
JsonInjector.AddHandler(new EventDataHandler());
//This converter alter the behaviour of reading/writing eWardenObjectiveEventType enum
//So you could Parse extended enum types!
internal class EventTypeConverter : Il2CppJsonUnmanagedTypeConverter
{
    protected override eWardenObjectiveEventType Read(JToken jToken, eWardenObjectiveEventType existingValue, JsonSerializer serializer)
    {
        int value = 0;
        switch(jToken.Type)
        {
            case JTokenType.Integer:
                value = (int)jToken;
                break;

            case JTokenType.String:
                var str = (string)jToken;
                if (Enum.TryParse(str, ignoreCase: true, out var weeResult))
                {
                    value = (int)weeResult;
                    break;
                }
                else if (Enum.TryParse(str, ignoreCase: true, out var woResult))
                {
                    value = (int)woResult;
                    break;
                }
                return eWardenObjectiveEventType.None;

            default:
                return eWardenObjectiveEventType.None;
        }

        return (eWardenObjectiveEventType)value;
    }

    protected override void Write(JsonWriter writer, eWardenObjectiveEventType value, JsonSerializer serializer)
    {
        writer.WriteValue((int)value);
    }

    protected override Il2CppSystem.Object ToIl2CppObject(eWardenObjectiveEventType value)
    {
        return new Il2CppSystem.Int32() { m_value = (int)value }.BoxIl2CppObject();
    }
}
//This one reads Custom Fields from WardenObjectiveEventData type!
internal class EventDataHandler : Il2CppJsonReferenceTypeHandler
{
    private readonly static JsonSerializerOptions _JsonOption;
    static EventDataHandler()
    {
        _JsonOption = new JsonSerializerOptions(JSON.DefaultSerializerSettings);
        _JsonOption.Converters.Add(new LocalizedTextConverter());
    }

    public override void OnRead(in Il2CppSystem.Object result, in JToken jToken)
    {
        var data = result.Cast();
        if (Enum.IsDefined((WEE_Type)data.Type))
        {
            var extData = JSON.Deserialize(jToken.ToString(), _JsonOption);
            data.SetWEEData(extData);
        }
    }
}

Нужно для работы

В r2modman ставится автоматически

Моды, которым нужен InjectLib

29 в каталоге · показаны самые популярные

ProjectEternal — иконка

ProjectEternal

OBJECTIVE STACK REITERATION UNKNOWN - PROBE DEEPER UNTIL ://ERROR

Легендарный123,7 тыс.Рандауны

EEC H — иконка

EEC H

A modern fork of Flowaria's ExtraEnemyCustomization (EEC), with a few fixes, tweaks, and additions

Эпический64,3 тыс.Библиотека

Zoersel — иконка

Zoersel

This is an extremely difficult outline.

Эпический63,2 тыс.Рандауны

AdvancedWardenObjective — иконка

AdvancedWardenObjective

A modern fork of Flowaria's AdvancedWardenObjective (AWO). Now with 50+ warden events!

Эпический58,5 тыс.Библиотека

Survival — иконка

Survival

://Survival: The Warden’s new order has come down—we fight as one, carve through the darkness, and escape this damnation with our lives intact! Together, we survive!

Редкий30,4 тыс.Рандауны

Occlusion — иконка

Occlusion

A fairly difficult slightly modded but vanilla inspired rundown with its own story. Currently contains 13 levels, with the final level coming soon

Редкий27,4 тыс.Рандауны

Как установить InjectLib

Файл скачивается с официального сервера Thunderstore, без перезаливов и сторонних установщиков

Подробная инструкция для GTFO
  1. Скачайте менеджер модов r2modman (или Gale) и выберите в нём игру GTFO.
  2. Создайте профиль — так моды не смешаются с чистой версией игры.
  3. Найдите «InjectLib» во вкладке Online и нажмите Download — BepInEx и все зависимости подтянутся сами.
  4. Нажмите «Start modded» — игра запустится с модами.
  5. Для мультиплеера всем игрокам нужен одинаковый набор модов: в r2modman профиль можно экспортировать кодом и отправить друзьям.
Вы автор мода? Поставьте ссылку на русское описание

Вставьте значок в описание на Thunderstore, в README или в Discord — русскоязычные игроки сразу попадут на страницу с переводом и инструкцией.

Описание на русском — Модка
Markdown[![Описание на русском — Модка](https://modka.app/badge.png)](https://modka.app/gtfo/gtfomodding-injectlib/)
HTML<a href="https://modka.app/gtfo/gtfomodding-injectlib/"><img src="https://modka.app/badge.png" alt="Описание на русском — Модка" height="44"></a>
Steam (BBCode)[url=https://modka.app/gtfo/gtfomodding-injectlib/]Описание на русском — Модка[/url]

Частые вопросы о InjectLib

Как установить InjectLib?

Скачайте менеджер модов r2modman (или Gale) и выберите в нём игру GTFO. Создайте профиль — так моды не смешаются с чистой версией игры. Найдите «InjectLib» во вкладке Online и нажмите Download — BepInEx и все зависимости подтянутся сами. Нажмите «Start modded» — игра запустится с модами. Для мультиплеера всем игрокам нужен одинаковый набор модов: в r2modman профиль можно экспортировать кодом и отправить друзьям.

Безопасен ли InjectLib?

Файл скачивается с официального сервера Thunderstore, куда его загрузил GTFOModding. Мы не перезаливаем и не изменяем моды.

Нужно ли друзьям ставить InjectLib?

Автор не указал, клиентский это мод или серверный. Безопаснее, чтобы одинаковый набор модов был у всех игроков в лобби: проще всего поделиться профилем r2modman.

Что нужно для работы InjectLib?

Установите вместе с ним: BepInExPack GTFO. В менеджере модов зависимости подтягиваются автоматически.

Когда InjectLib обновлялся последний раз?

9 марта 2025, актуальная версия — 1.1.0. Это больше года назад: перед установкой проверьте, работает ли мод на текущей версии игры.

Похожие моды

Все моды на GTFO
ProjectEternal — иконка

ProjectEternal

OBJECTIVE STACK REITERATION UNKNOWN - PROBE DEEPER UNTIL ://ERROR

Легендарный123,7 тыс.Рандауны

Zoersel — иконка

Zoersel

This is an extremely difficult outline.

Эпический63,2 тыс.Рандауны

Fatal Experiment 2 — иконка

Fatal Experiment 2

The ''Deep End'' of GTFO Modded, are you ready? 25 Expeditions. Custom Guns. 150+ Enemy Variants. Team of 4 recommended.

Эпический58,6 тыс.Рандауны

Legacy — иконка

Legacy

://[OMNI]-Legacy: Superjacent sectors access denied, find a way to disengage lockdown and retrieve ALL resources.

Эпический58,3 тыс.Рандауны

PerfectBoosters — иконка

PerfectBoosters

Change the effect value of boosters to optimal value, and they will never be consumed.

Эпический57,5 тыс.Клиентский

crislibrary — иконка

crislibrary

Asset bundles for rundown Project: Eternal

Эпический38,6 тыс.Ассеты