Вопрос Как использовать prepare unit orders?

Imgui Seller
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2023
Сообщения
609
Реакции
63
в общем я хочу сделать свою полу-ферму мне нужно через prepare unit orders отправлять героя фармить ближайших крипов
вопрос, как мне вообще получить?
LocalEntity->PrepareUnitOrder

и как сделать логику что-бы все время пока шла игра персонаж искал крипов?

попрошу кинуть пример кода, либо наглядное обьяснение что да как сделать :)
 
Так отлетишь сразу же, если будешь ордеры отдавать без работы с курсором. Да и на реплее сразу будет всё понятно.
void PrepareUnitOrders(CDOTAPlayerController* pPlayer, dotaunitorder_t Order, int TargetIndex, Vector* pMovePos, int AbilityIndex, PlayerOrderIssuer_t orderIssuer, CBaseEntity* pIssuer, bool bQueue, bool bShowEffects)
 
Sorry, what? i have the enternal solution for gettin all the entities and iam trying to create the same thing for the exact same reason so iam trying to ask for the preogress
 
в общем я хочу сделать свою полу-ферму мне нужно через prepare unit orders отправлять героя фармить ближайших крипов
вопрос, как мне вообще получить?
LocalEntity->PrepareUnitOrder

и как сделать логику что-бы все время пока шла игра персонаж искал крипов?

попрошу кинуть пример кода, либо наглядное обьяснение что да как сделать :)
C++:
Expand Collapse Copy
using fPrepareUnitOrders = void(*)(
    C_DOTAPlayerController* Controller,
    CDotaUnitOrder Order,
    int EntityHandle,
    void* Vector,
    int AbilityIndex,
    PlayerOrderIssuer_t OrderIssuer,
    C_BaseEntity* PassedUnit,
    OrderQueueBehavior_t Queue,
    bool showEffect
);
C++:
Expand Collapse Copy
void C_DOTABaseAbility::CastTarget(C_BaseEntity* Target, OrderQueueBehavior_t Queue, bool showEffect) noexcept {
    Vector vec{};
    auto Identity1 = Target->GetIdentity();
    auto Identity2 = this->GetIdentity();
    if (Identity1 && Identity2) {
        C_DOTAPlayerController::ProtectedPrepareUnitOrders(
            GameData::LocalController,
            CDotaUnitOrder::DOTA_UNIT_ORDER_CAST_TARGET,
            (Identity1->GetHandle()).index(),
            Target->GetAbsOrigin(),
            (Identity2->GetHandle()).index(),
            PlayerOrderIssuer_t::DOTA_ORDER_ISSUER_CURRENT_UNIT_ONLY,
            GameData::LocalHero,
            Queue,
            showEffect
        );
    }
}
примеры говнокода для каста абилки в таргет через ордер (ну и сама структура ордера вместе с типами, что бы понятнее было)
C++:
Expand Collapse Copy
using fPrepareUnitOrders = void(*)(
    C_DOTAPlayerController* Controller,
    CDotaUnitOrder Order,
    int EntityHandle,
    void* Vector,
    int AbilityIndex,
    PlayerOrderIssuer_t OrderIssuer,
    C_BaseEntity* PassedUnit,
    OrderQueueBehavior_t Queue,
    bool showEffect
);
C++:
Expand Collapse Copy
void C_DOTABaseAbility::CastTarget(C_BaseEntity* Target, OrderQueueBehavior_t Queue, bool showEffect) noexcept {
    Vector vec{};
    auto Identity1 = Target->GetIdentity();
    auto Identity2 = this->GetIdentity();
    if (Identity1 && Identity2) {
        C_DOTAPlayerController::ProtectedPrepareUnitOrders(
            GameData::LocalController,
            CDotaUnitOrder::DOTA_UNIT_ORDER_CAST_TARGET,
            (Identity1->GetHandle()).index(),
            Target->GetAbsOrigin(),
            (Identity2->GetHandle()).index(),
            PlayerOrderIssuer_t::DOTA_ORDER_ISSUER_CURRENT_UNIT_ONLY,
            GameData::LocalHero,
            Queue,
            showEffect
        );
    }
}
примеры говнокода для каста абилки в таргет через ордер (ну и сама структура ордера вместе с типами, что бы понятнее было)
(ProtectedPrepareUnitOrders - функа в которой я каждый ордер чекаю и при надобности меняю положение курсора+камеры через другой ордер)
 

Похожие темы

Назад
Сверху Снизу