• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

Исходник Восход, телепорт по мостам.

Пользователь
Пользователь
Статус
Оффлайн
Регистрация
13 Май 2023
Сообщения
245
Реакции
30
Вот в некоторых "приватках" наблюдаю такую функцию, как телепорт щита на Восходе.
Каждый мост своя кнопка. В итоге надо задействовать три кнопки.
А что мешает задействовать одну кнопку на все три моста?
Наверно знание!!!!

1. Получить имя карты.
2. Получить анимацию шита в руках.
3. Надо собрать позиции куда надо сделать ТП щита.
4. Получить свою позицию.
5. Сделать расчет, какой мост ближе всего.
6. Сделать ТП к нему.

Нам понадобиться:
1. Название карты.
2. Название своей анимации.
3. Нажатие одной кнопки.

Координаты трех мостов.
C++:
Expand Collapse Copy
static std::vector < Matrix34 > Bridge =
{

    Matrix34(
        -0.999781f, -0.020914f, 0.000000f, 675.947998f,
                0.020914f, -0.999781f, 0.000000f, 707.303223f,
                0.000000f, 0.000000f, 1.000000f, 46.875000f),

    Matrix34(
                -0.998709f, -0.050797f, 0.000000f, 857.857910f,
                0.050797f, -0.998709f, 0.000000f, 1345.026367f,
                0.000000f, 0.000000f, 1.000000f, 75.455124f),

    Matrix34(
                -0.040599f, 0.999175f, 0.000000f, 1810.050659f,
                -0.999175f, -0.040599f, 0.000000f, 424.748077f,
                -0.000000f, 0.000000f, 1.000000f, 95.510071f)
};

C++:
Expand Collapse Copy
struct sTarget
{
    FLOAT distance;
    INT PlayerID;
    IEntity* pEntity;
    Matrix34 Pos;
    bool operator<(sTarget obj)
    {
        return (distance < obj.distance);
    }
};

sTarget pDist;
std::vector<sTarget> vector_pDist;
Не забываем очищать наш вектор. vector_pDist.clear();

C++:
Expand Collapse Copy
if (strstr(GetLevelName, "survival/japan/japan_base"))// Получаем название карты
    {
        if (strstr(GetAnimation, "_Carrible"))// Получаем имя щиты в руках
        {
// рассчитываем расстояние между мостом и своим положение
// Записываем координаты трех мостов, начиная с индекса первого моста, который равен 0.
            pDist.distance = CalcDistance(mEntity->GetPos(), Bridge[0].GetPos());//Расчет расстояния ко мне от моста
            pDist.PlayerID = 0;
            pDist.Pos = Bridge[0];
            vector_pDist.push_back(pDist);

            pDist.distance = CalcDistance(mEntity->GetPos(), Bridge[1].GetPos());//Расчет расстояния ко мне от моста
            pDist.PlayerID = 1;
            pDist.Pos = Bridge[1];
            vector_pDist.push_back(pDist);

            pDist.distance = CalcDistance(mEntity->GetPos(), Bridge[2].GetPos());//Расчет расстояния ко мне от моста
            pDist.PlayerID = 2;
            pDist.Pos = Bridge[2];
            vector_pDist.push_back(pDist);

            std::sort(vector_pDist.begin(), vector_pDist.end());

            if (!vector_pDist.empty())
            {
                if (vector_pDist.front().distance < 9999.f)
                {
//Определили который ближе к нам. К нему и делаем телепорт с щиотом вруках.
                        mEntity->SetWorldPos(vector_pDist.front().Pos);
                }
            }
        }
    }
 
Последнее редактирование:
Вот в некоторых "приватках" наблюдаю такую функцию, как телепорт щита на Восходе.
Каждый мост своя кнопка. В итоге надо задействовать три кнопки.
А что мешает задействовать одну кнопку на все три моста?
Наверно знание!!!!

1. Получить имя карты.
2. Получить анимацию шита в руках.
3. Надо собрать позиции куда надо сделать ТП щита.
4. Получить свою позицию.
5. Сделать расчет, какой мост ближе всего.
6. Сделать ТП к нему.

Нам понадобиться:
1. Название карты.
2. Название своей анимации.
3. Нажатие одной кнопки.

Координаты трех мостов.
C++:
Expand Collapse Copy
static std::vector < Matrix34 > Bridge =
{

    Matrix34(
        -0.999781f, -0.020914f, 0.000000f, 675.947998f,
                0.020914f, -0.999781f, 0.000000f, 707.303223f,
                0.000000f, 0.000000f, 1.000000f, 46.875000f),

    Matrix34(
                -0.998709f, -0.050797f, 0.000000f, 857.857910f,
                0.050797f, -0.998709f, 0.000000f, 1345.026367f,
                0.000000f, 0.000000f, 1.000000f, 75.455124f),

    Matrix34(
                -0.040599f, 0.999175f, 0.000000f, 1810.050659f,
                -0.999175f, -0.040599f, 0.000000f, 424.748077f,
                -0.000000f, 0.000000f, 1.000000f, 95.510071f)
};

C++:
Expand Collapse Copy
struct sTarget
{
    FLOAT distance;
    INT PlayerID;
    IEntity* pEntity;
    Matrix34 Pos;
    bool operator<(sTarget obj)
    {
        return (distance < obj.distance);
    }
};

C++:
Expand Collapse Copy
if (strstr(GetLevelName, "survival/japan/japan_base"))// Получаем название карты
    {
        if (strstr(GetAnimation, "_Carrible"))// Получаем имя щиты в руках
        {
// рассчитываем расстояние между мостом и своим положение
// Записываем координаты трех мостов, начиная с индекса первого моста, который равен 0.
            pDist.distance = CalcDistance(mEntity->GetPos(), Bridge[0].GetPos());//Расчет расстояния ко мне от моста
            pDist.PlayerID = 0;
            pDist.Pos = Bridge[0];
            vector_pDist.push_back(pDist);

            pDist.distance = CalcDistance(mEntity->GetPos(), Bridge[1].GetPos());//Расчет расстояния ко мне от моста
            pDist.PlayerID = 1;
            pDist.Pos = Bridge[1];
            vector_pDist.push_back(pDist);

            pDist.distance = CalcDistance(mEntity->GetPos(), Bridge[2].GetPos());//Расчет расстояния ко мне от моста
            pDist.PlayerID = 2;
            pDist.Pos = Bridge[2];
            vector_pDist.push_back(pDist);

            std::sort(vector_pDist.begin(), vector_pDist.end());

            if (!vector_pDist.empty())
            {
                if (vector_pDist.front().distance < 9999.f)
                {
//Определили который ближе к нам. К нему и делаем телепорт с щиотом вруках.
                        mEntity->SetWorldPos(vector_pDist.front().Pos);
                }
            }
        }
    }
Считаю что так реализовывать полный бред, используя вектора и имена анимаций и миссий, а чекать дистанцию от актора до координат телепортации ещё глупее. Проверку на щит в руках можно реализовать не только по его имени, а задавать координаты для телепортации можно в зависимости от индекса уровня миссии. Как буду у ПК скину реализацию.
 
Считаю что так реализовывать полный бред, используя вектора и имена анимаций и миссий, а чекать дистанцию от актора до координат телепортации ещё глупее. Проверку на щит в руках можно реализовать не только по его имени, а задавать координаты для телепортации можно в зависимости от индекса уровня миссии. Как буду у ПК скину реализацию.
Очень заинтересован в Вашей реализации, буду ждать.
Что было под руками, тем и реализовал.
 
Очень заинтересован в Вашей реализации, буду ждать.
Что было под руками, тем и реализовал.
Ты реально хуеты наделал


C++:
Expand Collapse Copy
if (!imports::StrCmp(pEntityClass, xc("PickUpShield"))) {
                Math::Vec3 tpPos = Math::typeZero::ZERO;

                if (imports::StrStr(pEntityName, xc("S00_PickUpShield_"))) {
                    if (pEntity->GetPos().GetDistance(pVievCam) <= 1.f) {
                        tpPos = { 674.915405f, 706.425842f, 46.875000f };
                    }
                }
                if (imports::StrStr(pEntityName, xc("S01_ACT2_SHIELD_2_"))) {
                    if (pEntity->GetPos().GetDistance(pVievCam) <= 1.f) {
                        tpPos = { 855.9778442f, 1346.8364258f, 75.4551239f };
                    }
                }
                if (imports::StrStr(pEntityName, xc("S02_PickUpShield_"))) {
                    if (pEntity->GetPos().GetDistance(pVievCam) <= 1.f) {
                        tpPos = { 1809.648926f, 424.261902f, 95.510071f };
                    }
                }

                if (tpPos.x != Math::typeZero::ZERO) {
                    if (Helpers::KeyPressed(Flags::EDeviceId::eDI_Keyboard, Flags::EKeyId::eKI_Z)) {
                        Hits::Clear();

                        LocActor->GetEntity()->SetLocalPos(tpPos);
                        LocActor->GetCurrentItem()->GetWeapon()->MeleeAttack();
                    }
                    tpPos = Math::typeZero::ZERO;
                    return;
                }
}

Таким образом софтецкий сам определяет мост, при нажатии на Z он тпшит щит в нужное место. Так что твой код - мусор
 
Ты реально хуеты наделал
О да. Ты тру гений, я согласен.
Сука, посмотри на реализацию моего и своего кода. Ничего не смущает?

Если такой гений, то какого хрена не публикуешь свои наработки????

Yesgoter
 
Последнее редактирование:
О да. Ты тру гений, я согласен.
Сука, посмотри на реализацию моего и своего кода. Ничего не смущает?

Если такой гений, то какого хрена не публикуешь свои наработки????
бро ты красава. навел суеты
 
капец, налетели на человека который хотя бы что то даёт
 
Так что твой код - мусор
Так твой тоже дерьмо, да и не твой он, я ещё эту реализацию около года кидал кому-то скрином. А использовать строки в интернале в 2024 - зашквар! Темболее когда слит PDB и можно наглядно изучить как работает игра и реализовать такие функи не составит труда...
 
Так твой тоже дерьмо, да и не твой он, я ещё эту реализацию около года кидал кому-то скрином. А использовать строки в интернале в 2024 - зашквар! Темболее когда слит PDB и можно наглядно изучить как работает игра и реализовать такие функи не составит труда...
А я сказал, что это мой код? Я просто скинул более легкий варик
 
Назад
Сверху Снизу