Перейти к содержанию

Новые функции WPF Multi_Interlude.fsc


Рекомендуемые сообщения

Выкладываю допиленный Multi_Interlude.fsc

Новые плюшки

  1. Html Парсинг, нумеруем строки
  2. Кастомные команды .exp on .exp off
  3. /unstuck из скриптов
  4. Команда .tele парсинг телепортов из ALT+B
  5. Фикс /invite теперь валкер отправляет инвайт даже если персонажа нет в зоне видимости
  6. Реализовал автопринятие пати если персонажа нет в зоне видимости
  7. Автоматическое использование сосок как в клиенте
  8. Фикс бесконечного использования Death Penalty
  9. Реализована функция покупки из .buy в L2Walker

Установка

Заменить Multi_Interlude.fsc на новый в папке l2walker\WPF\wpsc

 

Как использовать автопринятие в пати

 

Как и раньше :) Просто вписывайте ники в стандартный интерфейс L2Walker вкладка Party Settings > Auto Accept Invites:Name

Теперь работает когда персонаж вне зоны видимости (Спасибо @AIMBOT за наводку)

Пример использования команды .tele

Quote

SAY(.tele)
delay(1000)
DLGSEL([ Города \ Деревни ])
DELAY(1000)
DLGSEL([ Giran ])
DELAY(1000)
DLGSEL(Broadcasting Tower / Center)

Expand  

 

Пример использования /unstuck

Quote

SAY(/unstuck)

 

Пример использования автоматических сосок

 

.autoss ssd 1 - включит Soulshot (D-grade)

.autoss ssd 0 - выключит Soulshot (D-grade)

.autoss bssd 1 - Blessed Spiritshot (D-grade)

.autoss bssd 0 - Blessed Spiritshot (D-grade)

 

.autoss ssc 1 - включит Soulshot (C-grade)

.autoss ssc 0 - выключит Soulshot (C-grade)

.autoss bssc 1 - Blessed Spiritshot (C-grade)

.autoss bssc 0 - Blessed Spiritshot (C-grade)

 

Весь перечень ssn ssd ssc ssb ssa sss bssn bssd bssc bssb bsss 1 включить 0 выключить

 

Пример использования автоматической покупки

Quote

SAY(.buy)
delay(500)
SAY(buy 40 1)

40 - порядок итема из окна .buy

1 - количество

 

команда buy 1 5 купит 5 банок маны

команда buy 40 1 купит 1 свиток пинальки S грейда

 

Скачать Multi_Interlude.fsc версия 1.5 https://drive.google.com/file/d/13bB4gWN_58fi44u2V22yRPXEOcvuBp4q/view?usp=sharing

 

Quote

//Скрипт для Interlude
//Allcheats.ru
//Переделал Fallen.EnVy (Адаптированный скрипт BuuG_T - AntiAnti_Bot) + Fix HPCPMP

//В этом скрипте есть(Скрипт под IT):

//1. Fix Move
//2. Анти Packet Error.
//3. RequestGMList
//4. RequestManorList
//5. RequestMagicSkillUse
//6. GG
//7. HPMPCP
//8. Fixawalk2
//9. Html Парсинг, нумеруем строки by OneFinal
//10. Кастомные команды .exp on .exp off by OneFinal
//11. /unstuck из скриптов by OneFinal
//12. Команда .tele парсинг телепортов из альтб by OneFinal
//13. Фикс /invite теперь валкер отправляет инвайт даже если персонажа нет в зоне видимости by OneFinal
//14. Реализовал автопринятие пати если персонажа нет в зоне видимости by OneFinal
//15. Автоматическое включение соулшотов\блес шотов .autoss bsss 1 (ssn ssd ssc ssb ssa sss bssn bssd bssc bssb bsss) 1 включить 0 выключить by OneFinal
//16. Fix DeathPenalty Scrolls
//17. Покупка итемов из .buy Комманда buy 1 5 купит 5 банок маны команда buy 40 1 купит 1 свиток пинальки S грейда
//Пример использования
//SAY(.buy)
//delay(500)
//SAY(buy 40 1)

 const
 ProtocolVersion = 746;

 var
 buf,buf_EW,PName,txt,StatusPacket,data,value,action,out,msg,charname,forder,invitename,settings,invitorname,autosstext,bbsText,sayText: string;
 ID,idHtml,CR,packetID,PObjectID,PMaxHP,PCurHP,PMaxMP,PCurMP,PMaxCP,PCurCP,selfOID,ToX,ToY,ToZ,oX,oY,oZ,i,butn,val,act,c,ObjectID,textTyp,settings1,ssID,autossaction,bbsSendPos,bbsModeFile,itemID,itemCount: Integer;
 normlink,lowlink: TStringList;


procedure OnCreate;
begin
forder :=_gScriptDir;

  scripttimeout(99999);
  normlink:=TstringList.create;
  lowlink:=TstringList.create;
end;


Procedure OnDestroy;
begin
  normlink.free;
  lowlink.free;
end;


procedure BBSHtmlMessage(bf:string);

var value,action,out:string='';
    i,butn,val,act,id,c:integer=0;
s:integer=1;
begin
ScanPck5(bf, 259, 'sssss', null, data, null, null,null);

bbsSendPos := StrToInt(copy(data,1,3));

if bbsSendPos = 101 then bbsText := '';

if length(data) > 200 then bbsText := bbsText+data;


if (bbsSendPos = 103) OR (bbsSendPos = 0)  then
begin

repeat

    butn:=pos('<button',bbsText);

    if (butn=0) then break;

    if butn > 0 then
    begin

    delete(bbsText,1,butn-1);
    val:=pos('value="',bbsText);
    act:=pos('action="',bbsText);
    if val>act then
    begin
      delete(bbsText,1,act+7);
      c:=pos('"',bbsText);
      action:=copy(bbsText,1,c-1);
      val:=pos('value="',bbsText);
      delete(bbsText,1,val+6);
      c:=pos('"',bbsText);
      value:=copy(bbsText,1,c-1);
    end else
    begin
      delete(bbsText,1,val+6);
      c:=pos('"',bbsText);
      value:=copy(bbsText,1,c-1);
      act:=pos('action="',bbsText);
      delete(bbsText,1,act+7);
      c:=pos('"',bbsText);
      action:=copy(bbsText,1,c-1);
    end;
    c:=pos('>',bbsText);
    delete(bbsText,1,c);
    out:=out+' <a action="'+action+'">'+value+'</a><br> ';
    inc(i);

    end
  until i>100;
  out:=trim(out);

gSys.EnSendC(formatpck('%cds',[#$0f,1,'<html><body>'+out+'</body></html>'+#0]));
bbsText:='';
    end;

 

end;

procedure NpcHtmlMessage(bf:string);
var value,action,txt,txt2,out,link:string='';
    i,alink,butn,val,val2,act,id,c:integer=0;
s:integer=1;
begin
  scanpck5(bf,3,'cds',null,ID,txt,null,null);
    txt2:=txt;


  lowercase(txt2);
   repeat
if length(bf) > 8000  then break;
    alink:=pos('<a',txt2);

        if alink=0 then break;
        out:=out+copy(txt2,1,alink-1);
    delete(txt2,1,alink-1);
    act:=pos('action="',txt2);
      delete(txt2,1,act+7);
      c:=pos('"',txt2);
      action:=copy(txt2,1,c-1);

      val:=pos('">',txt2);
      delete(txt2,1,val+1);

      val2:=pos('</a>',txt2);

      value:=copy(txt2,1,val2-1);

    c:=pos('>',txt2);
    delete(txt2,1,c);
    out:=out+' <a action="'+action+'">'+IntToStr(s)+' '+value+'</a> ';
    inc(i);
inc(s);
      until i>200;

  out:=trim(out+txt2);

  case cr of
  1:_gOutBuff:=formatpck('%cds',[#$0f,id,out+#0]);
  2:_gOutBuff:=formatpck('%cds',[#$19,id,out+#0]);
  end;

    i:=0;
  repeat
    c:=pos('bypass -h',txt);
    if c=0 then break;
    deletestr(txt,1,c+9);
    c:=pos('"',txt);
    link:=copy(txt,1,c-1);

    normlink.add(link);
    lowlink.add(lowercase(link));
  until c=0;
end;

procedure RequestBypassToServer(bf:string);
var link:string;
    k:integer;
begin
  scanpck5(bf,3,'cs',null,link,null,null,null);
  if length(bf) > 8000  then break;
  k:=lowlink.indexof(trim(lowercase(link)));
  if k=-1 then exit;
  case cr of
  1:_gOutBuff:=FormatPck('%cs',[#$21,normlink[k]+#0]);
  2:_gOutBuff:=FormatPck('%cs',[#$23,normlink[k]+#0]);
  end;
end;


 BEGIN
 // Anti Packet Error.
 if length(_gBuff) < 3 then gBlockPacket;

 // RequestGMList
 if (not _gFromServ) and StrCmp( copy(_gBuff,1,3), HStr('03 00 81') ) then gBlockPacket;
 if (not _gFromServ) and StrCmp( copy(_gBuff,1,3), HStr('03 00 8B') ) then gBlockPacket;

 

if  (_gFromServ) AND (StrCmp( copy(_gBuff,3,1), HStr('39')))  then
begin

ScanPck5(_gBuff, 1, 'chs',null,null, invitorname, null, null);

gSys.EnSendC( FormatPck( '%cdddddsd', [$03,1,1,1,0,99999,invitorname,1]) );


end;


if  (StrCmp( copy(_gBuff,3,1), HStr('2A')))  then
begin

gSys.EnSendC( FormatPck( '%cdd', [$12,99999,0]) );


end;


if  (not _gFromServ) and StrCmp( copy(_gBuff,4,16), HStr('2F 00 69 00 6E 00 76 00 69 00 74 00 65 00 20 00') )  then
begin

ScanPck5(_gBuff, 4, 'ddss',ObjectID, textTyp, invitename, msg, null);

 c:=pos(' ',invitename);
delete(invitename,1,c);


_gOutBuff:=FormatPck('%csd',[$29,invitename+#0,0]);

end;


if  StrCmp( copy(_gBuff,5,3), HStr('62 00 79') )  then
begin

BBSHtmlMessage(_gBuff);
gBlockPacket;
end;


begin
 if not _gFromServ then
 if StrCmp(_gBuff, HStr('1300382E00740065006C006500000000000000')) then

 _gOutBuff := HStr('1300215F006200620073006C006F0063000000');

 end;


begin
 if not _gFromServ then
 if StrCmp(_gBuff, HStr('19 00 38 2F 00 75 00 6E 00 73 00 74 00 75 00 63 00 6B 00 00 00 00 00 00 00')) then

 _gOutBuff := HStr('07 00 AA 34 00 00 00');

 end;

 
 
 
 begin
 if not _gFromServ then
 if StrCmp( copy(_gBuff,3,1), HStr('38') ) then

 ScanPck5(_gBuff, 1, 'hcsd',null,null,sayText,null,null);
 
 sayText := trim(sayText);
 
 writelog(sayText);
 if StrCmp(trim(copy(sayText,1,3)),'buy') then begin


delete(sayText,1,4);
itemID := StrToInt(trim(copy(sayText,1,pos(' ',sayText)-1)));
delete(sayText,1,pos(' ',sayText));
itemCount := StrToInt(sayText);
sayText :='';

if (itemID > 0) and (itemCount > 0) then
begin
gSys.EnSendS(formatPck('%cddd',[$A7,99999991,itemID,itemCount]));
gBlockPacket;
end;
end;


 end;
 
 

//On Off Exp command .exp on .exp off
 begin
 if not _gFromServ then
 if StrCmp(_gBuff, HStr('19 00 38 2E 00 65 00 78 00 70 00 20 00 6F 00 6600 66 00 00 00 00 00 00 00')) then

 _gOutBuff := HStr('25 00 21 75 00 73 00 65 00 72 00 5F 00 6D 00 6500 6E 00 75 00 20 00 6E 00 6F 00 65 00 20 00 6F00 66 00 00 00');

 end;

 begin
 if not _gFromServ then
 if StrCmp(_gBuff, HStr('1700382E0065007800700020006F006E00000000000000')) then

 _gOutBuff := HStr('25 00 21 75 00 73 00 65 00 72 00 5F 00 6D 00 6500 6E 00 75 00 20 00 6E 00 6F 00 65 00 20 00 6F00 6E 00 00 00');

 end;

 

if (pos(HStr('2E 00 61 00 75 00 74 00 6F 00 73 00 73'),_gBuff) > 0) and (not _gFromServ) then
begin

ScanPck5(_gBuff, 4, 'ddss', null, null, autosstext, null, null);

c :=pos(' ',autosstext);
delete(autosstext,1,c);
c :=pos(' ',autosstext);

autossaction := StrToInt(trim(copy(autosstext,c,length(autosstext))));
delete(autosstext,c,length(autosstext));


ssID := 0;

if trim(autosstext) = 'bssn' then ssID := 3947;
if trim(autosstext) = 'bssd' then ssID := 3948;
if trim(autosstext) = 'bssc' then ssID := 3949;
if trim(autosstext) = 'bssb' then ssID := 3950;
if trim(autosstext) = 'bssa' then ssID := 3951;
if trim(autosstext) = 'bsss' then ssID := 3952;
if trim(autosstext) = 'ssn' then ssID := 1835;
if trim(autosstext) = 'ssd' then ssID := 1463;
if trim(autosstext) = 'ssc' then ssID := 1464;
if trim(autosstext) = 'ssb' then ssID := 1465;
if trim(autosstext) = 'ssa' then ssID := 1466;
if trim(autosstext) = 'sss' then ssID := 1467;

if (ssID > 0) AND ((autossaction = 1) OR (autossaction = 0))  then _gOutBuff:=FormatPck('%chdd',[$D0,5,ssID,autossaction]);


end;


if cr<0 then exit;
  idHtml:=gint(_gBuff,3,1);
  if _gAbsNumPkt<5 then
  if (pos(HStr('05 52 05 54 07 51 51 55 07 02 53 53 00 52 05 52'),_gBuff) > 0) and (cr=0) then
  if gint(_gBuff,4,4)>=828 then CR:=2
  else CR:=1;
  if (cr=0) and (_gAbsNumPkt>=5) then cr:=-1;

 

  if (cr=1) then
  case idHtml of
    $0F:if _gFromserv then NpcHtmlMessage(_gBuff);
    $21:if not _gFromServ then RequestBypassToServer(_gBuff);
  end;
  if (cr=2) then
  case idHtml of
    $19: if _gFromserv then NpcHtmlMessage(_gBuff);
    $23: if not _gFromServ then RequestBypassToServer(_gBuff);
  end;

 


 // MoveBackwardToLocation
 begin
  if gSys.TrafType <> 2 then exit;
  if not( gSys.isGS > 0 ) then exit;
  if ( length( _gBuff ) < 3 ) or ( gInt( _gBuff, 1, 2 ) = 2 ) then begin
    gBlockPacket;
    exit;
  end else ID := gInt( _gBuff, 3, 1 );

  if (_gAbsNumPkt = 1) then begin
    packetID := $0;
    if (ID = $0E) then begin
      gSys.EnSendC( FormatPck( '%cddss', [$4A,0,$0A,#0,'==>   FixMove.  Kamael+ mode'+#0] ) );
      packetID := $0F;
    end;
    if (ID = $00) then begin
      gSys.EnSendC( FormatPck( '%cddss', [$4A,0,$0A,#0,'==>   FixMove.  C4 mode'+#0] ) );
      packetID := $01;
    end;
    if (packetID = 0) then
      gSys.EnSendC( FormatPck( '%cddss', [$4A,0,$0A,#0,'==>   FixMove.  Unknown protocol version'+#0] ) );
  end;

  if (packetID = 0) then Exit;

  if ( not _gFromServ ) and ( ID = packetID ) then begin   // FixMove
    ScanPck5(_gBuff,4,'ddd',ToX,ToY,ToZ,null,null);
    ScanPck5(_gBuff,16,'ddd',oX,oY,oZ,null,null);
    _gOutBuff := SetPckSize( copy( _gBuff, 3, 25 ) + HStr('01 00 00 00') );
    gSys.EnSendC(FormatPck('%cddddddd',[$01,SelfOID,ToX,ToY,ToZ,oX,oY,oZ]));
  end
  end;

 // RequestMagicSkillUse
 if (not _gFromServ) and StrCmp(copy(_gBuff,3,1), HStr('39')) then begin
 if GInt( _gBuff, 8, 4) > 1 then begin
 _gOutBuff := _gBuff;
 PInt(_gOutBuff, 0, 8, 4);
 end
 end;

 // GG
 if ( _gFromServ) and StrCmp( copy(_gBuff,1,3), HStr('03 00 F9') ) then begin
 gBlockPacket;
 gSys.EnSendS(HPck('CA00000000000000000000000000000 000'));
 end;

 
   if _gFromServ then
 begin
 if StrCmp(copy(_gbuff,3,1),#$F3) then // Fix DeathPenalty use
 begin
 gSys.EnSendS(HStr('03 00 3F'));
 end
 end;
 
 
 //HPMPCP
 if _gFromServ then
 begin
 if StrCmp(copy(_gbuff,3,1),#$52) then // PartySmallWindowUpdate
 begin
 gSys.EnSendC(_gbuff);
 ScanPck5(_gbuff,ScanPck5(_gbuff,4,'dsddd',PObjectID,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;

//Private Recipe
 begin
 if not _gFromServ then
 if StrCmp(_gBuff, HStr('0300B0')) then
 _gOutBuff := HStr('0C 00 45 25 00 00 00 00 00 00 00 00');
 end;

//Return To Clan Hall
 begin
 if not _gFromServ then
 if StrCmp(_gBuff, HStr('07 00 6D 03 00 00 00')) then
 _gOutBuff := HStr('07 00 6D 01 00 00 00');
 end;

// Get char oID
 if (_gFromServ) and (ID=$04) then
    begin
     ScanPck5(_gBuff,20,'d',selfOID,null,null,null,null);
    end;

 END.

 

  • Like 1
  • Thanks 1
Ссылка на сообщение
Поделиться на другие сайты

Так же для удобства телепортов пачки набор скриптов, папку положить по адресу l2walker\SCRIPTS

https://drive.google.com/file/d/1j8BMdzxI1ysKhVPvmYmrGLY4qNcCdDg2/view?usp=sharing

  • Like 1
  • Thanks 1
Ссылка на сообщение
Поделиться на другие сайты
  • Admin изменил название на Новые функции WPF Multi_Interlude.fsc

Добавил новую функцию покупки из .buy в L2Walker

Пример использования
 

Quote

SAY(.buy)
delay(500)
SAY(buy 40 1)

40 - порядок итема из окна .buy

1 - количество

 

команда buy 1 5 купит 5 банок маны

команда buy 40 1 купит 1 свиток пинальки S грейда

  • Like 1
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...