Какую функцию использует клиент(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;