Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Скрипты для l2phx

-

Скрипты и перехват пакетов

- Скрипты и перехват пакетов

Ответ
 
Опции темы
Старый 26.08.2010, 19:42   #61
 Разведчик
Аватар для ParaDie[Z]
 
ParaDie[Z] никому не известный тип
Регистрация: 26.08.2010
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для ParaDie[Z] с помощью ICQ
 
По умолчанию Автозаточка, работает везде, где работает l2phx.

Расчитано на пвп серваки и изобилие блес точек...
Использование: включаем скрипт, c помощью приветствия(1-е социальное действие), забиваем ник и уровень точки, точим нужную шмотку на +1(не важно со скольки), скрипт запоминает необходимые данные, 1е соц действие включает и выключает автозаточку.Скорость заточки выставлена 700мс(+2 в секунду), можно ускорять или замедлять в зависимости от сервака...
Сам скрипт:
Код:
const
   nik='Ваш ник';
   Enchant=6;        ///до скольки нужно точить

var
   UseItem, SelectItem, EnchantItem: string;
   CurrentEnch: integer;
   key: boolean;
   Timer01, Timer02: TTimer;

procedure Init;
begin
   Timer01:=TTimer.Create(nil);
   Timer01.OnTimer:=@OnTimer01;
   Timer01.enabled:=false;
   Timer01.interval:=700;   /// здесь можно выставить интервал

   Timer02:=TTimer.Create(nil);
   Timer02.OnTimer:=@OnTimer02;
   Timer02.enabled:=false;
   Timer02.interval:=500;       /// здесь можно выставить интервал

end;

procedure OnTimer01(Sender: TObject);
begin
   case key of
      false: begin
         buf:=UseItem;
         SendToServerEx(nik);
         Timer02.enabled:=true;
         end;
      true: begin
         buf:=EnchantItem;
         SendToServerEx(nik);
         end;
   end;
         key:=not(key);
end;

procedure OnTimer02(Sender: TObject);
begin
         buf:=SelectItem;
         SendToServerEx(nik);
         Timer02.enabled:=false;
end;

procedure Free;
begin
  Timer01.free;
  Timer02.free;
  CurrentEnch:=0;
  key:=false;
end;

begin
    if FromServer and (pck[1]=#$87) then case ReadD(2) of
       0: begin
          CurrentEnch:=CurrentEnch+1;
          if CurrentEnch=Enchant then Timer01.enabled:=false;
          end;
       3: CurrentEnch:=0;
       end;
    if FromClient and (pck[1]=#$19) then UseItem:=pck;
    if FromClient and (pck[1]=#$D0) then SelectItem:=pck;
    if FromClient and (pck[1]=#$5F) then EnchantItem:=pck;
    if FromClient and (pck[1]+pck[2]=#$56#$0C) then
       begin
          pck:='';
          Timer01.enabled:=not(Timer01.enabled);
       end;
end.
________________
Если тебе трудно грызть гранит науки, - попробуй пососать его...
  Ответить с цитированием
Старый 10.09.2010, 00:07   #62
 Разведчик
Аватар для Dominian
 
Dominian никому не известный тип
Регистрация: 05.09.2010
Сообщений: 22
Популярность: 15
Сказал(а) спасибо: 38
Поблагодарили 28 раз(а) в 17 сообщениях
 
По умолчанию Анти таргет (NEW!)

Юзал поиск, слава богу скрипт не попал в шару, поскольку он есть только у некоторых друзей, но все-таки я его выложу
НЕЗАБЫВАЕМ ТЫКАТЬ СПАСИБКУ

Работает на Interlude

+Админ не может вас забанить(только через базу)
-Вас можно бить массовыми скиллами
-После ТП через ГК надо включать скрипт наново
-Нельзя юзать алхимию(цп, мп, хп) соски можно


Да , мобы вас бьют

Гид по нему очень прост, включили сам скрипт выделили себя и написали в чат .on

тестилось на:
La2Woa, Lineagetwo, last-pvp, и еще много всякого ГФ
Цитата:


Автор Ga3uPoBKa
special for zhyk.ru

Const
Name='Вводим свой ник';

var
// переменная
ValidatePosition:string;
a:integer; b:boolean;

procedure Init; //Вызывается при включении скрипта
begin
SendMsc('Возьми себя в таргет!');
b:=false;
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClientEX(Name);
end;
//защитная часть
begin
begin
if FromClient and (pck[1]=#$04)and (not b) then
begin
a:=ReadD(2);
SendMsc('Запомнен ObjectID = '+inttostr(a));
b:=true;
end;
end;
If FromClient and (pck=hstr('38 2E 00 6F 00 6E 00 00 00 00 00 00 00')) then
begin
Buf:=#$9F;
WriteD(a);
buf:=buf+ hstr('01 00 00 00 56 0D 20 10 02 00 00 00');
SendToServerEX(Name);
end;
end.


Последний раз редактировалось Dominian; 10.09.2010 в 14:14.
  Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
AnotherTest (21.11.2011), koiiiakk (05.06.2011), L0Ly (25.08.2011)
Старый 27.11.2010, 13:43   #63
 Разведчик
Аватар для ClassID
 
ClassID неизвестен в этих краяхClassID неизвестен в этих краяхClassID неизвестен в этих краях
Регистрация: 26.11.2010
Сообщений: 38
Популярность: -268
Сказал(а) спасибо: 29
Поблагодарили 44 раз(а) в 24 сообщениях
 
По умолчанию Re: Скрипты для l2phx

Скрипт для флуда После набора сообщения, текст остаётся, скрипт не мой, на интерлюдии работает, тестил на [Ссылки могут видеть только зарегистрированные пользователи. ]
Код:
var
  m: TMemo;
  frm:TForm;
  penel: TPanel;
  etext:  tedit;
  button: tbutton;
  i: Integer;
  Message, Name: String;

procedure SendMs(Sender: TButton);
var
  Msg, Nm: String;
  dd: integer;
begin
  if etext.text<>'' then begin
    buf:=#$38;
    case etext.text[1] of
      '!': begin
        Msg:=Copy(etext.text,2,1000);
        dd:=1;
        nm:='';
      end;
      '$': begin
        Msg:=Copy(etext.text,2,1000);
        dd:=9;
        nm:='';
      end;
      '+': begin
        Msg:=Copy(etext.text,2,1000);
        dd:=8;
        nm:='';
      end;
      '"': begin
        dd:=pos(' ', etext.text);
        Msg:=Copy(etext.text,dd+1,1000);
        nm:=Copy(etext.text,2,dd-3);
        dd:=2;
      end;
      '#': begin
        Msg:=Copy(etext.text,2,1000);
        dd:=3;
        nm:='';
      end;
      '@': begin
        Msg:=Copy(etext.text,2,1000);
        dd:=4;
        nm:='';
      end;
      else begin
        Msg:=etext.text;
        dd:=0;
        nm:='';
      end;
    end;
    WriteS(Msg);
    WriteD(dd);
    if nm<>'' then WriteS(Nm);
    SendToServer;
  end;
end;

procedure Init;
begin
  frm := TForm.Create(nil);
  frm.Caption := 'Chat';
  frm.BorderStyle := bsSizeable;
  frm.Position := poScreenCenter;
  frm.Width:=400;
  frm.Height:=600;
  m:=TMemo.Create(frm);
  m.parent:=frm;
  m.align:=alClient;
  m.ReadOnly:=true;
  m.ScrollBars:=ssBoth;
  penel:=TPanel.Create(frm);
  penel.parent:=frm;
  penel.align:=alBottom;
  penel.height:=24;
  button:=tbutton.Create(penel);
  button.parent:=penel;
  button.align:=alRight;
  button.caption:='Послать';
  button.onClick:=@SendMs;
  etext:=tedit.Create(penel);
  etext.parent:=penel;
  etext.align:=alClient;
  frm.Show;
end;

procedure Free;
begin
  etext.Free;
  button.Free;
  penel.Free;
  m.Free;
  frm.Free;
end;

begin
if FromServer and (pck[1]=#$4a) then
  begin
    i:=10;
    name:=ReadS(i);
    message:=ReadS(i);
    if name='' then name:='Обьявление';
    m.Lines.Add(Name+': '+message);
  end;
end.
Добавлено через 2 минуты
// Скрипт для вывода информации об игроках на сервере
// в User Tab: ник, раса, пол, класс.
// Автор: Furious
// Версия: 0.3


Код:
var
m:TMemo;
frm:TForm;
RaceID, SexID, ClassID, i: Integer;
Message, Name, Sex, Race, Class: String;

procedure Init;
begin
//ShowTab;
frm := TForm.Create(nil);
frm.Caption := 'Char Info!';
frm.BorderStyle := bsSizeable;
frm.Position := poScreenCenter;
frm.Width:=400;
frm.Height:=600;
m:=TMemo.Create(frm);
m.parent:=frm;
m.align:=alClient;
m.ReadOnly:=true;
m.ScrollBars:=ssBoth;
frm.Show;
end;

procedure Free;
begin
m.Free;
frm.Free;
//HideTab;
end;

begin
if FromServer and (pck[1]=#$03) then
  begin
   i:=22;
   Name:=ReadS(i);
   RaceID:=ReadD(i);
   SexID:=ReadD(i);
   ClassID:=ReadD(i);
   case RaceID of
    0:race:='Люди';
    1:race:='Светлые эльфы';
    2:race:='Темные эльфы';
    3:race:='Орки';
    4:race:='Гномы';
    end;
   case SexID of
    0:sex:='Мужской';
    1:sex:='Женский';
    end;
   case ClassID of
    0:class:='H_Fighter';
    1:class:='H_Warrior';
    2:class:='H_Gladiator';
    88:class:='H_Duelist';
    3:class:='H_Warlord';
    89:class:='H_Dreadnought';
    4:class:='H_Knight';
    5:class:='H_Paladin';
    90:class:='H_PhoenixKnight';
    6:class:='H_DarkAvenger';
    91:class:='H_HellKnight';
    7:class:='H_Rogue';
    8:class:='H_TreasureHunter';
    93:class:='H_Adventurer';
    9:class:='H_Hawkeye';
    92:class:='H_Sagittarius';
    10:class:='H_Mage';
    11:class:='H_Wizard';
    12:class:='H_Sorceror';
    94:class:='H_Archmage';
    13:class:='H_Necromancer';
    95:class:='H_Soultaker';
    14:class:='H_Warlock';
    96:class:='H_ArcanaLord';
    15:class:='H_Cleric';
    16:class:='H_Bishop';
    97:class:='H_Cardinal';
    17:class:='H_Prophet';
    98:class:='H_Hierophant';
    18:class:='E_Fighter';
    19:class:='E_Knight';
    20:class:='E_TempleKnight';
    99:class:='E_EvaTemplar';
    21:class:='E_SwordSinger';
    22:class:='E_Scout';
    23:class:='E_PlainsWalker';
    101:class:='E_WindRider';
    24:class:='E_SilverRanger';
    102:class:='E_MoonlightSentinel';
    25:class:='E_Mage';
    26:class:='E_Wizard';
    27:class:='E_SpellSinger';
    103:class:='E_MysticMuse';
    28:class:='E_ElementalSummoner';
    104:class:='E_ElementalMaster';
    29:class:='E_Oracle';
    30:class:='E_Elder';
    105:class:='E_EvaSaint';
    31:class:='DE_Fighter';
    32:class:='DE_PaulusKnight';
    33:class:='DE_ShillienKnight';
    106:class:='DE_ShillienTemplar';
    34:class:='DE_BladeDancer';
    107:class:='DE_SpectralDancer';
    35:class:='DE_Assassin';
    36:class:='DE_AbyssWalker';
    108:class:='DE_GhostHunter';
    37:class:='DE_PhantomRanger';
    109:class:='DE_GhostSentinel';
    38:class:='DE_Mage';
    39:class:='DE_DarkWizard';
    40:class:='DE_Spellhowler';
    110:class:='DE_StormScreamer';
    41:class:='DE_PhantomSummoner';
    111:class:='DE_SpectralMaster';
    42:class:='DE_ShillienOracle';
    43:class:='DE_ShillienElder';
    112:class:='DE_ShillienSaint';
    44:class:='O_Fighter';
    45:class:='O_Raider';
    46:class:='O_Destroyer';
    113:class:='O_Titan';
    47:class:='O_Monk';
    48:class:='O_Tyrant';
    114:class:='O_GrandKhauatari';
    49:class:='O_Mage';
    50:class:='O_Shaman';
    51:class:='O_Overlord';
    115:class:='O_Dominator';
    52:class:='O_Warcryer';
    116:class:='O_Doomcryer';
    53:class:='D_Fighter';
    54:class:='D_Scavenger';
    55:class:='D_BountyHunter';
    117:class:='D_FortuneSeeker';
    56:class:='D_Artisan';
    57:class:='D_Warsmith';
    118:class:='D_Maestro';
   end;
   Message:='Раса: '+race+', Пол: '+sex+', Класс: '+class+'.';
   m.Lines.Add(Name+': '+Message);
  end;
end.

Последний раз редактировалось ClassID; 27.11.2010 в 13:45. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 01.12.2010, 17:48   #64
Заблокирован
 Сержант
Аватар для Rea1
 
Rea1 скоро будет известенRea1 скоро будет известенRea1 скоро будет известенRea1 скоро будет известенRea1 скоро будет известен
Регистрация: 19.03.2010
Сообщений: 108
Популярность: 466
Сказал(а) спасибо: 45
Поблагодарили 227 раз(а) в 125 сообщениях
Отправить сообщение для Rea1 с помощью ICQ
 
По умолчанию Re: Скрипты для l2phx

Скрипт на выкидывание игроков с игры
Садимся на продажу по 1 адене любого итема
Нажимаем галочку в скрипте и результат не заставит себя ждать
Код:
var
 MyID :integer;
 
begin
   if FromClient and (pck[1]=#$77) then
      begin
         buf:=#$77;
         WriteS('                                                             '+
                '                                                             '+
                '                                                             '+
                '                                                             '+
                '                                                             '+
                '                                                             '+
                '                                                             '+
                '                                                             '+
                '                                                             '+
                '                                                             '+
                '                                                             '+
                '                                                             '+
                '                                                             '+
                '                                                             ');
         pck:=buf;
      end;

Последний раз редактировалось Rea1; 01.12.2010 в 17:50.
  Ответить с цитированием
Старый 01.12.2010, 17:54   #65
Заблокирован
 Пехотинец
Аватар для MаNiаК
 
MаNiаК скоро будет известенMаNiаК скоро будет известенMаNiаК скоро будет известен
Регистрация: 29.10.2010
Сообщений: 87
Популярность: 262
Сказал(а) спасибо: 79
Поблагодарили 60 раз(а) в 33 сообщениях
Отправить сообщение для MаNiаК с помощью ICQ Отправить сообщение для MаNiаК с помощью Skype™
 
По умолчанию Re: Скрипты для l2phx

Авто аугментация до получения нужного скила by Vilson
Работает на Грации Финал/+ на моем ГФШ, если на вашем не работает - смотрите пакеты или инвентарь, сейчас на каждом ГФШ админы лепят свои "защиты".

Оба скрипта положить в папку со скриптами, почитать инструкцию вначале скрипта, поменять параметры на свои. Без PacketsT2.script в принципе можно обойтись если вы перенесете вызываемые из него функции в основной скрипт Augment_2.script. Я использую два файла только потому что мне так удобно, этот PacketsT2.script использую во всех своих скриптах что бы не переписывать по сто раз один и тот же код, кроме того при выходе новой версии линейки не надо будет переписывать все скрипты, достаточно будет переписать только PacketsT2.script.
Вложения
Тип файла: rar Augment_2.rar (3.6 Кб, 248 просмотров)
Тип файла: rar PacketsT2.rar (4.5 Кб, 211 просмотров)

Последний раз редактировалось MаNiаК; 01.12.2010 в 18:02.
  Ответить с цитированием
Старый 02.12.2010, 10:41   #66
Заблокирован
 Сержант
Аватар для Rea1
 
Rea1 скоро будет известенRea1 скоро будет известенRea1 скоро будет известенRea1 скоро будет известенRea1 скоро будет известен
Регистрация: 19.03.2010
Сообщений: 108
Популярность: 466
Сказал(а) спасибо: 45
Поблагодарили 227 раз(а) в 125 сообщениях
Отправить сообщение для Rea1 с помощью ICQ
 
По умолчанию Re: Скрипты для l2phx

Скрипт для развода или типо того xD
Садимся на продажу любой стопки, когда у вас ктото купит хоть 1 итем он автоматически купит всё остальное
Для работы скрипта достаточно просто нажать галочку
Код:
var
Data0, Data1, Data2, Data3, Data4: Integer;

begin
if FromServer and (pck[1]=#$9B) then
begin
Data0 := ReadD(30);
end
else
if FromClient and (pck[1]=#$79) then
begin
buf:=pck;
Data1 := ReadD(2);
Data2 := ReadD(6);
Data3 := ReadD(10);
Data4 := ReadD(14);
Data0 := Data0 - Data4;
SendToServer;

buf:=#$79;
WriteD(Data1);
WriteD(3);
WriteD(Data3);
WriteD(Data0);
WriteD(1);
WriteD(Data3);
WriteD(Data0);
WriteD(1);
WriteD(Data3);
WriteD(Data0);
WriteD(1);
SendToServer;
end;
end.
  Ответить с цитированием
Пользователь сказал cпасибо:
dynastyhurts (02.12.2010)
Старый 18.01.2011, 10:40   #67
 Разведчик
Аватар для honda2007
 
honda2007 никому не известный тип
Регистрация: 02.05.2010
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Скрипты для l2phx

Вот ...

Код:
{
AutoBD_SVS by Ad
Принимает пати танцует или поет, и следует по необходимости!
Для того чтобы нормально следовал за целью, нужно основным чаром что нибудь в чат написать, чтобы запомнился айди.

name- ник БД или СВСа
name2- ник того перса который будет кидать пати и за кем будет следовать БД или СВС.

Запускать скрипт ТОЛЬКО ПОСЛЕ того как БД или СВС уже вошел в игру.
}
const name2='МойНик' ; name='никБДилиСВС' ;
  var
Msg : TMemo;
FormMain : TForm; //Создаваемая форма
useskill: TTimer;
skills:string;
skillid,skillidold:integer;
party_have,iswork,skillhave:boolean;
skillbase: array[1..200,1..2] of integer;
SkillsName : TStringList;
listbox1,listbox2: TListBox;
GB1: TGroupBox;
Button1,Button2,Button3,Button4: TButton;
Lb1,Lb2: Tlabel;
cb3:tcheckbox;
myOID,myX,myY,myZ: integer;        
targetOID:integer;

function Create_FormMain : TForm;
Var
   Yes : boolean;
begin
   Yes := FALSE;
   Result := TForm.Create(nil);
   TRY
     Result.Caption     := 'AutoBD v.0.0.1';
     Result.Left        := 397;
     Result.Top         := 233;
     Result.Width       := 450;
     Result.Height      := 650;
     Result.FormStyle   := fsNormal;
     Result.Position    := poDesigned;
     Result.BorderStyle := bsSizeable;
     Result.BorderWidth := 0;
     Result.WindowState := wsNormal;
     Result.Color       := clBtnFace;
     Result.Font.Name   := 'Tahoma';
     Result.Font.Size   := 8;
     Result.Font.Color  := clWindowText;
     Result.Font.CharSet:= 1;
     Result.OnClose := @FormClose;

     Msg := TMemo.Create(Result);
     Msg.Parent := Result;
     Msg.Left    := 0;
     Msg.Top     := 400;
     Msg.Width   := 200;
     Msg.Height  := 200;
     Msg.Visible := TRUE;
     Msg.Tag     := 0;
     Msg.Enabled  := TRUE;
     Msg.Hint     := '';
     Msg.ShowHint := FALSE;
     Msg.Font.Name  := 'Tahoma';
     Msg.Font.Size  := 8;
     Msg.Font.Color := clWindowText;
     Msg.Color         := clWindow;
     Msg.TabOrder      := 2;
     Msg.TabStop       := TRUE;
     Msg.Align         := alBottom;
     Msg.WordWrap      := TRUE;
     Msg.Alignment     := taLeftJustify;
     Msg.WantTabs      := FALSE;
     Msg.WantReturns   := TRUE;
     Msg.HideSelection := TRUE;
     Msg.MaxLength     := 0;
     Msg.OEMConvert    := FALSE;
     Msg.ReadOnly      := FALSE;
     Msg.ScrollBars    := ssNone;

     GB1 := TGroupBox.Create(Result);
     GB1.Parent := result;
     GB1.Align         := alRight;
     GB1.Left    := 1;
     GB1.Top     := 2;
     GB1.Width   := 100;
     GB1.Height  := 95;
     GB1.Visible := TRUE;
     GB1.Tag     := 0;
     GB1.Enabled  := TRUE;
     GB1.Hint     := '';
     GB1.ShowHint := FALSE;
     GB1.Caption    := 'НЕПРИНИМАЕТ ПАТИ';
     GB1.Align      := alTOP;
     GB1.Color      := clBtnFace;
     GB1.Font.Name  := 'Tahoma';
     GB1.Font.Size  := 8;
     GB1.Font.Color := clWindowText;
     GB1.Font.CharSet := 1;
     GB1.TabOrder     := 3;
     GB1.TabStop      := FALSE;

     listbox1 := Tlistbox.Create(Result);
     listbox1.Parent := Result;
     listbox1.Left    := 0;
     listbox1.Top     := 100;
     listbox1.Width   := 180;
     listbox1.Height  := 200;
     listbox1.Visible := TRUE;
     listbox1.Tag     := 0;
     listbox1.Enabled  := TRUE;
     listbox1.Hint     := '';
     listbox1.ShowHint := FALSE;
     listbox1.Font.Name  := 'Tahoma';
     listbox1.Font.Size  := 8;
     listbox1.Font.Color := clWindowText;
     listbox1.Color         := clWindow;
     listbox1.TabOrder      := 2;
     listbox1.TabStop       := TRUE;
     listbox1.Align         := alLeft;
     listbox1.OnDblClick :=@button3click;

     listbox2 := Tlistbox.Create(Result);
     listbox2.Parent := Result;
     listbox2.Left    := 0;
     listbox2.Top     := 100;
     listbox2.Width   := 180;
     listbox2.Height  := 200;
     listbox2.Visible := TRUE;
     listbox2.Tag     := 0;
     listbox2.Enabled  := TRUE;
     listbox2.Hint     := '';
     listbox2.ShowHint := FALSE;
     listbox2.Font.Name  := 'Tahoma';
     listbox2.Font.Size  := 8;
     listbox2.Font.Color := clWindowText;
     listbox2.Color         := clWindow;
     listbox2.TabOrder      := 2;
     listbox2.TabStop       := TRUE;
     listbox2.Align         := alRight;
     listbox2.OnDblClick :=@button4click;

     Button1 := TButton.Create(Result);
     Button1.Parent := gb1;
     Button1.Left    := 10;
     Button1.Top     := 30;
     Button1.Width   := 75;
     Button1.Height  := 25;
     Button1.Visible := TRUE;
     Button1.Tag     := 0;
     Button1.Enabled  := true;
     Button1.Hint     := '';
     Button1.ShowHint := FALSE;
     Button1.Caption    := 'Вкл';
     Button1.Font.Name  := 'Tahoma';
     Button1.Font.Size  := 8;
     Button1.Font.Color := clWindowText;
     Button1.Font.CharSet := 1;
     Button1.TabOrder     := 1;
     Button1.TabStop      := TRUE;
     Button1.Cancel       := FALSE;
     Button1.ModalResult  := 0;
     Button1.OnClick     := @Button1click;

     Button2 := TButton.Create(Result);
     Button2.Parent := gb1;
     Button2.Left    := 100;
     Button2.Top     := 30;
     Button2.Width   := 75;
     Button2.Height  := 25;
     Button2.Visible := TRUE;
     Button2.Tag     := 0;
     Button2.Enabled  := true;
     Button2.Hint     := '';
     Button2.ShowHint := FALSE;
     Button2.Caption    := 'Выкл';
     Button2.Font.Name  := 'Tahoma';
     Button2.Font.Size  := 8;
     Button2.Font.Color := clWindowText;
     Button2.Font.CharSet := 1;
     Button2.TabOrder     := 1;
     Button2.TabStop      := TRUE;
     Button2.Cancel       := FALSE;
     Button2.ModalResult  := 0;
     Button2.OnClick     := @Button2click;

     Button3 := TButton.Create(Result);
     Button3.Parent := result;
     Button3.Left    := 200;
     Button3.Top     := 140;
     Button3.Width   := 40;
     Button3.Height  := 25;
     Button3.Visible := TRUE;
     Button3.Tag     := 0;
     Button3.Enabled  := True;
     Button3.Hint     := '';
     Button3.ShowHint := FALSE;
     Button3.Caption    := '>>>>';
     Button3.Font.Name  := 'Tahoma';
     Button3.Font.Size  := 8;
     Button3.Font.Color := clWindowText;
     Button3.Font.CharSet := 1;
     Button3.TabOrder     := 1;
     Button3.TabStop      := TRUE;
     Button3.Cancel       := FALSE;
     Button3.ModalResult  := 0;
     Button3.OnClick     := @button3click;

     Button4 := TButton.Create(Result);
     Button4.Parent := result;
     Button4.Left    := 200;
     Button4.Top     := 220;
     Button4.Width   := 40;
     Button4.Height  := 25;
     Button4.Visible := TRUE;
     Button4.Tag     := 0;
     Button4.Enabled  := True;
     Button4.Hint     := '';
     Button4.ShowHint := FALSE;
     Button4.Caption    := '<<<<';
     Button4.Font.Name  := 'Tahoma';
     Button4.Font.Size  := 8;
     Button4.Font.Color := clWindowText;
     Button4.Font.CharSet := 1;
     Button4.TabOrder     := 1;
     Button4.TabStop      := TRUE;
     Button4.Cancel       := FALSE;
     Button4.ModalResult  := 0;
     Button4.OnClick     := @button4click;

     Lb1:= Tlabel.Create(result);
     Lb1.Parent := GB1;
     Lb1.Left    := 140;
     Lb1.Top     := 30+200;
     Lb1.Align         := alLeft;
     Lb1.Layout     := tlBottom;
     Lb1.Visible := TRUE;
     Lb1.Tag     := 0;
     Lb1.Enabled  := TRUE;
     Lb1.Hint     := '';
     Lb1.ShowHint := FALSE;
     Lb1.Caption    := 'Все Скилы';
     Lb1.Font.Name  := 'Tahoma';
     Lb1.Font.Size  := 10;
     Lb1.Font.Color := clWindowText;
     Lb1.Font.CharSet := 1;

     Lb2:= Tlabel.Create(result);
     Lb2.Parent := GB1;
     Lb2.Left    := 140;
     Lb2.Top     := 30+200;
     Lb2.Align         := alRight;
     Lb2.Layout     := tlBottom;
     Lb2.Visible := TRUE;
     Lb2.Tag     := 0;
     Lb2.Enabled  := TRUE;
     Lb2.Hint     := '';
     Lb2.ShowHint := FALSE;
     Lb2.Caption    := 'Те которые использовать';
     Lb2.Font.Name  := 'Tahoma';
     Lb2.Font.Size  := 10;
     Lb2.Font.Color := clWindowText;
     Lb2.Font.CharSet := 1;

     cb3:= TCheckbox.Create(result);
     cb3.Parent := GB1;
     cb3.Left    := 220;
     cb3.Top     := 60;
     cb3.Width   := 220;
     cb3.Checked := TRUE;
     cb3.Visible := TRUE;
     cb3.Tag     := 0;
     cb3.Enabled  := TRUE;
     cb3.Hint     := '';
     cb3.ShowHint := FALSE;
     cb3.Caption    := 'Следовать послы выхода из пати';
     cb3.Font.Name  := 'Tahoma';
     cb3.Font.Size  := 10;
     cb3.Font.Color := clWindowText;
     cb3.Font.CharSet := 1;

     Yes := TRUE;
   FINALLY
     if not Yes then begin
         if Result<>NIL then begin
           Result.Free;
           Result:=NIL;
        end;
     end;
   END;
   Result.Show;
   msg.Lines.Add(timetostr(now)+': '+'Autodance, by Ad');
   msg.Lines.Add(timetostr(now)+': '+'Работаем с чаром: '+Name);

end;

procedure button1click(Sender: TButton);
begin
   iswork:=true;
   GB1.Caption    := 'ПРИНИМАЕТ ПАТИ';
end;

procedure button2click(Sender: TButton);
begin
   iswork:=false;
   GB1.Caption    := 'НЕПРИНИМАЕТ ПАТИ';
end;

procedure perreshet;
var i:integer;
str:string;
begin
  str:='';
  for i:=1 to ListBox2.items.Count do
      begin
      str:=str+Copy(ListBox2.Items.Strings[i-1],1+pos(':',ListBox2.Items.Strings[i-1]),pos(' ',ListBox2.Items.Strings[i-1])-4)+':';
      end;
  skills:=str;
end;

procedure button3click(Sender: TButton);
var m:integer;
begin

if ListBox1.Items.Count>0 then
    begin
    m:=ListBox1.ItemIndex;
    if (ListBox1.Items.Count=1) then m:=0
    else
    if m=ListBox1.Items.Count-1 then dec(m);

    ListBox2.Items.Add(ListBox1.Items.Strings[ListBox1.ItemIndex]);
    ListBox1.Items.Delete(ListBox1.ItemIndex);
    ListBox1.ItemIndex:=m;
    perreshet;
    end;

end;

procedure Button4Click(Sender: TObject);
var m:integer;
begin

if ListBox2.Items.Count>0 then
    begin
    m:=ListBox2.ItemIndex;
    if (ListBox2.Items.Count=1) then m:=0
    else
    if m=ListBox2.Items.Count-1 then dec(m);

    ListBox1.Items.Add(ListBox2.Items.Strings[ListBox2.ItemIndex]);
    ListBox2.Items.Delete(ListBox2.ItemIndex);
    ListBox2.ItemIndex:=m;
    perreshet;
end;

end;

procedure FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Action:=caNone;
end;

procedure Free_FormMain;
begin
   TRY
     if FormMain<>NIL then begin
        FormMain.Free;
        FormMain:=NIL;
     end;
   FINALLY
   END;
end;  

procedure SendMesg(msg:string);  //отправка сообщений клиенту
begin
  buf:=#$4A;
   WriteD(0);
   WriteD(2);
   WriteS('->БОГ');
   WriteS(msg);
   SendToClientEx(Name);
end;

procedure Init; //Вызывается при включении скрипта
begin

  skillsName:=TStringList.Create;
try
   skillsName.LoadFromFile('.\SkillsID.ini');
   except
     msg.Lines.Add('itemsid.ini не найден!');
     exit;
   end;

skillid:=0;
iswork:=false;
useskill:=TTimer.Create(nil);
useskill.OnTimer:=@timerskill;
useskill.interval:=200; //время задержки
useskill.enabled:=true;
skillhave:=false;
party_have:=false;
FormMain:=Create_FormMain;
buf:=HStr('3F');
SendToServerEx(name);

buf:=HStr('0F');
SendToServerEx(name);

end;

procedure timerskill;
begin
if skillid<>0 then
  begin
    msg.lines.add('Юзаю скилл');
    MagicSkillUse(skillid);
    skillidold:=skillID;
    skillID:=0;
  end;

end;

procedure Free; //Вызывается при выключении скрипта
begin
  useskill.free;
  Free_FormMain;
end;

procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin

end;

procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединения
begin

end;

procedure UserInfo; //обновление данных о себе
var
   i:word;
begin
   MyOID:=ReadD(18);
   MyX:=ReadD(2);
   MyY:=ReadD(6);
   MyZ:=ReadD(10);

end;

procedure MagicSkillUse(MagicID:integer);
begin
   buf:=#$2F;
   WriteD(MagicID);
   WriteD(00);
   WriteC(00);
   SendToServerEx(Name);
end;

procedure createskillbase;
var
  i, j,n: integer;
begin
for i:=1 to 200 do
     begin
     skillbase[i,1]:=0;
     skillbase[i,2]:=0;
     end;

  n:=0;
  J:=10;
  listbox1.items.Clear;
for I:=1 to 200 do
     begin
     skillbase[i,1]:=ReadD(j);
     skillbase[i,2]:=ReadD(j);
     if skillbase[i,2]=0 then break;
     j:=j+5;
     inc(n);
     listbox1.items.Add('ID:'+inttostr(skillbase[i,2])+'   '+SkillsName.Values[IntToStr(skillbase[i,2])]+'  LVL:'+inttostr(skillbase[i,1]));
     end;

if N>0 then skillhave:=true;
end;

procedure Target(Attacker: Integer);
begin
   buf:=#$04;
   WriteD(Attacker);
   WriteD(MyX);
   WriteD(MyY);
   WriteD(MyZ);
   WriteC(00);
   SendToServerEx(Name);
end;

procedure TargetAttacker(Attacker: Integer);
begin
if Attacker<>0 then
begin
   msg.Lines.Add('Attacker='+IntToStr(Attacker)+' Player='+IntToStr(MyOID));
   Target(Attacker);
   delay(800);
   Target(Attacker);
   delay(800);
   end;
end;

procedure buffok;
begin
   if ReadD(6)=skillIDold then
   begin
   msg.lines.add('Прописываем следующий скилл');
      if Length(skills)>0 then
         begin
           skillID:=strtoint(Copy(Skills,1,pos(':',Skills)-1));
           delete(Skills,1,pos(':',Skills));
         end else
            if  party_have=true then
            begin
            msg.lines.add('Cледуем за '+name2);
            if cb3.Checked=true   then     TargetAttacker(targetOID);
            msg.lines.add('Разрываем пати');
            delay(200);
            buf:=HStr('2B');
            SendToServerEx(name);
            party_have:=false;
            end;
        end;

end;

var
   temp : String;

begin
if pck='' then exit;

if (ConnectName=Name) and FromClient then
     case pck[1] of
     #$1B:
         case ReadD(2) of
           //социальное действие Yes для старта
           6: begin
              iswork:=true;
              GB1.Caption:= 'ПРИНИМАЕТ ПАТИ';
              end;
           //социальное действие No для остановки
            5: begin
               iswork:=false;
               GB1.Caption:= 'НЕПРИНИМАЕТ ПАТИ';
               end;
         end;
     end;

if (ConnectName=Name) and FromServer then
begin
          case pck[1] of
          #$39: if iswork then
               begin
                 temp:=ReadS(2);
                 if temp=name2 then
                   begin
                   perreshet;
                   Delay(100);
                   buf:=HStr('2A 01 00 00 00');
                   SendToServerEx(name);
                   msg.Lines.Add('Принимаю пати');
                   party_have:=true;
                   Delay(200);
                   if Length(skills)>0 then
                     begin
                     msg.Lines.Add('Прописываю скилл');
                     skillID:=strtoint(Copy(Skills,1,pos(':',Skills)-1));
                     delete(Skills,1,pos(':',Skills));
                     end;
                   pck:='';
                   end else msg.Lines.Add('Проигнорирован запрос пати от: '+temp);
               end;

          #$76:  begin
                 if (MyOID=ReadD(2)) then buffok;
                 end;
          #$04:  begin //пакет с инфой о моём чаре
                 UserInfo;
                 end;
          #$4A:  begin //пакет с инфой о моём чаре
                  if ReadS(10)=name2 then
                      begin
                      TargetOID:=ReadD(2);
                      msg.lines.add('Нашли цель следовния: '+inttostr(TARGETOID));
                      end;
                  end;
          #$58:  begin
                 if skillhave=false then createskillbase;
                 end;

            end;
end;

end.
  Ответить с цитированием
Старый 24.01.2011, 17:20   #68
Заблокирован
 Сержант
Аватар для lSiml
 
lSiml скоро будет известенlSiml скоро будет известенlSiml скоро будет известенlSiml скоро будет известенlSiml скоро будет известен
Регистрация: 04.12.2009
Сообщений: 131
Популярность: 466
Сказал(а) спасибо: 144
Поблагодарили 176 раз(а) в 94 сообщениях
Отправить сообщение для lSiml с помощью ICQ
 
По умолчанию Весёлый но уж оч палевный скрипт)

Суть скрипта как с анимированным титулом, только здесь анимируется значек клана)


Код:
//Crests are captured from RequestSetPledgeCrest and copied verbatim (minus the spaces)
//Set your char nick in 'name'
//Crest change delay should be set to at least 3000 (3s) to work
//Script is enabled/disabled (toggle) with /socialvictory in game
const
name='YOURNICK';
crestnr=2;
d = 3000;

crest1='0900010000444453207C000000071008001000000010000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000040000004458543100000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000FFFF000000000000FFFF000000000000FFFF00000000000000D9F0DE005040400099F0DE00050404E0A3000855E74DC7E0BC0000555E5654E0AE00991595959500D9E0A6045F0C7C00B9E0DE101510550081E0FF01010101008300003515255500510083040406000099E0DE1010500000D9E0DE01010500';
crest2='0900010000444453207C000000071008001000000010000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000040000004458543100000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000FFFF000000000000FFFF000000000000FFFF0000000000000000F7BD00004040DDFF0000555558600000FFFF00000824BCF7000055555B5CDEFF000095151535FFFF0842CF2737A7DDFF2000890509B37EEF000056555556BDF7000025255555DDFF0000C0DE5555F7BD000058565555F7BD000054575555';

var
y:integer;
c,t,stop: integer;
n:integer;

procedure Init; //will be called on script initialization
begin
  c:=0;
  t:=0;
  stop:=1;
  n:=0;
end;


function GetTickCount(): integer;
var
lib,res: integer;
begin
    lib := LoadLibrary('kernel32.dll');
    res := CallFunction(lib, 'GetTickCount', 0, [nil]);
    FreeLibrary(lib);
    result := res;
end;

//Primary part of dcript
//calls alltime when l2ph got new packet
begin
    if (FromClient) and (pck[1] = #$34) then
    begin
        y := ReadD(2);
        if (y = 3) then
        begin
            if (stop=0) then
            begin
             stop:=1;
             end
            else 
            begin 
            stop:=0;
            end;
            pck := ''; 
        end;
    end;
c := GetTickCount()-t;
if (stop = 0) and (c > d) then
begin
t := GetTickCount();
if (n=0) then
begin
buf:= Hstr(Crest1);
n:=1;
end

else if (n=1) then
begin
buf:= Hstr(Crest2);
n:=2;
end;
if (n=crestnr) then n:=0;

SendToServerEx(name);
end;    
end.

автор не известен, на coderx выложил J-Fobos
  Ответить с цитированием
Пользователь сказал cпасибо:
BoxL2 (28.04.2011)
Старый 02.02.2011, 00:11   #69
Заблокирован
 Сержант
Аватар для lSiml
 
lSiml скоро будет известенlSiml скоро будет известенlSiml скоро будет известенlSiml скоро будет известенlSiml скоро будет известен
Регистрация: 04.12.2009
Сообщений: 131
Популярность: 466
Сказал(а) спасибо: 144
Поблагодарили 176 раз(а) в 94 сообщениях
Отправить сообщение для lSiml с помощью ICQ
 
По умолчанию Re: Скрипты для l2phx

Скрипт на заточку от Fer123
Скрипт сделан для хроник: Грация финал, Эпилог и Фрея.


Код:
const
    characterName='fer123';
    //protocol='freya';
    protocol='final/epilogue';
    Max=80;
    AltOption=false;
var
    ItemBase : array[1..4,1..max] of int64;
    ScrollMSListEntry : array[1..2,0..29] of integer;
    invindex : array[1..5] of integer;
    ScrollMSBypass : array[0..29] of string;
    arEnchantMax,arEnchantTo,arItemOID,arItemID,arScrollID: array of Integer;
    values : array[0..16] of variant;
    ItemsName, Inventory, Scrolls, MultisellList : TStringList;
    TempItemOID,TempScrollID,arLength,arPos,CurEnchLvl,ScrollOID,ScrollMSIndex,colID,colMSListID,colMSEntryID,ColExchangeCondition,Step,ScrollAmount,timerint11,timerint12,timerint13,timerint2,timerrandom,stries,itries:integer;
    invmask,TempItemName,TempScrollName,TempMultisellBypass,colMSBypass:string;
    timer,timer2:TTimer;
    started,error,scrollbuying,adenabuying,itembuying,debugmsg,pass2,blockpck:boolean;

Procedure Init;
begin
    SetLineage2Version(protocol);           
    UseForConnectName := characterName;
    ItemsName:=TStringList.Create;
    Inventory:=TStringList.Create;
    Scrolls:=TStringList.Create;
    MultisellList:=TStringList.Create;
    LoadScrolls;
    timer:=TTimer.Create(nil);
    timer.OnTimer:=@OnTimer;
    timer.enabled:=false;
    timer.interval:=2000;
    timer2:=TTimer.Create(nil);
    timer2.OnTimer:=@OnTimer2;
    timer2.enabled:=false;
    timerint11:=2100;
    timerint12:=2200;
    timerint13:=2300;
    timerint2:=10000;
    timer2.interval:=timerint2;
    ScrollAmount:=10;
    ColExchangeCondition:=25000000;
    TempItemName:='Нажми для выбора предмета';
    TempScrollName:='Нажми для выбора заточки';
    buf:=#$14;
    SendToServer;
  try
    ItemsName.LoadFromFile('settings/ItemsID.ini');
  except
    exit;
  end; 
end;

Procedure Free;
var i:integer;
begin
    timer.Free; timer2.Free;
    ItemsName.Free; Inventory.Free; Scrolls.Free; MultisellList.Free;
    started:=false; error:=false; scrollbuying:=false; adenabuying:=false; itembuying:=false;
    debugmsg:=false; pass2:=false; blockpck:=false;
    invmask:=''; TempItemName:=''; TempScrollName:=''; TempMultisellBypass:=''; colMSBypass:='';
    TempItemOID:=0; TempScrollID:=0; arLength:=0; arPos:=0; CurEnchLvl:=0; ScrollOID:=0;
    ScrollMSIndex:=0; colID:=0; colMSListID:=0; colMSEntryID:=0; ColExchangeCondition:=0;
    Step:=0; ScrollAmount:=0; timerint11:=0; timerint12:=0; timerint13:=0; timerint2:=0; 
    timerrandom:=0; stries:=0; itries:=0;
    SetLength(arItemOID,1);
    SetLength(arItemID,1);
    SetLength(arScrollID,1);
    SetLength(arEnchantTo,1);
    SetLength(arEnchantMax,1);
    arItemOID[0]:=0;
    arItemID[0]:=0; 
    arScrollID[0]:=0;
    arEnchantTo[0]:=0;
    arEnchantMax[0]:=0;
    for i:=0 to 29 do begin
    ScrollMSListEntry[1,i]:=0;
    ScrollMSListEntry[2,i]:=0;
    ScrollMSBypass[i]:='';
    end;
    for i:=1 to Max do begin
    ItemBase[1,i]:=0;
    ItemBase[2,i]:=0;
    ItemBase[3,i]:=0;
    ItemBase[4,i]:=0;
    end; 
end;

Procedure LoadScrolls;
begin
    Scrolls.Add('956=Scroll: Enchant Armor D');
    Scrolls.Add('952=Scroll: Enchant Armor C');
    Scrolls.Add('948=Scroll: Enchant Armor B');
    Scrolls.Add('730=Scroll: Enchant Armor A');
    Scrolls.Add('960=Scroll: Enchant Armor S');
    Scrolls.Add('955=Scroll: Enchant Weapon D');
    Scrolls.Add('951=Scroll: Enchant Weapon C');
    Scrolls.Add('947=Scroll: Enchant Weapon B');
    Scrolls.Add('729=Scroll: Enchant Weapon A');
    Scrolls.Add('959=Scroll: Enchant Weapon S');
    Scrolls.Add('6576=Blessed Scroll: Enchant Armor D');
    Scrolls.Add('6574=Blessed Scroll: Enchant Armor C');
    Scrolls.Add('6572=Blessed Scroll: Enchant Armor B');
    Scrolls.Add('6570=Blessed Scroll: Enchant Armor A');
    Scrolls.Add('6578=Blessed Scroll: Enchant Armor S');
    Scrolls.Add('6575=Blessed Scroll: Enchant Weapon D');
    Scrolls.Add('6573=Blessed Scroll: Enchant Weapon C');
    Scrolls.Add('6571=Blessed Scroll: Enchant Weapon B');
    Scrolls.Add('6569=Blessed Scroll: Enchant Weapon A');
    Scrolls.Add('6577=Blessed Scroll: Enchant Weapon S');
    Scrolls.Add('958=Crystal Scroll: Enchant Armor D');
    Scrolls.Add('954=Crystal Scroll: Enchant Armor C');
    Scrolls.Add('950=Crystal Scroll: Enchant Armor B');
    Scrolls.Add('732=Crystal Scroll: Enchant Armor A');
    Scrolls.Add('962=Crystal Scroll: Enchant Armor S');
    Scrolls.Add('957=Crystal Scroll: Enchant Weapon D');
    Scrolls.Add('953=Crystal Scroll: Enchant Weapon C');
    Scrolls.Add('949=Crystal Scroll: Enchant Weapon B');
    Scrolls.Add('731=Crystal Scroll: Enchant Weapon A');
    Scrolls.Add('961=Crystal Scroll: Enchant Weapon S');   
end;

Procedure SetLineage2Version(ver:string);
begin
    case ver of
        'final/epilogue': 
            begin
                invmask:='hdddqhhhdh';
                invindex[1]:=1;
                invindex[2]:=2;
                invindex[3]:=4;
                invindex[4]:=9;
                invindex[5]:=8;
            end;
        'freya':
            begin
                invmask:='dddqhhhdh';
                invindex[1]:=0;
                invindex[2]:=1;
                invindex[3]:=3;
                invindex[4]:=8;
                invindex[5]:=7;            
            end;
    end; 
end;
    
Procedure CreateItemBase; //создание базы предметов
var i,j,count:integer;
begin
    DebugSay('Пришел пакет инвентаря');
    Inventory.Clear;
    count:=round((length(pck)-5)/ReadH(4));
    for j:=1 to 4 do for i:=1 to Max do ItemBase[j,i]:=0;
    for i:=0 to ReadH(4)-1 do
        begin
            readmask(invmask,6+i*count,values);
            ItemBase[1,i+1]:=values[invindex[1]];
            ItemBase[2,i+1]:=values[invindex[2]];
            ItemBase[3,i+1]:=values[invindex[3]];
            ItemBase[4,i+1]:=values[invindex[4]];
            if values[invindex[5]]>0 then Inventory.Add(Format('%d=+%d*%s',[ItemBase[1,i+1],ItemBase[4,i+1],ItemsName.Values[IntToStr(ItemBase[2,i+1])]]));
        end;
end;

Procedure UpdateItemBase;
var i,j,obj,count:integer;
begin
    DebugSay('Пришел пакет обновления инвентаря');
    count:=round((length(pck)-3)/ReadH(2));
    for i:=0 to ReadH(2)-1 do
        begin
            readmask('h'+invmask,4+i*count,values);
            case values[0] of 
                1: obj:=0;
                2: obj:=values[invindex[1]+1];
                3: begin
                    for i:=1 to Max do 
                        if ItemBase[1,i]=values[invindex[1]+1] then
                            begin
                                for j:=1 to 4 do ItemBase[j,i]:=0;
                                if values[invindex[5]+1]>0 then Inventory.Delete(Inventory.IndexOfName(inttostr(values[invindex[1]+1])));
                                break;
                            end;
                    continue;
                   end; 
            end;
            for i:=1 to Max do
                if ItemBase[1,i]=obj then 
                    begin
                        ItemBase[1,i]:=values[invindex[1]+1];
                        ItemBase[2,i]:=values[invindex[2]+1];
                        ItemBase[3,i]:=values[invindex[3]+1];
                        ItemBase[4,i]:=values[invindex[4]+1];
                        if values[invindex[5]+1]>0 then if obj=0 then Inventory.Add(Format('%d=+%d*%s',[ItemBase[1,i],ItemBase[4,i],ItemsName.Values[IntToStr(ItemBase[2,i])]])) else Inventory[Inventory.IndexOfName(inttostr(ItemBase[1,i]))]:=Format('%d=+%d*%s',[ItemBase[1,i],ItemBase[4,i],ItemsName.Values[IntToStr(ItemBase[2,i])]]); 
                        break;
                    end; 
        end;
end;

function GetItem(ID, FieldIn, FieldOut : integer) : integer;
var
  i : integer;
begin
  for i:=1 to max do
    if ItemBase[FieldIn,i]=ID then begin
      result:=ItemBase[FieldOut,i];
      exit;
    end;
  result:=-1;
end;

Procedure MultiSellListCreate;
var count,i,ListID,ScrollsIndex:integer;
begin
    ListID:=ReadD(2);
    count:=0;
    if ScrollMSListEntry[1,ScrollMSIndex]=ListID then exit;
    for i:=1 to ReadD(18) do
        begin
            readmask('dchddhhhhhhhhhhdd',22+count,values);
            count:=count+35+values[13]*44+values[14]*40;
            if values[13]>1 then continue;
            if (colid<>0) and (colid=values[15]) then 
                begin
                    colMSListID:=ListID;
                    colMSEntryID:=values[0];
                    colMSBypass:=TempMultisellBypass;
                    continue;
                end;
            if (values[16]>0) and (MultisellList.IndexOfName(inttostr(values[15]))=-1) then 
                begin
                    MultisellList.Add(Format('%d=%d,%d,%s',[values[15],ListID,values[0],TempMultisellBypass]));
                    continue;
                end;             
            ScrollsIndex:=Scrolls.IndexOfName(inttostr(values[15]));
            if ScrollsIndex<>-1 then 
                begin 
                    ScrollMSListEntry[1,ScrollsIndex]:=ListID;
                    ScrollMSListEntry[2,ScrollsIndex]:=values[0];
                    ScrollMSBypass[ScrollsIndex]:=TempMultisellBypass;
                end;
              
        end;
    
end;

Procedure ShowMenu(index:integer);
var HTML,tempstr:string;
    i:integer;
begin
    case index of
    0: begin
        HTML:='<html><head><title>Автозаточка Fer123 - Заточка</title></head><body>';
        HTML:=HTML+'<center><table cellspacing=0 cellpadding=0><tr>';
        HTML:=HTML+'<td><button value="Заточка"  back="L2UI_CT1.Tab_DF_Tab_Selected" width=67 height=22 fore="L2UI_CT1.Tab_DF_Tab_Selected"></td>';
        HTML:=HTML+'<td><button value="Покупка"  action="bypass script showmenu 1" back="L2UI_CT1.Tab_DF_Tab_Unselected" width=67 height=22 fore="L2UI_CT1.Tab_DF_Tab_Unselected"></td>';
        HTML:=HTML+'<td><button value="Настройки"  action="bypass script showmenu 2" back="L2UI_CT1.Tab_DF_Tab_Unselected" width=69 height=22 fore="L2UI_CT1.Tab_DF_Tab_Unselected"></td>';
        HTML:=HTML+'<td><button value="Помощь"   action="bypass script showmenu 3" back="L2UI_CT1.Tab_DF_Tab_Unselected" width=67 height=22 fore="L2UI_CT1.Tab_DF_Tab_Unselected"></td>';
        HTML:=HTML+'</tr></table></center><br>';
        if started then tempstr:='back="L2UI.SquareGray" fore="L2UI.SquareGray"' else tempstr:='back="L2UI.SquareBlack" fore="L2UI.SquareGray"';
        HTML:=HTML+'<br1><table><tr><td width=80><button value="Старт" action="bypass script start" width="130" height="18" '+tempstr+'></td><td width=6></td>';
        if started then tempstr:='back="L2UI.SquareBlack" fore="L2UI.SquareGray"' else tempstr:='back="L2UI.SquareGray" fore="L2UI.SquareGray"';
        HTML:=HTML+'<td width=80><button value="Стоп" action="bypass script stop" width="130" height="18" '+tempstr+'></td></tr></table><br>';        
        HTML:=HTML+'<table><tr><td width=60>Предмет:</td><td width=215><a action="bypass script showmenu 4">'+TempItemName+'</a></td></tr>';
        HTML:=HTML+'<tr><td width=60>Заточка:</td><td width=215><a action="bypass script showmenu 5">'+TempScrollName+'</a></td></tr></table>';
        HTML:=HTML+'<table><tr><td width=105>Уровень заточки:</td><td align=left><edit var=editField width="50" height="10"></td><td width=107></td></tr></table>';    
        HTML:=HTML+'<table><tr><td><button value="Добавить в очередь" action="bypass script add $editField" width="270" height="18" back="L2UI.SquareBlack" fore="L2UI.SquareGray"></td></tr></table>';
        HTML:=HTML+'<br><center>Очередь</center>';
        HTML:=HTML+'<table bgcolor="696969"><tr><td width=150>Предмет</td><td width=40 align=center>Т</td><td width=40 align=center>Ж</td><td width=40 align=center>Д</td></tr></table>';        
        for i:=0 to arLength-1 do if arItemOID[i]<>0 then 
        begin
            if i=arPos then tempstr:='BEBEBE' else tempstr:='D3D3D3';
            HTML:=HTML+Format('<table bgcolor="%s"><tr><td width=150>%s</td><td width=40 align=center>%d</td><td width=40 align=center>%d</td><td width=40 align=center>%d</td></tr></table>',[tempstr,ItemsName.Values[IntToStr(arItemID[i])],GetItem(arItemOID[i],1,4),arEnchantTo[i],arEnchantMax[i]]);
        end;
        if arLength>0 then HTML:=HTML+'<br1><table><tr><td><button value="Очистить очередь" action="bypass script clear" width="270" height="18" back="L2UI.SquareBlack" fore="L2UI.SquareGray"></td></tr></table>';
        HTML:=HTML+'</body></html>';
       end;
    1: begin
        HTML:='<html><head><title>Автозаточка Fer123 - Покупка</title></head><body>';
        HTML:=HTML+'<center><table border=0 cellspacing=0 cellpadding=0><tr>';
        HTML:=HTML+'<td><button value="Заточка"  action="bypass script showmenu 0" back="L2UI_CT1.Tab_DF_Tab_Unselected" width=67 height=22 fore="L2UI_CT1.Tab_DF_Tab_Unselected"></td>';
        HTML:=HTML+'<td><button value="Покупка"  back="L2UI_CT1.Tab_DF_Tab_Selected" width=67 height=22 fore="L2UI_CT1.Tab_DF_Tab_Selected"></td>';
        HTML:=HTML+'<td><button value="Настройки"  action="bypass script showmenu 2" back="L2UI_CT1.Tab_DF_Tab_Unselected" width=69 height=22 fore="L2UI_CT1.Tab_DF_Tab_Unselected"></td>';
        HTML:=HTML+'<td><button value="Помощь"   action="bypass script showmenu 3" back="L2UI_CT1.Tab_DF_Tab_Unselected" width=67 height=22 fore="L2UI_CT1.Tab_DF_Tab_Unselected"></td>';
        HTML:=HTML+'</tr></table></center><br>';
        HTML:=HTML+'<table width=270><tr><td>';
        if scrollbuying=true then HTML:=HTML+'<button value="" action="bypass script scrollbuying off" width=12 height=12 fore="L2UI.CheckBox_checked" back="L2UI.CheckBox_checked">' else
        HTML:=HTML+'<button value="" action="bypass script scrollbuying on" width=12 height=12 fore="L2UI.CheckBox" back="L2UI.CheckBox">';
        HTML:=HTML+'</td><td width=258>Покупка заточек (MultiSell)</td></tr></table>';
        HTML:=HTML+'<table><tr><td width=15></td><td width=180>Кол-во, покупаемых заточек:</td>';
        HTML:=HTML+'<td><edit var=Amount width="25" height="10"></td><td width=2></td><td><button value="ОК" action="bypass script maxscrolls $Amount" width="25" height="16" back="L2UI.SquareBlack" fore="L2UI.SquareGray"></td></tr></table>';
        HTML:=HTML+'<br1><table width=270><tr><td>';
        if itembuying=true then HTML:=HTML+'<button value="" action="bypass script itembuying off" width=12 height=12 fore="L2UI.CheckBox_checked" back="L2UI.CheckBox_checked">' else
        HTML:=HTML+'<button value="" action="bypass script itembuying on" width=12 height=12 fore="L2UI.CheckBox" back="L2UI.CheckBox">';
        HTML:=HTML+'</td><td width=258>Покупка предметов (MultiSell)</td></tr></table>';
        HTML:=HTML+'<br1><table width=270><tr><td>';
        if adenabuying=true then HTML:=HTML+'<button value="" action="bypass script adenabuying off" width=12 height=12 fore="L2UI.CheckBox_checked" back="L2UI.CheckBox_checked">' else
        HTML:=HTML+'<button value="" action="bypass script adenabuying on" width=12 height=12 fore="L2UI.CheckBox" back="L2UI.CheckBox">';
        HTML:=HTML+'</td><td width=258>Обмен адены</td></tr></table>';
        HTML:=HTML+'<table><tr><td width=18></td><td width=252>Введите ID предмета, который обменивается на адену:</td></tr></table>'; 
        HTML:=HTML+'<table><tr><td width=16></td><td><edit var=ColID width="50" height="10"></td><td width=10></td><td><button value="ОК" action="bypass script col $ColID" width="25" height="18" back="L2UI.SquareBlack" fore="L2UI.SquareGray"></td></tr></table>';
        HTML:=HTML+'<table><tr><td width=16></td><td width=252>Обменивать при условии: Адена меньше </td></tr></table>'; 
        HTML:=HTML+'<table><tr><td width=16></td><td><edit var=ColCond width="50" height="10"></td><td width=10></td><td><button value="ОК" action="bypass script colcondition $ColCond" width="25" height="18" back="L2UI.SquareBlack" fore="L2UI.SquareGray"></td></tr></table>';
        HTML:=HTML+'<br>В настоящее время скрипт запомнил MultiSell IDs для: ';
        for i:=0 to 29 do if ScrollMSListEntry[2,i]<>0 then HTML:=HTML+Scrolls.Values[Scrolls.Names[i]]+', ';
        for i:=0 to arLength-1 do if MultisellList.IndexOfName(inttostr(arItemID[i]))<>-1 then HTML:=HTML+ItemsName.Values[inttostr(arItemID[i])]+', '; 
        if colMSEntryID<>0 then HTML:=HTML+ItemsName.Values[inttostr(colid)]+', ';        
        if HTML[length(HTML)-1]=',' then HTML[length(HTML)-1]:='.';
        HTML:=HTML+'</body></html>';
       end;
    2: begin
        HTML:='<html><head><title>Автозаточка Fer123 - Настройки</title></head><body>';
        HTML:=HTML+'<center><table border=0 cellspacing=0 cellpadding=0><tr>';
        HTML:=HTML+'<td><button value="Заточка"  action="bypass script showmenu 0" back="L2UI_CT1.Tab_DF_Tab_Unselected" width=67 height=22 fore="L2UI_CT1.Tab_DF_Tab_Unselected"></td>';
        HTML:=HTML+'<td><button value="Покупка"  action="bypass script showmenu 1" back="L2UI_CT1.Tab_DF_Tab_Unselected" width=67 height=22 fore="L2UI_CT1.Tab_DF_Tab_Unselected"></td>';
        HTML:=HTML+'<td><button value="Настройки"  back="L2UI_CT1.Tab_DF_Tab_Selected" width=69 height=22 fore="L2UI_CT1.Tab_DF_Tab_Selected"></td>';
        HTML:=HTML+'<td><button value="Помощь"   action="bypass script showmenu 3" back="L2UI_CT1.Tab_DF_Tab_Unselected" width=67 height=22 fore="L2UI_CT1.Tab_DF_Tab_Unselected"></td>';
        HTML:=HTML+'</tr></table></center><br>';
        HTML:=HTML+'<table width=270><tr><td>';
        if debugmsg=true then HTML:=HTML+'<button value="" action="bypass script debugmsg off" width=12 height=12 fore="L2UI.CheckBox_checked" back="L2UI.CheckBox_checked">' else
        HTML:=HTML+'<button value="" action="bypass script debugmsg on" width=12 height=12 fore="L2UI.CheckBox" back="L2UI.CheckBox">';
        HTML:=HTML+'</td><td width=258>Вывод дебаг сообщений (Party Chat)</td></tr></table><br>';
        HTML:=HTML+'<center>Тайминги</center><br1>';
        HTML:=HTML+'<table width=270><tr><td>Интервалы таймера заточки (мсек): </td></tr></table>';
        HTML:=HTML+'<table><tr><td>Шаг 1:</td><td><edit var=timer11 width="50" height="10"></td><td><button value="ОК" action="bypass script timer11 $timer11" width="25" height="18" back="L2UI.SquareBlack" fore="L2UI.SquareGray"></td></tr>';
        HTML:=HTML+'<tr><td>Шаг 2:</td><td><edit var=timer12 width="50" height="10"></td><td><button value="ОК" action="bypass script timer12 $timer12" width="25" height="18" back="L2UI.SquareBlack" fore="L2UI.SquareGray"></td></tr>';
        HTML:=HTML+'<tr><td>Шаг 3:</td><td><edit var=timer13 width="50" height="10"></td><td><button value="ОК" action="bypass script timer13 $timer13" width="25" height="18" back="L2UI.SquareBlack" fore="L2UI.SquareGray"></td></tr></table>';
        HTML:=HTML+'<table><tr><td width=170>Интервал таймера покупки: </td><td><edit var=timer2 width="50" height="10"></td><td><button value="ОК" action="bypass script timer2 $timer2" width="25" height="18" back="L2UI.SquareBlack" fore="L2UI.SquareGray"></td></tr>';
        HTML:=HTML+'<tr><td width=160>Случайное значение: </td><td><edit var=random width="50" height="10"></td><td><button value="ОК" action="bypass script setrandom $random" width="25" height="18" back="L2UI.SquareBlack" fore="L2UI.SquareGray"></td></tr></table>';
        HTML:=HTML+'<br><center>Остальное</center><br1>';
        HTML:=HTML+'<table width=270><tr><td>';
        if pass2=true then HTML:=HTML+'<button value="" action="bypass script pass2 off" width=12 height=12 fore="L2UI.CheckBox_checked" back="L2UI.CheckBox_checked">' else
        HTML:=HTML+'<button value="" action="bypass script pass2 on" width=12 height=12 fore="L2UI.CheckBox" back="L2UI.CheckBox">';
        HTML:=HTML+'</td><td width=258>Пропускать Шаг 2 (RequestTryToPutEnchantTargetItem)</td></tr>';
        HTML:=HTML+'<tr><td>';
        if blockpck=true then HTML:=HTML+'<button value="" action="bypass script blockpck off" width=12 height=12 fore="L2UI.CheckBox_checked" back="L2UI.CheckBox_checked">' else
        HTML:=HTML+'<button value="" action="bypass script blockpck on" width=12 height=12 fore="L2UI.CheckBox" back="L2UI.CheckBox">';
        HTML:=HTML+'</td><td width=258>Блокировать пакеты ChooseInventory и MultiSellList</td></tr></table>';
        HTML:=HTML+'</body></html>';
       end;
    3: begin
        HTML:='<html><head><title>Автозаточка Fer123 - Помощь</title></head><body>';
        HTML:=HTML+'<center><table border=0 cellspacing=0 cellpadding=0><tr>';
        HTML:=HTML+'<td><button value="Заточка"  action="bypass script showmenu 0" back="L2UI_CT1.Tab_DF_Tab_Unselected" width=67 height=22 fore="L2UI_CT1.Tab_DF_Tab_Unselected"></td>';
        HTML:=HTML+'<td><button value="Покупка"  action="bypass script showmenu 1" back="L2UI_CT1.Tab_DF_Tab_Unselected" width=67 height=22 fore="L2UI_CT1.Tab_DF_Tab_Unselected"></td>';
        HTML:=HTML+'<td><button value="Настройки"  action="bypass script showmenu 2" back="L2UI_CT1.Tab_DF_Tab_Unselected" width=69 height=22 fore="L2UI_CT1.Tab_DF_Tab_Unselected"></td>';
        HTML:=HTML+'<td><button value="Помощь"  back="L2UI_CT1.Tab_DF_Tab_Selected" width=67 height=22 fore="L2UI_CT1.Tab_DF_Tab_Selected"></td>';
        HTML:=HTML+'</tr></table></center><br>';
        HTML:=HTML+'В вкладке "Заточка" выбирите предмет и заточку, затем введите желаемый уровень заточки и нажмите кнопку "Добавить в очередь".<br1>Если все введено верно то, имя предмета появится в таблице ниже.<br1>';
        HTML:=HTML+'Сокращения в таблице: Т - Текущий, Ж - Желаемый, Д - Достигнутый.<br1>Текущий предмет в таблице выделен серым цветом, остальные светло-серым.<br1>'; 
        HTML:=HTML+'При добавлении первого предмета появляется кнопка "Очистить очередь", которая очищает таблицу.<br1>Кнопки "Старт" и "Стоп" запускают и останавливают процесс заточки.<br>';
        HTML:=HTML+'В вкладке "Покупка" настраивается покупка заточек, предметов (при поломке), и обмен адены<br>';
        HTML:=HTML+'В вкладке "Настройка" настраиваются тайминги и прочее';
        HTML:=HTML+'</body></html>';
       end;
    4: begin
        HTML:='<html><head><title>Автозаточка Fer123 - Выбор предмета</title></head><body>';
        for i:=0 to Inventory.Count-1 do HTML:=HTML+'<a action="bypass script chooseitem '+Inventory.Names[i]+'">'+Inventory.Values[Inventory.Names[i]]+'</a><br1>'; 
        HTML:=HTML+'</body></html>';
       end;
    5: begin
        HTML:='<html><head><title>Автозаточка Fer123 - Выбор заточки</title></head><body>';
        for i:=0 to Scrolls.Count-1 do HTML:=HTML+'<a action="bypass script choosescroll '+Scrolls.Names[i]+'">'+Scrolls.Values[Scrolls.Names[i]]+'</a><br1>'; 
        HTML:=HTML+'</body></html>';
       end;         
    end;
    WriteMask('cdsd',[$19,5,HTML,0]);
    SendToClient;
end;

Procedure ExecuteCMD(CMD:string);
var argument:string;
begin
if Copy(CMD,1,6)='script' then 
    begin
        Delete(CMD,1,7);
        if pos(' ',CMD)<>0 then begin
            argument:=CMD;
            CMD:=Copy(CMD,1,pos(' ',CMD)-1);
            Delete(argument,1,pos(' ',argument));
        end else argument:='';
        case CMD of
            'start': if not started then
                begin
                    Step:=1;
                    error:=false;
                    itries:=0;
                    stries:=0;
                    if arLength>0 then begin
                        started:=true;
                        timer.enabled:=true;
                    end;
                    if scrollbuying then timer2.enabled:=true;
                    ShowMenu(0);
                end;
            'stop': if started then
                begin
                    Step:=1;
                    started:=false;
                    timer.enabled:=false;
                    timer2.enabled:=false;
                    ShowMenu(0); 
                end;
            'add': 
                begin
                    if (argument<>'') and (TempItemOID<>0) and (TempScrollID<>0) then begin
                        inc(arLength);
                        SetLength(arItemOID,arLength);
                        SetLength(arItemID,arLength);
                        SetLength(arScrollID,arLength);
                        SetLength(arEnchantTo,arLength);
                        SetLength(arEnchantMax,arLength);
                        arItemOID[arLength-1]:=TempItemOID;
                        arItemID[arLength-1]:=GetItem(TempItemOID,1,2);
                        arScrollID[arLength-1]:=TempScrollID;
                        arEnchantTo[arLength-1]:=strtoint(argument);
                        if arLength=1 then begin
                            if AltOption=true then AltSearch else CurEnchLvl:=GetItem(arItemOID[0],1,4);
                            ScrollMSIndex:=Scrolls.IndexOfName(inttostr(arScrollID[arPos]));
                        end;
                        TempItemName:='Нажми для выбора предмета';
                        TempScrollName:='Нажми для выбора заточки';
                        TempItemOID:=0;
                        TempScrollID:=0;
                        ShowMenu(0);
                    end;
                end;
            'col': 
                begin
                    if argument<>'' then colid:=strtoint(argument);
                    ShowMenu(1);
                end;
            'colcondition':
                begin
                    if argument<>'' then ColExchangeCondition:=strtoint(argument);
                    ShowMenu(1);
                end;
            'chooseitem': 
                begin
                    if GetItem(strtoint(argument),1,3)<>-1 then begin
                    TempItemName:=Inventory.Values[argument];
                    TempItemOID:=strtoint(argument);
                    end;
                    ShowMenu(0);
                end;
            'clear': 
                begin
                    arLength:=0;
                    arPos:=0;
                    SetLength(arItemOID,1);
                    SetLength(arItemID,1);
                    SetLength(arScrollID,1);
                    SetLength(arEnchantTo,1);
                    SetLength(arEnchantMax,1);
                    arItemOID[0]:=0;
                    arItemID[0]:=0; 
                    arScrollID[0]:=0;
                    arEnchantTo[0]:=0;
                    arEnchantMax[0]:=0;
                    if started then begin
                    Step:=1;
                    started:=false;
                    timer.enabled:=false;
                    timer2.enabled:=false;                    
                    end;
                    ShowMenu(0);       
                end;
            'choosescroll': 
                begin
                    TempScrollName:=Scrolls.Values[argument];
                    TempScrollID:=strtoint(argument);
                    ShowMenu(0);
                end;
            'maxscrolls': 
                begin
                    if argument<>'' then ScrollAmount:=strtoint(argument);
                    ShowMenu(1);
                end;
            'timer11': 
                begin
                    if argument<>'' then timerint11:=strtoint(argument);
                    ShowMenu(2);
                end;
            'timer12': 
                begin
                    if argument<>'' then timerint12:=strtoint(argument);
                    ShowMenu(2);
                end;
            'timer13': 
                begin
                    if argument<>'' then timerint13:=strtoint(argument); 
                    ShowMenu(2);
                end;
            'timer2': 
                begin
                    if argument<>'' then timerint2:=strtoint(argument);
                    ShowMenu(2);
                end;
            'setrandom': 
                begin
                    if argument<>'' then timerrandom:=strtoint(argument);
                    ShowMenu(2);
                end; 
            'showmenu': ShowMenu(strtoint(argument));
            'scrollbuying': 
                begin
                    if argument='on' then begin 
                    scrollbuying:=true;
                    if started then timer2.enabled:=true;
                    end;
                    if argument='off' then scrollbuying:=false;
                    ShowMenu(1);
                end; 
            'itembuying': 
                begin
                    if argument='on' then itembuying:=true;
                    if argument='off' then itembuying:=false;
                    ShowMenu(1);
                end; 
            'adenabuying': 
                begin
                    if argument='on' then adenabuying:=true;
                    if argument='off' then adenabuying:=false;
                    ShowMenu(1);
                end;
            'debugmsg': 
                begin
                    if argument='on' then debugmsg:=true;
                    if argument='off' then debugmsg:=false;
                    ShowMenu(2);
                end;
            'pass2': 
                begin
                    if argument='on' then pass2:=true;
                    if argument='off' then pass2:=false;
                    ShowMenu(2);
                end;
            'blockpck': 
                begin
                    if argument='on' then blockpck:=true;
                    if argument='off' then blockpck:=false;
                    ShowMenu(2);
                end;  
        end;
       pck:='';
    end else TempMultisellBypass:=CMD;
end;

Procedure DebugSay(text:string);
begin
    if debugmsg then begin
    buf:=#$4A;
    Writemask('ddss',[0,3,'Script',text]);
    SendToClient; 
    end;
end;

procedure UseItem(ObjectID: integer);
begin
  buf:=#$19;
  WriteD(ObjectID);
  WriteD(0);
  SendToServer;
end;

Procedure RequestPutEnchantTargetItem(ObjectID: integer);
begin
    buf:=#$D0;
    WriteH(76);
    WriteD(ObjectID);
    SendToServer;
end;

procedure RequestEnchantItem(ObjectID: integer);
begin
  buf:=#$5F;
  WriteD(ObjectID);
  WriteD(0);
  SendToServer;
end;

Procedure RequestExCancelEnchantItem;
begin
buf:=HStr('D0 4E 00');
SendToServer;
end;

Procedure MultisellChoose(ListID,EntryID,Amount:integer);
begin
  buf:=#$B0;
  WriteMask('ddqhddhhhhhhhh',[ListID,EntryID,Amount,0,0,0,65534,0,0,0,0,0,0,0]);                   
  SendToServer;
end;

function AltGetItem(ID,lvl:integer) : integer;
var
  i : integer;
begin
  for i:=1 to max do
    if (ItemBase[2,i]=ID) and (Itembase[4,i]=lvl) then begin
      result:=ItemBase[1,i]; // itemOID
      exit;
    end;
  result:=0;
end;

procedure AltSearch;
begin
  CurEnchLvl:=0;
  if GetItem(arItemID[arPos],2,1)=-1 then exit;
  repeat
  arItemOID[arPos]:=AltGetItem(arItemID[arPos],CurEnchLvl);
  if arItemOID[arPos]=0 then inc(CurEnchLvl);
  until arItemOID[arPos]<>0;
end;

//............................................
//******************************************************************************
procedure OnTimer(Sender: TObject);
var ListId,EntryID:integer;
    MSstr:string;
begin
  case Step of  
  1: begin
        if AltOption=true then AltSearch else CurEnchLvl:=GetItem(arItemOID[arPos],1,4);
        if arEnchantMax[arPos]<CurEnchLvl then arEnchantMax[arPos]:=CurEnchLvl;
        if (CurEnchLvl>=arEnchantTo[arPos]) or error then begin
            if error then DebugSay('Ошибка! Невозможно найти/купить предмет/заточку. Переходим к следующему в очереди...');
            error:=false;
            repeat
                if (arPos+1)>=arLength then
                begin
                    DebugSay('Прервано! Очередь выполнена!');
                    started:=false;
                    timer.enabled:=false;
                    timer2.enabled:=false;
                    exit;
                 end;
                inc(arPos);
                DebugSay('Затачивается предмет №'+inttostr(arPos+1));
                if AltOption=true then AltSearch else CurEnchLvl:=GetItem(arItemOID[arPos],1,4);
            until CurEnchLvl<arEnchantTo[arPos];
            ScrollMSIndex:=Scrolls.IndexOfName(inttostr(arScrollID[arPos]));
            stries:=0;
            itries:=0;
        end;
        if adenabuying and (GetItem(57,2,3)<ColExchangeCondition) then   
        if GetItem(colid,2,1)=-1 then
            begin
                timer2.enabled:=false;
                if GetItem(arScrollID[arPos],2,1)=-1 then begin
                DebugSay('Прервано! Закончились предметы для обмена адены.');
                started:=false;
                timer.enabled:=false;
                timer2.enabled:=false;
                exit;
                end;
            end else 
            begin
                DebugSay('Обмениваем адену...');
                RequestBypassToServer(colMSBypass); 
                MultisellChoose(colMSListID,colMSEntryID,1);
                timer.interval:=2000;
                exit;                   
            end;
        if GetItem(arItemOID[arPos],1,3)=-1 then
        begin
            if AltOption then DebugSay('Сломаны все предметы.') else DebugSay('Предмет OID='+inttostr(arItemOID[arPos])+' сломан, ищем новый предмет...');
            if GetItem(arItemID[arPos],2,1)<>-1 then 
            begin
                arItemOID[arPos]:=GetItem(arItemID[arPos],2,1);
                CurEnchLvl:=GetItem(arItemOID[arPos],1,4);
                if not AltOption then DebugSay('Новый предмет найден. OID='+inttostr(arItemOID[arPos]));
                Step:=3; 
            end else if itembuying then Step:=2 else error:=true;      
        end else Step:=3;
        timer.interval:=10;           
     end;
  2: begin
        if GetItem(arItemID[arPos],2,1)=-1 then begin
            if (MultisellList.IndexOfName(inttostr(arItemID[arPos]))=-1) or (itries=5) then begin
                error:=true;
                Step:=1;
                exit;
            end;
            DebugSay('Пытаемся купить новый предмет.');
            timer.interval:=2000;
            MSstr:=MultisellList.Values[inttostr(arItemID[arPos])];
            ListID:=strtoint(Copy(MSstr,1,pos(',',MSstr)-1));
            Delete(MSstr,1,pos(',',MSstr));
            EntryID:=strtoint(Copy(MSstr,1,pos(',',MSstr)-1));
            Delete(MSstr,1,pos(',',MSstr));
            RequestBypassToServer(MSstr);
            MultisellChoose(ListID,EntryID,1);
            inc(itries);
        end else 
        begin
            itries:=0;
            arItemOID[arPos]:=GetItem(arItemID[arPos],2,1);
            CurEnchLvl:=GetItem(arItemOID[arPos],1,4);
            DebugSay('Новый предмет куплен. OID='+inttostr(arItemOID[arPos]));
            Step:=3;
            timer.interval:=10;
        end;
     end;
  3: begin
        ScrollOID:=GetItem(arScrollID[arPos],2,1);
        if ScrollOID<>-1 then
            begin
                timer.interval:=timerint11+round(random()*timerrandom);
                if pass2 then Step:=5 else Step:=4;
                timer.enabled:=false;
                UseItem(ScrollOID);
                DebugSay('Активирована заточка '+Scrolls.Values[inttostr(arScrollID[arPos])]);
            end else 
            begin
                if (scrollbuying=false) or (ScrollMSListEntry[2,ScrollMSIndex]=0) or (stries=5) then error:=true;
                Step:=1;
            end;
     end;  
  4: begin
        timer.interval:=timerint12+round(random()*timerrandom);
        RequestPutEnchantTargetItem(arItemOID[arPos]);
        DebugSay('Ложим предмет OID='+inttostr(arItemOID[arPos])+' в окно заточки');
        Step:=5;
        timer.enabled:=false;
     end;
  5: begin
        timer.interval:=timerint13+round(random()*timerrandom);
        RequestEnchantItem(arItemOID[arPos]);
        Step:=1;
        DebugSay('Посылаем запрос на заточку предмета. OID='+inttostr(arItemOID[arPos]));
        timer.enabled:=false;
     end;      
  end;
end;

procedure RequestBypassToServer(cmd : string);
begin
  buf:=#$23;
  WriteS(cmd);
  SendToServer;
end;
procedure OnTimer2(Sender: TObject);
begin
  if (scrollbuying=true) and (GetItem(arScrollID[arPos],2,3)<25) and (ScrollMSListEntry[2,ScrollMSIndex]<>0) then 
     begin
       DebugSay('Пытаемся купить заточки.');     
       RequestBypassToServer(ScrollMSBypass[ScrollMSIndex]);
       MultisellChoose(ScrollMSListEntry[1,ScrollMSIndex],ScrollMSListEntry[2,ScrollMSIndex],ScrollAmount); 
     end;
  if GetItem(arScrollID[arPos],2,3)<=0 then inc(stries) else stries:=0;
  timer2.interval:=timerint2+round(random()*timerrandom);
end;
 
begin
    if FromServer then
    case pck[1] of
        #$11 : CreateItemBase;
        #$21 : UpdateItemBase;
        #$D0 : begin
                MultiSellListCreate;
                if started and blockpck then pck:='';
               end; 
        #$7C : if started then 
                begin
                    if Step=4 then timer.enabled:=true;
                    if pass2 and (Step=5) then timer.enabled:=true;
                    if blockpck then pck:='';
                end; 
        #$FE : if started and (ReadH(2)=129) and (Step=5) then if ReadD(4)=0 then 
                begin
                    RequestExCancelEnchantItem;
                    DebugSay('Не совпадает сила действий свитка');
                    Step:=1;
                    timer.enabled:=true;
                end else timer.enabled:=true; 
        #$87 : if started then 
                begin
                    if Step=1 then timer.enabled:=true;
                    case ReadD(2) of
                        0:DebugSay('Успешно заточено до +'+inttostr(CurEnchLvl+1));
                        1:DebugSay('Неудачная заточка. Предмет разбит на кристаллы');
                        2:DebugSay('Заточка отменена');
                        3:DebugSay('Неудачная заточка. Уровень заточки = 0');
                        4:DebugSay('Неудачная заточка');
                        5:DebugSay('Неудачная безопасная заточка. Уровень заточки = '+inttostr(CurEnchLvl+1));
                    end;
                end; 
    end;
if FromClient and (pck[1]=#$56) and (ReadD(2)=12) then 
    begin
        ShowMenu(0);
        pck:='';
    end;
if FromClient and (pck[1]=#$23) then ExecuteCMD(ReadS(2));
end.
  Ответить с цитированием
Пользователь сказал cпасибо:
DarkMerlin (06.04.2011)
Старый 24.04.2011, 22:37   #70
Заблокирован
 Сержант
Аватар для lSiml
 
lSiml скоро будет известенlSiml скоро будет известенlSiml скоро будет известенlSiml скоро будет известенlSiml скоро будет известен
Регистрация: 04.12.2009
Сообщений: 131
Популярность: 466
Сказал(а) спасибо: 144
Поблагодарили 176 раз(а) в 94 сообщениях
Отправить сообщение для lSiml с помощью ICQ
 
По умолчанию Re: Скрипты для l2phx

Final - мини радар

Код:
//спасибо за идею mira
// by Breadfan, Gr_Final chronics
// Работа с чаринфо - Fer123
//принцип работы с масками - mira
// пауза - соц. advance - требуется если при включенном скрипте надо пообщатся с нпс - 
// иначе при появлении\удалении рядом игрока текущее диалоговое окно будет сбито обновлением списка целей. 
// при старте скрипт - по умолчанию запущен.
//
// после запуска - 1) пройти персом - считать координаты - на всякий случай - хотя по идее при старте
// перс сам должен сесть-встать для получения координат 2) сделать релог - при необходимости
// считать окружение и немедленно его показать, если после запуска кудато 
// телепортируешся - то релог не нужен.
//
// список выводитса по команде в чат //list - с двумя слешами! можно закрыть, 
// при появлении\удалении очередного перса,
// или нажатии\отжатии паузы, или повторно //list в чат - появитса вновь. 
//
// автоматически очищает списки при телепортах, удаляет телепортировавшихся игроков, просто умерших - скрывает,
// после их воскрешения - отобразит повторно.
//
// во время паузы - считывание окружения продолжается, приостановлен лишь вывод записей, так что после возобновления
// работы - будет выведен обновленный список
//
// при первом запуске - уточнить путь к classid.ini !!! Для отображения профессий.
//
// Работает - только с клиентом!!! работа с режимом - NoCloseServerAfterClientDisconnect - даже не тестилась. 
//
// КланЛидеры выделены в списке цветом
// Сортировки - нет, фильтр - примитивен - только для отсева торговцев.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const
    name='Aola';
////////////////<<<<<<<<<<----Mask---->>>>///////////////////////////////////////////
    RELATION_CLAN_MEMBER   = $40;      // персонаж состоящий в каком-либо клане
    RELATION_LEADER        = $80;      // клан лидер
    RELATION_CLAN_MATE     = $100;     // хз
    RELATION_INSIEGE       = $200;     // осаждаемые
    RELATION_ATTACKER      = $400;     // осаждающие
    RELATION_ALLY          = $800;     // альянс
    RELATION_ENEMY         = $1000;    // хз
    RELATION_MUTUAL_WAR    = $4000;    // двусторонний вар
    RELATION_1SIDED_WAR    = $8000;    // односторонка
    RELATION_ALLY_MEMBER   = $10000;   // альянс
    RELATION_TERRITORY_WAR = $80000;   // ТВ
//////////////////////////////////////////////////////////////////////////////////////////
//------->>> Создаем маску с которой и будем работать впоследствии - 
//           перечислением нужных флагов через OR
//////////////////////////////////////////////////////////////////////////////////////////
//// в данном случае будут обрабатыватся двусторонки, атакующие замок, односторонние вары:
//// (отдельно клан лидера в маску добавлять не требуется)
    Mask = RELATION_MUTUAL_WAR or RELATION_ATTACKER or RELATION_1SIDED_WAR; 
var
    html_, charstr, cmd, OID                          : String;
    CharData, CharInfo, CharClass, CharWars, CharDead : TStringList;
    CharDataIndex, CharWarsIndex                      : Integer;
    i, MyX, MyY, MyZ                                  : Integer;
    pause                                             : Boolean;
procedure Init; //Вызывается при включении скрипта
begin
    html_     := '';
    CharData  := TStringList.Create;
    CharInfo  := TStringList.Create;    
    CharClass := TStringList.Create;
    CharWars  := TStringList.Create;
    CharDead  := TStringList.Create;
    pause     := false;
    try
        CharClass.LoadFromFile('settings\classid.ini');
    except
        Sendmsg('classid.ini не найден!');
        exit;
    end;
    MyX:=0;MyY:=0;MyZ:=0;
    buf:=#$56;WriteD(0);WriteD(0);WriteC(0);
    SendtoserverEx(name);
    delay(250);
    SendtoserverEx(name);
    ShowBoard;
end;
procedure Free; //Вызывается при выключении скрипта
begin
    CharData.free; CharInfo.free; CharWars.free; CharDead.free;
end;
procedure ShowBoard; //формирование окна вывода
begin
    if Not pause then begin
    html_:='<html><body><font color="LEVEL"><center>List of Targets:</center></font>';
    buf:=#$19;WriteD(0);
    if chardata.count=0 then html_:='<html><body><font color="LEVEL"><center>List of Targets: Null</center></font>';
    for i:=0 to CharData.Count-1 do begin
        charstr:=CharData;
        if ((CharWars.Values[copy(charstr,1,9)])<>'') and Not((CharDead.Values[copy(charstr,1,9)])<>'') then begin
            //уточняем бит - клан лидер или не
            if (strtoint((CharWars.Values[copy(charstr,1,9)]))and RELATION_LEADER)=0 then begin 
                html_:=html_+'<br><a action="bypass -h target_on_'+inttostr(i)+'">'+copy(charstr,Pos('=',charstr)+1,length(charstr)-Pos('=',charstr))+'</a>';//Pos('=',charstr);
            end else begin
                //и если - лидер - то выделяем цветом
                html_:=html_+'<br><a action="bypass -h target_on_'+inttostr(i)+'">'+'<font color="LEVEL">'+copy(charstr,Pos('=',charstr)+1,length(charstr)-Pos('=',charstr))+'</font>'+'</a>';//'   <<-- Leader of war clan !'+'</a>';//Pos('=',charstr);
            end;
        end;
    end;
    end;
    //  пишем сформированый пакет и шлем его
    WriteS(html_);WriteD(0);SendtoclientEx(name);
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
    if fromserver and (connectname=name) then begin
        case (pck[1]) of
            #$00:begin //скрыть игрока из списка если он умер - добавляется в список мертвых 
                    CharDataIndex:=CharData.IndexOfName(inttostr(ReadD(2)));
                    if CharDataIndex=-1 then exit else CharDead.Values[inttostr(ReadD(2))]:='is dead';
                    ShowBoard;
            end;
            #$01:begin //вернуть в список если его реснули - вычеркнуть из списка мертвых
                    CharDataIndex:=CharDead.IndexOfName(inttostr(ReadD(2)));
                    if CharDataIndex=-1 then exit else CharDead.Delete(CharDataIndex);
                    ShowBoard;
            end;
            #$08:begin //одиночное удаление - удалить и из списка и (если он был) из списка мертвых
                    CharDataIndex:=CharData.IndexOfName(inttostr(ReadD(2)));
                    if CharDataIndex=-1 then exit else begin CharData.Delete(CharDataIndex);CharDead.Delete(CharDataIndex);end;
                    ShowBoard;
            end;
            #$31:begin //  инфа об окружающих в формате оид=ник+', '+профа
                        // если ктото сидит на торге - его не учитываем, если его ранее не 
                        // было в списках, или же удалим - если был.
                    if (ReadC(length(pck)-99)<>1) then begin
                        CharDataIndex:=CharData.IndexOfName(inttostr(ReadD(18)));
                        if CharDataIndex=-1 then
                        CharData.Add(Format('%d=%s, %s',[ReadD(18),ReadS(22),CharClass.Values[inttostr(ReadH(length(pck)-84))]]))  //dobovlenie v bazu
                        else CharData[CharDataIndex]:=Format('%d=%s, %s',[ReadD(18),ReadS(22),CharClass.Values[inttostr(ReadH(length(pck)-84))]]); //obnovlenie   
                        ShowBoard;
                    end else begin
                        CharDataIndex:=CharData.IndexOfName(inttostr(ReadD(18)));
                        if CharDataIndex=-1 then exit else begin CharData.Delete(CharDataIndex);CharDead.Delete(CharDataIndex);end;
                        ShowBoard;
                    end;
            end;
            #$CE:begin //!!!!!!!!<<<< --- Обработка 0xCE (RelationChanged)--- >>>>>
                    if ((ReadD(6)and mask)<>0) then begin
                       CharWars.Values[inttostr(ReadD(2))]:=inttostr(ReadD(6));
                       ShowBoard;
                    end;
            end;
        end;
    end;
    if fromclient and (connectname=name) then begin
        case (pck[1]) of
            #$0f:begin //координаты
                    MyX:=ReadD(2);MyY:=ReadD(6);MyZ:=ReadD(10);
            end;
            #$23:begin 
                    if (copy((ReadS(2)),1,10)='target_on_')then begin
                        OID:=copy(CharData[strtoint(copy(ReadS(2),11,1))],1,9);
                        buf:=#$1F; WriteMask('ddddc',[oid,MyX,MyY,MyZ,0]); 
                        if (MyX<>0)or(MyY<>0)or(MyZ<>0) then pck:=buf;//замена команды на пакет экшн 
                        ShowBoard;
                    end;
            end;
            #$3a:begin //полная очистка при телепорте 
                    CharData.clear;
                    CharWars.clear;
                    ShowBoard;
            end;
            #$56:begin //вкл\выкл паузы
                    if ReadD(2)=14 then pause:=Not pause;
                    ShowBoard;
                    if pause then begin
                        buf:=#$19;WriteD(0);
                        html_:='<html><body><font color="LEVEL"><center>List of Targets: Pause</center></font>';
                        WriteS(html_);WriteD(0);SendtoclientEx(name);
                    end;
            end;
            #$59:begin //координаты
                    MyX:=ReadD(2);MyY:=ReadD(6);MyZ:=ReadD(10);
            end;
            #$74:begin //прячем управление через чат от сервера
                if (ReadS(2)='list') then begin
                    buf:=#$48;WriteH(0); pck:=buf; ShowBoard;
                end; 
            end;
        end;
    end;
end.

Пробуйте
НО - скорее всего надо будет допиливать под себя, данный скрипт писалса согласно данных от l2mir.org


на кодерах выложил Breadfan

Добавлено через 3 минуты
Авто Augument to Freya


Код:
//Made By Avrelio
//Скрипт на аргументацию в 1 нажатия
//Вставить ЛС соцальное действие ДА /social yes
//Удалить ЛС соцальное действие НЕТ /socila no
const
name='AvrelioCX';   //ник чара
puhaid=15893;      //ид пухи куда ЛС встовлять Не забываем если 2 оденаковые пухи 1 ложым в вх
lifestoneid=10484; // ИД лайф стона
gamestoneid=2132;   // ИД гем стоуна 2132 б грейд
gemcount=36;    //скока гемов надо на вставку 36 для топ пухи дальше сам в игре смотриш

var
Invertory:array[0..999,1..2] of integer;
i:word;
ObjId,ObjId1,ObjId2:integer;

procedure Init; 
begin
buf:=#$14;
SendToServerEx(name);
end;


procedure ItemList; //obj id puhi
begin
    for i:=0 to ReadH(2)-1 do
        begin   
            Invertory[i,1]:=0;
            Invertory[i,2]:=0;
        end;
    for i:=0 to ReadH(2)-1 do
        begin 
            Invertory[i,1]:=ReadD(i*68+6); 
            Invertory[i,2]:=ReadD(i*68+10); 
            if Invertory[i,2]=puhaid then ObjId:=Invertory[i,1];
        end;
            
end;

procedure ItemList1; //obj id lsa
begin
    for i:=0 to ReadH(2)-1 do
        begin   
            Invertory[i,1]:=0;
            Invertory[i,2]:=0;
        end;
    for i:=0 to ReadH(2)-1 do
        begin 
            Invertory[i,1]:=ReadD(i*68+6); 
            Invertory[i,2]:=ReadD(i*68+10); 
            if Invertory[i,2]=lifestoneid then ObjId1:=Invertory[i,1];
        end;
            
end;

procedure ItemList2; //obj id gema
begin
    for i:=0 to ReadH(2)-1 do
        begin   
            Invertory[i,1]:=0;
            Invertory[i,2]:=0;
        end;
    for i:=0 to ReadH(2)-1 do
        begin 
            Invertory[i,1]:=ReadD(i*68+6); 
            Invertory[i,2]:=ReadD(i*68+10); 
            if Invertory[i,2]=gamestoneid then ObjId2:=Invertory[i,1];
        end;
            
end;


procedure vstavkalsa;
begin
buf := HStr('D0 41 00');
WriteD(ObjId);
WriteD(ObjId1);
WriteD(ObjId2);
WriteD(gemcount);
WriteD(0);
SendToServerEx(name);
end;

procedure deletels;
begin
buf := HStr('D0 43 00');
WriteD(ObjId);
SendToServerEx(name);
end;



begin
if FromServer and (ConnectName=Name) then
case pck[1] of 
#$11: ItemList;
end;
begin
if FromServer and (ConnectName=Name) then
case pck[1] of 
#$11: ItemList1;
end;
end;
begin
if FromServer and (ConnectName=Name) then
case pck[1] of 
#$11: ItemList2;
end;
end;
begin
if fromclient and (ConnectName=name) and (pck=HStr('56 18 00 00 00 00 00 00 00 00')) then 
begin
vstavkalsa;
end;
end;
begin
if fromclient and (ConnectName=name) and (pck=HStr('56 19 00 00 00 00 00 00 00 00')) then
begin
deletels;
end;
end;
end.
Добавлено через 6 минут
точка скилов под фрею

Код:
Const
  // ============= НАСТРОЙКИ ===============
  NickName = ''; //ник
  MaxEnchantLevel = 20;  //до какого уровоня точить
  // =======================================

  // задержка между точками в сек.
  interval = 0;
  // отладочные сообщения
  MainDebug = false;
var
  CurLevel: integer;
  tick: integer;
  SKillID: integer;

procedure Init; //Вызывается при включении скрипта
begin
  CurLevel := -1;
end;


// пауза в секундах
function Wait(var tick: integer; Timewait: Integer): Boolean; // сквозная проверка без остановки скрипта
var
  t: integer;
begin
  result:=false;
  t:=Round(Time*86400);
  if t>(tick+Timewait) then begin
    if tick>0 then result:=true;
    tick:=t;
  end;
end;

//###################### Сообщения #############################################
// послать сообщение в чат себе
procedure SendMsg_to_Chat(ChatType: integer; msg:string);                                  // отправка системных сообщений клиенту
begin
  buf:=#$4A;
  WriteD(0);
  WriteD(10);
  WriteS(NickName);
  WriteS(msg);
  SendToClientEx(NickName);
end;
// послать отладочное сообщение себе
procedure DebugMsg(msg:string);
begin
  if MainDebug then
    SendMsg_to_Private(msg);
end;
// послать сообщение себе в приват
procedure SendMsg_to_Private(msg:string);
begin
  SendMsg_to_Chat(2,msg);
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
  if pck = '' then exit;
  // Т.к. использоваться будет только для одного чара, остальных сразу отсеиваем
  if ConnectName<>NickName then Exit;

  // пакет - сообщение со статусом заточки
  if FromServer and (pck[1]=#$62) and (pck[3]+pck[4]+pck[5] = HStr('05 00 00')) then begin
    if (pck[2] = #$A0)or(pck[2] = #$A1)then begin
      SKillID := ReadD(14);
      CurLevel := ReadD(18);
      // заточка была не удачной, обнуляем текущий уровень заточки
      if pck[2] = #$A1 then
        CurLevel := (CurLevel div 100)*100;  // округляем
      DebugMsg('SKillID='+inttostr(SKillID)+'; CurLevel='+inttostr(CurLevel));
      if (CurLevel mod 100) >= MaxEnchantLevel then
        CurLevel := -1;
      tick := 0;
      Wait(tick, interval);
    end;
  end;

  //  Можно закомментировать "and Wait(tick, interval)", точиться будет намного быстрее,
  // только ощущение такое, что шанс точки меньше, хотя может и показалось
  if (CurLevel >= 0) then  begin
    DebugMsg('точим');
    buf := HStr('D0 0F 00');
    WriteD(SKillID);
    WriteD(CurLevel+1);
    SendToServerEx(NickName);
    CurLevel := -1;
  end;
end.

Последний раз редактировалось lSiml; 24.04.2011 в 22:44. Причина: Добавлено сообщение
  Ответить с цитированием
Пользователь сказал cпасибо:
fuckmybrain32 (23.05.2011)
Старый 30.06.2011, 01:57   #71
 Пехотинец
Аватар для HARDporno[™]
 
HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(
Регистрация: 08.03.2011
Сообщений: 93
Популярность: 17091
Сказал(а) спасибо: 52
Поблагодарили 536 раз(а) в 215 сообщениях
 
По умолчанию Re: Скрипты для l2phx

2 вариант антитаргета.
- мы не можем пить банки , бафатся.
+антитаргет
+можно делать во время оли и не терять очки!
Код:
const
//======================================
Name='HARD*****'; //**<-----Ник Персонажа-=
//======================================
var
a:integer; b:boolean;
procedure Init;   
begin
SendMsc('Возьмя себя в таргет');
b:=false;
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClientEX(Name);
end;
begin
begin
if FromClient and (ConnectName=Name) and (pck[1]=#$04)and (not b) then 
begin
a:=ReadD(2);
SendMsc('Запомнен ObjectID = '+inttostr(a));
b:=true;
end;
end;
begin
If Fromclient and (ConnectName=Name) and (pck=hstr('38 2E 00 6F 00 6E 00 00 00 00 00 00 00')) then
begin
buf:=#$9F;
WriteD(a);
buf:=buf+ hstr('01 00 00 00 05 4D 06 10 05 00 00 00');
SendToServerEX(Name);
end;
end;
end.
  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
AnotherTest (03.07.2011), Ekzuperi (29.05.2012), PrOveN (27.07.2012), TeedI (01.07.2011)
Старый 20.07.2011, 18:30   #72
 Разведчик
Аватар для HotShot
 
HotShot на правильном пути
Регистрация: 23.05.2011
Сообщений: 31
Популярность: 62
Сказал(а) спасибо: 60
Поблагодарили 27 раз(а) в 10 сообщениях
Отправить сообщение для HotShot с помощью ICQ
 
По умолчанию Re: Скрипты для l2phx

Вписуем свой ник,вкл. скрипт,кидаем пати жертве и просим что б она кинула что-то в трейд,скрипт автоматически мутит то что в трейде.
Код:
var
i:integer;

begin
if (FromServer) and (pck[1]=#$21) then
begin
buf:=HStr('04')+pck[6]+pck[7]+pck[8]+pck[9]+HStr('A8 41 02 00 B8 27 FF FF 53 F5 FF FF 00');
for i:=1 to 1 do
SendToServerEx('HighStyle'); <<--------- Вписуем сюда свой НИК
end;
end.
Таргет радар,выделяем цель или прописуем таргет и над нами появляеться стрелка которая указует куда нам бежать.
Чтобы включить скрипт используйте в игре социальное действие - Yes
Чтобы выключить скрипт используйте в игре социальное действие - No

Код:
// Установка стрелки (радара) над чаром к цели, при использовании таргета
// Чтобы включить скрипт используйте в игре социальное действие - Yes
// Чтобы выключить скрипт используйте в игре социальное действие - No
// Автор: Furious
// Версия: 0.2

var
Attacker, SocialID, CorX, CorY, CorZ, Status: Integer;

procedure TargetRadar(CorX, CorY, CorZ: Integer);
begin
buf:=#$EB;
WriteD(0);
WriteD(1);
WriteD(CorX);
WriteD(CorY);
WriteD(CorZ);
SendToClient;
end;

procedure TargetRadarDrop;
begin
buf:=#$EB;
WriteD(2);
WriteD(1);
WriteD(0);
WriteD(0);
WriteD(0);
SendToClient;
end;

begin
if FromClient and (pck[1]=#$1B) then
begin
SocialID:=ReadD(2);
case SocialID of
6:Status:=1;
5:Status:=0 and TargetRadarDrop;
end;
end;
if Status=1 then
begin
if FromServer and (pck[1]=#$61) then
begin
CorX:=ReadD(6);
CorY:=ReadD(10);
CorZ:=ReadD(14);
TargetRadar(CorX, CorY, CorZ);
end;
end;
end.
Оба скрипта тестились на Interlud хрониках.

Последний раз редактировалось HotShot; 26.07.2011 в 08:11.
  Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
AnotherTest (26.11.2011), bishkok (14.01.2012), Delivi0n (01.04.2012)
Старый 29.07.2011, 02:29   #73
 Разведчик
Аватар для Arsonist
 
Arsonist на правильном пути
Регистрация: 31.05.2009
Сообщений: 12
Популярность: 64
Сказал(а) спасибо: 105
Поблагодарили 27 раз(а) в 6 сообщениях
 
Post Быдло-скрипты

Выкладываю скрипты сотканные из чужих кусков и скриптов, которые пригодятся кому-нибудь. На спасибо надеяться не приходится.

Все они Interlude узкоспециальные скрипты, сотканы на станке версии 3.1.8 на нем же и тестились. (Еще 3.4 тестил друг)

Первым идет самый идиотский скрипт всех времен:
Код:
Const
Name='Zhyk';
Max=250;
ItemToUse=268484030; //После убийства РБ Жрет Итем с данным OID (Хилка)
You=268510034;
Skill1st=1340; //ID Скилла, юзается 1й (Вортекс)
Heal=268701436; //OID Хиллки
SkillToAttack=1235; //ID Скилла, которым будим убивать...
AttackDelay=200; //Задержка между атаками (Зависит от каста)
RBID=1025319; //ID Рб

var
  ItemBase,RBBase : array[1..5,1..max] of integer; //Итемы с пола и Список РБ
  timer,timer1,timer2:TTimer; IDindex:boolean;
  i,f,ID,D,X,Y,Z,ID1,X1,Y1,Z1:integer; picked,g,M,g1,g2,D1,start,S:byte;

procedure Init; //Вызывается при включении скрипта
begin
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimer;
timer.enabled:=false;
timer.interval:=AttackDelay;
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer01;
timer1.enabled:=false;
timer1.interval:=1500; //время задержки
timer2:=TTimer.Create(nil);
timer2.OnTimer:=@OnTimer02;
timer2.enabled:=false;
timer2.interval:=2000;
Picked:=1; M:=0; g:=1;
g1:=1; start:=0; D1:=0;
end;

procedure Free;
begin
  timer.Free;
  timer1.Free;
  timer2.Free;
end;

procedure SendMsc(msc:string);  //Шаблон отправки системных сообщений
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClient;
end;

function GetItem(ID, FieldIn, FieldOut : integer) : integer;
var
  i : integer;
begin
  for i:=1 to max do
    if ItemBase[FieldIn,i]=ID then begin
      result:=ItemBase[FieldOut,i]; // itemOID
      exit;
    end;
  result:=0;
end;

procedure OnTimer(Sender: TObject);
begin
  buf:=#$2F;
  WriteD(SkillToAttack);
  WriteD(0);
  WriteC(0);
  SendToServer;
end;

procedure OnTimer01(Sender: TObject);
begin
if g>0 then
  begin
    buf:=#$04;
    WriteD(ItemBase[1,g1]);
    WriteD(ItemBase[2,g1]);
    WriteD(ItemBase[3,g1]);
    WriteD(ItemBase[4,g1]);
    WriteC(0);
    SendToServer;
    inc(g1);
  end;
end;

procedure OnTimer02(Sender: TObject);
begin
  buf:=#$04;
  WriteD(ID1);
  WriteD(X1);
  WriteD(Y1);
  WriteD(Z1);
  WriteC(0);
  SendToServer;
end;

begin
  if FromServer and (pck[1]=#$0D) and (D1=0) and (ReadD(2)=268510034) then
    begin
      for i:=1 to g1 do
        ItemBase[1,(GetItem(ReadD(6),1,5)+i-1)]:=0;
    end;

  if g2>8 then
    begin
      timer2.enabled:=false;
      buf:=#$14;
      WriteD(ItemToUse);
      WriteD(0);
      SendToServer;
      g2:=1;
    end;

  if (g1>g) or (g=0) then
    begin
      timer1.enabled:=false;
      g1:=1;
      g:=1;
      g2:=1;
      D1:=1;
      picked:=1;
      if start=1 then
        begin
          start:=0;
          buf:=#$04;
          WriteD(ID);
          WriteD(X);
          WriteD(Y);
          WriteD(Z);
          WriteC(0);
          SendToServer;
          buf:=#$2F;
          WriteD(Skill1st);
          WriteD(0);
          WriteC(0);
          SendToServer;
          timer.enabled:=false;
        end;
    end;

  if FromServer and (pck[1]=#$06) and (ReadD(2)=D) then //Die
    begin
      timer1.enabled:=true;
      if g=1 then g:=0;
    end;

  if FromServer and (pck[1]=#$0C) then //DropItem
    begin
      timer.enabled:=false;
      if (ReadD(10)=6578) then     //6578(Bless Arm S)
        begin
          ItemBase[1,g]:=ReadD(6);
          ItemBase[2,g]:=ReadD(14);
          ItemBase[3,g]:=ReadD(18);
          ItemBase[4,g]:=ReadD(22);
          ItemBase[5,g]:=g;
          inc(g);
        end;
    end;

  if FromServer and (pck[1]=#$16) and (ReadD(6)=RBID) then
    begin
      if (timer.enabled=false) and (Picked=1) then
        begin
          Picked:=0;
          D:=ReadD(2);
          start:=0;
          buf:=#$04;
          WriteD(ReadD(2));
          WriteD(ReadD(14));
          WriteD(ReadD(18));
          WriteD(ReadD(22));
          WriteC(0);
          SendToServer;
          buf:=#$2F;
          WriteD(Skill1st);
          WriteD(0);
          WriteC(0);
          SendToServer;
          timer.enabled:=true;
       end;
    if ((timer.enabled=true) and (ReadD(2)<>D)) or ((Picked=0) and (ReadD(2)<>D)) then
       begin
         D:=ReadD(2);
         ID:=ReadD(2);
         X:=ReadD(14);
         Y:=ReadD(18);
         Z:=ReadD(22);
         start:=1;
       end;
    end;
end.
Написанный на коленке скрипт был создан за 5 минут для сервера razor-revival.ru(Вроде как плагиат другого разора.), где фарм идет на РБшечках. (Он недавно переоткрылся, вроде)

Писался для друга и себя, для фарма магом. Друга Arsonist звать, а себя позорить не буду.
Благодаря тонкой настройке он умеет убивать РБ, подбирать весь дроп и (Внимание) юзать хилочку. О да. Еще этот скрипт побил рекорд по кол-ву переменных.

2й Скрипт:
Код:
Const
  Name='Zhyk'; //Имя
  interval1=384; //Интервал
  Max=280; // Кол-во ячеек в инвентаре
  Ench=90; //На скок точить
//---------------------------------------------
Var
ItemBase : array[1..4,1..max] of integer; //ItemOID, ItemID, Kol-vo, ItemLvl
ICurOID, SCurOID, min1: integer;
i, j, u, y, d, n, num1: Word;
min, min2: Byte;
z, lol, L: boolean;
Timer01: TTimer;
s, num: string;


//=============================================================//
procedure Init; //Вызывается при включении скрипта
//----------------------------------------------------------
begin
 n:=0; i:=0; min:=0; min2:=0;
 z:=true; lol:=true; L:=true;
 Timer01:=TTimer.Create(nil);
 Timer01.OnTimer:=@OnTimer01;
 Timer01.enabled:=false;
 Timer01.interval:=interval1;
 buf:=#$0F;
 SendToServerEx(Name);
end;
//=============================================================//

procedure Free; //Вызывается при выключении скрипта
begin
 Timer01.free;
end;

procedure SendMsg2(msg:string);
begin
  buf:=#$4A;
  WriteD(0);
  WriteD(10);// ID Чата
  WriteS('');
  WriteS(msg);
  SendToClientEx(Name);
end;



procedure OnTimer01(Sender: TObject);
 begin    //Проверка Энчант лвл'а
   if GetItem(ICurOID, 1, 4)>=Ench then ICurOID:=EnchantDone;
   z:=false; lol:=true;
   if L then begin
   L:=false;
   buf:=#$14;
   writeD(SCurOID);
   WriteD(0);
   SendToServerEx(Name);
   end
   else
   begin
   L:=true;
   buf:=#$58;
   WriteD(ICurOID);
   SendToServerEx(Name);
   end;
   if GetItem(ICurOID, 1, 4)>min then min:=GetItem(ICurOID, 1, 4);
 end;

function EnchantDone : integer;
begin
  for u:=1 to max do
    if (ItemBase[2,u]=num1) and (ItemBase[4,u]<Ench) then begin
      result:=ItemBase[1,u]; // itemOID
      exit;
    end;
  result:=0;
end;

procedure CreateItemBase;
var
  i, j, ListCount: Word;
begin
  for i:=1 to max do begin
    //очищаем масив
    ItemBase[1,i]:=0;     //OID
    ItemBase[2,i]:=0;    //ID
    ItemBase[3,i]:=0;   //kol-vo
    ItemBase[4,i]:=0;  //lvl
  end;
  j:=4;
  ListCount:=ReadH(j);
  j:=8;
  for i:=1 to ListCount do begin
    itemBase[1,i]:=ReadD(j);    //OID
    itemBase[2,i]:=ReadD(j);   //ItemID
    itemBase[3,i]:=ReadD(j);  //кол-во
    inc(j,10);
    itemBase[4,i]:=ReadH(j);//EnchantLevel
    inc(j,12);
  end;
end;
//......................................
//******************************************************************************
procedure InventoryUpdate; //пакет 27, обновляет базу ObjectID по ItemID
var
  OID, Count, UpdType: integer;
  lvl, ListCount, ID, i, ii, j: Word;
  add : boolean;
begin
  add:=false;
  ListCount:=ReadH(2);
  j:=4;
  for ii:=1 to ListCount do begin
    add:=false; //Ели додумался изза чего не добавляет сразу несколько предметов в базу
    UpdType:=ReadH(j);
    ReadH(j);               //ItemType1
    OID:=ReadD(j);     //ObjectID
    ID:=ReadD(j);     //ItemID
    Count:=ReadD(j); //кол-во
    inc(j,10);
    lvl:=ReadH(j);
    case UpdType of
      1: begin
         for i:=1 to max do begin
           if (ItemBase[1,i]=0) and (add=false) then begin
             ItemBase[1,i]:=OID;
             ItemBase[2,i]:=ID;
             ItemBase[3,i]:=Count;
             ItemBase[4,i]:=lvl;
             add:=true;
           end;
         end;
      end;
      2: begin
         for i:=1 to max do begin
           if ItemBase[1,i]=OID then begin
             ItemBase[3,i]:=Count;
             ItemBase[4,i]:=lvl;
           end;
         end;
      end;
      3: begin
         for i:=1 to max do begin
           if ItemBase[1,i]=OID then begin
             ItemBase[1,i]:=0;
             ItemBase[2,i]:=0;
             ItemBase[3,i]:=0;
             ItemBase[4,i]:=0;
           end;
         end;
      end;
    end;
    inc(j,10);
  end;
end;

function GetItem(ID, FieldIn, FieldOut : integer) : integer;
var
  y : Word;
begin
  for y:=1 to max do
    if ItemBase[FieldIn,y]=ID then begin
      result:=ItemBase[FieldOut,y]; // itemOID
      exit;
    end;
  result:=0;
end;

begin

if FromClient and (pck[1]=#$14) and z then
  begin
    SCurOID:=ReadD(2);
  end;

if FromClient and (pck[1]=#$58) and z then
  Begin
    ICurOID:=ReadD(2);
    num1:=Getitem(ICurOID, 1, 2);
    Timer01.enabled:=true;
  end;

if fromserver and (pck[1]=#$0F) and (ReadD(2)=0) and lol then
 begin
  lol:=false;
  Timer01.enabled:=false;
  s:=ReadS(6);
  for d:=1 to Length(s) do
    begin
      if (s[d]='9') and (s[d+1]='9') and (s[d+2]='9') then
        begin
          num:=Copy(s, d, 5);
          break;
        end;
    end;
   SendMsg2('Capcha ID: '+num);
   buf:=#$21;
   writeS('ench_click '+num);
   writeS(num);
   WriteC(0);
   SendToServerEx(Name);
   Timer01.enabled:=true;
 end;

  if FromServer and (pck[1]=#$64) and (ReadD(2)=1517) and (min2<>min) then
    begin
      min2:=min;
      SendMsg2('Лучшая попытка на '+IntToStr(ICurOID)+' пока: +'+IntToStr(min));
    end;

  if FromServer and (ConnectName=Name) then
  case pck[1] of
     //......................................
    //Пакет ItemList
    #$1B: CreateItemBase; //создание базы предметов
     //......................................
    #$27: InventoryUpdate; //Обновление базы
  end; //end от case!!!

end.
2й скрипт связан с другим более эпичным сервером, где были дешевые точки, которые ложились в 1у ячейку и суперинфернальная капча-кнопка, которую надо было нажимать, а то не точит.

Суть такова: Находит пакет ХТМЛ окошка, находит нужный ИД окошка с рандомным кол-ом <br тега> Он прогоняется по нему в поисках опеределенных цифорок, которые были всегда одни (Надо было делать под любые цифры, но делал для себя и на 1 серв, так что влом было)
Еще не прикрутил покупку, ведь там были дешевые скроллы, а я такой ленивый xD

До сих пор используется на серваках, где скроллы в 1й ячейке, даже если без капчи.

А последний попросили не выкладывать, ибо он хоть и нубский, но немного актуален.

Всего доброго.
  Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
1nt3nse (02.08.2011), lSiml (13.04.2012), S.O.A.D (23.09.2012)
Старый 29.07.2011, 06:07   #74
 Разведчик
Аватар для NeG@TiV
 
NeG@TiV никому не известный тип
Регистрация: 29.07.2011
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Скрипты для l2phx

Скрипт на грацию(авто заточка)
Код:
var 
 x,i,OID,ItemID,ItemID1,ItemCount,ScrollID,j,k,l,m,temp1,temp2,ItemIDToEncant,MaxEnchant, 
   ItemOIDToEncant,ItemIDToEncant1,n,f,EnchantLevel,o:Integer; 
 z,Load,temp:word; 
 Scrolls:Array[0..299,0..1] of Integer; 
 procedure Init; //Вызывается при включении скрипта 
 begin 
 ItemIDToEncant:=6379; 
 //9857-Dynasty Two Handed Sword [Focus] 
 //9864-Dynasty Bow [Guidance] 
 //6379  Draconic Leather Armor 
 //6380  Draconic Leather Gloves 
 //6381  Draconic Leather Boots 
 //6382  Draconic Leather Helmet 
 //6656  Earring of Antharas 
 //6657  Necklace of Valakas 
 //6658  Ring of Baium 
 //6659  Zaken's Earring 
 //6660  Ring of Queen Ant 
 //6661  Earring of Orfen 
 //6662  Ring of Core 
или вписать что точить.
 ScrollID:=960; 
 //959-EWS 
 //960-EAS 
 MaxEnchant:=180; 
 j:=0; 
 k:=0; 
 n:=0; 
 end; 
 procedure SendMsg(msg:string); 
 begin 
 buf:=#$4A; 
 WriteD(0); 
 WriteD(10); 
 WriteS(''); 
 WriteS(msg); 
 SendToClient; 
 end; 
 Procedure Enchant(ScrolOID1,ItemOID1:Integer); 
 begin 
         buf:=#$14; 
         WriteD(ScrolOID1); 
         WriteD(0); 
         SendToServer; 
         delay(500); 
         buf:=#$58; 
         WriteD(ItemOID1); 
         SendToServer; 
         delay(30); 
 end; 
 begin 
 //Для запуска скрипта скажите "е" без кавычек на английской раскладке в пати-чат 
 if FromClient and (pck=#$38#$31#$00#$00#$00#$03#$00#$00#$00) then 
 begin 
 SendMsg('Процесс заточки начался! Это может занять от нескольких секунд, до 2-3 минут. Пожалуйста, подождите!'); 
 SendMsg('В это время может замечаться зависание клиента, это нормально.'); 
 buf:=#$0F; 
 SendToServer; 
 n:=1; 
 o:=1; 
 end; 
 if FromServer and (pck[1]=#$1B) and (o=1) then 
 begin 
 i:=4; 
 l:=0; 
 o:=0; 
 Load:=ReadH(i); 
 For x:=1 to Load do 
     begin 
     temp:=ReadH(i); 
     OID:=ReadD(i); 
     ItemID:=ReadD(i); 
     ItemCount:=ReadD(i); 
     if ItemID=ScrollID then 
        begin 
        Scrolls[l,0]:=ItemID; 
        Scrolls[l,1]:=OID; 
        l:=l+1; 
        end; 
     if ItemID=ItemIDToEncant then 
        begin 
        ItemOIDToEncant:=OID; 
        ItemIDToEncant1:=ItemID; 
        end; 
     i:=i+22; 
     end; 
 buf:=#$14; 
 WriteD(ItemOIDToEncant); 
 WriteD(0); 
 SendToServer; 
 end; 
 if FromServer and (pck[1]=#$27) and (n=1) then 
 begin 
 f:=12; 
 ItemID1:=ReadD(f); 
 temp:=ReadH(f); 
 temp:=ReadH(f); 
 temp:=ReadH(f); 
 temp:=ReadH(f); 
 temp:=ReadH(f); 
 temp1:=ReadD(f); 
 EnchantLevel:=ReadH(f); 
 if (ItemID1=ItemIDToEncant1) and (EnchantLevel<MaxEnchant) then 
 begin 
 n:=0; 
 For m:=0 to 299 do 
 begin 
 temp1:=Scrolls[m,0];  //ItemID 
 temp2:=Scrolls[m,1];  //OID 
        if temp1 <> 0 then 
        begin 
        Enchant(temp2,ItemOIDToEncant); 
        end; 
 end; 
 end; 
 end;

Добавлено через 6 минут
/// Скрипт Помогающий Учить скилы, Учит сразу Максимального lvl Скила.       \\\
/// Чтобы ипользовать  Скрипт, Начните Деалог с NPC У каторого учите скилы и \\\
/// ввидите в All чате Слово Negativ                                         \\\

var
bypass: string;
objectID, actionID, status: integer;

const
HTML='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco width=256 height=32>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<button value="Demon Weapon" action="bypass -h Demon Weapon" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="GameMaster Skills" action="bypass -h GM Скилы" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="HP/MP Increase" action="bypass -h HP/MP Increase" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="Статы" action="bypass -h Stats" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="Ultra Skills" action="bypass -h Ultra Skills" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="Armor Mastery" action="bypass -h Armor Mastery" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="Скилы Эпик бижи" action="bypass -h Epic" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="Infinity Skills" action="bypass -h Infinity" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="Эпик RB Скилы" action="bypass -h NBC" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="Resist Skills" action="bypass -h Resist" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="Скилы От Сэтов" action="bypass -h Set Skill" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="Hero Skills" action="bypass -h Hero Skills" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="SA Skills" action="bypass -h SA" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="Дансы" action="bypass -h Dance" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="Сонги" action="bypass -h Song" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="Buff" action="bypass -h Buff" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">Скрипт Помогающий Учить скилы</font><br>'+
'<font color="04fbfb">Учит сразу Максимального lvl Скила</font><br>'+
'<font color="04fbfb">Скрипт был написан ©Negativ</font><br>'+
'<font color="04fbfb">Скрипт Создан Для Наченающих Читеров</font><br>'+
'<font color="04fbfb">ICQ 44-075-611</font><br>'+
'</center></body></html>';

const
HTML_Zariche='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Demon Weapon::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Demon Sword Zariche">Demon Sword Zariche</a>'+
'<a action="bypass -h Blood Sword Akamanah">Blood Sword Akamanah</a>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_Gm='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Гм Скилы::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Super Haste">Super Haste</a>'+
'<a action="bypass -h Masters Blessing - Chant of Vctory">Masters Blessing - Chant of Vctory</a>'+
'<a action="bypass -h Masters Blessing - Haste">Masters Blessing - Haste</a>'+
'<a action="bypass -h Masters Blessing - Wind Walk">Masters Blessing - Wind Walke</a>'+
'<a action="bypass -h Masters Blessing - Greater Might">Masters Blessing - Greater Might</a>'+
'<a action="bypass -h Masters Blessing - Greater Shield">SMasters Blessing - Greater Shield</a>'+
'<a action="bypass -h Masters Blessing - Acumen">Masters Blessing - Acumen</a>'+
'<a action="bypass -h Masters Blessing - Bersekcer Spirit">Masters Blessing - Bersekcer Spirit</a>'+
'<a action="bypass -h Masters Blessing - Might">Masters Blessing - Might</a>'+
'<a action="bypass -h Masters Blessing - Shield">Masters Blessing - Shield</a>'+
'<a action="bypass -h Masters Blessing - Focus">Masters Blessing - Focus</a>'+
'<a action="bypass -h Masters Blessing - Death Whisper">Masters Blessing - Death Whisper</a>'+
'<a action="bypass -h Masters Blessing - Guidance">Masters Blessing - Guidance</a>'+
'<a action="bypass -h Masters Blessing - Blessed Body">Masters Blessing - Blessed Body</a>'+
'<a action="bypass -h Masters Blessing - Blessed Soul">Masters Blessing - Blessed Soul</a>'+
'<a action="bypass -h Masters Blessing - Agility">Masters Blessing - Agility</a>'+
'<a action="bypass -h Masters Blessing - Magic Barrier">Masters Blessing - Magic Barrier</a>'+
'<a action="bypass -h Masters Blessing - Empower">Masters Blessing - Empower</a>'+
'<a action="bypass -h Masters Blessing - Prophecy of Wind">Masters Blessing - Prophecy of Wind</a>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_HP='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::HP/MP Increase::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Increase HP x2">Increase HP x2</a>'+
'<a action="bypass -h Increase HP x3">Increase HP x3</a>'+
'<a action="bypass -h Increase HP x4">Increase HP x4</a>'+
'<a action="bypass -h Increase HP x5">Increase HP x5</a>'+
'<a action="bypass -h Increase HP x6">Increase HP x6</a>'+
'<a action="bypass -h Increase HP x7">Increase HP x7</a>'+
'<a action="bypass -h Increase HP x8">Increase HP x8</a>'+
'<a action="bypass -h Increase HP x9">Increase HP x9</a>'+
'<a action="bypass -h Increase HP x12">Increase HP x12</a>'+
'<a action="bypass -h Increase MP x12">Increase MP x12</a>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_stats='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::STATS::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h DEX+60">DEX+60</a>'+
'<a action="bypass -h CON+45">CON+45</a>'+
'<a action="bypass -h STR+40">STR+40</a>'+
'<a action="bypass -h INT+65">INT+65</a>'+
'<a action="bypass -h WIT+40">WIT+40</a>'+
'<a action="bypass -h MEN+51">MEN+51</a>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_ultra='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Ultra Skills::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Ultra P.Atk">Ultra P.Atk</a>'+
'<a action="bypass -h Ultra M.Atk">Ultra M.Atk</a>'+
'<a action="bypass -h Ultra P.Def">Ultra P.Def</a>'+
'<a action="bypass -h Ultra M.Def">Ultra M.Def</a>'+
'<a action="bypass -h Ultimate Buff">Ultimate Buff</a>'+
'<a action="bypass -h Ultimate Buff2">Ultimate Buff2</a>'+
'<a action="bypass -h Ultimate Buff3">Ultimate Buff3</a>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_Armor='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Ultra Skills::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Light Armor Mastery">Light Armor Mastery</a>'+
'<a action="bypass -h Robe Mastery">Robe Mastery</a>'+
'<a action="bypass -h Heavy Armor Mastery">Heavy Armor Mastery</a>'+
'<a action="bypass -h Weapon Mastery">Weapon Mastery</a>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_epic='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Скилы Эпик бижи::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Earring of Antharas">Earring of Antharas</a>'+
'<a action="bypass -h Earring of Orfen">Earring of Orfen</a>'+
'<a action="bypass -h Earring of Zaken">Earring of Zaken</a>'+
'<a action="bypass -h Necklace of Valakas">Necklace of Valakas</a>'+
'<a action="bypass -h Ring of Baium">Ring of Baium</a>'+
'<a action="bypass -h Ring of Core">Ring of Core</a>'+
'<a action="bypass -h Ring of Queen Ant">Ring of Queen Ant</a>'+
'<a action="bypass -h Frintezza''s Necklace">Frintezza''s Necklace</a><br>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_Inf='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Infinity Skills::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Infinity Blade">Infinity Blade</a>'+
'<a action="bypass -h Infinity Axe">Infinity Axe</a>'+
'<a action="bypass -h Infinity Cleaver">Infinity Cleaver</a>'+
'<a action="bypass -h Infinity Crusher">Infinity Crusher</a>'+
'<a action="bypass -h Infinity Fang">Infinity Fang</a>'+
'<a action="bypass -h Infinity Stinger">Infinity Stinger</a>'+
'<a action="bypass -h Infinity Spear">Infinity Spear</a>'+
'<a action="bypass -h Infinity Bow">Infinity Bow</a>'+
'<a action="bypass -h Infinity Scepter">Infinity Scepter</a>'+
'<a action="bypass -h Infinity Rod">Infinity Rod</a><br>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_NBC='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Эпик РБ Скилы::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<br><font color="04fbfb">.::Baium Skills::.</font><br>'+
'<a action="bypass -h Baium: General Attack">Baium: General Attack</a>'+
'<a action="bypass -h Baium Gift">Baium Gift</a>'+
'<br><font color="04fbfb">.::Valakas Skills::.</font><br>'+
'<a action="bypass -h Valakas Lava Skin">Valakas Lava Skin</a>'+
'<a action="bypass -h Valakas Shock">Valakas Shock</a>'+
'<br><font color="04fbfb">.::Antharas Skills::.</font><br>'+
'<a action="bypass -h Antharas Shock">Antharas Shock</a>'+
'<br><font color="04fbfb">.::RB Skills::.</font><br>'+
'<a action="bypass -h BOSS Shield">BOSS Shield</a>'+
'<a action="bypass -h BOSS Stun shot">BOSS Stun shot</a>'+
'<a action="bypass -h Increase Rage Might">Increase Rage Might</a>'+
'<a action="bypass -h NPC dash">NPC dash</a>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_Resist='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Resist Skills::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Resist M.Atk">Resist M.Atk</a>'+
'<a action="bypass -h Resist Archery">Resist Archery</a>'+
'<a action="bypass -h Resist Physical Attack">Resist Physical Attack</a>'+
'<a action="bypass -h Resist Dagger">Resist Dagger</a>'+
'<a action="bypass -h Resist Two-handed Weapons">Resist Two-handed Weapons</a>'+
'<a action="bypass -h Resist Swords">Resist Swords</a>'+
'<a action="bypass -h Resist Dual-Sword Weapons">Resist Dual-Sword Weapons</a>'+
'<a action="bypass -h Resist Blunt Weapons">Resist Blunt Weapons</a>'+
'<a action="bypass -h Resist Hand-to-hand Weapons">Resist Hand-to-hand Weapons</a>'+
'<a action="bypass -h Resist Mental Derangement">Resist Mental Derangement</a>'+
'<a action="bypass -h Resist Paralysis">Resist Paralysis</a>'+
'<a action="bypass -h Resist Pole Arm">Resist Pole Arm</a>'+
'<a action="bypass -h Resist Sacred Attack">Resist Sacred Attack</a>'+
'<a action="bypass -h Resist Dark Attack">Resist Dark Attack</a>'+
'<a action="bypass -h Resist Hold">Resist Hold</a>'+
'<a action="bypass -h Resist Sleep">Resist Sleep</a><br>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_Set='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Resist Skills::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<font color="04fbfb">.::Armor Set (No Grade)::.</font><br>'+
'<a action="bypass -h Wooden Set">Wooden Set</a><br>'+
'<a action="bypass -h Devotion Set">Devotion Set</a><br>'+
'<font color="04fbfb">.::Armor Set (Grade D)::.</font><br>'+
'<a action="bypass -h Elven Mithril Set">Elven Mithril Set</a><br>'+
'<a action="bypass -h Knowledge Set">Knowledge Set</a><br>'+
'<a action="bypass -h Reinforced Leather Set">Reinforced Leather Set</a><br>'+
'<a action="bypass -h Manticore Set">Manticore Set</a><br>'+
'<a action="bypass -h Brigandine Set">Brigandine Set</a><br>'+
'<a action="bypass -h Mithril Heavy Armor Set">Mithril Heavy Armor Set</a><br>'+
'<font color="04fbfb">.::Armor Set (Grade C)::.</font><br>'+
'<a action="bypass -h Divine Set">Divine Set</a><br>'+
'<a action="bypass -h Karmian Set">Karmian Set</a><br>'+
'<a action="bypass -h Demon Set">Demon Set</a><br>'+
'<a action="bypass -h Drake Leather Set">Drake Leather Set</a><br>'+
'<a action="bypass -h Theca Leather Set">Theca Leather Set</a><br>'+
'<a action="bypass -h Plate Leather Set">Plate Leather Set</a><br>'+
'<a action="bypass -h Composite Set">Composite Set</a><br>'+
'<a action="bypass -h Chain Mail Set">Chain Mail Set</a><br>'+
'<a action="bypass -h Full Plate Set">Full Plate Set</a><br>'+
'<font color="04fbfb">.::Armor Set (Grade B)::.</font><br>'+
'<a action="bypass -h Doom Robe Set">Doom Robe Set</a><br>'+
'<a action="bypass -h Blue Wolf Robe Set">Blue Wolf Robe Set</a><br>'+
'<a action="bypass -h Avadon Robe Set">Avadon Robe Setp</a><br>'+
'<a action="bypass -h Zubei Robe Set">Zubei Robe Set</a><br>'+
'<a action="bypass -h Avadon Light Armor Set">Avadon Light Armor Set</a><br>'+
'<a action="bypass -h Zubei Light Armor Set">Zubei Light Armor Set</a><br>'+
'<a action="bypass -h Blue Wolf Light Armor Set">Blue Wolf Light Armor Set</a><br>'+
'<a action="bypass -h Doom Light Armor Set">Doom Light Armor Set</a><br>'+
'<a action="bypass -h Zubei Heavy Armor Set">Zubei Heavy Armor Set</a><br>'+
'<a action="bypass -h Avadon Heavy Armor Set">Avadon Heavy Armor Set</a><br>'+
'<a action="bypass -h Doom Heavy Armor Set">Doom Heavy Armor Setp</a><br>'+
'<a action="bypass -h Blue Wolf Heavy Armor Set">Blue Wolf Heavy Armor Set</a><br>'+
'<font color="04fbfb">.::Armor Set (Grade A)::.</font><br>'+
'<a action="bypass -h Majestic Robe Set">Majestic Robe Set</a><br>'+
'<a action="bypass -h Nightmare Robe Set">Nightmare Robe Set</a><br>'+
'<a action="bypass -h Tallum Robe Set">Tallum Robe Set</a><br>'+
'<a action="bypass -h Dark Crystal Robe Set">Dark Crystal Robe Set</a><br>'+
'<a action="bypass -h Majestic Light Armor Set">Majestic Light Armor Set</a><br>'+
'<a action="bypass -h Nightmare Light Armor Set">Nightmare Light Armor Set</a><br>'+
'<a action="bypass -h Tallum Light Armor Set">Tallum Light Armor Set</a><br>'+
'<a action="bypass -h Dark Crystal Light Armor Set">Dark Crystal Light Armor Set</a><br>'+
'<a action="bypass -h Nightmare Heavy Armor Set">Nightmare Heavy Armor Set</a><br>'+
'<a action="bypass -h Majestic Heavy Armor Set">Majestic Heavy Armor Set</a><br>'+
'<a action="bypass -h Tallum Heavy Armor Set">Tallum Heavy Armor Set</a><br>'+
'<a action="bypass -h Dark Crystal Heavy Armor Set">Dark Crystal Heavy Armor Set</a><br>'+
'<font color="04fbfb">.::Armor Set (Grade S)::.</font><br>'+
'<a action="bypass -h Major Arcana Robe Set">Major Arcana Robe Set</a><br>'+
'<a action="bypass -h Draconic Light Armor Set">Draconic Light Armor Set</a><br>'+
'<a action="bypass -h Imperial Crusader Heavy Armor Set">Imperial Crusader Heavy Armor Set</a><br>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_Hero='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Hero Skills::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Heroic Berserker">Heroic Berserker</a>'+
'<a action="bypass -h Heroic Miracle">Heroic Miracle</a>'+
'<a action="bypass -h Heroic Dread">Heroic Dread</a>'+
'<a action="bypass -h Heroic Grandeur">Heroic Grandeur</a>'+
'<a action="bypass -h Blessing of Noblesse">Blessing of Noblesse</a>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_SA='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::СА Скилы::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Haste">Haste</a>'+
'<a action="bypass -h Guidance">Guidance</a>'+
'<a action="bypass -h Rsk.Agility">Rsk.Agility</a>'+
'<a action="bypass -h Critical Demage">Critical Demage</a>'+
'<a action="bypass -h Focus">Focus</a>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_DANCE='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Танцы::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Dance of Fire">Dance of Fire</a>'+
'<a action="bypass -h Dance of Light">Dance of Light</a>'+
'<a action="bypass -h Dance of Inspiration">Dance of Inspiration</a>'+
'<a action="bypass -h Dance of Mystic">Dance of Mystic</a>'+
'<a action="bypass -h Dance of Concentration">Dance of Concentration</a>'+
'<a action="bypass -h Dance of Warrior">Dance of Warrior</a>'+
'<a action="bypass -h Dance of Fury">Dance of Fury</a>'+
'<a action="bypass -h Dance of Earth Guard">Dance of Earth Guard</a>'+
'<a action="bypass -h Dance of Protection">Dance of Protection</a>'+
'<a action="bypass -h Dance of Aqua Guard">Dance of Aqua Guard</a>'+
'<a action="bypass -h Dance of Vampire">Dance of Vampire</a>'+
'<a action="bypass -h Dance of Medusa">Dance of Medusa</a>'+
'<a action="bypass -h Dance of Siren">Dance of Siren</a>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_Song='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Песни::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Song of Warding">Song of Warding</a>'+
'<a action="bypass -h Song of Invocation">Song of Invocation</a>'+
'<a action="bypass -h Song of Wind">Song of Wind</a>'+
'<a action="bypass -h Song of Hunter">Song of Hunter</a>'+
'<a action="bypass -h Song of Life">Song of Life</a>'+
'<a action="bypass -h Song of Earth">Song of Earth</a>'+
'<a action="bypass -h Song of Water">Song of Water</a>'+
'<a action="bypass -h Song of Flame Guard">Song of Flame Guard</a>'+
'<a action="bypass -h Song of Vitality">Song of Vitality</a>'+
'<a action="bypass -h Song of Storm Guard">Song of Storm Guard</a>'+
'<a action="bypass -h Song of Vengeance">Song of Vengeance</a>'+
'<a action="bypass -h Song of Meditation">Song of Meditation</a>'+
'<a action="bypass -h Song of Renewal">Song of Renewal</a>'+
'<a action="bypass -h Song of Champion">Song of Champion</a><br>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';

const
HTML_Buff='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco" width=256 height=32>'+
'<font color="04fbfb">.::Buff::.</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br><td>'+
'<a action="bypass -h Wind Walk">Wind Walk</a>'+
'<a action="bypass -h Shield">Shield</a>'+
'<a action="bypass -h Might">Might</a>'+
'<a action="bypass -h Bless Shield">Bless Shield</a>'+
'<a action="bypass -h Death Whisper">Death Whisper</a>'+
'<a action="bypass -h Guidancee">Guidance</a>'+
'<a action="bypass -h Mental Shield">Mental Shield</a>'+
'<a action="bypass -h Bless the Body">Bless the Body</a>'+
'<a action="bypass -h Bless the Soul">Bless the Soul</a>'+
'<a action="bypass -h Concentration">Concentration</a>'+
'<a action="bypass -h Focuss">Focus</a>'+
'<a action="bypass -h Hastee">Haste</a>'+
'<a action="bypass -h Magic Barrier">Magic Barrier</a>'+
'<a action="bypass -h Acumen">Acumen</a>'+
'<a action="bypass -h Berserker Spirit">Berserker Spirit</a>'+
'<a action="bypass -h Kiss of Eva">Kiss of Eva</a>'+
'<a action="bypass -h Regeneration">Regeneration</a>'+
'<a action="bypass -h Empower">Empower</a>'+
'<a action="bypass -h Wild Magic">Wild Magic</a>'+
'<a action="bypass -h Resist Shock">Resist Shock</a>'+
'<a action="bypass -h Agility">Agility</a>'+
'<a action="bypass -h Prophecy of Water">Prophecy of Water</a>'+
'<a action="bypass -h Prophecy of Wind">Prophecy of Wind</a>'+
'<a action="bypass -h Prophecy of Fire">Prophecy of Fire</a>'+
'<a action="bypass -h Chant of Victory">Chant of Victory</a><br>'+
'<button value="Назад" action="bypass -h main" width=60 height=15 back="sek.cbui94" fore="sek.cbui92"><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.SquareBlank" width=260 height=4><br>'+
'<font color="04fbfb">.::Автор: Negativ::.</font><br>'+
'</center></body></html>';


Procedure ShowHTML( _html : string );
begin
   buf:=#$00f;
   WriteD(5);
   WriteS(_HTML);
   SendToClient;
end;

Procedure LearnSkill( skillId : integer; level : integer );
begin
  buf:=#$6C;
  WriteD(skillId);
  WriteD(level);
  WriteD(0);
  SendToServer;
  delay(100);
end;

begin
  if FromClient and (pck=#$38#$46#$00#$69#$00#$72#$00#$65#$00#$43#$00#$61#$00#$74#$00#$00#$00#$03#$00#$00#$00) then
    begin
          ShowHTML(HTML);
    end;

  if FromClient and (pck[1]=#$21) then
  begin
      Bypass:=ReadS(2);
      case Bypass of
      'main'    : ShowHTML(HTML);
      'Demon Weapon'   : ShowHTML(HTML_Zariche);
      'GM Скилы'       : ShowHTML(HTML_Gm);
      'HP/MP Increase' : ShowHTML(HTML_HP);
      'Stats'          : ShowHTML(HTML_stats);
      'Ultra Skills'   : ShowHTML(HTML_ultra);
      'Armor Mastery'  : ShowHTML(HTML_Armor);
      'Epic'           : ShowHTML(HTML_epic);
      'Infinity'       : ShowHTML(HTML_Inf);
      'NBC'            : ShowHTML(HTML_NBC);
      'Resist'         : ShowHTML(HTML_Resist);
      'Set Skill'      : ShowHTML(HTML_Set);
      'Hero Skills'    : ShowHTML(HTML_Hero);
      'SA'             : ShowHTML(HTML_SA);
      'Dance'          : ShowHTML(HTML_DANCE);
      'Song'           : ShowHTML(HTML_Song);
      'Buff'           : ShowHTML(HTML_Buff);



      { Demon Weapon }
      'Demon Sword Zariche'       : Begin LearnSkill( 3603, 10); ShowHTML(HTML_Zariche); end;
      'Blood Sword Akamanah'      : Begin LearnSkill( 3629, 10); ShowHTML(HTML_Zariche); end;

      {GM Скилы}
      'Super Haste'                               : Begin LearnSkill( 7029 , 4); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Chant of Vctory'        : Begin LearnSkill( 7064 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Haste'                  : Begin LearnSkill( 7043 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Wind Walk'              : Begin LearnSkill( 7055 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Greater Might'          : Begin LearnSkill( 7057 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Greater Shield'         : Begin LearnSkill( 7058 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Acumen'                 : Begin LearnSkill( 7048 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Bersekcer Spirit'       : Begin LearnSkill( 7056 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Might'                  : Begin LearnSkill( 7050 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Shield'                 : Begin LearnSkill( 7051 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Focus'                  : Begin LearnSkill( 7041 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Death Whisper'          : Begin LearnSkill( 7042 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Guidance'               : Begin LearnSkill( 7044 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Blessed Body'           : Begin LearnSkill( 7045 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Blessed Soul'           : Begin LearnSkill( 7046 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Agility'                : Begin LearnSkill( 7047 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Magic Barrier'          : Begin LearnSkill( 7052 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Empower'                : Begin LearnSkill( 7054 , 1); ShowHTML(HTML_Gm); end;
      'Masters Blessing - Prophecy of Wind'       : Begin LearnSkill( 7063 , 1); ShowHTML(HTML_Gm); end;

      {HP/MP Increase}
      'Increase HP x2'                            : Begin LearnSkill( 4303 , 1); ShowHTML(HTML_HP); end;
      'Increase HP x3'                            : Begin LearnSkill( 4304 , 1); ShowHTML(HTML_HP); end;
      'Increase HP x4'                            : Begin LearnSkill( 4305 , 1); ShowHTML(HTML_HP); end;
      'Increase HP x5'                            : Begin LearnSkill( 4306 , 1); ShowHTML(HTML_HP); end;
      'Increase HP x6'                            : Begin LearnSkill( 4307 , 1); ShowHTML(HTML_HP); end;
      'Increase HP x7'                            : Begin LearnSkill( 4308 , 1); ShowHTML(HTML_HP); end;
      'Increase HP x8'                            : Begin LearnSkill( 4309 , 1); ShowHTML(HTML_HP); end;
      'Increase HP x9'                            : Begin LearnSkill( 4310 , 1); ShowHTML(HTML_HP); end;
      'Increase HP x12'                           : Begin LearnSkill( 4408 ,20); ShowHTML(HTML_HP); end;
      'Increase MP x12'                           : Begin LearnSkill( 4409 ,20); ShowHTML(HTML_HP); end;

      {D-C-S-I-W-M}
      'DEX+60'                                    : Begin LearnSkill( 9005 , 60); ShowHTML(HTML_stats); end;
      'CON+45'                                    : Begin LearnSkill( 9004 , 45); ShowHTML(HTML_stats); end;
      'STR+40'                                    : Begin LearnSkill( 9006 , 40); ShowHTML(HTML_stats); end;
      'INT+65'                                    : Begin LearnSkill( 9001 , 40); ShowHTML(HTML_stats); end;
      'WIT+40'                                    : Begin LearnSkill( 9002 , 70); ShowHTML(HTML_stats); end;
      'MEN+51'                                    : Begin LearnSkill( 9003 , 51); ShowHTML(HTML_stats); end;

      {Ultra Skills}
      'Ultra P.Atk'                               : begin LearnSkill( 4410, 22 ); ShowHTML(HTML_ultra); end;
      'Ultra M.Atk'                               : begin LearnSkill( 4411, 22 ); ShowHTML(HTML_ultra); end;
      'Ultra P.Def'                               : begin LearnSkill( 4412, 22 ); ShowHTML(HTML_ultra); end;
      'Ultra M.Def'                               : begin LearnSkill( 4413, 22 ); ShowHTML(HTML_ultra); end;
      'Ultimate Buff'                             : begin LearnSkill( 4318, 1 ); ShowHTML(HTML_ultra); end;
      'Ultimate Buff2'                            : begin LearnSkill( 4340, 1 ); ShowHTML(HTML_ultra); end;
      'Ultimate Buff3'                            : begin LearnSkill( 4341, 1 ); ShowHTML(HTML_ultra); end;

      {Armor Mastery}

      'Light Armor Mastery'    :
      begin
         LearnSkill(  227, 50 );
         LearnSkill(  233, 47 );
         LearnSkill(  236, 41 );
         LearnSkill(  252, 45 );
         LearnSkill(  258, 33 );
         ShowHTML(HTML_Armor);
      end;

      'Robe Mastery'    :
      begin
         LearnSkill(  234, 41 );
         LearnSkill(  235, 41 );
         LearnSkill(  251, 45 );
         ShowHTML(HTML_Armor);
      end;

      'Heavy Armor Mastery'    :
      begin
         LearnSkill(  231, 50 );
         LearnSkill(  232, 52 );
         LearnSkill(  253, 43 );
         LearnSkill(  259, 33 );
         ShowHTML(HTML_Armor);
      end;

      'Weapon Mastery'         :
      begin
         LearnSkill(  141, 3 );
         LearnSkill(  249, 42 );
         LearnSkill(  250, 42 );
         ShowHTML(HTML_Armor);
      end;

      { Скилы эпик бижи }
      'Earring of Antharas'         : begin LearnSkill( 3558,  1 ); ShowHTML(HTML_epic); end;
      'Earring of Orfen'            : begin LearnSkill( 3560,  1 ); ShowHTML(HTML_epic); end;
      'Earring of Zaken'            : begin LearnSkill( 3559,  1 ); ShowHTML(HTML_epic); end;
      'Necklace of Valakas'         : begin LearnSkill( 3557,  1 ); ShowHTML(HTML_epic); end;
      'Ring of Baium'               : begin LearnSkill( 3561,  1 ); ShowHTML(HTML_epic); end;
      'Ring of Core'                : begin LearnSkill( 3563,  1 ); ShowHTML(HTML_epic); end;
      'Ring of Queen Ant'           : begin LearnSkill( 3563,  1 ); ShowHTML(HTML_epic); end;
      'Frintezza''s Necklace'       : begin LearnSkill( 3604,  1 ); ShowHTML(HTML_epic); end;

      {Infinity Weapon Skill}

      'Infinity Blade'                : begin LearnSkill( 3578,  1 ); ShowHTML(HTML_Inf); end;
      'Infinity Axe'                  : begin LearnSkill( 3580,  1 ); ShowHTML(HTML_Inf); end;
      'Infinity Cleaver'              : begin LearnSkill( 3583,  1 ); ShowHTML(HTML_Inf); end;
      'Infinity Crusher'              : begin LearnSkill( 3583,  1 ); ShowHTML(HTML_Inf); end;
      'Infinity Fang'                 : begin LearnSkill( 3587,  1 ); ShowHTML(HTML_Inf); end;
      'Infinity Stinger'              : begin LearnSkill( 3589,  1 ); ShowHTML(HTML_Inf); end;
      'Infinity Spear'                : begin LearnSkill( 3591,  1 ); ShowHTML(HTML_Inf); end;
      'Infinity Bow'                  : begin LearnSkill( 3593,  1 ); ShowHTML(HTML_Inf); end;
      'Infinity Scepter'              : begin LearnSkill( 3595,  1 ); ShowHTML(HTML_Inf); end;
      'Infinity Rod'                  : begin LearnSkill( 3597,  1 ); ShowHTML(HTML_Inf); end;

      {Эпик RB Скилы}
      'Baium: General Attack'         : begin LearnSkill( 4127,  1 ); ShowHTML(HTML_NBC); end;
      'Baium Gift'                    : begin LearnSkill( 4136,  1 ); ShowHTML(HTML_NBC); end;
      'Valakas Lava Skin'             : begin LearnSkill( 4680,  1 ); ShowHTML(HTML_NBC); end;
      'Valakas Shock'                 : begin LearnSkill( 4688,  1 ); ShowHTML(HTML_NBC); end;
      'Antharas Shock'                : begin LearnSkill( 4106,  1 ); ShowHTML(HTML_NBC); end;
      'BOSS Shield'                   : begin LearnSkill( 3597,  1 ); ShowHTML(HTML_NBC); end;
      'BOSS Stun shot'                : begin LearnSkill( 3597,  1 ); ShowHTML(HTML_NBC); end;
      'Increase Rage Might'           : begin LearnSkill( 4317,  5 ); ShowHTML(HTML_NBC); end;
      'NPC dash'                      : begin LearnSkill( 4048,  3 ); ShowHTML(HTML_NBC); end;

      {Resist Skills}
      'Resist M.Atk'                : begin LearnSkill( 4116, 10 ); ShowHTML(HTML_Resist); end;
      'Resist Archery'              : begin LearnSkill( 4071, 10 ); ShowHTML(HTML_Resist); end;
      'Resist Physical Attack'      : begin LearnSkill( 4084, 10 ); ShowHTML(HTML_Resist); end;
      'Resist Dagger'               : begin LearnSkill( 4273,  6 ); ShowHTML(HTML_Resist); end;
      'Resist Two-handed Weapons'   : begin LearnSkill( 4428,  5 ); ShowHTML(HTML_Resist); end;
      'Resist Swords'               : begin LearnSkill( 4427,  5 ); ShowHTML(HTML_Resist); end;
      'Resist Dual-Sword Weapons'   : begin LearnSkill( 4426,  5 ); ShowHTML(HTML_Resist); end;
      'Resist Blunt Weapons'        : begin LearnSkill( 4425,  5 ); ShowHTML(HTML_Resist); end;
      'Resist Hand-to-hand Weapons' : begin LearnSkill( 4424,  5 ); ShowHTML(HTML_Resist); end;
      'Resist Mental Derangement'   : begin LearnSkill( 4389,  6 ); ShowHTML(HTML_Resist); end;
      'Resist Paralysis'            : begin LearnSkill( 4338,  6 ); ShowHTML(HTML_Resist); end;
      'Resist Pole Arm'             : begin LearnSkill( 4379,  6 ); ShowHTML(HTML_Resist); end;
      'Resist Sacred Attack'        : begin LearnSkill( 4337,  6 ); ShowHTML(HTML_Resist); end;
      'Resist Dark Attack'          : begin LearnSkill( 4333,  6 ); ShowHTML(HTML_Resist); end;
      'Resist Hold'                 : begin LearnSkill( 4287,  6 ); ShowHTML(HTML_Resist); end;
      'Resist Sleep'                : begin LearnSkill( 4285,  6 ); ShowHTML(HTML_Resist); end;

      {Скилы От Сэтов}
      'Wooden Set'                  : begin LearnSkill( 3500,  1 ); ShowHTML(HTML_Set); end;
      'Devotion Set'                : begin LearnSkill( 3501,  1 ); ShowHTML(HTML_Set); end;
      'Elven Mithril Set'           : begin LearnSkill( 3507,  1 ); ShowHTML(HTML_Set); end;
      'Knowledge Set'               : begin LearnSkill( 3504,  1 ); ShowHTML(HTML_Set); end;
      'Reinforced Leather Set'      : begin LearnSkill( 3503,  1 ); ShowHTML(HTML_Set); end;
      'Manticore Set'               : begin LearnSkill( 3505,  1 ); ShowHTML(HTML_Set); end;
      'Brigandine Set'              : begin LearnSkill( 3506,  1 ); ShowHTML(HTML_Set); end;
      'Mithril Heavy Armor Set'     : begin LearnSkill( 3502,  1 ); ShowHTML(HTML_Set); end;
      'Divine Set'                  : begin LearnSkill( 3517,  1 ); ShowHTML(HTML_Set); end;
      'Karmian Set'                 : begin LearnSkill( 3510,  1 ); ShowHTML(HTML_Set); end;
      'Demon Set'                   : begin LearnSkill( 3513,  1 ); ShowHTML(HTML_Set); end;
      'Drake Leather Set'           : begin LearnSkill( 3515,  1 ); ShowHTML(HTML_Set); end;
      'Theca Leather Set'           : begin LearnSkill( 3514,  1 ); ShowHTML(HTML_Set); end;
      'Plate Leather Set'           : begin LearnSkill( 3511,  1 ); ShowHTML(HTML_Set); end;
      'Composite Set'               : begin LearnSkill( 3512,  1 ); ShowHTML(HTML_Set); end;
      'Chain Mail Set'              : begin LearnSkill( 3509,  1 ); ShowHTML(HTML_Set); end;
      'Full Plate Set'              : begin LearnSkill( 3516,  1 ); ShowHTML(HTML_Set); end;
      'Doom Robe Set'               : begin LearnSkill( 3529,  1 ); ShowHTML(HTML_Set); end;
      'Blue Wolf Robe Set'          : begin LearnSkill( 3528,  1 ); ShowHTML(HTML_Set); end;
      'Avadon Robe Set'             : begin LearnSkill( 3523,  1 ); ShowHTML(HTML_Set); end;
      'Zubei Robe Set'              : begin LearnSkill( 3522,  1 ); ShowHTML(HTML_Set); end;
      'Avadon Light Armor Set'      : begin LearnSkill( 3521,  1 ); ShowHTML(HTML_Set); end;
      'Zubei Light Armor Set'       : begin LearnSkill( 3520,  1 ); ShowHTML(HTML_Set); end;
      'Blue Wolf Light Armor Set'   : begin LearnSkill( 3526,  1 ); ShowHTML(HTML_Set); end;
      'Doom Light Armor Set'        : begin LearnSkill( 3527,  1 ); ShowHTML(HTML_Set); end;
      'Zubei Heavy Armor Set'       : begin LearnSkill( 3518,  1 ); ShowHTML(HTML_Set); end;
      'Avadon Heavy Armor Set'      : begin LearnSkill( 3519,  1 ); ShowHTML(HTML_Set); end;
      'Doom Heavy Armor Set'        : begin LearnSkill( 3525,  1 ); ShowHTML(HTML_Set); end;
      'Blue Wolf Heavy Armor Set'   : begin LearnSkill( 3524,  1 ); ShowHTML(HTML_Set); end;
      'Majestic Robe Set'           : begin LearnSkill( 3541,  1 ); ShowHTML(HTML_Set); end;
      'Nightmare Robe Set'          : begin LearnSkill( 3540,  1 ); ShowHTML(HTML_Set); end;
      'Tallum Robe Set'             : begin LearnSkill( 3534,  1 ); ShowHTML(HTML_Set); end;
      'Dark Crystal Robe Set'       : begin LearnSkill( 3535,  1 ); ShowHTML(HTML_Set); end;
      'Majestic Light Armor Set'    : begin LearnSkill( 3539,  1 ); ShowHTML(HTML_Set); end;
      'Nightmare Light Armor Set'   : begin LearnSkill( 3538,  1 ); ShowHTML(HTML_Set); end;
      'Tallum Light Armor Set'      : begin LearnSkill( 3533,  1 ); ShowHTML(HTML_Set); end;
      'Dark Crystal Light Armor Set': begin LearnSkill( 3532,  1 ); ShowHTML(HTML_Set); end;
      'Nightmare Heavy Armor Set'   : begin LearnSkill( 3536,  1 ); ShowHTML(HTML_Set); end;
      'Majestic Heavy Armor Set'    : begin LearnSkill( 3537,  1 ); ShowHTML(HTML_Set); end;
      'Tallum Heavy Armor Set'      : begin LearnSkill( 3531,  1 ); ShowHTML(HTML_Set); end;
      'Dark Crystal Heavy Armor Set': begin LearnSkill( 3530,  1 ); ShowHTML(HTML_Set); end;
      'Major Arcana Robe Set'       : begin LearnSkill( 3556,  1 ); ShowHTML(HTML_Set); end;
      'Draconic Light Armor Set'    : begin LearnSkill( 3555,  1 ); ShowHTML(HTML_Set); end;
      'Imperial Crusader Heavy Armor Set' : begin LearnSkill( 3553,  1 ); ShowHTML(HTML_Set); end;

      {Hero Skills}
      'Heroic Berserker'            : begin LearnSkill( 396,  1 ); ShowHTML(HTML_Hero); end;
      'Heroic Miracle'              : begin LearnSkill( 395,  1 ); ShowHTML(HTML_Hero); end;
      'Heroic Dread'                : begin LearnSkill( 1376,  1 ); ShowHTML(HTML_Hero); end;
      'Heroic Grandeur'             : begin LearnSkill( 1375,  1 ); ShowHTML(HTML_Hero); end;
      'Blessing of Noblesse'        : begin LearnSkill( 1323,  1 ); ShowHTML(HTML_Hero); end;

      {SA Skills}

      'Haste'    :
      begin
         LearnSkill(  3036, 4 );
         LearnSkill(  3037, 4 );
         LearnSkill(  3068, 2 );
         ShowHTML(HTML_SA);
      end;

      'Guidance'    :
      begin
         LearnSkill(  3064, 1 );
         LearnSkill(  3065, 1 );
         LearnSkill(  3007, 6 );
         LearnSkill(  3008, 6 );
         ShowHTML(HTML_SA);
      end;

      'Rsk.Agility'    :
      begin
         LearnSkill(  3028, 6 );
         LearnSkill(  3030, 6 );
         LearnSkill(  3031, 6 );
         LearnSkill(  3069, 1 );
         LearnSkill(  3009, 7 );
         ShowHTML(HTML_SA);
      end;

      'Critical Demage'    :
      begin
         LearnSkill(  3023, 6 );
         LearnSkill(  3043, 6 );
         LearnSkill(  3066, 3 );
         LearnSkill(  3067, 2 );
         ShowHTML(HTML_SA);
      end;

      'Focus'    :
      begin
         LearnSkill(  3010, 7 );
         LearnSkill(  3011, 6 );
         LearnSkill(  3050, 2 );
         LearnSkill(  3051, 2 );
         LearnSkill(  3566, 2 );
         LearnSkill(  3057, 2 );
         ShowHTML(HTML_SA);
      end;

      {Дансы}
      'Dance of Fire'          : begin LearnSkill(  274, 1 );  ShowHTML(HTML_DANCE); end;
      'Dance of Light'         : begin LearnSkill(  277, 1 );  ShowHTML(HTML_DANCE); end;
      'Dance of Inspiration'   : begin LearnSkill(  272, 1 );  ShowHTML(HTML_DANCE); end;
      'Dance of Mystic'        : begin LearnSkill(  273, 1 );  ShowHTML(HTML_DANCE); end;
      'Dance of Concentration' : begin LearnSkill(  276, 1 );  ShowHTML(HTML_DANCE); end;
      'Dance of Warrior'       : begin LearnSkill(  271, 1 );  ShowHTML(HTML_DANCE); end;
      'Dance of Fury'          : begin LearnSkill(  275, 1 );  ShowHTML(HTML_DANCE); end;
      'Dance of Earth Guard'   : begin LearnSkill(  209, 1 );  ShowHTML(HTML_DANCE); end;
      'Dance of Protection'    : begin LearnSkill(  311, 1 );  ShowHTML(HTML_DANCE); end;
      'Dance of Aqua Guard'    : begin LearnSkill(  307, 1 );  ShowHTML(HTML_DANCE); end;
      'Dance of Vampire'       : begin LearnSkill(  310, 1 );  ShowHTML(HTML_DANCE); end;
      'Dance of Medusa'        : begin LearnSkill(  367, 1 );  ShowHTML(HTML_DANCE); end;
      'Dance of Siren'         : begin LearnSkill(  365, 1 );  ShowHTML(HTML_DANCE); end;

      { Сонги }
      'Song of Warding'        : begin LearnSkill(  267, 1 );  ShowHTML(HTML_Song); end;
      'Song of Invocation'     : begin LearnSkill(  270, 1 );  ShowHTML(HTML_Song); end;
      'Song of Wind'           : begin LearnSkill(  268, 1 );  ShowHTML(HTML_Song); end;
      'Song of Hunter'         : begin LearnSkill(  269, 1 );  ShowHTML(HTML_Song); end;
      'Song of Life'           : begin LearnSkill(  265, 1 );  ShowHTML(HTML_Song); end;
      'Song of Earth'          : begin LearnSkill(  264, 1 );  ShowHTML(HTML_Song); end;
      'Song of Water'          : begin LearnSkill(  266, 1 );  ShowHTML(HTML_Song); end;
      'Song of Flame Guard'    : begin LearnSkill(  306, 1 );  ShowHTML(HTML_Song); end;
      'Song of Vitality'       : begin LearnSkill(  304, 1 );  ShowHTML(HTML_Song); end;
      'Song of Storm Guard'    : begin LearnSkill(  308, 1 );  ShowHTML(HTML_Song); end;
      'Song of Vengeance'      : begin LearnSkill(  305, 1 );  ShowHTML(HTML_Song); end;
      'Song of Meditation'     : begin LearnSkill(  363, 1 );  ShowHTML(HTML_Song); end;
      'Song of Renewal'        : begin LearnSkill(  349, 1 );  ShowHTML(HTML_Song); end;
      'Song of Champion'       : begin LearnSkill(  364, 1 );  ShowHTML(HTML_Song); end;

      {Buff}
      'Wind Walk'            : begin LearnSkill( 1204, 2 );  ShowHTML(HTML_BUFF); end;
      'Shield'               : begin LearnSkill( 1040, 3 );  ShowHTML(HTML_BUFF); end;
      'Might'                : begin LearnSkill( 1068, 3 );  ShowHTML(HTML_BUFF); end;
      'Bless Shield'         : begin LearnSkill( 1243, 6 );  ShowHTML(HTML_BUFF); end;
      'Death Whisper'        : begin LearnSkill( 1242, 3 );  ShowHTML(HTML_BUFF); end;
      'Guidancee'            : begin LearnSkill( 1240, 3 );  ShowHTML(HTML_BUFF); end;
      'Mental Shield'        : begin LearnSkill( 1035, 4 );  ShowHTML(HTML_BUFF); end;
      'Bless the Body'       : begin LearnSkill( 1045, 6 );  ShowHTML(HTML_BUFF); end;
      'Bless the Soul'       : begin LearnSkill( 1048, 6 );  ShowHTML(HTML_BUFF); end;
      'Concentration'        : begin LearnSkill( 1048, 6 );  ShowHTML(HTML_BUFF); end;
      'Focuss'               : begin LearnSkill( 1077, 3 );  ShowHTML(HTML_BUFF); end;
      'Hastee'               : begin LearnSkill( 1086, 2 );  ShowHTML(HTML_BUFF); end;
      'Magic Barrier'        : begin LearnSkill( 1036, 2 );  ShowHTML(HTML_BUFF); end;
      'Acumen'               : begin LearnSkill( 1085, 3 );  ShowHTML(HTML_BUFF); end;
      'Berserker Spirit'     : begin LearnSkill( 1062, 2 );  ShowHTML(HTML_BUFF); end;
      'Kiss of Eva'          : begin LearnSkill( 1073, 2 );  ShowHTML(HTML_BUFF); end;
      'Regeneration'         : begin LearnSkill( 1044, 3 );  ShowHTML(HTML_BUFF); end;
      'Empower'              : begin LearnSkill( 1059, 3 );  ShowHTML(HTML_BUFF); end;
      'Wild Magic'           : begin LearnSkill( 1303, 2 );  ShowHTML(HTML_BUFF); end;
      'Resist Shock'         : begin LearnSkill( 1303, 4 );  ShowHTML(HTML_BUFF); end;
      'Agility'              : begin LearnSkill( 1087, 3 );  ShowHTML(HTML_BUFF); end;
      'Prophecy of Water'    : begin LearnSkill( 1355, 1 );  ShowHTML(HTML_BUFF); end;
      'Prophecy of Wind'     : begin LearnSkill( 1357, 1 );  ShowHTML(HTML_BUFF); end;
      'Prophecy of Fire'     : begin LearnSkill( 1356, 1 );  ShowHTML(HTML_BUFF); end;
      'Chant of Victory'     : begin LearnSkill( 1363, 1 );  ShowHTML(HTML_BUFF); end;


     end;
  end;
end.

Последний раз редактировалось J-Fobos; 29.07.2011 в 19:30. Причина: пользуйтесь тегом [ code ]
  Ответить с цитированием
Старый 17.08.2011, 01:43   #75
 Разведчик
Аватар для StEAlTh_ASsAsIN
 
StEAlTh_ASsAsIN никому не известный тип
Регистрация: 11.04.2010
Сообщений: 2
Популярность: 14
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 2 сообщениях
 
По умолчанию Re: Скрипты для l2phx

Скрипт на аугментацию. Работает на фрее.
Запускаем скрипт. Первый раз аугментируем/снимаем аугмент руками, дальше автоматически. Активируется соц.действиием "Нет".
Важно - скрипт удаляет и вставляет ЛС за один раз (мне лично так удобнее).
Код:
const
   nik='яяя';

var
   WeaponID, LsID, GemID, GemCount, zero: integer;

procedure Init; //Вызывается при включении скрипта
begin

end;

procedure OnTimer01(Sender: TObject);
begin

end;

procedure Free; //Вызывается при выключении скрипта
begin

end;

procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin

end;

procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединения
begin

end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
    if FromClient and (pck[1]=#$D0) then
        begin
           WeaponID:=ReadD(4);
           LsID:=ReadD(8);
           GemID:=ReadD(12);
           GemCount:=ReadD(16);
        end;

//Cancel Augment

    if FromClient and (pck = HStr('56 19 00 00 00 00 00 00 00 00')) then   //62 AB 07 00 00 00 00 00 00 (Social No)

       begin
       buf:=hstr('FE 52 00 ');//окно удаления арГ
        SendToClient;
        delay(400);
          pck:='';
          Buf:=#$D0#$42#$00;
          WriteD(WeaponID);
          SendToServerEx(nik);
          Buf:=#$D0#$43#$00;
          WriteD(WeaponID);
          SendToServerEx(nik);
          buf:=hstr('FE 51 00 ');//окно Арг
          SendToClient;
          delay(400);
          pck:='';
          Buf:=#$D0#$26#$00;
          WriteD(WeaponID);
          SendToServerEx(nik);
          delay(350);
          Buf:=#$D0#$27#$00;
          WriteD(WeaponID);
          WriteD(LsID);
          SendToServerEx(nik);
          delay(400);
          Buf:=#$D0#$28#$00;
          WriteD(WeaponID);
          WriteD(LsID);
          WriteD(GemID);
          WriteD(GemCount);  
          WriteD(zero);
          SendToServerEx(nik);
          delay(400);
          Buf:=#$D0#$41#$00;
          WriteD(WeaponID);
          WriteD(LsID);
          WriteD(GemID);
          WriteD(GemCount); 
          WriteD(zero);
          SendToServerEx(nik);
       end;
end.
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Devidchitchyan (09.02.2014), sakunivan (28.05.2012)
Ответ

Метки
l2phx, скрипты


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Скрипт] Скрипты для RFRudokop. Vizir Rising Force Online 13 14.07.2009 23:10
[Файл] l2phx.3.4.1.70 ZliLO Скрипты и перехват пакетов 7 05.04.2009 22:25
[Руководство] Нейтральные скрипты maxxx Архив Warcraft 3 0 11.11.2008 20:22
Скрипты для Рудокопа Chopa Архив уязвимостей 1 16.07.2008 16:32

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 14:55.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net