на пакетном уровне ничего сложного. От сервера приходит сообщение о том куда движется ползунок, для нас это указание что делать рил или помп. В ответ на это сообщение мы отправляем использование соответствующего скила. Во время завершения рыбалки нам так же приходит сообщение от сервера с результатами. Вот кусок кода обрабатывающий эти сообщения (взят из скрипта товарища NLObP и возможно чуть переделан)
Код:
//FE1E00=ExFishingStart:h(subID)d(ObjectID)d(FishType)d(X)d(Y)d(Z)c(0)c(0)c(isNightLure)c(0)
//FE1F00=ExFishingEnd:h(subID)d(CharID)c(isWin)
//--FE1500=ExFishingStartCombat:h(charOID)d(time)d(HP)b(Fighting)b(LureType)b(isFishDeceptive)
//FE2800=ExFishingHPRegen:h(subID)d(ObjectID)d(Time)d(FishHP)c(HPstop/Rise)c(GoodUse)c(Anim)d(Penalty)c(BarColor)
#$FE: begin
//if Status and (MyOID<>0) then begin
case pck[2] of
//FE1F00=ExFishingEnd:h(charObjtId)b(isWin)
#$1F: begin
//msg.Lines.Add('S>Пакет ExFishingEnd #$FE1F00');
if MyOID=ReadD(4) then begin
gooduse:=0;
isFishing:=false; //сейчас не ловим
if ReadC(8)=1 then begin
msg1('Поймали!');
end else begin
if stop then exit; //нажали кнопку стоп!
msg1('Сорвалась!');
end;
fishin.enabled:=true;
end;
end;
//FE2800=ExFishingHPRegen:h(subID)d(ObjectID)d(Time)d(FishHP)c(HPstop/Rise)c(GoodUse)c(Anim)d(Penalty)c(BarColor)
#$28: begin
//SendMsg2('S>Пакет ExFishingHpRegen #$FE2800');
if MyOID=ReadD(4) then begin
if (pck[16]=#$00) then begin
//SendMsg2('pump');
pumping;
exit;
end;
if (pck[16]=#$01) then begin
//SendMsg2('reel');
reeling;
exit;
end;
end;
end;
end;
//end;
end;
А вообще сам принцип проводимых на пакетном уровне опираций ты можешь посмотреть вот
тут или
тут или
вот мой вариант (в нем поменьше кода будет
)
а самый надежный вариант узнать что там происходит, это взять и посмотреть