PDA

Просмотр полной версии : [Информация] Фиксы пакетов скриптами WPF


DrWatsan
18.03.2011, 22:42
Если бот отказывается бегать \ бегает криво(demo_MoveBTL.fsc)
var packetID : char;
begin
if length(_gBuff) < 3 then exit;
if gSys.TrafType <> 2 then exit;
if gSys.isGS = 3 then packetID := #$0F else packetID := #$01;
if (not _gFromServ) and (_gBuff[3] = packetID) then begin
_gOutBuff := _gBuff + HStr('01 00 00 00');
_gOutBuff[1] := chr(ord(_gOutBuff[1])+4);
end;
end.

Если бот неверно определяет хп\цп\мп сопартийцев. Хроники Камаель(FixParty.fsc)
var
PObjectID,PMaxHP,PCurHP,PMaxMP,PCurMP,PMaxCP,PCurC P : Integer;
PName,StatusPacket : String;

BEGIN
if _gFromServ then
begin
if StrCmp(copy(_gbuff,3,1),#$52) then // PartySmallWindowUpdate
begin
ScanPck5(_gbuff,ScanPck5(_gbuff,4,'dsddd',PObjectI D,PName,PCurCP,PMaxCP,PCurHP),'ddd',PMaxHP,PCurMP, PMaxMP,null,null);
StatusPacket := FormatPck('%cdddddddddddddd',[$18,PObjectID,6,$09,PCurHP,$0A,PMaxHP,$0B,PCurMP,$ 0C,PMaxMP,$21,PCurCP,$22,PMaxCP]);
gSys.EnSendC(StatusPacket);
end;
end;
END.

Если бот неверно определяет хп\цп\мп сопартийцев. Хроники Интерлюд(FixParty.fsc)
var
PObjectID,PMaxHP,PCurHP,PMaxMP,PCurMP,PMaxCP,PCurC P : Integer;
PName,StatusPacket : String;

BEGIN
if _gFromServ then
begin
if StrCmp(copy(_gbuff,3,1),#$52) then // PartySmallWindowUpdate
begin
gSys.EnSendC(_gbuff);
ScanPck5(_gbuff,ScanPck5(_gbuff,4,'dsddd',PObjectI D,PName,PCurCP,PMaxCP,PCurHP),'ddd',PMaxHP,PCurMP, PMaxMP,null,null);
StatusPacket := FormatPck('%cdddddddddddddd',[$0E,PObjectID,6,$09,PCurHP,$0A,PMaxHP,$0B,PCurMP,$ 0C,PMaxMP,$21,PCurCP,$22,PMaxCP]);
gSys.EnSendC(StatusPacket);
end;
end;
END.

Скрипт на фикс протокола для хроник Хеллбаунд (FixProtocolVersion.fsc)
///Fix ProtocolVersion for Hellbound
//828->831
begin
if (_gAbsNumPkt = 1) then
if not _gFromServ then
begin
_gOutBuff := _gBuff;
_gOutBuff[4] := #$3f;
_gOutBuff[5] := #$03;
end;
end.

Если бот криво разговаривает с НПЦ или отказывается разговаривать с ними вовсе(FixDialogs.fsc)
begin
if (not _gFromServ) and StrCmp(copy(_gBuff,32,8), HStr('63 00 68 00 61 00 74 00')) then begin
_gOutBuff := _gBuff;
_gOutBuff[32] := #67;
end;
if (not _gFromServ) and StrCmp(copy(_gBuff,32,8), HStr('6C 00 6F 00 74 00 6F 00')) then begin
_gOutBuff := _gBuff;
_gOutBuff[32] := #76;
end;
if (not _gFromServ) and StrCmp(copy(_gBuff,32,8), HStr('73 00 75 00 70 00 70 00')) then begin
_gOutBuff := _gBuff;
_gOutBuff[32] := #83;
_gOutBuff[46] := #77;
end;
if (not _gFromServ) and StrCmp(copy(_gBuff,32,8), HStr('71 00 75 00 65 00 73 00')) then begin
_gOutBuff := _gBuff;
_gOutBuff[32] := #81;
end;
if (not _gFromServ) and StrCmp(copy(_gBuff,32,8), HStr('62 00 75 00 79 00 20 00')) then begin
_gOutBuff := _gBuff;
_gOutBuff[32] := #66;
end;
if (not _gFromServ) and StrCmp(copy(_gBuff,32,8), HStr('73 00 65 00 6C 00 6C 00')) then begin
_gOutBuff := _gBuff;
_gOutBuff[32] := #83;
end;
if (not _gFromServ) and StrCmp(copy(_gBuff,32,8), HStr('74 00 65 00 72 00 72 00')) then begin
_gOutBuff := _gBuff;
_gOutBuff[32] := #84;
_gOutBuff[50] := #83;
end;
if (not _gFromServ) and StrCmp(copy(_gBuff,32,8), HStr('6F 00 6C 00 79 00 6D 00')) then begin
_gOutBuff := _gBuff;
_gOutBuff[32] := #79;
end;
if (not _gFromServ) and StrCmp(copy(_gBuff,32,8), HStr('64 00 65 00 70 00 6F 00')) then begin
_gOutBuff := _gBuff;
_gOutBuff[32] := #68;
_gOutBuff[46] := #80;
end;
if (not _gFromServ) and StrCmp(copy(_gBuff,32,8), HStr('77 00 69 00 74 00 68 00')) then begin
_gOutBuff := _gBuff;
_gOutBuff[32] := #87;
_gOutBuff[48] := #80;
end;
end.