Какую функцию использует клиент(ruoff, essence) для отправки пакета включения/выключения системы автофарма? Функция uNetworkHandler::sendPacket не задействуется при этом.
				
			Посмотрите видео ниже, чтобы узнать, как установить наш сайт в виде веб-приложения на главном экране.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
It is used through GameServerPackets. The one you are looking for is called "isFarmActivate()" in my source.
Посмотреть вложение 46869
This is in the source/core/java. Each of the WriteH, WriteC, WriteD things are basically the different elements/building blocks of the packet, and writeImpl() is the constructor.Не могу найти. Это в engine.dll?
Это не то что мне нужно. Я ищу функцию В КЛИЕНТЕ которая отправляет пакет на сервер. Все пакеты отправляются с помощю sendPacket, кроме автофарма. Я вижу пакет через Wireshark, но не вижу в sendPacket. Они придумали что-то новое?This is in the source/core/java. Each of the WriteH, WriteC, WriteD things are basically the different elements/building blocks of the packet, and writeImpl() is the constructor.

Они придумали функцию отправки структуры.Это не то что мне нужно. Я ищу функцию В КЛИЕНТЕ которая отправляет пакет на сервер. Все пакеты отправляются с помощю sendPacket, кроме автофарма. Я вижу пакет через Wireshark, но не вижу в sendPacket. Они придумали что-то новое?
native final function UpdateAutoplaySetting(AutoplaySettingData Settings);struct AutoplaySettingData
{
    var bool IsAutoPlayOn;
    var bool IsPickupOn;
    var EAutoNextTargetMode NextTargetMode;
    var bool IsNearTargetMode;
    var int HPPotionPercent;
    var int HPPetPotionPercent;
    var bool IsMannerModeOn;
    var bool IsClientRequest;
    var byte MacroIndex;
};Спасибо. Есть RequestExAutoplaySetting и ExAutoplaySetting. По всей видимости, одна get, другая set. Есть информация по параметрам?Они придумали функцию отправки структуры.
C#:native final function UpdateAutoplaySetting(AutoplaySettingData Settings);
C#:struct AutoplaySettingData { var bool IsAutoPlayOn; var bool IsPickupOn; var EAutoNextTargetMode NextTargetMode; var bool IsNearTargetMode; var int HPPotionPercent; var int HPPetPotionPercent; var bool IsMannerModeOn; var bool IsClientRequest; var byte MacroIndex; };
function OnRegisterEvent()
{
    RegisterEvent(EV_GameStart);
    RegisterEvent(EV_Restart);
    RegisterEvent(EV_AutoplaySetting);
    RegisterEvent(EV_NextTargetModeChange);
    RegisterEvent(EV_OptionHasApplied);
    RegisterEvent(EV_CounterAttack);
    RegisterEvent(EV_ToggleCombatMode);
}
...
function OnEvent (int Event_ID, string param)
{
    if ( getInstanceUIData().getIsLiveServer() )
        return;
    switch (Event_ID)
    {
        case EV_GameStart:
            initAll();
            break;
        case EV_Restart:
            bActivateAll = False;
            nCombatOnOff = 0;
            setCombatTooltip();
            Autotarget_updateCombatButton();
            Autotarget_Init();
            break;
        case EV_AutoplaySetting:
            Debug("EV_AutoplaySetting" @ param);
            AutoplaySettingHandler(param);
            break;
        case EV_NextTargetModeChange:
        case EV_OptionHasApplied:
            NextTargetModeHandler();
            break;
        case EV_CounterAttack:
            if ( autotarget_bUseAutoTarget )
                requestAutoPlay(False);
            break;
        case EV_ToggleCombatMode:
            ParseInt(param,"OnOff",nCombatOnOff);
            setCombatTooltip();
            Autotarget_updateCombatButton();
            break;
    }
}
...
function AutoplaySettingHandler (string param)
{
    local int nIsAutoPlayOn;
    local int nNextTargetMode;
    local int nIsNearTargetMode;
    local int nIsPickupOn;
    local int nHPPotionPercent;
    local int nIsMannerModeOn;
    local int nHPPetPotionPercent;
    ParseInt(param,"IsPickupOn",nIsPickupOn);
    ParseInt(param,"IsAutoPlayOn",nIsAutoPlayOn);
    ParseInt(param,"NextTargetMode",nNextTargetMode);
    ParseInt(param,"IsNearTargetMode",nIsNearTargetMode);
    ParseInt(param,"HPPotionPercent",nHPPotionPercent);
    ParseInt(param,"HPPetPotionPercent",nHPPetPotionPercent);
    ParseInt(param,"IsMannerModeOn",nIsMannerModeOn);
    autotarget_bUseAutoTarget = numToBool(nIsAutoPlayOn);
    autotarget_bShortTarget = numToBool(nIsNearTargetMode);
    autotarget_bIsPickupOn = numToBool(nIsPickupOn);
    autotarget_bIsContinentModeOn = numToBool(nIsContinentModeOn);
    autotarget_nHPPotionPercent = nHPPotionPercent;
    autotarget_nHPPetPotionPercent = nHPPetPotionPercent;
    updateElements();
    if ( nIsAutoPlayOn > 0 )
        CallGFxFunction("ExpBar","AutoCamera_State","state=OnAutoPlay");
    else
        CallGFxFunction("ExpBar","AutoCamera_State","state=OffAutoPlay");
}
...
function requestAutoPlay (bool bUseAutoTarget, optional int nHPPotionPercent, optional int nHPPetPotionPercent)
{
    local AutoplaySettingData pAutoplaySettingData;
    autotarget_nTargetMode = GetNextTargetModeOption();
    pAutoplaySettingData.IsAutoPlayOn = bUseAutoTarget;
    pAutoplaySettingData.IsPickupOn = autotarget_bIsPickupOn;
    pAutoplaySettingData.NextTargetMode = autotarget_nTargetMode;
    pAutoplaySettingData.IsNearTargetMode = autotarget_bShortTarget;
    pAutoplaySettingData.IsContinentModeOn = autotarget_bIsContinentModeOn;
    if ( nHPPotionPercent > 0 )
        pAutoplaySettingData.HPPotionPercent = nHPPotionPercent;
    else
        pAutoplaySettingData.HPPotionPercent = autotarget_nHPPotionPercent;
    if ( nHPPetPotionPercent > 0 )
        pAutoplaySettingData.HPPetPotionPercent = nHPPetPotionPercent;
    else
        pAutoplaySettingData.HPPetPotionPercent = autotarget_nHPPetPotionPercent;
    UpdateAutoplaySetting(pAutoplaySettingData);
}Думаю в клиенте это реализовано иначе, так как функция используется для отправки структур не только касающихся autofarm, в частности MagicLampGame, но спасибо за помощьC#:function OnRegisterEvent() { RegisterEvent(EV_GameStart); RegisterEvent(EV_Restart); RegisterEvent(EV_AutoplaySetting); RegisterEvent(EV_NextTargetModeChange); RegisterEvent(EV_OptionHasApplied); RegisterEvent(EV_CounterAttack); RegisterEvent(EV_ToggleCombatMode); } ... function OnEvent (int Event_ID, string param) { if ( getInstanceUIData().getIsLiveServer() ) return; switch (Event_ID) { case EV_GameStart: initAll(); break; case EV_Restart: bActivateAll = False; nCombatOnOff = 0; setCombatTooltip(); Autotarget_updateCombatButton(); Autotarget_Init(); break; case EV_AutoplaySetting: Debug("EV_AutoplaySetting" @ param); AutoplaySettingHandler(param); break; case EV_NextTargetModeChange: case EV_OptionHasApplied: NextTargetModeHandler(); break; case EV_CounterAttack: if ( autotarget_bUseAutoTarget ) requestAutoPlay(False); break; case EV_ToggleCombatMode: ParseInt(param,"OnOff",nCombatOnOff); setCombatTooltip(); Autotarget_updateCombatButton(); break; } } ... function AutoplaySettingHandler (string param) { local int nIsAutoPlayOn; local int nNextTargetMode; local int nIsNearTargetMode; local int nIsPickupOn; local int nHPPotionPercent; local int nIsMannerModeOn; local int nHPPetPotionPercent; ParseInt(param,"IsPickupOn",nIsPickupOn); ParseInt(param,"IsAutoPlayOn",nIsAutoPlayOn); ParseInt(param,"NextTargetMode",nNextTargetMode); ParseInt(param,"IsNearTargetMode",nIsNearTargetMode); ParseInt(param,"HPPotionPercent",nHPPotionPercent); ParseInt(param,"HPPetPotionPercent",nHPPetPotionPercent); ParseInt(param,"IsMannerModeOn",nIsMannerModeOn); autotarget_bUseAutoTarget = numToBool(nIsAutoPlayOn); autotarget_bShortTarget = numToBool(nIsNearTargetMode); autotarget_bIsPickupOn = numToBool(nIsPickupOn); autotarget_bIsContinentModeOn = numToBool(nIsContinentModeOn); autotarget_nHPPotionPercent = nHPPotionPercent; autotarget_nHPPetPotionPercent = nHPPetPotionPercent; updateElements(); if ( nIsAutoPlayOn > 0 ) CallGFxFunction("ExpBar","AutoCamera_State","state=OnAutoPlay"); else CallGFxFunction("ExpBar","AutoCamera_State","state=OffAutoPlay"); } ... function requestAutoPlay (bool bUseAutoTarget, optional int nHPPotionPercent, optional int nHPPetPotionPercent) { local AutoplaySettingData pAutoplaySettingData; autotarget_nTargetMode = GetNextTargetModeOption(); pAutoplaySettingData.IsAutoPlayOn = bUseAutoTarget; pAutoplaySettingData.IsPickupOn = autotarget_bIsPickupOn; pAutoplaySettingData.NextTargetMode = autotarget_nTargetMode; pAutoplaySettingData.IsNearTargetMode = autotarget_bShortTarget; pAutoplaySettingData.IsContinentModeOn = autotarget_bIsContinentModeOn; if ( nHPPotionPercent > 0 ) pAutoplaySettingData.HPPotionPercent = nHPPotionPercent; else pAutoplaySettingData.HPPotionPercent = autotarget_nHPPotionPercent; if ( nHPPetPotionPercent > 0 ) pAutoplaySettingData.HPPetPotionPercent = nHPPetPotionPercent; else pAutoplaySettingData.HPPetPotionPercent = autotarget_nHPPetPotionPercent; UpdateAutoplaySetting(pAutoplaySettingData); }
На практике выяснилось что RequestExAutoplaySetting и ExAutoplaySetting не работают. Используется только последняяСпасибо. Есть RequestExAutoplaySetting и ExAutoplaySetting. По всей видимости, одна get, другая set. Есть информация по параметрам?
int __thiscall RequestExAutoplaySetting(int **this, int);
char __cdecl ExAutoplaySetting(int, int);
В конечном счете все вызывают альтернативу sendPacket, которая собирает и шифрует пакет: char __thiscall uNetworkHandler::fnc(int *this, int, int, int)
Понял. Тоже так думал, но меня сбил с толку последний char. Думал там какое-то выравнивание есть. А тот что unknown_1 это не NextTargetMode, он прям над ним. Я все проюзал, так и не понял для чего он.там где у тебя always 0 это не верный тип выше. Нужно для хп не char а int ( 4 char ).
EAutoNextTargetMode NextTargetMode;
bool IsNearTargetMode;
int HPPotionPercent;
int HPPetPotionPercent;
bool IsMannerModeOn;
