Вот собственно сам скрипт но на многое не обращайте внимания...
Оффтоп
DELPHI Код:
const
fakebotname=['fake1','fake2','fake3','fake4'];
fakebotstatus1=[false,false,false,false];
fakebotstatus2=[false,false,false,false];
excludes=[#$0D,#$D0,#$03,#$A8,#$2E,#$48,#$66];
NotBots=['Nick'];
MaxConections=10;
var
botname: array[0..3] of string;
k,current,lastping:integer;
botlog:TMemo;
procedure Init;
begin
ShowTab;
botlog:=TMemo.Create(UserTab);
botlog.parent:=UserTab;
botlog.align:=alClient;
botlog.ReadOnly:=false;
botlog.ScrollBars:=ssBoth;
botlog.lines.add('BlaBla');
end;
function Findconnected():integer;
var i:integer;
begin
Result:=-1;
for i:=0 to 3 do if (fakebotstatus1[i]=true) and (fakebotstatus2[i]=false) then
begin
Result:=i;
exit;
end;
end;
function GetFakeBotNumber(name:string):integer;
var i:integer;
begin
Result:=-1;
for i:=0 to 3 do if fakebotname[i]=name then Result:=i;
end;
function GetBotNumber(name:string):integer;
var i:integer;
begin
Result:=-1;
for i:=0 to 3 do if botname[i]=name then Result:=i;
end;
function CheckforDC(name:string):boolean;
var i:integer;
begin
Result:=true;
for i:=0 to MaxConections-1 do if (ConnectNameByID(i)=Name) then Result:=false;
end;
begin
botlog.lines.add('Здесь ничего не выводит хотя должно поидее:)');
if FromServer and (pck[1]=#$13) then
begin
if ReadS(6)in NotBots then exit;
if (GetBotNumber(ReadS(6))<>-1) and (fakebotstatus2[GetBotNumber(ReadS(6))]=true) then exit;
SetName(ReadS(6));
if ReadS(6) in fakebotname then begin
buf:=HStr('13 00 00 00 00');
SendToClientEx(ReadS(6));
fakebotstatus1[GetFakeBotNumber(ReadS(6))]:=true;
pck:='';
end else begin
if Findconnected()<>-1 then
begin
botname[Findconnected()]:=ReadS(6);
buf:=pck;
SendToClientEx(fakebotname[Findconnected()]);
fakebotstatus2[Findconnected()]:=true;
end;
end;
end;
botlog.lines.add('Аналогично здесь');
for k:=0 to 3 do begin
botlog.lines.add('Здесь выводит только тогда когда подключается 2 бота, хотя цикл должен повторяеться бесконечно');
if fakebotstatus2[k]=true then begin
botlog.lines.add(vartostr(CheckforDC(botname[k])));
if CheckforDC(fakebotname[k])=true then
begin
botlog.lines.add('фейк оффнулся');
fakebotstatus1[k]:=false;
fakebotstatus2[k]:=false;
buf:=#$7E;
SendToClientEx(botname[k]);
botname[k]:='';
continue;
end;
if CheckforDC(botname[k])=true then
begin
botlog.lines.add('бот оффнулся');
fakebotstatus1[k]:=false;
fakebotstatus2[k]:=false;
buf:=#$7E;
SendToClientEx(fakebotname[k]);
botname[k]:='';
continue;
end;
if FromClient and (ConnectName=botname[k]) and (pck[1] in Excludes) then pck:='';
if FromServer and (ConnectName=botname[k]) then begin
if pck[1]=#$15 then botname[k]:=ReadS(2);
buf:=pck;
SendToClientEx(fakebotname[k]);
end;
if FromClient and (ConnectName=fakebotname[k]) then begin
buf:=pck;
SendToServerEx(botname[k]);
pck:='';
end;
if FromServer and (ConnectName=fakebotname[k]) then begin
if pck[1]=#$D3 then begin
buf:=#$A8;
WriteD(ReadD(2));
WriteD(1);
WriteD(1433);
SendToServerEx(fakebotname[k]);
end;
pck:='';
end;
end;
end;
end.
Интересует только то почему не выполняется строчка
Код:
begin
botlog.lines.add('Здесь ничего не выводит хотя должно поидее:)');
после первого begina
и
Код:
for k:=0 to 3 do begin
botlog.lines.add('Здесь выводит только тогда когда подключается 2 бота, хотя цикл должен повторяеться бесконечно по идее');
Скрипт вообще я делаю для обхода защиты ЛС. Чтото вроде FakeLS скрипта.
Его смысл заключается в том что в л2валкер конектится к фейк серверу, где нет никакой защиты до выбора персонажа. А клиент конектится к серверу с защитой до выбора персонажа. Потом скрипт просто перенаправляет трафик клиента в бот а трафик бота (тоесть все его действия) в клиент. И получается что л2 валкер управляет клиентом.
Ну после того как я заставлю скрипт работать
я просто сделаю функцию отключения клиента и получиться обычный бот
Кто знает просветите плз почему могут не выполняться те команды что я написал... А то у меня мозг кипит