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

Ответ
 
Опции темы Опции просмотра
Старый 31.03.2009, 11:16   #1
Super Moderator
 Рыцарь-защитник
Аватар для Razzor
 
Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(
Регистрация: 23.04.2008
Сообщений: 575
Популярность: 23515
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 1,359
Поблагодарили 2,428 раз(а) в 665 сообщениях
Отправить сообщение для Razzor с помощью ICQ Отправить сообщение для Razzor с помощью Skype™
 
По умолчанию Скрипты для l2phx

1. Публикуем сюда скрипты для l2phx, указываем на какой версии l2phx тестировался скрипт.
2. Все кроме скрипта и описания к нему будет удалятся, автор получать горчичник (для "спасибо" есть кнопка).
3. Скрипт обязательно должен быть в теге "кода" ([ CODE ][ /CODE ] без пробелов)
4. Скрипт должен быть с описанием (инструкцией если таковая имеется) и с указанием автора скрипта.

Скрипт копируем в l2phx в кладку "Скрипты", нажимаем "новый скрипт" и вставляем.
Скрипты не соответствующие данным правилам - будут удалятся без предупреждений.


---
Все вопросы по программе и работоспособности скриптов задаем на официальном форуме L2pbx - [Ссылки могут видеть только зарегистрированные пользователи. ]
________________
ICQ: 743-936
Skype - prof11ame

Перед тем как проводить со мной сделки, советую в целях Вашей безопасности - просить проверку через форум !
-
Обмен и вывод электронных денег: Яндекс Деньги, КИВИ, Веб-мани, быстро и надежно. Вывод денег на пластиковые карты, любого банка.
Разблокирую Яндекс Деньги кошельки.

Последний раз редактировалось Razzor; 31.05.2009 в 10:36.
  Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
DMSnik (18.02.2010), m1roo (05.07.2009), page10 (10.05.2011)
Старый 02.04.2009, 18:23   #2
Super Moderator
 Рыцарь-защитник
Аватар для Razzor
 
Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(
Регистрация: 23.04.2008
Сообщений: 575
Популярность: 23515
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 1,359
Поблагодарили 2,428 раз(а) в 665 сообщениях
Отправить сообщение для Razzor с помощью ICQ Отправить сообщение для Razzor с помощью Skype™
 
По умолчанию Re: Скрипты для l2phx

1. Скрипт для Аугментация в одно нажатие, работает на любых версиях.
Код:
const
  Name='Mamy'; // ник
  ItemID=6608; // пуха
  LifeID=8762; // лайфстон
  GemsID=2131; // гемстон
  GemsAmount=25; //кол-во гемов
  max=100;  // инвентарь
var
 LifeBase:array[1..max] of integer;    
 ColvoLife,ColvoGems,Life,Item,Gems,SocialID,augid:integer;
procedure Init;
var i:integer;
begin
 buf:=hstr('0F');
 SendToServerEx(Name);
end;
procedure Free;
var i:integer;
begin
 for i:=1 to max do
  LifeBase[i]:=0;
end;
function StrToHex(packet: string):string;
var
  i:integer;
  tmp:byte;
  function ByteToHex(b: byte): Char;
  begin
    if b<10 then result:=chr(b+$30)
      else result:=chr(b+$37);
  end;
begin
  result:='';
  for i:=1 to length(packet) do begin
    tmp:=ord(packet[i]) div 16;
    result:=result+ByteToHex(tmp);
    tmp:=ord(packet[i]) - tmp*16;
    result:=result+ByteToHex(tmp)+' ';
  end;
end;
function inttohex(n:integer):string;
var i:integer;
    t:string;
    a:array[0..15] of char;
begin
 a[0]:='0';
 a[1]:='1';
 a[2]:='2';
 a[3]:='3';
 a[4]:='4';
 a[5]:='5';
 a[6]:='6';
 a[7]:='7';
 a[8]:='8';
 a[9]:='9';
 a[10]:='A';
 a[11]:='B';
 a[12]:='C';
 a[13]:='D';
 a[14]:='E';
 a[15]:='F';
 result:='';
 t:='';
 i:=0;
 while n<>0 do begin
  if (i mod 2=0)and(i>0) then begin
   result:=result+t+' ';
   t:='';
  end;
  t:=a[n mod 16]+t;
  n:=n div 16;
  inc(i);
 end;
 result:=result+t;
end;
procedure Say;
var i:integer;
    s:string;
begin
  s:='<tr><td>LS='+inttostr(ColvoLife)+' (*'+inttostr(GemsAmount)+'='+inttostr(ColvoLife*GemsAmount)+')</td></tr>';
  s:=s+'<tr><td>Gems='+inttostr(ColvoGems)+' (/'+inttostr(GemsAmount)+'='+inttostr(ColvoGems div GemsAmount)+')</td></tr>';
  s:=s+'<tr><td>---</td></tr>';
  if Item=0 then
   s:=s+'<tr><td>No Weapon</td></tr>'
  else if augid>0 then
   s:=s+'<tr><td>Augmented ('+inttohex(augid)+')</td></tr>'
  else
   s:=s+'<tr><td>Not augmented</td></tr>';
  buf:=hstr('0F 01 00 00 00');
  WriteS('<html><body><br><table width=100%>'+s+'</table><br><br><br><br><br><br>'+
   '"Social Yes" - Cancel Augment(if augmented) and Augment(if you have enough gems and LSs)<br>'+
   '"Social No" - Show this help<br><br>'+
   'Sometimes client dont get packet InventoryUpdate and you see "Not augment" when weapon is augmented.'+
   ' Simply press [Tab] twice or wear weapon.<br><br>'+
   '(c) raid aka Mamy</body></html>');
//   '(c) raid aka Mamy<br>'+strtohex(pck)+'</body></html>');
  WriteD(0);
  SendToClientEx(Name);
end;
procedure CreateItemBase; 
var i,ss,j,ObjID,ItmID,ListCount,count,aug:integer;
begin
  Item:=0;
  ss:=1;
  j:=4; 
  ListCount:=ReadH(j); 
  if ListCount>max then ListCount:=max;
  j:=8; 
  for i:=1 to ListCount do begin
     ObjID:=ReadD(j);    
     ItmID:=ReadD(j);    
     Count:=ReadD(j);
     j:=j+14;
     aug:=ReadD(j);
     case ItmID of
        LifeID: begin
            LifeBase[ss]:=ObjID;
            inc(ss);
        end;
        ItemID: begin
            Item:=ObjID;
            augid:=aug;
        end;
        GemsID: begin
            Gems:=ObjID;
            ColvoGems:=Count;
        end;
     end;
    j:=j+6;
  end;
  ColvoLife:=ss-1;
  Say;
end;
procedure UpdateItemBase; 
var i,ii,j,ObjID,ItmID,ListCount,Count,UpdType,aug: integer;
begin
  ListCount:=ReadH(2);
  j:=4;
  for i:=1 to ListCount do begin
    UpdType:=ReadH(j);
    j:=j+2;
    ObjID:=ReadD(j);
    ItmID:=ReadD(j);
    Count:=ReadD(j);
    j:=j+14;
    aug:=ReadD(j);
    case UpdType of
      1:case ItmID of
          ItemID: begin
            Item:=ObjID;
            augid:=aug;
          end;
          LifeID: begin
            for ii:=1 to max do
             if LifeBase[ii]=0 then begin
              LifeBase[ii]:=ObjID;
              ColvoLife:=ColvoLife+1;
              break;
             end;
          end;
        GemsID: begin
            Gems:=ObjID;
            ColvoGems:=Count;
        end;
      end;
      2:case ItmID of
        ItemID: begin
          Item:=ObjID;
          augid:=aug;
        end;
        GemsID: begin
            Gems:=ObjID;
            ColvoGems:=Count;
        end;
      end;
      3:case ItmID of
        ItemID:
          Item:=0;
        GemsID: begin
            Gems:=ObjID;
            ColvoGems:=Count;
        end;
        LifeID: begin
          for ii:=1 to max do
            if LifeBase[ii]=ObjID then begin
             LifeBase[ii]:=0;
             ColvoLife:=ColvoLife-1;
            end;
        end;
      end;
    end;
    j:=j+6;
  end;
 Say;
end;
function GetNextLife: integer;
var i:integer;
begin
  Result:=-1;
  for i:=1 to max do begin
    if (LifeBase[i]<>0) then begin
      Result:=LifeBase[i];
      exit;
    end;
  end;
end;
procedure Augment;
begin
 buf:=hstr('D0 29 00');
 WriteD(Item);
 SendToServerEx(Name);
 delay(100);
 buf:=hstr('D0 2A 00');
 WriteD(Item);
 WriteD(Life);
 SendToServerEx(Name);
 delay(100);
 buf:=hstr('D0 2B 00');
 WriteD(Item);
 WriteD(Life);
 WriteD(Gems);
 WriteD(GemsAmount);
 SendToServerEx(Name);
 delay(100);
 buf:=hstr('D0 2C 00');
 WriteD(Item);
 WriteD(Life);
 WriteD(Gems);
 WriteD(GemsAmount);
 SendToServerEx(Name);
end;
procedure DisAugment;
begin
 buf:=hstr('D0 2D 00');
 WriteD(Item);
 SendToServerEx(Name);
 buf:=hstr('D0 2E 00');
 WriteD(Item);
 SendToServerEx(Name);
end;
begin
  if pck='' then exit;
  if FromClient and (ConnectName=Name) and (pck[1]=#$1B) then begin
    SocialID:=ReadD(2);
   pck:='';
    case SocialID of
      7: begin
 buf:=hstr('A7 2A A0 00 00 80 84 1E 00 0A 00 00 00 00 00 00 00 00 00 00 00');
 SendToServerEx(Name);
 buf:=hstr('A7 29 A0 00 00 40 0D 03 00 FA 00 00 00 00 00 00 00 00 00 00');
 SendToServerEx(Name);

        exit;
       end;
      6: begin
       if augid>0 then begin
        DisAugment;
        delay(300);
       end;
       Life:=GetNextLife;
       if (Life=-1)or(ColvoGems<GemsAmount)or(ColvoLife<1) then
        exit;
       Augment;
       exit;
      end;
      5: begin
       Say;
       exit;
      end;
    end;
  end;
  if FromServer then
  case pck[1] of
    #$1B: CreateItemBase; 
    #$27: UpdateItemBase; 
  end;
end.
Описание: Активируем скрипт, в клиенте должно появиться окошко чата.
"Соц. Да" - снятие аугмента и аугментирование.
В инвентаре должна быть только одна пуха с данным ID.

Автор - Mamyka
==+==
1. Скрипт на Авто-таргет ПК, тестилось на L2J и L2F серверах
Код:
// Авторы: Furious, metalFan
// Отдельное спасибо PanAm за помощь в написании
// Версия: Gracia 1.5 PreFinal
Const UserName=('онатоле');
var
ObjectID, KarmaPK, TargetPK, MessagePK, ClassPK, i, x, y, z, TempPK: Integer;
NamePK, CvarPK : String;
ClassName: TStringList;
procedure Init;
begin
MessagePK:=1;
TargetPK:=0;
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS('PK Scanner for Gracia 1.5 by Furious, metalFan');
SendToClientEx(UserName);
ClassName :=TStringList.Create;
ClassName.LoadFromFile('ClassName.ini');
end;
procedure Free;
begin
ClassName.free;
end;
procedure OnConnect(WithClient: Boolean);
begin
end;
procedure OnDisonnect(WithClient: Boolean);
begin
end;
procedure MessageSend(Msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(Msg);
SendToClientEx(UserName);
end;
procedure TargetingPK(ObjectID: Integer);
begin
if TargetPK=1 then begin
buf:=#$1F;
WriteD(ObjectID); WriteD(0); Writed(0); Writed(0); WriteC(0);
SendToServerEx(UserName); end;
end;
procedure KillRadar;
begin
buf:=#$F1;
WriteD(0);
WriteD(1);
WriteD(0);
WriteD(0);
WriteD(0);
SendToClientEx(UserName);
end;
function GetClassName(CID : integer) : string;
begin
result:=ClassName.Strings[CID];
end;
begin
if (FromServer) and (ConnectName=UserName) and (pck[1]=#$31) then
begin
x:=ReadD(2);
y:=ReadD(6);
z:=ReadD(10);
i:=22;
NamePK:=ReadS(i);
ClassPK:=ReadD(i+8);
KarmaPK:=ReadD(i+176);
if (KarmaPK>0) then
begin
ObjectID:=ReadD(18);
TargetingPK(ObjectID);
if MessagePK=1 then begin MessageSend(''+NamePK+' | '+GetClassName(ClassPK)+' | '+IntToStr(KarmaPK)+) end;
buf:=#$F1;
WriteD(0);
WriteD(1);
WriteD(X);
WriteD(Y);
WriteD(Z);
SendToClientEx(UserName);
end;
end;
if (FromServer) and (ConnectName=UserName) and (pck[1]=#$08) then begin
TempPK:=ReadD(2);
case TempPK of ObjectID:
KillRadar;
end;
end;
if (FromClient) and (ConnectName=UserName) and (pck[1]=#$49) then
begin
CvarPK:=ReadS(2);
case CvarPK of
'\start':
begin
TargetPK:=1;
MessageSend('Search On!');
pck:='';
end;
'\stop':
begin
TargetPK:=0;
MessageSend('Stopped all services!');
pck:='';
end;
'\radar':
begin
MessageSend('Radar Killed');
KillRadar;
pck:='';
end;
end;
end;
end.
Описание: Киньте файл classname.ini в папку пакетхака
==+==

1. Скрипт для работы с чатом
Код:
const
     MaxMessages = 1000;
var
  m: TMemo;
  frm:TForm;
  penel: TPanel;
  etext:  tedit;
  button: tbutton;
  box   : TCheckBox;
  every : TEdit;
  _Name : TEdit;
  i: Integer;
  tm:TTimer;
  Message, Name: String;

procedure SendMs(Sender: TObject);
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);
    SendToServerEx(_Name.Text);
  end;
end;
procedure onNewCommand(obj:TObject;key:string);
var i:integer;
var symbol:Variant;
var after:string;
begin
     if (key[1]=#$0D) then begin
         SendMs(obj);
         symbol := etext.Text[1];
         after := '';
         if symbol = '#' then after := '#';
         if symbol = '!' then after := '!';
         if symbol = '@' then after := '@';
         if symbol = '$' then after := '$';
         if symbol = '%' then after := '%';
         etext.Text := after;
     end;
end;
procedure onTimer(Sender:TObject);
begin
  tm.Interval := StrToInt(every.Text);
  if box.checked = true then SendMs(Sender);
end;
procedure Init;
begin
  frm := TForm.Create(nil);
  frm.Caption := 'Chat';
  frm.BorderStyle := bsSizeable;
  frm.Position := poDesigned ;
  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:=48;
  etext:=tedit.Create(penel);
  etext.parent:=penel;
  etext.align:=alTop;
  button:=tbutton.Create(penel);
  button.parent:=penel;
  button.top := etext.height;
  button.caption:='Send';
  button.onClick:=@SendMs;
  box := TCheckBox.Create(penel);
  box.parent := penel;
  box.Top := etext.height + 2;
  box.Left := button.width + button.left +2;
  box.Caption := 'Шторм через: ';
  every:=tedit.Create(penel);
  every.parent:=penel;
  every.Left := box.Left + box.Width;
  every.Top := button.top;
  every.Text := IntToStr(3000);
  tm := TTimer.Create(frm);
  tm.Interval := 1000;
  tm.Enabled := true;
  tm.OnTimer := @OnTimer;
  etext.OnKeyPress := @onNewCommand;
  _Name:=tedit.Create(frm);
  _Name.parent:=frm;
  _Name.align := alTop;
  _Name.Text := '';
  frm.Show;
end;

procedure SaveToFile(prefix:string);
var name:string;
begin
     name := prefix+'.'+ConnectName+'.'+DateToStr(Date)+'.'+TimeToStr(Time)+'.txt';
     while Pos(':',name) <> 0 do begin
           name[Pos(':',name)] := '-';
     end;
     m.Lines.SaveToFile(name);
end;

procedure Free;
begin
  SaveToFile('ChatLog');
  box.Free;
  every.Free;
  tm.Free;
  etext.Free;
  button.Free;
  penel.Free;
  m.Free;
  frm.Free;
end;



var tp:integer;
var ct:string;
var MessageCounter:integer;
begin
if _Name.Text = '' then _Name.Text := ConnectName;
if FromServer and (ConnectName = _Name.Text) and (pck[1]=#$4a) then
  begin
    i:=10;
    name:=ReadS(i);
    message:=ReadS(i);
    tp := ReadD(6);
    ct := '???';
    if tp = 0 then ct := 'GNR';
    if tp = 8 then ct := 'TRD';
    if tp = 3 then ct := 'PRT';
    if tp = 4 then ct := 'CLN';
    if tp = 9 then ct := 'ALY';

    ct := DateToStr(Date) + ' '+ TimeToStr(Time) + ', '+ ct;

    if name='' then name:='Объявление: ';
    m.Lines.Add('['+ct+'] '+Name+': '+message);

    if MessageCounter > MaxMessages then begin
       SaveToFile('Backup');
       //m.Lines.Add('BACKUPED');
       MessageCounter := 0;
    end;
    MessageCounter := MessageCounter+1;
  end;
end.

Возможности:

1. Отдельное окно чата.
2. "Автоспам": одна строчка раз в Х секунд
3. Длинный текст: отправка многострочного сообщения
4. Лог чата.
________________
ICQ: 743-936
Skype - prof11ame

Перед тем как проводить со мной сделки, советую в целях Вашей безопасности - просить проверку через форум !
-
Обмен и вывод электронных денег: Яндекс Деньги, КИВИ, Веб-мани, быстро и надежно. Вывод денег на пластиковые карты, любого банка.
Разблокирую Яндекс Деньги кошельки.
  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
DMSnik (18.02.2010), m1roo (05.07.2009), ridgid (09.09.2009), [4it]Quickly (14.07.2009)
Старый 06.04.2009, 13:29   #3
Super Moderator
 Рыцарь-защитник
Аватар для Razzor
 
Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(
Регистрация: 23.04.2008
Сообщений: 575
Популярность: 23515
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 1,359
Поблагодарили 2,428 раз(а) в 665 сообщениях
Отправить сообщение для Razzor с помощью ICQ Отправить сообщение для Razzor с помощью Skype™
 
По умолчанию Re: Скрипты для l2phx

1. Скрипт позволяющий открывать любые двери в мире Lineage 2
Код:
begin
if fromserver and (pck[1]=#$9F) then pck[22]:=#$00;
end.
1. Скрипт для отображения CP/HP вместо титула, работает на серверах где приходит статусапдейт перса

Код:
Var
CurHP,MaxHP,CurCP,MaxCP,CurMP,MaxMP,objID: integer;

procedure Init;
begin

end;

procedure StatusUpdate;
var
  i: integer;
begin
  for i:=0 to ReadD(6)-1 do begin
    case pck[i*8+10] of
      #$09: CurHP:=ReadD(i*8+14);
      #$0A: MaxHP:=ReadD(i*8+14);
      #$0B: CurMP:=ReadD(i*8+14);
      #$0C: MaxMP:=ReadD(i*8+14);
      #$21: CurCP:=ReadD(i*8+14);
      #$22: MaxCP:=ReadD(i*8+14);
    end;
  end;
end;

procedure Free;
begin

end;

procedure OnConnect(WithClient: Boolean);
begin

end;

procedure OnDisonnect(WithClient: Boolean);
begin

end;

begin
   if fromserver and (pck[1]=#$18) then
      begin
         StatusUpdate;
         objID:=ReadD(2);

         buf:=#$CC;
         WriteD(objID);
         WriteS('CP:'+inttostr(CurCP)+'  HP:'+inttostr(CurHP));
         SendToClient;

      end;

end.
==+==

1. Скрипт на авто-заточку скиллов.

Код:
const
   nik='xxxxx';
   Enchant=13;

var
   SubID, SkillID, SkillLvl, CurrEnch: integer;

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

end;

procedure OnTimer01(Sender: TObject);
begin

end;

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

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

end;

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

end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
    if FromServer and (pck[1]=#$62) then case pck[2] of
        #$A0:   //точнулся
                if CurrEnch<Enchant then
                   begin
                     CurrEnch:=CurrEnch+1;
                     Buf:=#$D0;
                     WriteH(SubID);
                     WriteD(SkillID);
                     WriteD(SkillLvl+CurrEnch);
                     SendToServerEx(nik);
                   end;
        #$A1:   //не точнулся
             begin
                     CurrEnch:=1;

                     Buf:=#$D0;
                     WriteH(SubID);
                     WriteD(SkillID);
                     WriteD(SkillLvl+CurrEnch);
                     SendToServerEx(nik);

             end;
    end;

    if FromClient and (pck[1]=#$D0) then
        begin
           SubID:=ReadH(2);
           SkillID:=ReadD(4);
           SkillLvl:=ReadD(8)-1;
           CurrEnch:=1;
        end;
end.
Инструкция: Закупаемся книжками, выставляем уровень заточки и ник
точим на +1, скрипт продолжает пока не точнет до указанного уровня.
Точить надо с нуля, иначе счетчик не правильно считать начнет.

==+==

1. Скрипт юзает баночки HP если ваше HP < MaxHP

Код:
var
timer: TTimer;
Name: String;
OID, OIDName: Integer;
MaxHP: Integer;
w: Integer;
procedure Init; //It is called at script turn on
begin
Name:='bobrul';
OID:= 0;
OIDName:= 0;
w:= 0;
 timer:=TTimer.Create(nil);
  timer.OnTimer:=@OnHTimer;
  timer.enabled:=false;
  timer.interval:=10100; //время задержки
end;

procedure Free; //It is called at script turn off
begin
timer.enabled:=false;
end;

procedure OnHTimer(Sender: TObject);
begin
If OID <> 0 then
begin
buf :=HStr('19');
WriteD(OID);
buf := buf + HStr('00 00 00 00');
SendToServer;
end
else timer.enabled:=false;
end;

begin
if FromServer and (ConnectName=Name) then
case pck[1] of
    #$21: begin
    if ReadD(12) = 1061 then OID:=ReadD(8);  //OID HealingPotion.
    end;

    #$32: begin
    If ReadS(22) = Name then
    begin
    MaxHP:=ReadD(84);  //MaxHP перса Name
    OIDName:=ReadD(18); //OID перса Name
    end;
    end;

    #$18: begin
    //Используем банки если HP<MaxHP.
    If (ReadD (2) = OIDName) and (ReadD(14) < MaxHP) and (w = 0) then
    begin
    timer.enabled:=TRUE;
    w:= 1;
    end;
    If (ReadD(2) = OIDName) and (ReadD(14) = MaxHP) then
    begin
    timer.enabled:=false;
    w:= 0;
    end;
    end;
    end;


end.
Описание: Скрипт тест проходил на Lineage 2 Gracia Part 1.
В строке Name:='bobrul'; имя поменять на своё. Если помог жми спасибку не жадничай !

==+==

1. Скрипт юзанья скила UsedSkilFokucedForce для орка у которого есть скил FokucedForce.
Name:='bobrul'; поменять имя .
Код:
var
timer: TTimer;
Name: String;
procedure Init; //It is called at script turn on
begin
Name:='bobrul';
 timer:=TTimer.Create(nil);
  timer.OnTimer:=@OnTimer;
  timer.enabled:=false;
  timer.interval:=880; //время задержки
  timer.enabled:=true;
end;

procedure Free; //It is called at script turn off
begin
timer.enabled:=false;
end;

procedure OnTimer(Sender: TObject);
begin
buf :=HStr('39 32 00 00 00 00 00 00 00 00');
SendToServer;
end;
//Script main body
//It is called at arrival of each package if the script is included
begin
if FromServer and (ConnectName=Name) then
case pck[1] of
    #$F9: begin
     if (ReadD(2) < 2) then     //Здесь можно указать при скольки зарядах включиться скил.
    begin
    timer.enabled:=true;
    end;
    if (ReadD(2) = 5) then  //Здесь указано при скольки зарядах отключиться скил.
    begin
    timer.enabled:=false;
    end;
    end;

    #$62: begin
    if (ReadD(2) = 31) and (ReadD(6) = 0) then
    begin
    pck:='';
    timer.enabled:=false;
    end;
    if (ReadD(2) = 324) and (ReadD(6) = 0) then  pck:='';
    end;
    end;
end.
==+==

1. Бот рассказывающий анекдоты если у него кто то купил 1 соску .

Код:
const
jokes_max = 100;

var
TITLE_DATA2: array [0..16] of string;
IDs: array [1..2000] of cardinal;
Names: array [1..2000] of String;
jokes: array [1..jokes_max] of string;
InTimer: Boolean;
curpos: byte;
f: TStringList;
t: TTimer;
m: TMemo;
MyName: String;
count: Integer;
MyID: Cardinal;
jokes_real: integer;

procedure OnTimerProc;
begin
  InTimer := true;
  buf := #$0B;
  WriteS(MyName);
  WriteS(TITLE_DATA2[curpos]);
  SendToServer;

  curpos := curpos + 1;
  if curpos > 16 then curpos := 0;

  InTimer := false;
end;

procedure Init;
var
i: byte;
begin
MyName:='bobrul';
curpos := 0;

randomize;
  count := 0;

  f := TStringList.Create;
  jokes_real := 0;
  for i := 1 to jokes_max do
  begin
    try
      f.LoadFromFile('C:\l2jokes\' + IntToStr(i) + '.txt'); 
      jokes_real := jokes_real + 1;
    except
    end;
    jokes[jokes_real] := f.Text;
  end;
  f.free;

//Создаю таймер
t := TTimer.Create(nil);
  t.Enabled := false;
  t.Interval := 700;
  t.OnTimer := @OnTimerProc;


  TITLE_DATA2[0] := '@(o_O)@';
  TITLE_DATA2[1] := '@(O_o)@';
  TITLE_DATA2[2] := '@(o_O)@';
  TITLE_DATA2[3] := '@(O_o)@';
  TITLE_DATA2[4] := '';
  TITLE_DATA2[5] := 'ANEKDOTI';
  TITLE_DATA2[6] := '';
  TITLE_DATA2[7] := 'ANEKDOTI';
  TITLE_DATA2[8] := '';
  TITLE_DATA2[9] := 'ANEKDOTI';
  TITLE_DATA2[10] := '';
  TITLE_DATA2[11] := '@(o_O)@';
  TITLE_DATA2[12] := '@(O_o)@';
  TITLE_DATA2[13] := '@(o_O)@';
  TITLE_DATA2[14] := '@(O_o)@';
  TITLE_DATA2[15] := '@(o_O)@';
  TITLE_DATA2[16] := '@(O_o)@';

  ShowTab;
  //Создаю TMemo
  m:=TMemo.Create(UserTab);
  m.parent:=UserTab;
  m.align:=alClient;
  m.ReadOnly:=true;
  m.ScrollBars:=ssBoth;
  m.lines.add('Анекдотов загружено: ' + inttostr(jokes_real));
end;
procedure Free;
begin
  t.OnTimer := nil;
  t.Enabled := false;
  t.Interval := 0;
  t.Free;

  m.Free;
  HideTab;
end;

function FindPlayer(ObjID: cardinal): integer; //Ищет ObjID в массиве IDs
var k: cardinal;
begin
  result := -1;
  if Count > 0 then
    for k := 1 to Count do
      if IDs[k] = ObjID then
      begin
        result := k;
        break
      end;
end;

var
i: integer;
objid: cardinal;
name: string;
begin

if FromServer then
  case pck[1] of
     #$31: // CharInfo
    begin
     i := 18; //В етой позиции находиться ObjectID в пакете CharInfo
     objid := ReadD(i);
     i := FindPlayer(ObjID);
     if i = -1 then
      begin
      i := 22; //В етой позиции находиться Name в пакете CharInfo
      name := ReadS(i);
      // Добавление имени в массив ников IDs это ObjectID и Names это Name
       if (name = '') then
        begin
          // (none)
        end
        else begin
        count := count + 1;
        IDs[count] := ObjID;
        Names[count] := name;
        m.Lines.Add(IntToStr(count) + ' - ' + Format('%x', [ObjId])+' = '+ Names[count]);
        end;
      end;
    end;

    #$32: //UserInfo Ищет мой ObjectID
    begin
      i := 18;
      MyID := ReadD(i);
      i := 22;
      MyName := ReadS(i);
      //Включает таймер бегущей строки в том случае если мой ObjectID найден
      //Тогда начинает работать бегущая строка
      t.Enabled := true;
    end;

    #$23: //TargetSeleted
    begin
      i := 2;
      objid := ReadD(i);
      if ReadD(i) <> MyID then exit;
      i := FindPlayer(objid);

      if i <> -1 then
      begin
        buf := #$49;
        WriteS('Привет, '+names[i]+'! Я бот! Купи у меня сосок и я, в благодарность за это, расскажу тебе анекдот или стишок на тему LineAge2! ;)');
        WriteD(2);
        WriteS(names[i]);
        SendToServer;
        // в лог
        m.Lines.Add(TimeToStr(now)+': '+names[i]+'Взял вас в таргет.');
        end;
        end;

        #$08: // ObjectDelete
    begin
      i := 2;
      objid := ReadD(i);

      i := FindPlayer(objid);

      if i <> -1 then
      begin
        IDs[i] := IDs[count];
        Names[i] := Names[count];
        count := count - 1;
      end;
    end;

     #$62:
    begin
      i := 2;
      if ReadD(i) = 1152 then {S1_PURCHASED_S3_S2_s}
      begin
        i := i + 4*2;
        name := ReadS(i);
          buf := #$49;
          i := int(random * jokes_real) + 1;
          WriteS(jokes[i]);
          WriteD(2);
          WriteS(name);
          SendToServer;

          if (Length(m.Lines.Text) > 1000) then m.Lines.Text := '<cleared>';
          // внесем в лог
          m.Lines.Add(TimeToStr(now)+': '+name+' purchased');
          m.Lines.Add('> ' + jokes[i]);


        end;
    end;

end;
end.

Инструкция: Создайте папку C:\l2jokes запишите анекдоты в файлы 1.txt, 2.txt и тд.
jokes_max = 100; здесь поставьте количество анекдотов помните что длинна анекдота не должна превышать 255 символов.
MyName:='bobrul'; Поменяйте на своё имя.
if ReadD(i) = 1152 then {S1_PURCHASED_S3_S2_s} поменяйте ID соски С воин на любой другой предмета который будете продавать.

©mks
________________
ICQ: 743-936
Skype - prof11ame

Перед тем как проводить со мной сделки, советую в целях Вашей безопасности - просить проверку через форум !
-
Обмен и вывод электронных денег: Яндекс Деньги, КИВИ, Веб-мани, быстро и надежно. Вывод денег на пластиковые карты, любого банка.
Разблокирую Яндекс Деньги кошельки.
  Ответить с цитированием
6 пользователя(ей) сказали cпасибо:
Benjamin (07.09.2009), DMSnik (18.02.2010), m1roo (05.07.2009), Mest (24.11.2009), ridgid (09.09.2009), Skilled (12.07.2009)
Старый 07.04.2009, 15:48   #4
Super Moderator
 Рыцарь-защитник
Аватар для Razzor
 
Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(Razzor сломал счётчик популярности :(
Регистрация: 23.04.2008
Сообщений: 575
Популярность: 23515
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 1,359
Поблагодарили 2,428 раз(а) в 665 сообщениях
Отправить сообщение для Razzor с помощью ICQ Отправить сообщение для Razzor с помощью Skype™
 
По умолчанию Re: Скрипты для l2phx

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

Скрипт для грации:

Код:
//Автоматизация заточки предметов до необходимого уровня by NLObP для Грации
//version 0.8 от 26.01.2009г.
program Enchant_gracia;
{********************************************************************************
Возможности скрипта:
--------------------
- Панель управления;
- Затачиваем по очереди все предметы с ItemID пока не переломаем
  или не заточим, один предмет всегда остаётся;

====================================================================
Работа скрипта проверялась на локальном Грация сервере
====================================================================

1) Необходимо затариться оружием, заточками и валерьянкой.
2) Вписать в константу Name имя своего чара.
3) Поставить количество слотов в инвентаре чара в константу maxitems.
4) Сохранить и запустить скрипт установив напротив него галочку.

Внимание!
Из комбобокса обязательно надо выбрать вещь, чтобы скрипт узнал
ID и количество, только потом ставить напротив галочку.
Галочки снимать не надо, если кончились заточки/вещи - можно сразу идти
покупать и продолжать заточку.
В инвентаре должно быть не менее двух одинаковых затачиваемых вещей,
степень заточки значения не имеет.

Скрипт распространяется как есть, и я не несу ответственности за то,
что ВЫ натворили у себя, его используя.

MyICQ 402988808
********************************************************************************}

//............................................
//Список констант
const
  Name='NLObP'; //Вписать сюда имя чара
  //установить константу в зависимости от типа игры (С4 или Интерлюд)
  //-------------------------
  maxitems=250;     //количество слотов в инвентаре чара
  debug=false;  //если не хотим видеть отладочной информации

//............................................
//Список переменных
var
  Item, scrl: integer;
  ScrollID, ScrollOID: integer;  //ScrollID скролла заточки
  ItemID, ItemOID, ItemEnch: integer;      //ItemID затачиваемого предмета
  MaxEnchLvl: integer;         //уровень заточки который требуется достичь
  //ITEMs
  BaseItems:  array[1..maxitems, 1..12] of integer;  //все предметы в инвентаре

  StartTime, EndTime: TDateTime;
  good, broken: integer;
  ready: boolean;
  timer, showinf : TTimer;
  ItemCount, CurEnchLvl: integer;
  ItemsName, StringList : TStringList;  //названия предметов, имена продавцов
  FormMain : TForm; //Создаваемая форма
  Splitter1, Splitter2 : TSplitter;
  Stats, Msg : TMemo;
  Panel1 : TPanel;
  GroupBox2 : TGroupBox;
  Label1, Label2, Label3, Label4, Label12, Label13 : TLabel;
  ComboBoxItem, ComboBoxScroll : TComboBox;
  CheckBoxItem, CheckBoxScroll : TCheckBox;
  ButtonStartEnchant, ButtonStopEnchant : TButton;
  EditItemVal, EditScrollVal, EditScrollOID, EditItemOID, Edit1, Edit2 : TEdit;
//............................................
//*************************************
//Обработчики событий для элементов управления на форме
//......................................
//CheckBoxItem
procedure CheckBoxItem_Click(Sender: TCheckBox);
//Event : OnClick
begin
  if CheckBoxItem.Checked
  then begin
    ItemOID:=BaseItems[ComboBoxItem.ItemIndex+1,2];
    ItemID:=BaseItems[ComboBoxItem.ItemIndex+1,3];
    //проверка
//    EditItemOID.Text:=Inttostr(ItemID);
//    EditItemVal.text:=inttostr(ItemOID);

    ComboBoxItem.Enabled:=false; //выключаем
  end else begin
    ItemID:=0;               //отмена
    ItemOID:=0;
    ComboBoxItem.Enabled:=true;  //включаем
    //RequestItemList вызываем инвентарь
    buf:=hstr('14');
    SendToServerEx(Name);
  end;
end;
//......................................
//......................................
//ComboBoxItem
procedure ComboBoxItem_Click(Sender: TComboBox);
//Event : OnClick
begin
    ItemOID:=BaseItems[ComboBoxItem.ItemIndex+1,2];
    ItemID:=BaseItems[ComboBoxItem.ItemIndex+1,3];
//    ItemID:=ExtractIDValues(ComboBoxItem.Items.Strings[ComboBoxItem.ItemIndex]);
    EditItemOID.Text:=Inttostr(ItemID);
    EditItemVal.text:=inttostr(sumitem(ItemID));
end;
//......................................
//......................................
//CheckBoxScroll
procedure CheckBoxScroll_Click(Sender: TCheckBox);
//Event : OnClick
begin
  if CheckBoxScroll.Checked
  then begin
    ScrollOID:=BaseItems[ComboBoxScroll.ItemIndex+1,2];
    ScrollID:=BaseItems[ComboBoxScroll.ItemIndex+1,3];
    //проверка
//    EditScrollOID.Text:=Inttostr(ScrollID);
//    EditScrollVal.text:=inttostr(ScrollOID);
    ComboBoxScroll.Enabled:=false; //выключаем
  end else begin
    ScrollID:=0;               //отмена
    ScrollOID:=0;
    ComboBoxScroll.Enabled:=true;  //включаем
    //RequestItemList вызываем инвентарь
    buf:=hstr('14');
    SendToServerEx(Name);
  end;
end;
//......................................
//......................................
//ComboBoxScroll
procedure ComboBoxScroll_Click(Sender: TComboBox);
//Event : OnClick
begin
    ScrollOID:=BaseItems[ComboBoxScroll.ItemIndex+1,2];
    ScrollID:=BaseItems[ComboBoxScroll.ItemIndex+1,3];
//    ScrollID:=ExtractIDValues(ComboBoxScroll.Items.Strings[ComboBoxScroll.ItemIndex]);
    EditScrollOID.Text:=Inttostr(ScrollID);
    EditScrollVal.text:=inttostr(sumitem(ScrollID));
end;
//......................................
//......................................
//ButtonStartEnchant
procedure ButtonStartEnchant_Click(Sender: TButton);
//Event : OnClick
begin
  CurEnchLvl:=0;
  Edit2.text:=inttostr(CurEnchLvl);
  msg.Lines.Add('Команда Старт!!!');
  timer.enabled:=true;
end;
//......................................
//......................................
//ButtonStopEnchant
procedure ButtonStopEnchant_Click(Sender: TButton);
//Event : OnClick
begin
  msg.Lines.Add('Команда Стоп!!!');
  timer.enabled:=false;
  ready:=false;
end;
//......................................
//......................................
procedure Edit1_Exit(Sender: TEdit);
//Event : OnExit
begin
//  MyHPID:=ExtractIDValues(ComboBoxHPotion.Items.Strings[ComboBoxHPotion.ItemIndex]);
//  EditHPotionVal.Text:=Inttostr(FindItem(MyHPID));
//  EditHPotionOID.text:=inttostr(ItemBase2[1,1]);
end;
//......................................
//*************************************
procedure Free_FormMain;
//Освобождаем ресурсы ...
begin
  TRY
    if FormMain<>NIL then begin
       FormMain.Free;
       FormMain:=NIL;
    end;
  FINALLY
  END;
end; //Free_FormMain
//========================
//========================
function Create_FormMain : TForm;
//Создаем форму и соотв. компоненты на ней ...
Var
  Yes : boolean;
begin
  Yes := FALSE;
  Result := TForm.Create(nil);

  TRY
    //------------------------
    //Свойства формы
    Result.Caption     := 'Enchant by NLObP v.0.8';
    Result.Left        := 397;
    Result.Top         := 233;
    Result.Width       := 581;
    Result.Height      := 205;
    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;
    //------------------------
    //......................................
    //Splitter1
    Splitter1 := TSplitter.Create(Result);
    Splitter1.Parent := Result;
    Splitter1.Align := alBottom;
    Splitter1.Color := clBtnFace;
    Splitter1.Left    := 0;
    Splitter1.Top     := 103;
    Splitter1.Width   := 573;
    Splitter1.Height  := 3;
    Splitter1.Visible := TRUE;
    Splitter1.Tag     := 0;
    //......................................
    //......................................
    //Splitter2
    Splitter2 := TSplitter.Create(Result);
    Splitter2.Parent := Result;
    Splitter2.Align := alRight;
    Splitter2.Color := clBtnFace;
    Splitter2.Left    := 442;
    Splitter2.Top     := 0;
    Splitter2.Width   := 1;
    Splitter2.Height  := 103;
    Splitter2.Visible := TRUE;
    Splitter2.Tag     := 0;
    //......................................
    //......................................
    //Stats
    Stats := TMemo.Create(Result);
    Stats.Parent := Result;
    Stats.Left    := 443;
    Stats.Top     := 0;
    Stats.Width   := 130;
    Stats.Height  := 103;
    Stats.Visible := TRUE;
    Stats.Tag     := 0;
    Stats.Enabled  := TRUE;
    Stats.Hint     := '';
    Stats.ShowHint := FALSE;
    Stats.Font.Name  := 'Tahoma';
    Stats.Font.Size  := 8;
    Stats.Font.Color := clWindowText;
    Stats.Color         := clWindow;
    Stats.TabOrder      := 0;
    Stats.TabStop       := TRUE;
    Stats.Align         := alRight;
    Stats.WordWrap      := TRUE;
    Stats.Alignment     := taLeftJustify;
    Stats.WantTabs      := FALSE;
    Stats.WantReturns   := TRUE;
    Stats.HideSelection := TRUE;
    Stats.MaxLength     := 0;
    Stats.OEMConvert    := FALSE;
    Stats.ReadOnly      := FALSE;
    Stats.ScrollBars    := ssNone;
    //......................................
    //......................................
    //Msg
    Msg := TMemo.Create(Result);
    Msg.Parent := Result;
    Msg.Left    := 0;
    Msg.Top     := 106;
    Msg.Width   := 573;
    Msg.Height  := 65;
    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      := 1;
    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;
    //......................................
    //......................................
    //Panel1
    Panel1 := TPanel.Create(Result);
    Panel1.Parent := Result;
    Panel1.Left    := 0;
    Panel1.Top     := 0;
    Panel1.Width   := 442;
    Panel1.Height  := 103;
    Panel1.Visible := TRUE;
    Panel1.Tag     := 0;
    Panel1.Enabled  := TRUE;
    Panel1.Hint     := '';
    Panel1.ShowHint := FALSE;
    Panel1.Caption    := '';
    Panel1.Align      := alClient;
    Panel1.Color      := clBtnFace;
    Panel1.Font.Name  := 'Tahoma';
    Panel1.Font.Size  := 8;
    Panel1.Font.Color := clWindowText;
    Panel1.Font.CharSet := 1;
    Panel1.BevelWidth   := 1;
    Panel1.BorderWidth  := 0;
    Panel1.BevelInner   := bvNone;
    Panel1.BevelOuter   := bvRaised;
    Panel1.TabOrder     := 2;
    Panel1.TabStop      := FALSE;
    Panel1.AutoSize     := FALSE;
    //......................................
    //......................................
    //GroupBox2
    GroupBox2 := TGroupBox.Create(Result);
    GroupBox2.Parent := Panel1;
    GroupBox2.Left    := 1;
    GroupBox2.Top     := 1;
    GroupBox2.Width   := 440;
    GroupBox2.Height  := 101;
    GroupBox2.Visible := TRUE;
    GroupBox2.Tag     := 0;
    GroupBox2.Enabled  := TRUE;
    GroupBox2.Hint     := '';
    GroupBox2.ShowHint := FALSE;
    GroupBox2.Caption    := 'Настройки';
    GroupBox2.Align      := alClient;
    GroupBox2.Color      := clBtnFace;
    GroupBox2.Font.Name  := 'Tahoma';
    GroupBox2.Font.Size  := 8;
    GroupBox2.Font.Color := clWindowText;
    GroupBox2.Font.CharSet := 1;
    GroupBox2.TabOrder     := 0;
    GroupBox2.TabStop      := FALSE;
    //......................................
    //......................................
    //Label1
    Label1 := TLabel.Create(Result);
    Label1.Parent := GroupBox2;
    Label1.Left    := 10;
    Label1.Top     := 70;
    Label1.Width   := 58;
    Label1.Height  := 13;
    Label1.Visible := TRUE;
    Label1.Tag     := 0;
    Label1.Enabled  := TRUE;
    Label1.Hint     := '';
    Label1.ShowHint := FALSE;
    Label1.Caption     := 'Уровень Макс.:';
    Label1.Transparent := TRUE;
    Label1.WordWrap    := FALSE;
    Label1.Alignment   := taLeftJustify;
    Label1.Layout      := tlTop;
    Label1.AutoSize    := TRUE;
    Label1.Align       := alNone;
    Label1.Font.Name   := 'Tahoma';
    Label1.Font.Size   := 8;
    Label1.Font.Color  := clWindowText;
    Label1.Color       := clBtnFace;
    //......................................
    //......................................
    //Label1
    Label3 := TLabel.Create(Result);
    Label3.Parent := GroupBox2;
    Label3.Left    := 170;
    Label3.Top     := 70;
    Label3.Width   := 58;
    Label3.Height  := 13;
    Label3.Visible := TRUE;
    Label3.Tag     := 0;
    Label3.Enabled  := TRUE;
    Label3.Hint     := '';
    Label3.ShowHint := FALSE;
    Label3.Caption     := 'Мин.:';
    Label3.Transparent := TRUE;
    Label3.WordWrap    := FALSE;
    Label3.Alignment   := taLeftJustify;
    Label3.Layout      := tlTop;
    Label3.AutoSize    := TRUE;
    Label3.Align       := alNone;
    Label3.Font.Name   := 'Tahoma';
    Label3.Font.Size   := 8;
    Label3.Font.Color  := clWindowText;
    Label3.Color       := clBtnFace;
    //......................................
    //......................................
    //Edit1
    Edit1 := TEdit.Create(Result);
    Edit1.Parent := GroupBox2;
    Edit1.Left    := 90;
    Edit1.Top     := 67;
    Edit1.Width   := 60;
    Edit1.Height  := 21;
    Edit1.Visible := TRUE;
    Edit1.Tag     := 0;
    Edit1.Enabled  := TRUE;
    Edit1.Hint     := 'Введи желаемый уровень улучшения';
    Edit1.ShowHint := TRUE;
    Edit1.Text       := '65535';
    Edit1.Font.Name  := 'Tahoma';
    Edit1.Font.Size  := 8;
    Edit1.Font.Color := clWindowText;
    Edit1.Color        := clWindow;
    Edit1.TabOrder     := 5;
    Edit1.TabStop      := TRUE;
    Edit1.ReadOnly     := FALSE;
    Edit1.MaxLength    := 0;
    Edit1.AutoSize     := TRUE;
    Edit1.OnExit     := @Edit1_Exit;
    //......................................
    //......................................
    //Edit2
    Edit2 := TEdit.Create(Result);
    Edit2.Parent := GroupBox2;
    Edit2.Left    := 199;
    Edit2.Top     := 67;
    Edit2.Width   := 60;
    Edit2.Height  := 21;
    Edit2.Visible := TRUE;
    Edit2.Tag     := 0;
    Edit2.Enabled  := TRUE;
    Edit2.Hint     := 'Какого уровня смогли достичь';
    Edit2.ShowHint := TRUE;
    Edit2.Text       := '0';
    Edit2.Font.Name  := 'Tahoma';
    Edit2.Font.Size  := 8;
    Edit2.Font.Color := clWindowText;
    Edit2.Color        := clWindow;
    Edit2.TabOrder     := 5;
    Edit2.TabStop      := FALSE;
    Edit2.ReadOnly     := TRUE;
    Edit2.MaxLength    := 0;
    Edit2.AutoSize     := TRUE;
    //......................................
    //......................................
    //Label2
    Label2 := TLabel.Create(Result);
    Label2.Parent := GroupBox2;
    Label2.Left    := 416;
    Label2.Top     := 19;
    Label2.Width   := 18;
    Label2.Height  := 13;
    Label2.Visible := TRUE;
    Label2.Tag     := 0;
    Label2.Enabled  := TRUE;
    Label2.Hint     := '';
    Label2.ShowHint := FALSE;
    Label2.Caption     := 'шт.';
    Label2.Transparent := TRUE;
    Label2.WordWrap    := FALSE;
    Label2.Alignment   := taLeftJustify;
    Label2.Layout      := tlTop;
    Label2.AutoSize    := TRUE;
    Label2.Align       := alNone;
    Label2.Font.Name   := 'Tahoma';
    Label2.Font.Size   := 8;
    Label2.Font.Color  := clWindowText;
    Label2.Color       := clBtnFace;
    //......................................
    //......................................
    //Label4
    Label4 := TLabel.Create(Result);
    Label4.Parent := GroupBox2;
    Label4.Left    := 416;
    Label4.Top     := 43;
    Label4.Width   := 18;
    Label4.Height  := 13;
    Label4.Visible := TRUE;
    Label4.Tag     := 0;
    Label4.Enabled  := TRUE;
    Label4.Hint     := '';
    Label4.ShowHint := FALSE;
    Label4.Caption     := 'шт.';
    Label4.Transparent := TRUE;
    Label4.WordWrap    := FALSE;
    Label4.Alignment   := taLeftJustify;
    Label4.Layout      := tlTop;
    Label4.AutoSize    := TRUE;
    Label4.Align       := alNone;
    Label4.Font.Name   := 'Tahoma';
    Label4.Font.Size   := 8;
    Label4.Font.Color  := clWindowText;
    Label4.Color       := clBtnFace;
    //......................................
    //......................................
    //Label12
    Label12 := TLabel.Create(Result);
    Label12.Parent := GroupBox2;
    Label12.Left    := 273;
    Label12.Top     := 3;
    Label12.Width   := 33;
    Label12.Height  := 13;
    Label12.Visible := TRUE;
    Label12.Tag     := 0;
    Label12.Enabled  := TRUE;
    Label12.Hint     := '';
    Label12.ShowHint := FALSE;
    Label12.Caption     := 'ItemID';
    Label12.Transparent := TRUE;
    Label12.WordWrap    := FALSE;
    Label12.Alignment   := taLeftJustify;
    Label12.Layout      := tlTop;
    Label12.AutoSize    := TRUE;
    Label12.Align       := alNone;
    Label12.Font.Name   := 'Tahoma';
    Label12.Font.Size   := 8;
    Label12.Font.Color  := clWindowText;
    Label12.Color       := clBtnFace;
    //......................................
    //......................................
    //Label13
    Label13 := TLabel.Create(Result);
    Label13.Parent := GroupBox2;
    Label13.Left    := 349;
    Label13.Top     := 3;
    Label13.Width   := 35;
    Label13.Height  := 13;
    Label13.Visible := TRUE;
    Label13.Tag     := 0;
    Label13.Enabled  := TRUE;
    Label13.Hint     := '';
    Label13.ShowHint := FALSE;
    Label13.Caption     := 'Кол-во';
    Label13.Transparent := TRUE;
    Label13.WordWrap    := FALSE;
    Label13.Alignment   := taLeftJustify;
    Label13.Layout      := tlTop;
    Label13.AutoSize    := TRUE;
    Label13.Align       := alNone;
    Label13.Font.Name   := 'Tahoma';
    Label13.Font.Size   := 8;
    Label13.Font.Color  := clWindowText;
    Label13.Color       := clBtnFace;
    //......................................
    //......................................
    //CheckBoxItem
    CheckBoxItem := TCheckBox.Create(Result);
    CheckBoxItem.Parent := GroupBox2;
    CheckBoxItem.Left    := 18;
    CheckBoxItem.Top     := 18;
    CheckBoxItem.Width   := 66;
    CheckBoxItem.Height  := 17;
    CheckBoxItem.Visible := TRUE;
    CheckBoxItem.Tag     := 0;
    CheckBoxItem.Enabled  := TRUE;
    CheckBoxItem.Hint     := 'Поставить галочку если выбрали предмет';
    CheckBoxItem.ShowHint := TRUE;
    CheckBoxItem.Caption    := 'Предмет';
    CheckBoxItem.Font.Name  := 'Tahoma';
    CheckBoxItem.Font.Size  := 8;
    CheckBoxItem.Font.Color := clWindowText;
    CheckBoxItem.Color       := clBtnFace;
    CheckBoxItem.TabOrder    := 0;
    CheckBoxItem.TabStop     := TRUE;
    CheckBoxItem.Checked     := FALSE;
    CheckBoxItem.AllowGrayed := FALSE;
    CheckBoxItem.State       := cbUnchecked;
    CheckBoxItem.OnClick     := @CheckBoxItem_Click;
    //......................................
    //......................................
    //ComboBoxItem
    ComboBoxItem := TComboBox.Create(Result);
    ComboBoxItem.Parent := GroupBox2;
    ComboBoxItem.Left    := 90;
    ComboBoxItem.Top     := 16;
    ComboBoxItem.Width   := 169;
    ComboBoxItem.Height  := 21;
    ComboBoxItem.Visible := TRUE;
    ComboBoxItem.Tag     := 0;
    ComboBoxItem.Enabled  := TRUE;
    ComboBoxItem.Hint     := 'Выбери из списка улучшаемый предмет';
    ComboBoxItem.ShowHint := TRUE;
    ComboBoxItem.Text       := 'ComboBoxItem';
    ComboBoxItem.Font.Name  := 'Tahoma';
    ComboBoxItem.Font.Size  := 8;
    ComboBoxItem.Font.Color := clWindowText;
    ComboBoxItem.Color          := clWindow;
    ComboBoxItem.TabOrder       := 1;
    ComboBoxItem.TabStop        := TRUE;
    ComboBoxItem.ItemIndex          := -1;
    ComboBoxItem.Sorted         := FALSE;
    ComboBoxItem.ItemHeight     := 13;
    ComboBoxItem.OnClick     := @ComboBoxItem_Click;
    //......................................
    //......................................
    //ButtonStartEnchant
    ButtonStartEnchant := TButton.Create(Result);
    ButtonStartEnchant.Parent := GroupBox2;
    ButtonStartEnchant.Left    := 265;
    ButtonStartEnchant.Top     := 67;
    ButtonStartEnchant.Width   := 75;
    ButtonStartEnchant.Height  := 25;
    ButtonStartEnchant.Visible := TRUE;
    ButtonStartEnchant.Tag     := 0;
    ButtonStartEnchant.Enabled  := TRUE;
    ButtonStartEnchant.Hint     := '';
    ButtonStartEnchant.ShowHint := FALSE;
    ButtonStartEnchant.Caption    := 'Start';
    ButtonStartEnchant.Font.Name  := 'Tahoma';
    ButtonStartEnchant.Font.Size  := 8;
    ButtonStartEnchant.Font.Color := clWindowText;
    ButtonStartEnchant.Font.CharSet := 1;
    ButtonStartEnchant.TabOrder     := 2;
    ButtonStartEnchant.TabStop      := TRUE;
    ButtonStartEnchant.Cancel       := FALSE;
    ButtonStartEnchant.ModalResult  := 0;
    ButtonStartEnchant.OnClick     := @ButtonStartEnchant_Click;
    //......................................
    //......................................
    //ButtonStopEnchant
    ButtonStopEnchant := TButton.Create(Result);
    ButtonStopEnchant.Parent := GroupBox2;
    ButtonStopEnchant.Left    := 341;
    ButtonStopEnchant.Top     := 67;
    ButtonStopEnchant.Width   := 75;
    ButtonStopEnchant.Height  := 25;
    ButtonStopEnchant.Visible := TRUE;
    ButtonStopEnchant.Tag     := 0;
    ButtonStopEnchant.Enabled  := TRUE;
    ButtonStopEnchant.Hint     := '';
    ButtonStopEnchant.ShowHint := FALSE;
    ButtonStopEnchant.Caption    := 'Stop';
    ButtonStopEnchant.Font.Name  := 'Tahoma';
    ButtonStopEnchant.Font.Size  := 8;
    ButtonStopEnchant.Font.Color := clWindowText;
    ButtonStopEnchant.Font.CharSet := 1;
    ButtonStopEnchant.TabOrder     := 3;
    ButtonStopEnchant.TabStop      := TRUE;
    ButtonStopEnchant.Cancel       := FALSE;
    ButtonStopEnchant.ModalResult  := 0;
    ButtonStopEnchant.OnClick     := @ButtonStopEnchant_Click;
    //......................................
    //......................................
    //CheckBoxScroll
    CheckBoxScroll := TCheckBox.Create(Result);
    CheckBoxScroll.Parent := GroupBox2;
    CheckBoxScroll.Left    := 18;
    CheckBoxScroll.Top     := 41;
    CheckBoxScroll.Width   := 66;
    CheckBoxScroll.Height  := 23;
    CheckBoxScroll.Visible := TRUE;
    CheckBoxScroll.Tag     := 0;
    CheckBoxScroll.Enabled  := TRUE;
    CheckBoxScroll.Hint     := 'Поставить галочку если выбрали свиток улучшения';
    CheckBoxScroll.ShowHint := TRUE;
    CheckBoxScroll.Caption    := 'Свиток';
    CheckBoxScroll.Font.Name  := 'Tahoma';
    CheckBoxScroll.Font.Size  := 8;
    CheckBoxScroll.Font.Color := clWindowText;
    CheckBoxScroll.Color       := clBtnFace;
    CheckBoxScroll.TabOrder    := 4;
    CheckBoxScroll.TabStop     := TRUE;
    CheckBoxScroll.Checked     := FALSE;
    CheckBoxScroll.AllowGrayed := FALSE;
    CheckBoxScroll.State       := cbUnchecked;
    CheckBoxScroll.OnClick     := @CheckBoxScroll_Click;
    //......................................
    //......................................
    //ComboBoxScroll
    ComboBoxScroll := TComboBox.Create(Result);
    ComboBoxScroll.Parent := GroupBox2;
    ComboBoxScroll.Left    := 90;
    ComboBoxScroll.Top     := 40;
    ComboBoxScroll.Width   := 169;
    ComboBoxScroll.Height  := 21;
    ComboBoxScroll.Visible := TRUE;
    ComboBoxScroll.Tag     := 0;
    ComboBoxScroll.Enabled  := TRUE;
    ComboBoxScroll.Hint     := 'Выбери из списка свиток улучшения';
    ComboBoxScroll.ShowHint := TRUE;
    ComboBoxScroll.Text       := 'ComboBoxScroll';
    ComboBoxScroll.Font.Name  := 'Tahoma';
    ComboBoxScroll.Font.Size  := 8;
    ComboBoxScroll.Font.Color := clWindowText;
    ComboBoxScroll.Color          := clWindow;
    ComboBoxScroll.TabOrder       := 5;
    ComboBoxScroll.TabStop        := TRUE;
    ComboBoxScroll.ItemIndex          := -1;
    ComboBoxScroll.Sorted         := FALSE;
    ComboBoxScroll.ItemHeight     := 13;
    ComboBoxScroll.OnClick     := @ComboBoxScroll_Click;
    //......................................
    //......................................
    //EditItemVal
    EditItemVal := TEdit.Create(Result);
    EditItemVal.Parent := GroupBox2;
    EditItemVal.Left    := 341;
    EditItemVal.Top     := 16;
    EditItemVal.Width   := 72;
    EditItemVal.Height  := 21;
    EditItemVal.Visible := TRUE;
    EditItemVal.Tag     := 0;
    EditItemVal.Enabled  := TRUE;
    EditItemVal.Hint     := '';
    EditItemVal.ShowHint := FALSE;
    EditItemVal.Text       := '0';
    EditItemVal.Font.Name  := 'Tahoma';
    EditItemVal.Font.Size  := 8;
    EditItemVal.Font.Color := clWindowText;
    EditItemVal.Color        := clWindow;
    EditItemVal.TabOrder     := 6;
    EditItemVal.TabStop      := TRUE;
    EditItemVal.ReadOnly     := TRUE;
    EditItemVal.MaxLength    := 0;
    EditItemVal.AutoSize     := TRUE;
    //......................................
    //......................................
    //EditScrollVal
    EditScrollVal := TEdit.Create(Result);
    EditScrollVal.Parent := GroupBox2;
    EditScrollVal.Left    := 341;
    EditScrollVal.Top     := 40;
    EditScrollVal.Width   := 72;
    EditScrollVal.Height  := 21;
    EditScrollVal.Visible := TRUE;
    EditScrollVal.Tag     := 0;
    EditScrollVal.Enabled  := TRUE;
    EditScrollVal.Hint     := '';
    EditScrollVal.ShowHint := FALSE;
    EditScrollVal.Text       := '0';
    EditScrollVal.Font.Name  := 'Tahoma';
    EditScrollVal.Font.Size  := 8;
    EditScrollVal.Font.Color := clWindowText;
    EditScrollVal.Color        := clWindow;
    EditScrollVal.TabOrder     := 7;
    EditScrollVal.TabStop      := TRUE;
    EditScrollVal.ReadOnly     := TRUE;
    EditScrollVal.MaxLength    := 0;
    EditScrollVal.AutoSize     := TRUE;
    //......................................
    //......................................
    //EditScrollOID
    EditScrollOID := TEdit.Create(Result);
    EditScrollOID.Parent := GroupBox2;
    EditScrollOID.Left    := 263;
    EditScrollOID.Top     := 40;
    EditScrollOID.Width   := 72;
    EditScrollOID.Height  := 21;
    EditScrollOID.Visible := TRUE;
    EditScrollOID.Tag     := 0;
    EditScrollOID.Enabled  := TRUE;
    EditScrollOID.Hint     := '';
    EditScrollOID.ShowHint := FALSE;
    EditScrollOID.Text       := '0';
    EditScrollOID.Font.Name  := 'Tahoma';
    EditScrollOID.Font.Size  := 8;
    EditScrollOID.Font.Color := clWindowText;
    EditScrollOID.Color        := clWindow;
    EditScrollOID.TabOrder     := 8;
    EditScrollOID.TabStop      := TRUE;
    EditScrollOID.ReadOnly     := TRUE;
    EditScrollOID.MaxLength    := 0;
    EditScrollOID.AutoSize     := TRUE;
    //......................................
    //......................................
    //EditItemOID
    EditItemOID := TEdit.Create(Result);
    EditItemOID.Parent := GroupBox2;
    EditItemOID.Left    := 264;
    EditItemOID.Top     := 16;
    EditItemOID.Width   := 72;
    EditItemOID.Height  := 21;
    EditItemOID.Visible := TRUE;
    EditItemOID.Tag     := 0;
    EditItemOID.Enabled  := TRUE;
    EditItemOID.Hint     := '';
    EditItemOID.ShowHint := FALSE;
    EditItemOID.Text       := '0';
    EditItemOID.Font.Name  := 'Tahoma';
    EditItemOID.Font.Size  := 8;
    EditItemOID.Font.Color := clWindowText;
    EditItemOID.Color        := clWindow;
    EditItemOID.TabOrder     := 9;
    EditItemOID.TabStop      := TRUE;
    EditItemOID.ReadOnly     := TRUE;
    EditItemOID.MaxLength    := 0;
    EditItemOID.AutoSize     := TRUE;
    //......................................
    Yes := TRUE;
  FINALLY
    if not Yes then begin
       //Освобождаем ресурсы, если неудачно ...
       if Result<>NIL then begin
          Result.Free;
          Result:=NIL;
       end;
    end;
  END;
  msg.Lines.Add('Автоматизация заточки by NLObP для Грации!');
  Result.Show;
end; //Create_FormMain
//========================
//========================
procedure Init; //Вызывается при включении скрипта
var
  i:integer;
begin
  FormMain:=Create_FormMain;
  //Enchant:=false;
  CurEnchLvl:=0;
  timer:=TTimer.Create(nil);
  timer.OnTimer:=@OnTimer;
  timer.enabled:=false;
  timer.interval:=500; //время задержки

  ShowInf:=TTimer.Create(nil);
  ShowInf.OnTimer:=@OnShowInfo;
  ShowInf.enabled:=true;
  ShowInf.interval:=1000; //время задержки

  StartTime:=time;
  good:=0;
  broken:=0;
  ready:=false;
  //RequestItemList вызываем инвентарь
  buf:=hstr('14');
  SendToServerEx(Name);
  StringList:=TStringList.Create;
  ItemsName:=TStringList.Create;
  try
    ItemsName.LoadFromFile('itemsid.ini');
  except
    msg.Lines.Add('itemsid.ini не найден!');
    exit;
  end;
end;
//..............................................................................
procedure Free; //Вызывается при выключении скрипта
begin
  BaseItems:=nil; //нельзя так делать с массивом
  ShowInf.Enabled:=false;  ShowInf.Interval:=0;  ShowInf.Free; ShowInf.OnTimer:=nil;
  timer.Enabled:=false;  timer.Interval:=0;  timer.Free; timer.OnTimer:=nil;

  StringList.Clear;
  ItemsName.Clear;
  //достаточно освободить форму
  Free_FormMain;
end;
//..............................................................................
procedure ShowInfo;
var
  i: integer;
begin
  stats.Lines.Clear;
  stats.Lines.Add('Имя чара :'+Name);
  stats.Lines.Add('Время старта :'+TimeToStr(starttime));
  stats.Lines.Add('Время ловли :'+TimeToStr(time-starttime));
  stats.Lines.Add('Улучшили: '+IntToStr(good));
  stats.Lines.Add('Сломали: '+IntToStr(broken));
end;
//......................................
//***************************************************************
procedure OnShowInfo(Sender: TObject); //выводим в форму
begin
  ShowInfo;
end;
//..............................................................................
//послать сообщение в чат
//use: SendMessage(msg);
procedure SendMessage(msg:string);  //отправка системных сообщений клиенту
begin
  buf:=#$4A;
  WriteD(0);
  WriteD(10);
  WriteS('');
  WriteS(msg);
  SendToClientEx(Name);
end;
//..............................................................................
procedure debugMsg(msg: string);
begin
  if debug then begin
    sendMSG(msg);
    SendMessage(msg);
  end;
end;
//..............................................................................
procedure ItemList;
{Создаем базу Items}
//11=ItemList:h(ShowWindow)h(ListSize:Loop.01.0021)h(ItemType1)d(ObjectID)
//   d(ItemID:Get.Func01)d(LocationSlot)d(Count)h(ItemType2)h(CustomType1)
//   h(isEquipped)d(BodyPart)h(EnchantLevel)h(CustType2)d(AugmentationID)
//   d(Mana)d(AttackAttrElement)d(AttackAttrElementVal)d(DefAttrFire)
//   d(DefAttrWater)d(DefAttrWind)d(DefAttrEarth)d(DefAttrHoly)d(DefAttrUnholy)
var
  i, j, k: integer;
  ListCount: integer;
begin
  j:=4; //смещение для ListCount
  ListCount:=ReadH(j); //количество итемов не должно превышать max!
  for i:=1 to maxitems do
    if (i<=ListCount) then begin
      BaseItems[i,1]:=ReadH(j);  //ItemType1
      BaseItems[i,2]:=ReadD(j);  //ObjectID
      BaseItems[i,3]:=ReadD(j);  //ItemID
      BaseItems[i,4]:=ReadD(j);  //LocationSlot
      BaseItems[i,5]:=ReadD(j);  //Count
      BaseItems[i,6]:=ReadH(j);  //ItemType2
      BaseItems[i,7]:=ReadH(j);  //CustomType1
      BaseItems[i,8]:=ReadH(j);  //isEquipped
      BaseItems[i,9]:=ReadD(j);  //BodyPart
      BaseItems[i,10]:=ReadH(j); //EnchantLevel
      BaseItems[i,11]:=ReadH(j); //CustType2
      BaseItems[i,12]:=ReadD(j); //AugmentationID
      //debugmsg('OID='+inttostr(BaseItems[i,2])+' ID='+inttostr(BaseItems[i,3]));
      inc(j,40);
    end else for k:=1 to 12 do BaseItems[i,k]:=0; // забиваем нулями
  //вносим изменения в чекбоксы
  StringList.Clear;
  try
    for i:=1 to ListCount do begin
      try
        //StringList.Add(ItemsName[ItemBase[2,i]-1]); //записываем название вещей из инвентаря
        StringList.Add(ItemsName.Values[IntToStr(BaseItems[i,3])]); //записываем название вещей из инвентаря
      except;
        //msg.Lines.Add('Пропускаем! Нет ItemID='+inttostr(BaseItems[i,3])+' в itemsid.ini');
      end
    end;
  except;
    //msg.Lines.Add('ошибка в CreateItemBase->StringList.Add()');
    //msg.Lines.Add(inttostr(BaseItems[i,3]));
    exit;
  end;
  if not CheckBoxItem.Checked then begin //наполняем комбобокс
    with ComboBoxItem do
    begin
      Items.Clear;
      Items.Assign(StringList);
      ItemIndex:=0;
    end;
  end;
  if not CheckBoxScroll.Checked then begin //наполняем комбобокс
    with ComboBoxScroll do
    begin
      Items.Clear;
      Items.Assign(StringList);
      ItemIndex:=0;
    end;
  end;
end;
//..............................................................................
procedure InventoryUpdate; //пакет 27, Создает базу ObjectID по ItemID
var
  i, ii, j, k, ListCount, UpdType : integer;
  ItemType1, ObjectID, ItemID, LocationSlot, Count, ItemType2, CustomType1,
  isEquipped, BodyPart, EnchantLevel, CustType2, AugmentationID :integer;
  additem : boolean;
begin
  additem:=true;
  ListCount:=ReadH(2); //количество итемов
//  debugmsg('ListCount='+inttostr(ListCount));
  j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален
  for i:=1 to ListCount do begin
    UpdType:=ReadH(j);
    ItemType1:=ReadH(j);
    ObjectID:=ReadD(j);
    ItemID:=ReadD(j);
    LocationSlot:=ReadD(j);
    Count:=ReadD(j);
    ItemType2:=ReadH(j);
    CustomType1:=ReadH(j);
    isEquipped:=ReadH(j);
    BodyPart:=ReadD(j);
    EnchantLevel:=ReadH(j);
    CustType2:=ReadH(j);
    AugmentationID:=ReadD(j);
    case UpdType of
      1: k:=0;         //добавлен новый предмет
      2: k:=ObjectID; //изменен предмет в инвентаре
      3: begin       //удален
        for ii:=1 to maxitems do
          if (BaseItems[ii,2]=ObjectID) then begin
            //debugmsg('удаляем OID='+inttostr(BaseItems[ii,2])+' ID='+inttostr(BaseItems[ii,3]));
            for k:=1 to 12 do BaseItems[ii,k]:=0;
            break;
          end;
      end;
    end;
    for ii:=1 to maxitems do begin
      if (BaseItems[ii,2]=k) then begin
        BaseItems[ii,1]:=ItemType1;
        //BaseItems[ii,2]:=ObjectID;
        BaseItems[ii,3]:=ItemID;
        BaseItems[ii,4]:=LocationSlot;
        BaseItems[ii,5]:=Count;
        BaseItems[ii,6]:=ItemType2;
        BaseItems[ii,7]:=CustomType1;
        BaseItems[ii,8]:=isEquipped;
        BaseItems[ii,9]:=BodyPart;
        BaseItems[ii,10]:=EnchantLevel;
        BaseItems[ii,11]:=CustType2;
        BaseItems[ii,12]:=AugmentationID;
        //debugmsg('доб/изм OID='+inttostr(BaseItems[ii,2])+' ID='+inttostr(BaseItems[ii,3]));
        break;
      end;
    end;
    inc(j,38);
  end;
end;
//..............................................................................
function GetItem(ID, FieldIn, FieldOut : integer): integer;
{GetInv(по чему будем искать, номер того по чему будем искать, номер того что надо найти)
где:
  ID - искомый код;
  FieldIn - по какому полю ищем;
  FieldOut - какое поле возвращаем;
1=ItemType1; 2=ObjectID;3=ItemID;4=LocationSlot;5=Count;6=ItemType2;7=CustomType1;
8=isEquipped;9=BodyPart;10=EnchantLevel;11=CustType2;12=AugmentationID;
ex1: GetInv(6408,2,1) - вернет ObjectID свадебного платья, если онное лежит в
                        инвентаре, иначе вернет -1
ex2: GetInv(6408,2,8) - вернет уровень заточки первого попавшегося в инвентаре
                        свадебного платья, если свадебного платья нет, то вернет -1
}
var
  i: integer;
begin
  for i:=1 to maxitems do
    if (BaseItems[i,FieldIn]=ID) then begin
      Result:=BaseItems[i,FieldOut];
      //debugmsg('Нашли='+inttostr(result));
      exit;
    end;
  Result:=-1;
end;
//..............................................................................
//******************************************************************************
//находим в инвентаре предмет с ItemID и возвращаем его ObjectID
function GetItemEnchant(item,lvl:integer) : integer;
var
  i : integer;
begin
  //ничего не нашли
  result:=0;
  for i:=1 to maxitems do
    if (BaseItems[i,3]=item) and (BaseItems[i,10]=lvl) then begin
      ItemEnch:=BaseItems[i,10];
      Result:=BaseItems[i,2];
      //debugmsg('Нашли='+inttostr(result));
      exit;
    end;
//  Result:=-1;
end;
//******************************************************************************
function SumItem(Item: integer):integer;
var
  sum, i : integer;
begin
  result:=0;
  //находим подходящий предмет по ItemID
  for i:=1 to maxitems do begin
    if (BaseItems[i,3]=item) then begin
//      msg.Lines.Add('Нашли предмет ItemOID='+inttostr(ItemBase[1,i])+' ItemID='+inttostr(ItemBase[2,i])+' ItemCol='+inttostr(ItemBase[3,i])+' EnchantLvl='+inttostr(ItemBase[4,i]));
//      msg.Lines.Add('i='+inttostr(i));
      result:=result+BaseItems[i,5]; //count
      //inc(result);
    end;
  end;
end;
//******************************************************************************
procedure UseItem(ObjectID: integer);
begin
  buf:=#$19;
  WriteD(ObjectID);
  WriteD(0);
  SendToServerEx(Name);
end;
//******************************************************************************
procedure RequestEnchantItem(ObjectID: integer);
begin
  buf:=#$5F;
  WriteD(ObjectID);
  SendToServerEx(Name);
end;
//******************************************************************************
procedure OnTimer(Sender: TObject);
begin
  EditItemVal.text:=inttostr(sumitem(ItemID));
  EditScrollVal.text:=inttostr(sumitem(ScrollID));
  if (strtoint(Edit2.text)>=strtoint(Edit1.Text)) then begin
    msg.Lines.Add('Нет подходящих предметов для улучшения! Прервано!');
    timer.enabled:=false;
    exit;
  end;
  if (sumitem(ItemID)<=1) then begin
//  if (sumitem(ItemID)<=0) then begin //если надо точить одну вещь
    msg.Lines.Add('Предметов для улучшения должно быть больше двух! Прервано!');
    timer.enabled:=false;
    exit;
  end;

  if ready then exit;

  ScrollOID:=GetItem(ScrollID,3,2);//найдем OID скролла
  if ScrollOID=-1 then begin
    msg.Lines.Add('Кончились свитки! Прервано!');
    timer.enabled:=false;
    exit;
  end;
  UseItem(ScrollOID);
  msg.Lines.Add('Задействовали свиток ScrollID='+IntToStr(scrollID)+' ScrollOID='+IntToStr(ScrollOID));
  ready:=true; //готовы затачивать
end;
//******************************************************************************
// вызывается при приходе каждого пакета, если скрипт включен
//******************************************************************************
begin
  //****************************************************************************
  //не обрабатываем пустые пакеты
  if pck='' then exit;
  //****************************************************************************
  if FromServer then
    case pck[1] of
       //......................................
      #$11: begin
        //debugmsg('S>C Пакет ItemListPacket #$11');
        ItemList;
      end;
      //......................................
      #$21: begin
        //debugmsg('S>C Пакет InventoryUpdate #$21');
        InventoryUpdate;
      end;
      //......................................
      //Пакет ChooseInventory
      #$7C: begin
        if ready then begin //and (readd(2)=itemid)
          //ищем подходящий предмет для заточки
          timer.enabled:=false; //отключаем пока не найдем предмет для заточки
          repeat
            ItemOID:=GetItemEnchant(ItemID, CurEnchLvl);
            if ItemOID=0 then begin
              inc(CurEnchLvl);
              Edit2.text:=inttostr(CurEnchLvl);
            end;
          until ItemOID<>0;
          //************************************************
          if (CurEnchLvl>=strtoint(Edit1.Text)) then begin
            msg.Lines.Add('Нет подходящих предметов для улучшения! Прервано!');
            msg.Lines.Add('Достигли MaxEnchLvl!');
            timer.enabled:=false;
            ready:=false;
            delay(500);
            RequestEnchantItem(-1);
            exit;
          end else begin
//            msg.Lines.Add('Пробуем улучшить ItemID='+IntToStr(ItemID)+' ItemOID='+IntToStr(ItemOID)+' ItemEnchLvl='+IntToStr(ItemEnch));
            RequestEnchantItem(ItemOID);
            ready:=false;
            timer.enabled:=true;
          end;
        end;
      end;
      #$87: begin
        if readd(2)=0 then begin
          msg.Lines.Add('Улучшили ItemID='+IntToStr(ItemID)+' ItemOID='+IntToStr(ItemOID)+' ItemEnchLvl='+IntToStr(ItemEnch));
          inc(good);
        end else begin
          msg.Lines.Add('Сломали ItemID='+IntToStr(ItemID)+' ItemOID='+IntToStr(ItemOID)+' ItemEnchLvl='+IntToStr(ItemEnch));
          inc(broken);
        end;
//        CurEnchLvl:=0; //начнем с начала. Расскоментировать для блессет скроллов
      end;
    end;
end.
Для Интерлюд и С4:

[Ссылки могут видеть только зарегистрированные пользователи. ] [Пасс: Zhyk.ru]

Применение: Вставте в l2phx во вкладку скрипты не забудьте поменять ник(NLObP) в скрипте на свой.
Автор скриптов: NLObP
________________
ICQ: 743-936
Skype - prof11ame

Перед тем как проводить со мной сделки, советую в целях Вашей безопасности - просить проверку через форум !
-
Обмен и вывод электронных денег: Яндекс Деньги, КИВИ, Веб-мани, быстро и надежно. Вывод денег на пластиковые карты, любого банка.
Разблокирую Яндекс Деньги кошельки.
  Ответить с цитированием
6 пользователя(ей) сказали cпасибо:
DMSnik (18.02.2010), m1roo (05.07.2009), ridgid (09.09.2009), Rinada (27.06.2009), Silence (15.08.2009), Skilled (12.07.2009)
Старый 14.05.2009, 14:30   #5
 Разведчик
Аватар для Тамбик
 
Тамбик никому не известный тип
Регистрация: 14.05.2009
Сообщений: 2
Популярность: 14
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Скрипты для l2phx

Автор я mks помог
для ХБ проверен
Код:
// подмена титула игрока на Class игрока

var

 ClassID, i: Integer;
 Name,  Class,part1,part2,Title: String;

procedure Init;
begin
end;

procedure Free;
begin
end;
procedure OnConnect(WithClient: Boolean); 
begin

end;

procedure OnDisonnect(WithClient: Boolean); 
begin

end;

begin
if FromServer and (pck[1]=#$31) then
 begin
   i:=22;
   Name:=ReadS(i);
   i:=i+8;
   ClassID:=ReadD(i);
   i:=i+260;
   part1:= copy(pck,1,i-1);  //копируем пакет до титла в буфеr

   Title:=ReadS(i);
   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';
   
    123:class:='Kamael Soldier M';
    124:class:='Kamael Soldier F';
    125:class:='Trooper';
    126:class:='Warder';
    127:class:='Berserker';
    128:class:='Male Soulbreaker';
    129:class:='Female Souldbreaker';
    130:class:='Arbalester';
    131:class:='Doombringer';
    132:class:='Male Soulhound';
    133:class:='Female Soulhound';
    134:class:='Trickster';
    135:class:='Inspector';
    136:class:='Judicator';
   end;

      part2:=Copy(pck,i,length(pck)-i);
      buf:=part1;
      WriteS(''+class+'');
      buf:=buf+part2;
     pck:=buf;
  end;
end.
  Ответить с цитированием
Старый 12.07.2009, 22:29   #6
Знатный Читер
 Рыцарь
Аватар для Федя
 
Федя гордость нацииФедя гордость нацииФедя гордость нацииФедя гордость нацииФедя гордость нацииФедя гордость нацииФедя гордость нацииФедя гордость нацииФедя гордость нацииФедя гордость нацииФедя гордость нации
Регистрация: 15.06.2009
Сообщений: 338
Популярность: 3818
Сказал(а) спасибо: 575
Поблагодарили 514 раз(а) в 218 сообщениях
Отправить сообщение для Федя с помощью ICQ Отправить сообщение для Федя с помощью Skype™
 
По умолчанию Re: Скрипты для l2phx

Автоматизация старого дюпа ц4 [Ссылки могут видеть только зарегистрированные пользователи. ] видео не моё
1.поставить чара на продажу стопковых итомов,по 1 адене и включить скрипт на этого чара
2.покупить 1 итом,удалить
3.грац вы дюпнули
4.когда 3 раза дюпнули,делаем рестарт чаром,которым покупаем
*Lagam.net работало 2-3 месеца назад

Код:
//копирование запрещено 4it-master ^^
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пасибо:
[4it]Quickly (14.07.2009)
Старый 14.07.2009, 21:34   #7
 Разведчик
Аватар для Catchy
 
Catchy на правильном пути
Регистрация: 14.07.2009
Сообщений: 36
Популярность: 64
Сказал(а) спасибо: 7
Поблагодарили 27 раз(а) в 14 сообщениях
Отправить сообщение для Catchy с помощью ICQ
 
По умолчанию Re: Скрипты для l2phx

Скрипт на телепортацию 1.Выделяем себя 2.пишем .XXX где XXX город или место(подробней в скрипте) 3.после тп юзаем любой скилл (Dush, Shield...)
Данный скрипт для интерлюда! (там где кривая геодата)
Пробовал скрипт только на l2phx.3.5.13.122.

Код:
//Включить скрипт
//Взять себя в таргет
//ну и тп куда хочешь
//После того как тпшнулся нужна сделать какойто скилл..потому что ты для сервера еще на старом месте.   

{Команды скрипта}
//******************===Квест на Валакаса===********************************
//.klein-телепорт к klein
//.hilda-телепорт к hilda
//.kgb-телепорт на поле для Vaculite Ore

//******************===Квест на Антараса===********************************
//.gabrielle-телепорт к Gabrielle
//.kaiena-телепорт к Kaiena
//.marsh-Поляна для дропа (Marsh Drake,Marsh Gargoyle)
//.chakiris-телепорт к Chakiris
//.hamrut-телепорт к Hamrut и Kranrot
//.orven-телпорт к Orven
//.bloody-телепорт к Blood Queen(Seal of Shilen)
//.kendra-телепорт к Kendra
//.harit-телепорт к Harit Lizardman (Matriarch & Shaman)
//.helton-телепорт к Helton
//.jewel2-телепорт к Abyss Jewel 2
//.moke-телепорт к Moke
//.jewel1-телепорт к Abyss Jewel 1
//.gilmore-телепорт к Gilmore
//.theodric-телепорт к Theodric тамже Cave Maiden и Cave Keeper

//******************===Квест на Баюма===********************************
//.hanellin-телепорт к Hanellin
//.lesser giant-телепорт к lesser giant
//.claudia-телепорт к Claudia Athebalt
//.martien-телепорт к Martien
//.harne-телепорт к Harne
//.sunduk1-телепорт к Holy Ark of Secrecy2 (Cemetry)
//.sunduk2-телепорт к Holy Ark of Secrecy3 (Tanor Canyon)
//.ark guard-телепорт к Ark Guard's Corspe (Сначало с ним говорим потом с сундуком)
//.sunduk3-телепорт к Holy Ark of Secrecy1 (Dark Forest)
//.healing-телепорт к Grocery Продавца (Healing Potion & Antidote)
//.treapka-телепорт к мобам (Platinum Tribe Shaman & Overlord)

//******************===ГОРОДА===********************************
//.gludio - телепорт в глудио
//.goddard - телепорт в годдард
//.aden   - телепорт в аден
//.giran - телепорт в гиран
//.rune - телепорт в Руну
//.oren - телепорт в орен
//.heine - телепорт в Хейн
//.dion - телепорт в дион
//.schuttgart - телепорт в шутгарт
//.gludin - телепорт в глудин

//******************===ЗАМКИ===*********************************
//.adencastle - Aden Замок (ТРОН)
//.runecastle - Rune Замок (ТРОН)
//.goddardcastle - Goddard Замок (ТРОН)
//.girancastle - Giran Замок (ТРОН)
//.orencastle - Oren Замок (ТРОН)
//.gludiocastle - Gludio Замок  (ТРОН)
//.dioncastle - Dion Замок  (ТРОН)
//.schuttgartcastle - Шутгарт Замок  (ТРОН)
//.innadrilcastle - Innadril Замок  (ТРОН)

//******************===ЛОКАЦИИ===*******************************
//.dino - телепорт на дино остров
//.vos - телепорт в Valey OF Saints
//.varka - телепорт в Varka
//.mos - телепорт в Monastery Of Silence
//.ketra - телепорт в Ketra Ork

//*****************===РЭЙД БОССЫ===*****************************
//.aq - телепорт к Ант Квин
//.zaken - телепорт к Закену
//.baium - телепорт к Баюму
//.antharas - телепорт к Антарасу
//.valakas - телепорт к Валакасу
//.frintezza - телепорт к Фринтеза

//*****************===ДРУГИЕ МЕСТА===*****************************
//.olympiad   - телепорт на арену
//.jail   - телепорт в тюрьму 
//.adencrest - телепорт на верхушку креста адена
//.vodopad  - телепорт на водопад 
//.coliseum - телепорт в колизей
//.farm-телепорт в Фарм Зону(Lineage2.gh-nt.ru)

//*****************===Noblesse Quest===*****************************
//.talien - Телепорт к Talien
//.gabrielle - Телепорт к Gabrielle
//.gilmore - Телепорт к Gilmore
//.baraham - Телепорт к Baraham
//.melodymaestro - Телепорт к MelodyMaestro
//.marluk - Телепорт в локацию (Marluk Succubus)
//.stedmiel - Телепорт к Stedmiel
//.virgil - Телепорт к Virgil ( Kasandra прямо рядом с ним)
//.rahorakti - Телепорт к Rahorakti
//.splinterstakato - Телепорт в локацию Crimson Moss
//.caradine - Телепорт к Caradine
//.noel - Телепорт к Noel
//.mdk - Телепорт к Mysterious Dark Knight
//.kalis - Телепорт к Kalis
//.matild - Телепорт к Matild
//.unicorn - Телепорт к Unicorn
//.jp Телепорт в локацию Judge & Pilgrim (ring and neklasse)
//.noblrb - телепорт к Ноблесс Рэйд Боссу
//.ladd - телепорт в Ivory Tower(К магистру Ladd)
const
//======================================
Name='UniSoul'; //**<-----Ник Персонажа-=
//======================================
var
// переменная
ValidatePosition:string; c:integer; e:integer; n:integer; r:boolean;     
a:integer; b:boolean;  d:integer; f:integer; v:integer;
procedure Init; //Вызывается при включении скрипта
begin
SendMsc('Возьми себя в таргет');
b:=false;
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClient;
end;
Begin
begin
if FromClient and (pck[1]=#$04)and (not b) then 
begin
a:=ReadD(2); c:=ReadD(6);
d:=ReadD(10); e:=ReadD(14);
f:=ReadC(18);
SendMsc('Запомнен ObjectID = '+inttostr(a));
b:=true;
end;
end;
Begin
If fromclient and (pck=#$38#$2E#$00#$6F#$00#$6C#$00#$79#$00#$6D#$00#$70#$00#$69#$00#$61#$00#$64#$00#$00#$00#$00#$00#$00#$00) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ #$F0#$29#$FE#$FF#$C9#$90#$FC#$FF#$02#$F3#$FF#$FF;
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 67 00 6C 00 75 00 64 00 69 00 6F 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ #$8E#$CE#$FF#$FF#$99#$DF#$01#$00#$D9#$F3#$FF#$FF;
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 67 00 6F 00 64 00 64 00 61 00 72 00 64 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('CE 41 02 00 0E 28 FF FF 57 F5 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 61 00 64 00 65 00 6E 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('89 3B 02 00 B0 64 00 00 23 F8 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 67 00 69 00 72 00 61 00 6E 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('0A 43 01 00 9E 44 02 00 74 F2 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 72 00 75 00 6E 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('2A AB 00 00 7E 45 FF FF E7 FC FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 72 00 75 00 6E 00 65 00 63 00 61 00 73 00 74 00 6C 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('11 28 00 00 12 40 FF FF ED FE FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 61 00 64 00 65 00 6E 00 63 00 61 00 73 00 74 00 6C 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('F6 3F 02 00 2C 12 00 00 B1 FE FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 67 00 6F 00 64 00 64 00 61 00 72 00 64 00 63 00 61 00 73 00 74 00 6C 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('04 40 02 00 6E 43 FF FF 21 F7 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 67 00 69 00 72 00 61 00 6E 00 63 00 61 00 73 00 74 00 6C 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('1B C7 01 00 C7 36 02 00 02 F6 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6F 00 72 00 65 00 6E 00 63 00 61 00 73 00 74 00 6C 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('90 42 01 00 45 91 00 00 13 F7 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 67 00 6C 00 75 00 64 00 69 00 6F 00 63 00 61 00 73 00 74 00 6C 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('40 B9 FF FF 65 AB 01 00 45 F6 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 64 00 69 00 6F 00 6E 00 63 00 61 00 73 00 74 00 6C 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('3A 56 00 00 60 72 02 00 83 F5 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 73 00 63 00 68 00 75 00 74 00 74 00 67 00 61 00 72 00 74 00 63 00 61 00 73 00 74 00 6C 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('E0 2E 01 00 31 A9 FD FF 80 FE FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 69 00 6E 00 6E 00 61 00 64 00 72 00 69 00 6C 00 63 00 61 00 73 00 74 00 6C 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('39 C5 01 00 09 CD 03 00 F2 FC FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6A 00 61 00 69 00 6C 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('E2 40 FE FF ED 30 FC FF 5B F4 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6F 00 72 00 65 00 6E 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('91 41 01 00 63 D7 00 00 0C FA FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 68 00 65 00 69 00 6E 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('0B B2 01 00 89 57 03 00 2A F2 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 64 00 69 00 6F 00 6E 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('3C 49 00 00 1D 38 02 00 C9 F3 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 73 00 68 00 75 00 74 00 74 00 67 00 61 00 72 00 74 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('3E 55 01 00 62 D5 FD FF C8 FA FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 67 00 6C 00 75 00 64 00 69 00 6E 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('89 BB FE FF 07 4D 02 00 C8 F3 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 64 00 69 00 6E 00 6F 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('E4 28 00 00 07 A0 FF FF C3 F1 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 61 00 64 00 65 00 6E 00 63 00 72 00 65 00 73 00 74 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('FF 41 02 00 A5 0F 00 00 FC 11 00 00');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 76 00 6F 00 64 00 6F 00 70 00 61 00 64 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('12 A9 02 00 93 62 01 00 33 07 00 00');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 76 00 6F 00 73 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('D6 18 01 00 39 96 FE FF 74 FA FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 76 00 61 00 72 00 6B 00 61 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('59 EA 01 00 18 60 FF FF 79 F1 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6D 00 6F 00 73 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('9D 9F 01 00 0E A9 FE FF 9D F4 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6B 00 65 00 74 00 72 00 61 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('0A 3E 02 00 C4 F8 FE FF B9 F1 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 63 00 6F 00 6C 00 69 00 73 00 65 00 75 00 6D 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('46 4A 02 00 8D B6 00 00 B1 F2 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 61 00 71 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('96 AB FF FF 5A C5 02 00 9F E9 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 7A 00 61 00 6B 00 65 00 6E 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('10 D8 00 00 20 58 03 00 6E F3 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 62 00 61 00 69 00 75 00 6D 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('0D C2 01 00 EF 40 00 00 65 27 00 00');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 61 00 6E 00 74 00 68 00 61 00 72 00 61 00 73 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('6C D5 02 00 7A BE 01 00 E8 DF FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 76 00 61 00 6C 00 61 00 6B 00 61 00 73 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('88 43 03 00 14 3D FE FF 99 F9 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 66 00 72 00 69 00 6E 00 74 00 65 00 7A 00 7A 00 61 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('9E A8 02 00 44 A2 FE FF BD EB FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 74 00 61 00 6C 00 69 00 65 00 6E 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('1F 41 02 00 FA 66 00 00 A4 F7 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 67 00 61 00 62 00 72 00 69 00 65 00 6C 00 6C 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('89 3D 01 00 CF 48 02 00 74 F2 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 67 00 69 00 6C 00 6D 00 6F 00 72 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('DA 1D 01 00 DD CE 01 00 92 F1 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 62 00 61 00 72 00 61 00 68 00 61 00 6D 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('1F 53 00 00 70 D0 02 00 F5 F2 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6D 00 65 00 6C 00 6F 00 64 00 79 00 6D 00 61 00 65 00 73 00 74 00 72 00 6F 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('DC A1 01 00 8D 4F 03 00 F5 F1 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6D 00 61 00 72 00 6C 00 75 00 6B 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('F5 D1 01 00 DD C7 01 00 63 F1 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 73 00 74 00 65 00 64 00 6D 00 69 00 65 00 6C 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('44 D4 01 00 D4 2D 01 00 3D F7 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 76 00 69 00 72 00 67 00 69 00 6C 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('DA 80 00 00 9D 43 FF FF F5 06 00 00');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 72 00 61 00 68 00 6F 00 72 00 61 00 6B 00 74 00 69 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('B6 95 00 00 91 3F FF FF 98 FB FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 73 00 70 00 6C 00 69 00 6E 00 74 00 65 00 72 00 73 00 74 00 61 00 6B 00 61 00 74 00 6F 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('BD 24 01 00 AD 4A FF FF 63 F3 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 63 00 61 00 72 00 61 00 64 00 69 00 6E 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('7F 4A 02 00 D6 1D FF FF 5C F4 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6E 00 6F 00 65 00 6C 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('20 3C 02 00 45 1A FF FF 64 F4 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6D 00 64 00 6B 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('03 7B 01 00 F1 14 FF FF 5C F6 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6B 00 61 00 6C 00 69 00 73 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('63 74 01 00 AE 56 00 00 C0 F4 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6D 00 61 00 74 00 69 00 6C 00 64 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('D4 10 01 00 AF 46 00 00 B4 F1 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 75 00 6E 00 69 00 63 00 6F 00 72 00 6E 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('7D 4F 01 00 0E D5 FE FF 6E F2 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6A 00 70 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('B0 47 01 00 10 C7 FE FF 4A F2 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6E 00 6F 00 62 00 6C 00 72 00 62 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('62 65 01 00 52 AF FE FF 66 F5 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6C 00 61 00 64 00 64 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('1D 4C 01 00 89 3E 00 00 0E F9 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
Begin
If fromclient and (pck=hstr('38 2E 00 66 00 61 00 72 00 6D 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('8B 45 01 00 C2 EB 03 00 9C D3 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6B 00 6C 00 65 00 69 00 6E 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('5F CD 02 00 10 3F FE FF F6 F2 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 68 00 69 00 6C 00 64 00 61 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
buf:=buf+ hstr('E8 3B 02 00 AD 1A FF FF 62 F4 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6B 00 62 00 67 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a); 
buf:=buf+ hstr('65 4C 02 00 B3 0C FF FF C5 F3 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 68 00 61 00 6E 00 65 00 6C 00 6C 00 69 00 6E 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a); 
buf:=buf+ hstr('D3 32 02 00 17 5C 00 00 B7 F7 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6C 00 65 00 73 00 73 00 65 00 72 00 20 00 67 00 69 00 61 00 6E 00 74 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);  
buf:=buf+ hstr('75 E0 02 00 48 F5 00 00 D2 E3 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 63 00 6C 00 61 00 75 00 64 00 69 00 61 00 00 00 00 00 00 00 ')) then
begin
buf:=#$28;
WriteD(a);   
buf:=buf+ hstr('E3 44 02 00 D1 41 00 00 E6 F9 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 73 00 75 00 6E 00 64 00 75 00 6B 00 31 00 00 00 00 00 00 00 ')) then
begin
buf:=#$28;
WriteD(a);   
buf:=buf+ hstr('C8 C4 02 00 E3 1B 00 00 58 F5 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6D 00 61 00 72 00 74 00 69 00 65 00 6E 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);   
buf:=buf+ hstr('0B 49 01 00 82 31 02 00 B2 F2 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 73 00 75 00 6E 00 64 00 75 00 6B 00 32 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);   
buf:=buf+ hstr('F3 C5 00 00 DC 6B 02 00 72 01 00 00');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 68 00 61 00 72 00 6E 00 65 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);   
buf:=buf+ hstr('6B 28 00 00 5D 38 00 00 6D EF FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 61 00 72 00 6B 00 20 00 67 00 75 00 61 00 72 00 64 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);   
buf:=buf+ hstr('77 0B 00 00 4C AC 00 00 5C F5 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 73 00 75 00 6E 00 64 00 75 00 6B 00 33 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);   
buf:=buf+ hstr('7F FE FF FF 9F AC 00 00 26 F2 FF FF');
SendToClient;
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 68 00 65 00 61 00 6C 00 69 00 6E 00 67 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);   
buf:=buf+ hstr('8E 3A 02 00 6C 6D 00 00 30 F7 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 74 00 72 00 65 00 61 00 70 00 6B 00 61 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);   
buf:=buf+ hstr('8E 3A 02 00 6C 6D 00 00 30 F7 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6B 00 61 00 69 00 65 00 6E 00 61 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('62 4D 01 00 D6 40 00 00 0D F9 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6D 00 61 00 72 00 73 00 68 00 00 00 00 00 00 00 ')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('6A 9C 02 00 B0 A6 00 00 E1 EC FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 63 00 68 00 61 00 6B 00 69 00 72 00 69 00 73 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('F5 D4 01 00 5F 24 01 00 B9 F6 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 68 00 61 00 6D 00 72 00 75 00 74 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('78 C4 02 00 F1 E2 00 00 73 F0 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6F 00 72 00 76 00 65 00 6E 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('FF 3F 02 00 4B 58 00 00 37 F8 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 62 00 6C 00 6F 00 6F 00 64 00 79 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('17 D7 02 00 67 4B 00 00 DF F2 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6B 00 65 00 6E 00 64 00 72 00 61 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('E6 46 02 00 0F 64 00 00 B4 F7 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 68 00 61 00 72 00 69 00 74 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('B7 60 02 00 71 2F 01 00 82 F4 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 68 00 65 00 6C 00 74 00 6F 00 6E 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('DF 46 01 00 3C D9 00 00 17 FA FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6A 00 65 00 77 00 65 00 6C 00 32 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('72 F8 00 00 65 79 00 00 5D F1 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6D 00 6F 00 6B 00 65 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('07 C0 FE FF 9F 57 02 00 99 F3 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 6A 00 65 00 77 00 65 00 6C 00 31 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('A3 C2 FE FF 4C 27 01 00 D6 F2 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 74 00 68 00 65 00 6F 00 64 00 72 00 69 00 63 00 00 00 00 00 00 00')) then
begin 
buf:=#$28;
WriteD(a);    
buf:=buf+ hstr('6E 00 02 00 CF BF 01 00 72 F1 FF FF');
SendToClient; 
buf:=#$30;
SendToServerEX(Name);
end;
end;
end;
end.
________________
Чем тоньше лёд, тем больше всем хочется убедиться, выдержит ли он.(с)
Помог -> Спасибку!

Последний раз редактировалось Catchy; 19.07.2009 в 20:15.
  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
0n1y (03.10.2009), Alex-A (20.09.2009), wantedboy (30.10.2009), wednesday (10.09.2009)
Старый 15.08.2009, 15:19   #8
eBanned
 Старший сержант
Аватар для GraNIT
 
GraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауру
Регистрация: 27.07.2009
Сообщений: 237
Популярность: 578
Сказал(а) спасибо: 593
Поблагодарили 329 раз(а) в 147 сообщениях
Отправить сообщение для GraNIT с помощью ICQ Отправить сообщение для GraNIT с помощью Skype™
 
Thumbs up Re: Скрипты для l2phx

Program ItemPainter C4, C6
Код:
Program ItemPainter;
//------------------------------------------------------------------
//Скрипт для рисования предметами пока только для с4 и интерлюдии
//В Name ввдите ник
//Нарисуйте картинку в любом графическом редакторе.
//В поле "Путь к фалу" введите путь к этому файлу и нажмите Load
//Черный,красный,зеленый,голубой,желтый цвета пикселей можно привязать к отдельному предмету
//Выберите цвет в боксе color, затем предмет в боксе Item (предметов должно быть>1 чтобы они появились в списке)
//scale - масштаб отступа между предметами от 1:1 до 10:1
//Самый оптимальный масштаб 5:1
//Направление - согласно компасу в игре
const
Name='Perforator';
interlude=true;
max=80;
MaxDistance=240; //Максимальное расстояние на которое можно выбросить предмет
var
bmp:TBitMap; //Картинка
ItemBase:  array[1..3,1..max] of integer; //Массив предметов заполняется процедурой CreateItemBase
SelectedItems: array[1..3,1..5] of integer; //Массив Object ID предметов [i,j] i=1 - OID,2-ID,3 - Count; j - # цвета
currentx,currenty,StartX,StartY,StartZ,MyX,MyY,MyZ,NextX,NextY,ItemOID:integer;
//Теущие координаты x и y;координаты начала отчета x,y,z; Мои координаты x y обнавляются при Validate Position
ready:boolean;
timer : TTimer;
FormMain:TForm;
Stats : TMemo;
Panel1 : TPanel;
GroupBox1,GroupBox2 : TGroupBox;
ComboBoxColor,ComboBoxScale,ComboboxItem,ComboBoxDirection:TComboBox;
Label1,Label2,Label3,Label4:TLabel;
Path:TEdit;
LoadedImage:TImage;
LoadButton,StartButton,StopButton:TButton;
ItemsName,StringList:TStringList;
//......................................
//......................................
//......................................
//ComboBoxItem
procedure ComboBoxItem_Click(Sender: TComboBox);
var i,count,index:integer;
begin
count:=0;
if SelectedItems[2,ComboBoxColor.ItemIndex+1]=ItemBase[2,ComboBoxItem.ItemIndex+1] then exit;
for i:=1 to 5 do if SelectedItems[2,i]=ItemBase[2,ComboBoxItem.ItemIndex+1] then inc(count);
if Count>0 then begin
stats.lines.add('Ошибка! Нельзя добавлять одинаковые предметы в разные цвета.');
exit;
end;
SelectedItems[1,ComboBoxColor.ItemIndex+1]:=ItemBase[1,ComboBoxItem.ItemIndex+1];
SelectedItems[2,ComboBoxColor.ItemIndex+1]:=ItemBase[2,ComboBoxItem.ItemIndex+1];
SelectedItems[3,ComboBoxColor.ItemIndex+1]:=ItemBase[3,ComboBoxItem.ItemIndex+1];
index:=ComboBoxItem.ItemIndex;
for i:=0 to StringList.Count-1 do if Pos(' - '+ComboBoxColor.Items.Strings[ComboBoxColor.ItemIndex],ComboBoxItem.Items.Strings[i])>0 then
ComboBoxItem.Items.Strings[i]:=StringList.Strings[i];
ComboBoxItem.Items.Strings[index]:=ComboBoxItem.Items.Strings[ComboBoxItem.ItemIndex]+' - '+ComboBoxColor.Items.Strings[ComboBoxColor.ItemIndex];
ComboBoxItem.ItemIndex:=index;
end;
//----------------------------------------
procedure StartButton_Click(Sender: TButton);
//Event : OnClick
begin
if bmp=NIL then stats.lines.add('Картинка не загружена!') else
begin
stats.lines.add('Старт!');
StartButton.enabled:=false;
currentx:=-1;
currenty:=0;
buf:=#$AA;
WriteD(0);
SendToServerEx(Name);
end;
end;
//......................................
//ButtonStopEnchant
procedure StopButton_Click(Sender: TButton);
//Event : OnClick
begin
StartButton.enabled:=true;
stats.lines.add('Стоп!');
timer.enabled:=false;
ready:=false;
end;
procedure bmpload;
begin
  bmpfree;
  bmp:=TBitMap.Create;
  try
  bmp.LoadFromFile(path.text);
  except
  bmp.Free;
  stats.lines.add('Ошибка загрузки файла!');
  exit;
  end;
  stats.lines.add('Картинка успешно загружена!');
  LoadedImage.Picture.assign(bmp);
end;
procedure LoadButton_Click(Sender: TButton);
var openDialog : TOpenDialog;
begin
  openDialog := TOpenDialog.Create(NIL);
  openDialog.Filter := 'Bitmap files|*.bmp';
  openDialog.FilterIndex := 1;
  openDialog.DefaultExt:='bmp';
  openDialog.Options:=ofNoChangeDir+ofFileMustExist+ofPathMustExist;
  if openDialog.Execute then path.text:=openDialog.FileName else begin
  openDialog.Free;
  exit;
  end;
  openDialog.Free;
  bmpload;
end;
procedure Path_key(Sender: TEdit; Key: Char);
begin
if ord(key)=13 then begin
bmpload;
end;
end;
procedure Free_FormMain;
//Освобождаем ресурсы ...
begin
  TRY
    if FormMain<>NIL then begin
       FormMain.Free;
       FormMain:=NIL;
    end;
  FINALLY
  END;
end;
function Create_FormMain : TForm;
//Создаем форму и соотв. компоненты на ней ...
Var
  Yes : boolean;
begin
  Yes := FALSE;
  Result := TForm.Create(nil);

  TRY
    //------------------------
    //Свойства формы
    Result.Caption     := 'Item Painter v 0.2 by ArchDevil';
    Result.Left        := 397;
    Result.Top         := 233;
    Result.Width       := 350;
    Result.Height      := 230;
    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;
    //......................................
    //......................................
    //Stats
    Stats := TMemo.Create(Result);
    Stats.Parent := Result;
    Stats.Left    := 0;
    Stats.Top     := 160;
    Stats.Width   := 350;
    Stats.Height  := 70;
    Stats.Visible := TRUE;
    Stats.Tag     := 0;
    Stats.Enabled  := TRUE;
    Stats.Hint     := '';
    Stats.ShowHint := FALSE;
    Stats.Font.Name  := 'Tahoma';
    Stats.Font.Size  := 8;
    Stats.Font.Color := clWindowText;
    Stats.Color         := clWindow;
    Stats.TabOrder      := 0;
    Stats.TabStop       := TRUE;
    Stats.Align         := alBottom;
    Stats.WordWrap      := TRUE;
    Stats.Alignment     := taLeftJustify;
    Stats.WantTabs      := FALSE;
    Stats.WantReturns   := TRUE;
    Stats.HideSelection := TRUE;
    Stats.MaxLength     := 0;
    Stats.OEMConvert    := FALSE;
    Stats.ReadOnly      := FALSE;
    Stats.ScrollBars    := ssNone;
    //......................................
    //......................................
    //Panel1
    Panel1 := TPanel.Create(Result);
    Panel1.Parent := Result;
    Panel1.Left    := 0;
    Panel1.Top     := 0;
    Panel1.Width   := 350;
    Panel1.Height  := 160;
    Panel1.Visible := TRUE;
    Panel1.Tag     := 0;
    Panel1.Enabled  := TRUE;
    Panel1.Hint     := '';
    Panel1.ShowHint := FALSE;
    Panel1.Caption    := '';
    Panel1.Align      := alClient;
    Panel1.Color      := clBtnFace;
    Panel1.Font.Name  := 'Tahoma';
    Panel1.Font.Size  := 8;
    Panel1.Font.Color := clWindowText;
    Panel1.Font.CharSet := 1;
    Panel1.BevelWidth   := 1;
    Panel1.BorderWidth  := 0;
    Panel1.BevelInner   := bvNone;
    Panel1.BevelOuter   := bvRaised;
    Panel1.TabOrder     := 2;
    Panel1.TabStop      := FALSE;
    Panel1.AutoSize     := FALSE;
    //......................................
    //......................................
    //GroupBox1
    GroupBox1 := TGroupBox.Create(Result);
    GroupBox1.Parent := Panel1;
    GroupBox1.Left    := 1;
    GroupBox1.Top     := 1;
    GroupBox1.Width   := 160;
    GroupBox1.Height  := 160;
    GroupBox1.Visible := TRUE;
    GroupBox1.Tag     := 0;
    GroupBox1.Enabled  := TRUE;
    GroupBox1.Hint     := '';
    GroupBox1.ShowHint := FALSE;
    GroupBox1.Caption    := 'Рисунок';
    GroupBox1.Align      := alLeft;
    GroupBox1.Color      := clBtnFace;
    GroupBox1.Font.Name  := 'Tahoma';
    GroupBox1.Font.Size  := 8;
    GroupBox1.Font.Color := clWindowText;
    GroupBox1.Font.CharSet := 1;
    GroupBox1.TabOrder     := 0;
    GroupBox1.TabStop      := FALSE;
        //......................................
    //......................................
    //GroupBox2
    GroupBox2 := TGroupBox.Create(Result);
    GroupBox2.Parent := Panel1;
    GroupBox2.Left    := 1;
    GroupBox2.Top     := 1;
    GroupBox2.Width   := 180;
    GroupBox2.Height  := 160;
    GroupBox2.Visible := TRUE;
    GroupBox2.Tag     := 0;
    GroupBox2.Enabled  := TRUE;
    GroupBox2.Hint     := '';
    GroupBox2.ShowHint := FALSE;
    GroupBox2.Caption    := 'Настройки';
    GroupBox2.Align      := alLeft;
    GroupBox2.Color      := clBtnFace;
    GroupBox2.Font.Name  := 'Tahoma';
    GroupBox2.Font.Size  := 8;
    GroupBox2.Font.Color := clWindowText;
    GroupBox2.Font.CharSet := 1;
    GroupBox2.TabOrder     := 0;
    GroupBox2.TabStop      := FALSE;
    //......................................
    //......................................
    //ComboBoxColor
    ComboBoxColor := TComboBox.Create(Result);
    ComboBoxColor.Parent := GroupBox2;
    ComboBoxColor.Left    := 38;
    ComboBoxColor.Top     := 19;
    ComboBoxColor.Width   := 70;
    ComboBoxColor.Height  := 21;
    ComboBoxColor.Visible := TRUE;
    ComboBoxColor.Tag     := 0;
    ComboBoxColor.Enabled  := TRUE;
    ComboBoxColor.Hint     := 'Выбери из списка цвет соответствующий предмету ниже';
    ComboBoxColor.ShowHint := TRUE;
    ComboBoxColor.Text       := 'ComboBoxColor';
    ComboBoxColor.Font.Name  := 'Tahoma';
    ComboBoxColor.Font.Size  := 8;
    ComboBoxColor.Font.Color := clWindowText;
    ComboBoxColor.Color          := clWindow;
    ComboBoxColor.TabOrder       := 1;
    ComboBoxColor.TabStop        := TRUE;
    ComboBoxColor.Sorted         := FALSE;
    ComboBoxColor.ItemHeight     := 13;
    ComboBoxColor.Items.ADD('Черный');
    ComboBoxColor.Items.ADD('Красный');
    ComboBoxColor.Items.ADD('Зеленый');
    ComboBoxColor.Items.ADD('Синий');
    ComboBoxColor.Items.ADD('Желтый');
    ComboBoxColor.ItemIndex := 0;
    //......................................
    //......................................
    //ComboBoxScale
    ComboBoxScale := TComboBox.Create(Result);
    ComboBoxScale.Parent := GroupBox2;
    ComboBoxScale.Left    := 128;
    ComboBoxScale.Top     := 19;
    ComboBoxScale.Width   := 45;
    ComboBoxScale.Height  := 21;
    ComboBoxScale.Visible := TRUE;
    ComboBoxScale.Tag     := 0;
    ComboBoxScale.Enabled  := TRUE;
    ComboBoxScale.Hint     := 'Выбери из списка масштаб';
    ComboBoxScale.ShowHint := TRUE;
    ComboBoxScale.Text       := 'ComboBoxScale';
    ComboBoxScale.Font.Name  := 'Tahoma';
    ComboBoxScale.Font.Size  := 8;
    ComboBoxScale.Font.Color := clWindowText;
    ComboBoxScale.Color          := clWindow;
    ComboBoxScale.TabOrder       := 1;
    ComboBoxScale.TabStop        := TRUE;
    ComboBoxScale.Sorted         := FALSE;
    ComboBoxScale.ItemHeight     := 13;
    ComboBoxScale.Items.ADD('1:1');
    ComboBoxScale.Items.ADD('2:1');
    ComboBoxScale.Items.ADD('3:1');
    ComboBoxScale.Items.ADD('4:1');
    ComboBoxScale.Items.ADD('5:1');
    ComboBoxScale.Items.ADD('6:1');
    ComboBoxScale.Items.ADD('7:1');
    ComboBoxScale.Items.ADD('8:1');
    ComboBoxScale.Items.ADD('9:1');
    ComboBoxScale.Items.ADD('10:1');
    ComboBoxScale.ItemIndex := 4;
    //......................................
    //......................................
    //ComboBoxDirection
    ComboBoxDirection := TComboBox.Create(Result);
    ComboBoxDirection.Parent := GroupBox2;
    ComboBoxDirection.Left    := 38;
    ComboBoxDirection.Top     := 67;
    ComboBoxDirection.Width   := 135;
    ComboBoxDirection.Height  := 21;
    ComboBoxDirection.Visible := TRUE;
    ComboBoxDirection.Tag     := 0;
    ComboBoxDirection.Enabled  := TRUE;
    ComboBoxDirection.Text       := 'ComboBoxDirection';
    ComboBoxDirection.Font.Name  := 'Tahoma';
    ComboBoxDirection.Font.Size  := 8;
    ComboBoxDirection.Font.Color := clWindowText;
    ComboBoxDirection.Color          := clWindow;
    ComboBoxDirection.TabOrder       := 1;
    ComboBoxDirection.TabStop        := TRUE;
    ComboBoxDirection.Sorted         := FALSE;
    ComboBoxDirection.ItemHeight     := 13;
    ComboBoxDirection.Items.ADD('Север');
    ComboBoxDirection.Items.ADD('Северо-Восток');
    ComboBoxDirection.Items.ADD('Восток');
    ComboBoxDirection.Items.ADD('Юго-Восток');
    ComboBoxDirection.Items.ADD('Юг');
    ComboBoxDirection.Items.ADD('Юго-Запад');
    ComboBoxDirection.Items.ADD('Запад');
    ComboBoxDirection.Items.ADD('Северо-Запад');
    ComboBoxDirection.ItemIndex          := 0;
    //......................................
    //......................................
    //ComboBoxItem
    ComboBoxItem := TComboBox.Create(Result);
    ComboBoxItem.Parent := GroupBox2;
    ComboBoxItem.Left    := 38;
    ComboBoxItem.Top     := 43;
    ComboBoxItem.Width   := 135;
    ComboBoxItem.Height  := 21;
    ComboBoxItem.Visible := TRUE;
    ComboBoxItem.Tag     := 0;
    ComboBoxItem.Enabled  := TRUE;
    ComboBoxItem.Hint     := 'Выбери из списка затачиваемый предмет';
    ComboBoxItem.ShowHint := TRUE;
    ComboBoxItem.Text       := 'ComboBoxItem';
    ComboBoxItem.Font.Name  := 'Tahoma';
    ComboBoxItem.Font.Size  := 8;
    ComboBoxItem.Font.Color := clWindowText;
    ComboBoxItem.Color          := clWindow;
    ComboBoxItem.TabOrder       := 1;
    ComboBoxItem.TabStop        := TRUE;
    ComboBoxItem.ItemIndex          := -1;
    ComboBoxItem.Sorted         := FALSE;
    ComboBoxItem.ItemHeight     := 13;
    ComboBoxItem.OnClick     := @ComboBoxItem_Click;
    //......................................
    //......................................
    //Label1
    Label1 := TLabel.Create(Result);
    Label1.Parent := GroupBox2;
    Label1.Left    := 6;
    Label1.Top     := 23;
    Label1.Width   := 58;
    Label1.Height  := 13;
    Label1.Visible := TRUE;
    Label1.Tag     := 0;
    Label1.Enabled  := TRUE;
    Label1.Hint     := '';
    Label1.ShowHint := FALSE;
    Label1.Caption     := 'Цвет:';
    Label1.Transparent := TRUE;
    Label1.WordWrap    := FALSE;
    Label1.Alignment   := taLeftJustify;
    Label1.Layout      := tlTop;
    Label1.AutoSize    := TRUE;
    Label1.Align       := alNone;
    Label1.Font.Name   := 'Tahoma';
    Label1.Font.Size   := 8;
    Label1.Font.Color  := clWindowText;
    Label1.Color       := clBtnFace;
    //......................................
    //......................................
    //Label2
    Label2 := TLabel.Create(Result);
    Label2.Parent := GroupBox2;
    Label2.Left    := 6;
    Label2.Top     := 47;
    Label2.Width   := 58;
    Label2.Height  := 13;
    Label2.Visible := TRUE;
    Label2.Tag     := 0;
    Label2.Enabled  := TRUE;
    Label2.Hint     := '';
    Label2.ShowHint := FALSE;
    Label2.Caption     := 'Итем:';
    Label2.Transparent := TRUE;
    Label2.WordWrap    := FALSE;
    Label2.Alignment   := taLeftJustify;
    Label2.Layout      := tlTop;
    Label2.AutoSize    := TRUE;
    Label2.Align       := alNone;
    Label2.Font.Name   := 'Tahoma';
    Label2.Font.Size   := 8;
    Label2.Font.Color  := clWindowText;
    Label2.Color       := clBtnFace;
    //......................................
    //......................................
    //Label3
    Label3 := TLabel.Create(Result);
    Label3.Parent := GroupBox2;
    Label3.Left    := 114;
    Label3.Top     := 23;
    Label3.Width   := 58;
    Label3.Height  := 13;
    Label3.Visible := TRUE;
    Label3.Tag     := 0;
    Label3.Enabled  := TRUE;
    Label3.Hint     := '';
    Label3.ShowHint := FALSE;
    Label3.Caption     := 'М:';
    Label3.Transparent := TRUE;
    Label3.WordWrap    := FALSE;
    Label3.Alignment   := taLeftJustify;
    Label3.Layout      := tlTop;
    Label3.AutoSize    := TRUE;
    Label3.Align       := alNone;
    Label3.Font.Name   := 'Tahoma';
    Label3.Font.Size   := 8;
    Label3.Font.Color  := clWindowText;
    Label3.Color       := clBtnFace;
    //......................................
    //......................................
    //Label4
    Label4 := TLabel.Create(Result);
    Label4.Parent := GroupBox2;
    Label4.Left    := 6;
    Label4.Top     := 71;
    Label4.Width   := 58;
    Label4.Height  := 13;
    Label4.Visible := TRUE;
    Label4.Tag     := 0;
    Label4.Enabled  := TRUE;
    Label4.Hint     := '';
    Label4.ShowHint := FALSE;
    Label4.Caption     := 'Напр.:';
    Label4.Transparent := TRUE;
    Label4.WordWrap    := FALSE;
    Label4.Alignment   := taLeftJustify;
    Label4.Layout      := tlTop;
    Label4.AutoSize    := TRUE;
    Label4.Align       := alNone;
    Label4.Font.Name   := 'Tahoma';
    Label4.Font.Size   := 8;
    Label4.Font.Color  := clWindowText;
    Label4.Color       := clBtnFace;
    //......................................
    //......................................
    //Path
    Path := TEdit.Create(Result);
    Path.Parent := GroupBox1;
    Path.Left    := 5;
    Path.Top     := 103;
    Path.Width   := 117;
    Path.Height  := 20;
    Path.Visible := TRUE;
    Path.Tag     := 0;
    Path.Enabled  := TRUE;
    Path.Hint     := 'Введи путь к файлу BMP';
    Path.ShowHint := TRUE;
    Path.Text       := '';
    Path.Font.Name  := 'Tahoma';
    Path.Font.Size  := 7;
    Path.Font.Color := clWindowText;
    Path.Color        := clWindow;
    Path.TabOrder     := 5;
    Path.TabStop      := TRUE;
    Path.ReadOnly     := FALSE;
    Path.MaxLength    := 0;
    Path.AutoSize     := TRUE;
    Path.OnKeyPress   := @Path_Key;
    //......................................
    //......................................
    //LoadImage
    LoadedImage:= TImage.Create(Result);
    LoadedImage.Parent:=GroupBox1;
    LoadedImage.Left :=5;
    LoadedImage.Top := 16;
    LoadedImage.Width := 150;
    LoadedImage.Height := 90;
    LoadedImage.Visible := TRUE;
    LoadedImage.Tag := 0;
    LoadedImage.Enabled := TRUE;
    LoadedImage.Hint := '';
    LoadedImage.ShowHint := FALSE;
    LoadedImage.Center := TRUE;
    LoadedImage.Proportional := TRUE;
    //......................................
    //......................................
    //LoadButton
    LoadButton := TButton.Create(Result);
    LoadButton.Parent := GroupBox1;
    LoadButton.Left    := 124;
    LoadButton.Top     := 102;
    LoadButton.Width   := 32;
    LoadButton.Height  := 21;
    LoadButton.Visible := TRUE;
    LoadButton.Tag     := 0;
    LoadButton.Enabled  := TRUE;
    LoadButton.Hint     := '';
    LoadButton.ShowHint := FALSE;
    LoadButton.Caption    := '...';
    LoadButton.Font.Name  := 'Tahoma';
    LoadButton.Font.Size  := 8;
    LoadButton.Font.Color := clWindowText;
    LoadButton.Font.CharSet := 1;
    LoadButton.TabOrder     := 2;
    LoadButton.TabStop      := TRUE;
    LoadButton.Cancel       := FALSE;
    LoadButton.ModalResult  := 0;
    LoadButton.OnClick     := @LoadButton_Click;
    //......................................
    //......................................
    //StartButton
    StartButton := TButton.Create(Result);
    StartButton.Parent := GroupBox2;
    StartButton.Left    := 6;
    StartButton.Top     := 102;
    StartButton.Width   := 80;
    StartButton.Height  := 21;
    StartButton.Visible := TRUE;
    StartButton.Tag     := 0;
    StartButton.Enabled  := TRUE;
    StartButton.Hint     := '';
    StartButton.ShowHint := FALSE;
    StartButton.Caption    := 'Старт';
    StartButton.Font.Name  := 'Tahoma';
    StartButton.Font.Size  := 8;
    StartButton.Font.Color := clWindowText;
    StartButton.Font.CharSet := 1;
    StartButton.TabOrder     := 2;
    StartButton.TabStop      := TRUE;
    StartButton.Cancel       := FALSE;
    StartButton.ModalResult  := 0;
    StartButton.OnClick     := @StartButton_Click;
    //......................................
    //......................................
    //StopButton
    StopButton := TButton.Create(Result);
    StopButton.Parent := GroupBox2;
    StopButton.Left    := 96;
    StopButton.Top     := 102;
    StopButton.Width   := 80;
    StopButton.Height  := 21;
    StopButton.Visible := TRUE;
    StopButton.Tag     := 0;
    StopButton.Enabled  := TRUE;
    StopButton.Hint     := '';
    StopButton.ShowHint := FALSE;
    StopButton.Caption    := 'Стоп';
    StopButton.Font.Name  := 'Tahoma';
    StopButton.Font.Size  := 8;
    StopButton.Font.Color := clWindowText;
    StopButton.Font.CharSet := 1;
    StopButton.TabOrder     := 3;
    StopButton.TabStop      := TRUE;
    StopButton.Cancel       := FALSE;
    StopButton.ModalResult  := 0;
    StopButton.OnClick     := @StopButton_Click;
    //......................................
    Yes := TRUE;
  FINALLY
    if not Yes then begin
       //Освобождаем ресурсы, если неудачно ...
       if Result<>NIL then begin
          Result.Free;
          Result:=NIL;
       end;
    end;
  END;
  Result.Show;
end;
procedure Init; //Вызывается при включении скрипта
begin
  FormMain:=Create_FormMain;
  stats.Lines.Add('Скрипт: Рисование предметами by ArchDevil!');
  timer:=TTimer.Create(nil);
  timer.OnTimer:=@OnTimer;
  timer.enabled:=false;
  timer.interval:=700; //время задержки
  ready:=false;
  StringList:=TStringList.Create;
  ItemsName:=TStringList.Create;
  try
    ItemsName.LoadFromFile('itemsid.ini');
  except
    stats.Lines.Add('itemsid.ini не найден!');
    exit;
  end;
  buf:=hstr('0F');
  SendToServerEx(Name);
end;
procedure bmpfree;
begin
  try
   if bmp<>NIL then
   begin
   bmp.Free;
   bmp:=NIL;
   end;
  finally
  end;
end;
procedure Free;
var i:integer;
begin
Free_FormMain; bmpfree;
StringList.Clear; ItemsName.Clear;
timer.Free;
if LoadedImage<>NIL then LoadedImage:=NIL;
currentx:=0; currenty:=0; StartX:=0; StartY:=0;
StartZ:=0; MyX:=0; MyY:=0; ItemOID:=0;
ready:=false;
for i:=1 to 5 do begin
SelectedItems[1,i]:=0;
SelectedItems[2,i]:=0;
SelectedItems[3,i]:=0;
end;
end;
//CreateItemBase и InventoryUpdate Взял со скрипта NLObP на заточку
//---------------------------------------------
procedure CreateItemBase;
var
  i, j, ListCount : integer;
begin
  for i:=1 to max do begin
    //очищаем масив
    ItemBase[1,i]:=0;     //OID
    ItemBase[2,i]:=0;    //ID
    ItemBase[3,i]:=0;   //kol-vo
  end;
  j:=4;
  ListCount:=ReadH(j);
  j:=8;
  for i:=1 to ListCount do begin
    ItemBase[1,i]:=ReadD(j);
    ItemBase[2,i]:=ReadD(j);
    ItemBase[3,i]:=ReadD(j);
    if interlude then inc(j,24) else inc(j,16);
  end;
  StringList.Clear;
  try
    for i:=1 to ListCount do begin
      try
        StringList.Add(ItemsName.Values[IntToStr(ItemBase[2,i])]); //записываем название вещей из инвентаря
      except;
      end
    end;
  except;
    exit;
  end;
    with ComboBoxItem do
    begin
      Items.Clear;
      Items.Assign(StringList);
      ItemIndex:=0;
    end;
end;
//......................................
//******************************************************************************
procedure InventoryUpdate; //пакет 27, обновляет базу ObjectID по ItemID
var
  i, ii, j, OID, ID, Count, ListCount, UpdType: integer;
  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); //кол-во
    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;
             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;
           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;
           end;
         end;
      end;
    end;
    if interlude then inc(j,22) else inc(j,14);
  end;
end;
//------------------------------------
function GetCount(OID:integer) : integer;
var
  i : integer;
begin
  for i:=1 to max do begin
    if ItemBase[1,i]=OID then begin
      result:=ItemBase[3,i]; // count
      exit;
    end;
  end;
  result:=0;
end;
//--------------------------------------------
function delta(x1, y1, x2, y2:extended):integer; //возвращает растоянием между 2 точками
var
  dx,dy,summa: extended;
begin
  dx:=x2-x1;
  dy:=y2-y1;
  summa:=dx*dx+dy*dy;
  if summa=0 then result:=0 else result:=Round(sqrt(summa));
end;
//--------------------------------------------
procedure OnTimer(Sender: TObject);
//====================
procedure GetNextCoords;
begin
case ComboBoxDirection.ItemIndex of
0: begin
     NextX:=StartX+currentx*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY+currenty*(ComboBoxScale.ItemIndex+1);
   end;
1: begin
     NextX:=StartX+currentx*(ComboBoxScale.ItemIndex+1)-currenty*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY+currenty*(ComboBoxScale.ItemIndex+1)+currentx*(ComboBoxScale.ItemIndex+1);
   end;
2: begin
     NextX:=StartX-currenty*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY+currentx*(ComboBoxScale.ItemIndex+1);
   end;
3: begin
     NextX:=StartX-currentx*(ComboBoxScale.ItemIndex+1)-currenty*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY-currenty*(ComboBoxScale.ItemIndex+1)+currentx*(ComboBoxScale.ItemIndex+1);
   end;
4: begin
     NextX:=StartX-currentx*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY-currenty*(ComboBoxScale.ItemIndex+1);
   end;
5: begin
     NextX:=StartX-currentx*(ComboBoxScale.ItemIndex+1)+currenty*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY-currenty*(ComboBoxScale.ItemIndex+1)-currentx*(ComboBoxScale.ItemIndex+1);
   end;
6: begin
     NextX:=StartX+currenty*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY-currentx*(ComboBoxScale.ItemIndex+1);
   end;
7: begin
     NextX:=StartX+currentx*(ComboBoxScale.ItemIndex+1)+currenty*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY+currenty*(ComboBoxScale.ItemIndex+1)-currentx*(ComboBoxScale.ItemIndex+1);
   end;
 end;
end;
//====================
begin
ItemOID:=0;
repeat
if currentx=bmp.width-1 then
begin
inc(currenty);
currentx:=0;
end else inc(currentx);
if currenty=bmp.height then
begin
timer.enabled:=false;
stats.lines.add('Остановлено! Рисунок нарисован!');
StartButton.enabled:=true;
exit;
end;
case bmp.Canvas.pixels[currentx,currenty] of //матрица пикселей
clBlack: if (SelectedItems[1,1]>0) and (GetCount(SelectedItems[1,1])>0) then ItemOID:=SelectedItems[1,1];
clRed:   if (SelectedItems[1,2]>0) and (GetCount(SelectedItems[1,2])>0) then ItemOID:=SelectedItems[1,2];
clGreen: if (SelectedItems[1,3]>0) and (GetCount(SelectedItems[1,3])>0) then ItemOID:=SelectedItems[1,3];
clBlue:  if (SelectedItems[1,4]>0) and (GetCount(SelectedItems[1,4])>0) then ItemOID:=SelectedItems[1,4];
clYellow:if (SelectedItems[1,5]>0) and (GetCount(SelectedItems[1,5])>0) then ItemOID:=SelectedItems[1,5];
end;
until ItemOID<>0;
if ItemOID=0 then exit;
stats.lines.add('Текущий элемент матрицы: x='+inttostr(currentx)+', y='+inttostr(currenty)+'.');
GetNextCoords;
if delta(MyX,MyY,NextX,NextY)>MaxDistance then begin  //расстояние между точками
buf:=#$01;
WriteD(NextX);
writeD(NextY);
WriteD(MyZ);
WriteD(MyX);
WriteD(MyY);
WriteD(MyZ);
WriteD(1);
SendToServerEx(Name);
timer.enabled:=false; //Отключаем на время передвижения
ready:=true;
exit;
end;
buf:=#$12;
WriteD(ItemOID);
WriteD(1);
WriteD(NextX);
WriteD(NextY);
WriteD(MyZ);
SendToServerEx(Name);
end;
//--------------------------------------------
begin
if FromClient and (ConnectName=Name) then
case pck[1] of
     #$48: begin
             MyX:=ReadD(2); // постоянно считываем координаты чара
             MyY:=ReadD(6);
             if ready and (delta(Myx,Myy,NextX,NextY)<MaxDistance/2) then begin //Меньше 100 можно включать таймер
             buf:=#$12; //Выкидываем предмет который не выкинули когда дельта привышала 240
             WriteD(ItemOID);
             WriteD(1);
             WriteD(NextX);
             WriteD(NextY);
             WriteD(MyZ);
             SendToServerEx(Name);
             ready:=false;
             timer.enabled:=true;
             end;
           end;
end;
if FromServer and (ConnectName=Name) then
case pck[1] of
    #$1B: CreateItemBase; //создание базы предметов
     //......................................
    #$27: InventoryUpdate; //Обновление базы
    #$64: if (StartButton.enabled=false) and (timer.enabled=false) and (ReadD(6)=3) then
          begin
            StartX:=ReadD(14); //Считываются только 1 раз
            StartY:=ReadD(22);
            StartZ:=ReadD(30);
            MyX:=StartX;
            MyY:=StartY;
            MyZ:=StartZ;
            timer.enabled:=true;//Вот теперь включаем таймер
          end;
end;
end.
ItemPainter для Gracia Part2
Код:
Program ItemPainter;
//------------------------------------------------------------------
//Скрипт для рисования предметами для Gracia part 2
//В Name ввдите ник
//Нарисуйте картинку в любом графическом редакторе.
//В поле "Путь к фалу" введите путь к этому файлу и нажмите Load
//Черный,красный,зеленый,голубой,желтый цвета пикселей можно привязать к отдельному предмету
//Выберите цвет в боксе color, затем предмет в боксе Item (предметов должно быть>1 чтобы они появились в списке)
//scale - масштаб отступа между предметами от 1:1 до 10:1
//Самый оптимальный масштаб 5:1
//Направление - согласно компасу в игре
const
Name='Perforator';
MaxDistance=150; //Максимальное расстояние на которое можно бросить итем
max=80; //Вместимость инвентаря
var
bmp:TBitMap; //Картинка
ItemBase:  array[1..3,1..max] of integer; //Массив предметов заполняется процедурой CreateItemBase
SelectedItems: array[1..3,1..5] of integer; //Массив Object ID предметов [i,j] i=1 - OID,2-ID,3 - Count; j - # цвета
currentx,currenty,StartX,StartY,StartZ,MyX,MyY,MyZ,NextX,NextY,ItemOID:integer;
//Теущие координаты x и y;координаты начала отчета x,y,z; Мои координаты x y обнавляются при Validate Position
ready:boolean;
timer : TTimer;
FormMain:TForm;
Stats : TMemo;
Panel1 : TPanel;
GroupBox1,GroupBox2 : TGroupBox;
ComboBoxColor,ComboBoxScale,ComboboxItem,ComboBoxDirection:TComboBox;
Label1,Label2,Label3,Label4:TLabel;
Path:TEdit;
LoadedImage:TImage;
LoadButton,StartButton,StopButton:TButton;
ItemsName,StringList:TStringList;
//......................................
//......................................
//......................................
//ComboBoxItem
procedure ComboBoxItem_Click(Sender: TComboBox);
var i,count,index:integer;
begin
count:=0;
if SelectedItems[2,ComboBoxColor.ItemIndex+1]=ItemBase[2,ComboBoxItem.ItemIndex+1] then exit;
for i:=1 to 5 do if SelectedItems[2,i]=ItemBase[2,ComboBoxItem.ItemIndex+1] then inc(count);
if Count>0 then begin
stats.lines.add('Ошибка! Нельзя добавлять одинаковые предметы в разные цвета.');
exit;
end;
SelectedItems[1,ComboBoxColor.ItemIndex+1]:=ItemBase[1,ComboBoxItem.ItemIndex+1];
SelectedItems[2,ComboBoxColor.ItemIndex+1]:=ItemBase[2,ComboBoxItem.ItemIndex+1];
SelectedItems[3,ComboBoxColor.ItemIndex+1]:=ItemBase[3,ComboBoxItem.ItemIndex+1];
index:=ComboBoxItem.ItemIndex;
for i:=0 to StringList.Count-1 do if Pos(' - '+ComboBoxColor.Items.Strings[ComboBoxColor.ItemIndex],ComboBoxItem.Items.Strings[i])>0 then
ComboBoxItem.Items.Strings[i]:=StringList.Strings[i];
ComboBoxItem.Items.Strings[index]:=ComboBoxItem.Items.Strings[ComboBoxItem.ItemIndex]+' - '+ComboBoxColor.Items.Strings[ComboBoxColor.ItemIndex];
ComboBoxItem.ItemIndex:=index;
end;
//----------------------------------------
procedure StartButton_Click(Sender: TButton);
//Event : OnClick
begin
if bmp=NIL then stats.lines.add('Картинка не загружена!') else
begin
stats.lines.add('Старт!');
StartButton.enabled:=false;
currentx:=-1;
currenty:=0;
buf:=#$B3;
WriteD(0);
SendToServerEx(Name);
end;
end;
//......................................
//ButtonStopEnchant
procedure StopButton_Click(Sender: TButton);
//Event : OnClick
begin
StartButton.enabled:=true;
stats.lines.add('Стоп!');
timer.enabled:=false;
ready:=false;
end;
procedure bmpload;
begin
  bmpfree;
  bmp:=TBitMap.Create;
  try
  bmp.LoadFromFile(path.text);
  except
  bmp.Free;
  stats.lines.add('Ошибка загрузки файла!');
  exit;
  end;
  stats.lines.add('Картинка успешно загружена!');
  LoadedImage.Picture.assign(bmp);
end;
procedure LoadButton_Click(Sender: TButton);
var openDialog : TOpenDialog;
begin
  openDialog := TOpenDialog.Create(NIL);
  openDialog.Filter := 'Bitmap files|*.bmp';
  openDialog.FilterIndex := 1;
  openDialog.DefaultExt:='bmp';
  openDialog.Options:=ofNoChangeDir+ofFileMustExist+ofPathMustExist;
  if openDialog.Execute then path.text:=openDialog.FileName else begin
  openDialog.Free;
  exit;
  end;
  openDialog.Free;
  bmpload;
end;
procedure Path_key(Sender: TEdit; Key: Char);
begin
if ord(key)=13 then begin
bmpload;
end;
end;
procedure Free_FormMain;
//Освобождаем ресурсы ...
begin
  TRY
    if FormMain<>NIL then begin
       FormMain.Free;
       FormMain:=NIL;
    end;
  FINALLY
  END;
end;
function Create_FormMain : TForm;
//Создаем форму и соотв. компоненты на ней ...
Var
  Yes : boolean;
begin
  Yes := FALSE;
  Result := TForm.Create(nil);

  TRY
    //------------------------
    //Свойства формы
    Result.Caption     := 'Item Painter v 0.2 by ArchDevil';
    Result.Left        := 397;
    Result.Top         := 233;
    Result.Width       := 350;
    Result.Height      := 230;
    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;
    //......................................
    //......................................
    //Stats
    Stats := TMemo.Create(Result);
    Stats.Parent := Result;
    Stats.Left    := 0;
    Stats.Top     := 160;
    Stats.Width   := 350;
    Stats.Height  := 70;
    Stats.Visible := TRUE;
    Stats.Tag     := 0;
    Stats.Enabled  := TRUE;
    Stats.Hint     := '';
    Stats.ShowHint := FALSE;
    Stats.Font.Name  := 'Tahoma';
    Stats.Font.Size  := 8;
    Stats.Font.Color := clWindowText;
    Stats.Color         := clWindow;
    Stats.TabOrder      := 0;
    Stats.TabStop       := TRUE;
    Stats.Align         := alBottom;
    Stats.WordWrap      := TRUE;
    Stats.Alignment     := taLeftJustify;
    Stats.WantTabs      := FALSE;
    Stats.WantReturns   := TRUE;
    Stats.HideSelection := TRUE;
    Stats.MaxLength     := 0;
    Stats.OEMConvert    := FALSE;
    Stats.ReadOnly      := FALSE;
    Stats.ScrollBars    := ssNone;
    //......................................
    //......................................
    //Panel1
    Panel1 := TPanel.Create(Result);
    Panel1.Parent := Result;
    Panel1.Left    := 0;
    Panel1.Top     := 0;
    Panel1.Width   := 350;
    Panel1.Height  := 160;
    Panel1.Visible := TRUE;
    Panel1.Tag     := 0;
    Panel1.Enabled  := TRUE;
    Panel1.Hint     := '';
    Panel1.ShowHint := FALSE;
    Panel1.Caption    := '';
    Panel1.Align      := alClient;
    Panel1.Color      := clBtnFace;
    Panel1.Font.Name  := 'Tahoma';
    Panel1.Font.Size  := 8;
    Panel1.Font.Color := clWindowText;
    Panel1.Font.CharSet := 1;
    Panel1.BevelWidth   := 1;
    Panel1.BorderWidth  := 0;
    Panel1.BevelInner   := bvNone;
    Panel1.BevelOuter   := bvRaised;
    Panel1.TabOrder     := 2;
    Panel1.TabStop      := FALSE;
    Panel1.AutoSize     := FALSE;
    //......................................
    //......................................
    //GroupBox1
    GroupBox1 := TGroupBox.Create(Result);
    GroupBox1.Parent := Panel1;
    GroupBox1.Left    := 1;
    GroupBox1.Top     := 1;
    GroupBox1.Width   := 160;
    GroupBox1.Height  := 160;
    GroupBox1.Visible := TRUE;
    GroupBox1.Tag     := 0;
    GroupBox1.Enabled  := TRUE;
    GroupBox1.Hint     := '';
    GroupBox1.ShowHint := FALSE;
    GroupBox1.Caption    := 'Рисунок';
    GroupBox1.Align      := alLeft;
    GroupBox1.Color      := clBtnFace;
    GroupBox1.Font.Name  := 'Tahoma';
    GroupBox1.Font.Size  := 8;
    GroupBox1.Font.Color := clWindowText;
    GroupBox1.Font.CharSet := 1;
    GroupBox1.TabOrder     := 0;
    GroupBox1.TabStop      := FALSE;
        //......................................
    //......................................
    //GroupBox2
    GroupBox2 := TGroupBox.Create(Result);
    GroupBox2.Parent := Panel1;
    GroupBox2.Left    := 1;
    GroupBox2.Top     := 1;
    GroupBox2.Width   := 180;
    GroupBox2.Height  := 160;
    GroupBox2.Visible := TRUE;
    GroupBox2.Tag     := 0;
    GroupBox2.Enabled  := TRUE;
    GroupBox2.Hint     := '';
    GroupBox2.ShowHint := FALSE;
    GroupBox2.Caption    := 'Настройки';
    GroupBox2.Align      := alLeft;
    GroupBox2.Color      := clBtnFace;
    GroupBox2.Font.Name  := 'Tahoma';
    GroupBox2.Font.Size  := 8;
    GroupBox2.Font.Color := clWindowText;
    GroupBox2.Font.CharSet := 1;
    GroupBox2.TabOrder     := 0;
    GroupBox2.TabStop      := FALSE;
    //......................................
    //......................................
    //ComboBoxColor
    ComboBoxColor := TComboBox.Create(Result);
    ComboBoxColor.Parent := GroupBox2;
    ComboBoxColor.Left    := 38;
    ComboBoxColor.Top     := 19;
    ComboBoxColor.Width   := 70;
    ComboBoxColor.Height  := 21;
    ComboBoxColor.Visible := TRUE;
    ComboBoxColor.Tag     := 0;
    ComboBoxColor.Enabled  := TRUE;
    ComboBoxColor.Hint     := 'Выбери из списка цвет соответствующий предмету ниже';
    ComboBoxColor.ShowHint := TRUE;
    ComboBoxColor.Text       := 'ComboBoxColor';
    ComboBoxColor.Font.Name  := 'Tahoma';
    ComboBoxColor.Font.Size  := 8;
    ComboBoxColor.Font.Color := clWindowText;
    ComboBoxColor.Color          := clWindow;
    ComboBoxColor.TabOrder       := 1;
    ComboBoxColor.TabStop        := TRUE;
    ComboBoxColor.Sorted         := FALSE;
    ComboBoxColor.ItemHeight     := 13;
    ComboBoxColor.Items.ADD('Черный');
    ComboBoxColor.Items.ADD('Красный');
    ComboBoxColor.Items.ADD('Зеленый');
    ComboBoxColor.Items.ADD('Синий');
    ComboBoxColor.Items.ADD('Желтый');
    ComboBoxColor.ItemIndex := 0;
    //......................................
    //......................................
    //ComboBoxScale
    ComboBoxScale := TComboBox.Create(Result);
    ComboBoxScale.Parent := GroupBox2;
    ComboBoxScale.Left    := 128;
    ComboBoxScale.Top     := 19;
    ComboBoxScale.Width   := 45;
    ComboBoxScale.Height  := 21;
    ComboBoxScale.Visible := TRUE;
    ComboBoxScale.Tag     := 0;
    ComboBoxScale.Enabled  := TRUE;
    ComboBoxScale.Hint     := 'Выбери из списка масштаб';
    ComboBoxScale.ShowHint := TRUE;
    ComboBoxScale.Text       := 'ComboBoxScale';
    ComboBoxScale.Font.Name  := 'Tahoma';
    ComboBoxScale.Font.Size  := 8;
    ComboBoxScale.Font.Color := clWindowText;
    ComboBoxScale.Color          := clWindow;
    ComboBoxScale.TabOrder       := 1;
    ComboBoxScale.TabStop        := TRUE;
    ComboBoxScale.Sorted         := FALSE;
    ComboBoxScale.ItemHeight     := 13;
    ComboBoxScale.Items.ADD('1:1');
    ComboBoxScale.Items.ADD('2:1');
    ComboBoxScale.Items.ADD('3:1');
    ComboBoxScale.Items.ADD('4:1');
    ComboBoxScale.Items.ADD('5:1');
    ComboBoxScale.Items.ADD('6:1');
    ComboBoxScale.Items.ADD('7:1');
    ComboBoxScale.Items.ADD('8:1');
    ComboBoxScale.Items.ADD('9:1');
    ComboBoxScale.Items.ADD('10:1');
    ComboBoxScale.ItemIndex := 4;
    //......................................
    //......................................
    //ComboBoxDirection
    ComboBoxDirection := TComboBox.Create(Result);
    ComboBoxDirection.Parent := GroupBox2;
    ComboBoxDirection.Left    := 38;
    ComboBoxDirection.Top     := 67;
    ComboBoxDirection.Width   := 135;
    ComboBoxDirection.Height  := 21;
    ComboBoxDirection.Visible := TRUE;
    ComboBoxDirection.Tag     := 0;
    ComboBoxDirection.Enabled  := TRUE;
    ComboBoxDirection.Text       := 'ComboBoxDirection';
    ComboBoxDirection.Font.Name  := 'Tahoma';
    ComboBoxDirection.Font.Size  := 8;
    ComboBoxDirection.Font.Color := clWindowText;
    ComboBoxDirection.Color          := clWindow;
    ComboBoxDirection.TabOrder       := 1;
    ComboBoxDirection.TabStop        := TRUE;
    ComboBoxDirection.Sorted         := FALSE;
    ComboBoxDirection.ItemHeight     := 13;
    ComboBoxDirection.Items.ADD('Север');
    ComboBoxDirection.Items.ADD('Северо-Восток');
    ComboBoxDirection.Items.ADD('Восток');
    ComboBoxDirection.Items.ADD('Юго-Восток');
    ComboBoxDirection.Items.ADD('Юг');
    ComboBoxDirection.Items.ADD('Юго-Запад');
    ComboBoxDirection.Items.ADD('Запад');
    ComboBoxDirection.Items.ADD('Северо-Запад');
    ComboBoxDirection.ItemIndex          := 0;
    //......................................
    //......................................
    //ComboBoxItem
    ComboBoxItem := TComboBox.Create(Result);
    ComboBoxItem.Parent := GroupBox2;
    ComboBoxItem.Left    := 38;
    ComboBoxItem.Top     := 43;
    ComboBoxItem.Width   := 135;
    ComboBoxItem.Height  := 21;
    ComboBoxItem.Visible := TRUE;
    ComboBoxItem.Tag     := 0;
    ComboBoxItem.Enabled  := TRUE;
    ComboBoxItem.Hint     := 'Выбери из списка затачиваемый предмет';
    ComboBoxItem.ShowHint := TRUE;
    ComboBoxItem.Text       := 'ComboBoxItem';
    ComboBoxItem.Font.Name  := 'Tahoma';
    ComboBoxItem.Font.Size  := 8;
    ComboBoxItem.Font.Color := clWindowText;
    ComboBoxItem.Color          := clWindow;
    ComboBoxItem.TabOrder       := 1;
    ComboBoxItem.TabStop        := TRUE;
    ComboBoxItem.ItemIndex          := -1;
    ComboBoxItem.Sorted         := FALSE;
    ComboBoxItem.ItemHeight     := 13;
    ComboBoxItem.OnClick     := @ComboBoxItem_Click;
    //......................................
    //......................................
    //Label1
    Label1 := TLabel.Create(Result);
    Label1.Parent := GroupBox2;
    Label1.Left    := 6;
    Label1.Top     := 23;
    Label1.Width   := 58;
    Label1.Height  := 13;
    Label1.Visible := TRUE;
    Label1.Tag     := 0;
    Label1.Enabled  := TRUE;
    Label1.Hint     := '';
    Label1.ShowHint := FALSE;
    Label1.Caption     := 'Цвет:';
    Label1.Transparent := TRUE;
    Label1.WordWrap    := FALSE;
    Label1.Alignment   := taLeftJustify;
    Label1.Layout      := tlTop;
    Label1.AutoSize    := TRUE;
    Label1.Align       := alNone;
    Label1.Font.Name   := 'Tahoma';
    Label1.Font.Size   := 8;
    Label1.Font.Color  := clWindowText;
    Label1.Color       := clBtnFace;
    //......................................
    //......................................
    //Label2
    Label2 := TLabel.Create(Result);
    Label2.Parent := GroupBox2;
    Label2.Left    := 6;
    Label2.Top     := 47;
    Label2.Width   := 58;
    Label2.Height  := 13;
    Label2.Visible := TRUE;
    Label2.Tag     := 0;
    Label2.Enabled  := TRUE;
    Label2.Hint     := '';
    Label2.ShowHint := FALSE;
    Label2.Caption     := 'Итем:';
    Label2.Transparent := TRUE;
    Label2.WordWrap    := FALSE;
    Label2.Alignment   := taLeftJustify;
    Label2.Layout      := tlTop;
    Label2.AutoSize    := TRUE;
    Label2.Align       := alNone;
    Label2.Font.Name   := 'Tahoma';
    Label2.Font.Size   := 8;
    Label2.Font.Color  := clWindowText;
    Label2.Color       := clBtnFace;
    //......................................
    //......................................
    //Label3
    Label3 := TLabel.Create(Result);
    Label3.Parent := GroupBox2;
    Label3.Left    := 114;
    Label3.Top     := 23;
    Label3.Width   := 58;
    Label3.Height  := 13;
    Label3.Visible := TRUE;
    Label3.Tag     := 0;
    Label3.Enabled  := TRUE;
    Label3.Hint     := '';
    Label3.ShowHint := FALSE;
    Label3.Caption     := 'М:';
    Label3.Transparent := TRUE;
    Label3.WordWrap    := FALSE;
    Label3.Alignment   := taLeftJustify;
    Label3.Layout      := tlTop;
    Label3.AutoSize    := TRUE;
    Label3.Align       := alNone;
    Label3.Font.Name   := 'Tahoma';
    Label3.Font.Size   := 8;
    Label3.Font.Color  := clWindowText;
    Label3.Color       := clBtnFace;
    //......................................
    //......................................
    //Label4
    Label4 := TLabel.Create(Result);
    Label4.Parent := GroupBox2;
    Label4.Left    := 6;
    Label4.Top     := 71;
    Label4.Width   := 58;
    Label4.Height  := 13;
    Label4.Visible := TRUE;
    Label4.Tag     := 0;
    Label4.Enabled  := TRUE;
    Label4.Hint     := '';
    Label4.ShowHint := FALSE;
    Label4.Caption     := 'Напр.:';
    Label4.Transparent := TRUE;
    Label4.WordWrap    := FALSE;
    Label4.Alignment   := taLeftJustify;
    Label4.Layout      := tlTop;
    Label4.AutoSize    := TRUE;
    Label4.Align       := alNone;
    Label4.Font.Name   := 'Tahoma';
    Label4.Font.Size   := 8;
    Label4.Font.Color  := clWindowText;
    Label4.Color       := clBtnFace;
    //......................................
    //......................................
    //Path
    Path := TEdit.Create(Result);
    Path.Parent := GroupBox1;
    Path.Left    := 5;
    Path.Top     := 103;
    Path.Width   := 117;
    Path.Height  := 20;
    Path.Visible := TRUE;
    Path.Tag     := 0;
    Path.Enabled  := TRUE;
    Path.Hint     := 'Введи путь к файлу BMP';
    Path.ShowHint := TRUE;
    Path.Text       := '';
    Path.Font.Name  := 'Tahoma';
    Path.Font.Size  := 7;
    Path.Font.Color := clWindowText;
    Path.Color        := clWindow;
    Path.TabOrder     := 5;
    Path.TabStop      := TRUE;
    Path.ReadOnly     := FALSE;
    Path.MaxLength    := 0;
    Path.AutoSize     := TRUE;
    Path.OnKeyPress   := @Path_Key;
    //......................................
    //......................................
    //LoadImage
    LoadedImage:= TImage.Create(Result);
    LoadedImage.Parent:=GroupBox1;
    LoadedImage.Left :=5;
    LoadedImage.Top := 16;
    LoadedImage.Width := 150;
    LoadedImage.Height := 90;
    LoadedImage.Visible := TRUE;
    LoadedImage.Tag := 0;
    LoadedImage.Enabled := TRUE;
    LoadedImage.Hint := '';
    LoadedImage.ShowHint := FALSE;
    LoadedImage.Center := TRUE;
    LoadedImage.Proportional := TRUE;
    //......................................
    //......................................
    //LoadButton
    LoadButton := TButton.Create(Result);
    LoadButton.Parent := GroupBox1;
    LoadButton.Left    := 124;
    LoadButton.Top     := 102;
    LoadButton.Width   := 32;
    LoadButton.Height  := 21;
    LoadButton.Visible := TRUE;
    LoadButton.Tag     := 0;
    LoadButton.Enabled  := TRUE;
    LoadButton.Hint     := '';
    LoadButton.ShowHint := FALSE;
    LoadButton.Caption    := '...';
    LoadButton.Font.Name  := 'Tahoma';
    LoadButton.Font.Size  := 8;
    LoadButton.Font.Color := clWindowText;
    LoadButton.Font.CharSet := 1;
    LoadButton.TabOrder     := 2;
    LoadButton.TabStop      := TRUE;
    LoadButton.Cancel       := FALSE;
    LoadButton.ModalResult  := 0;
    LoadButton.OnClick     := @LoadButton_Click;
    //......................................
    //......................................
    //StartButton
    StartButton := TButton.Create(Result);
    StartButton.Parent := GroupBox2;
    StartButton.Left    := 6;
    StartButton.Top     := 102;
    StartButton.Width   := 80;
    StartButton.Height  := 21;
    StartButton.Visible := TRUE;
    StartButton.Tag     := 0;
    StartButton.Enabled  := TRUE;
    StartButton.Hint     := '';
    StartButton.ShowHint := FALSE;
    StartButton.Caption    := 'Старт';
    StartButton.Font.Name  := 'Tahoma';
    StartButton.Font.Size  := 8;
    StartButton.Font.Color := clWindowText;
    StartButton.Font.CharSet := 1;
    StartButton.TabOrder     := 2;
    StartButton.TabStop      := TRUE;
    StartButton.Cancel       := FALSE;
    StartButton.ModalResult  := 0;
    StartButton.OnClick     := @StartButton_Click;
    //......................................
    //......................................
    //StopButton
    StopButton := TButton.Create(Result);
    StopButton.Parent := GroupBox2;
    StopButton.Left    := 96;
    StopButton.Top     := 102;
    StopButton.Width   := 80;
    StopButton.Height  := 21;
    StopButton.Visible := TRUE;
    StopButton.Tag     := 0;
    StopButton.Enabled  := TRUE;
    StopButton.Hint     := '';
    StopButton.ShowHint := FALSE;
    StopButton.Caption    := 'Стоп';
    StopButton.Font.Name  := 'Tahoma';
    StopButton.Font.Size  := 8;
    StopButton.Font.Color := clWindowText;
    StopButton.Font.CharSet := 1;
    StopButton.TabOrder     := 3;
    StopButton.TabStop      := TRUE;
    StopButton.Cancel       := FALSE;
    StopButton.ModalResult  := 0;
    StopButton.OnClick     := @StopButton_Click;
    //......................................
    Yes := TRUE;
  FINALLY
    if not Yes then begin
       //Освобождаем ресурсы, если неудачно ...
       if Result<>NIL then begin
          Result.Free;
          Result:=NIL;
       end;
    end;
  END;
  Result.Show;
end;
procedure Init; //Вызывается при включении скрипта
begin
  FormMain:=Create_FormMain;
  stats.Lines.Add('Скрипт: Рисование предметами by ArchDevil!');
  timer:=TTimer.Create(nil);
  timer.OnTimer:=@OnTimer;
  timer.enabled:=false;
  timer.interval:=700; //время задержки
  ready:=false;
  StringList:=TStringList.Create;
  ItemsName:=TStringList.Create;
  try
    ItemsName.LoadFromFile('itemsid.ini');
  except
    stats.Lines.Add('itemsid.ini не найден!');
    exit;
  end;
  buf:=hstr('14');
  SendToServerEx(Name);
end;
procedure bmpfree;
begin
  try
   if bmp<>NIL then
   begin
   bmp.Free;
   bmp:=NIL;
   end;
  finally
  end;
end;
procedure Free;
var i:integer;
begin
Free_FormMain; bmpfree;
StringList.Clear; ItemsName.Clear;
timer.Free;
if LoadedImage<>NIL then LoadedImage:=NIL;
currentx:=0; currenty:=0; StartX:=0; StartY:=0;
StartZ:=0; MyX:=0; MyY:=0; ItemOID:=0;
ready:=false;
for i:=1 to 5 do begin
SelectedItems[1,i]:=0;
SelectedItems[2,i]:=0;
SelectedItems[3,i]:=0;
end;
end;
//CreateItemBase и InventoryUpdate Взял со скрипта NLObP на заточку
//---------------------------------------------
procedure CreateItemBase;
var
  i, j, ListCount : integer;
begin
  for i:=1 to max do begin
    //очищаем масив
    ItemBase[1,i]:=0;     //OID
    ItemBase[2,i]:=0;    //ID
    ItemBase[3,i]:=0;   //kol-vo
  end;
  j:=4;
  ListCount:=ReadH(j);
  j:=8;
  for i:=1 to ListCount do begin
    ItemBase[1,i]:=ReadD(j);
    ItemBase[2,i]:=ReadD(j);
    inc(j,4);
    ItemBase[3,i]:=ReadD(j);
    inc(j,60);
  end;
  StringList.Clear;
  try
    for i:=1 to ListCount do begin
      try
        StringList.Add(ItemsName.Values[IntToStr(ItemBase[2,i])]); //записываем название вещей из инвентаря
      except;
      end
    end;
  except;
    exit;
  end;
    with ComboBoxItem do
    begin
      Items.Clear;
      Items.Assign(StringList);
      ItemIndex:=0;
    end;
end;
//......................................
//******************************************************************************
procedure InventoryUpdate; //пакет 27, обновляет базу ObjectID по ItemID
var
  i, ii, j, OID, ID, Count, ListCount, UpdType: integer;
  add : boolean;
begin
  add:=false;
  ListCount:=ReadH(2);
  j:=4;
  for ii:=1 to ListCount do begin
    add:=false;
    UpdType:=ReadH(j);
    inc(j,2);               //ItemType1
    OID:=ReadD(j);     //ObjectID
    ID:=ReadD(j);     //ItemID
    inc(j,4);
    Count:=ReadD(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;
             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;
           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;
           end;
         end;
      end;
    end;
    inc(j,58);
  end;
end;
//------------------------------------
function GetCount(OID:integer) : integer;
var
  i : integer;
begin
  for i:=1 to max do begin
    if ItemBase[1,i]=OID then begin
      result:=ItemBase[3,i]; // count
      exit;
    end;
  end;
  result:=0;
end;
//--------------------------------------------
function delta(x1, y1, x2, y2:extended):integer; //возвращает растоянием между 2 точками
var
  dx,dy,summa: extended;
begin
  dx:=x2-x1;
  dy:=y2-y1;
  summa:=dx*dx+dy*dy;
  if summa=0 then result:=0 else result:=Round(sqrt(summa));
end;
//--------------------------------------------
procedure OnTimer(Sender: TObject);
//====================
procedure GetNextCoords;
begin
case ComboBoxDirection.ItemIndex of
0: begin
     NextX:=StartX+currentx*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY+currenty*(ComboBoxScale.ItemIndex+1);
   end;
1: begin
     NextX:=StartX+currentx*(ComboBoxScale.ItemIndex+1)-currenty*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY+currenty*(ComboBoxScale.ItemIndex+1)+currentx*(ComboBoxScale.ItemIndex+1);
   end;
2: begin
     NextX:=StartX-currenty*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY+currentx*(ComboBoxScale.ItemIndex+1);
   end;
3: begin
     NextX:=StartX-currentx*(ComboBoxScale.ItemIndex+1)-currenty*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY-currenty*(ComboBoxScale.ItemIndex+1)+currentx*(ComboBoxScale.ItemIndex+1);
   end;
4: begin
     NextX:=StartX-currentx*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY-currenty*(ComboBoxScale.ItemIndex+1);
   end;
5: begin
     NextX:=StartX-currentx*(ComboBoxScale.ItemIndex+1)+currenty*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY-currenty*(ComboBoxScale.ItemIndex+1)-currentx*(ComboBoxScale.ItemIndex+1);
   end;
6: begin
     NextX:=StartX+currenty*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY-currentx*(ComboBoxScale.ItemIndex+1);
   end;
7: begin
     NextX:=StartX+currentx*(ComboBoxScale.ItemIndex+1)+currenty*(ComboBoxScale.ItemIndex+1);
     NextY:=StartY+currenty*(ComboBoxScale.ItemIndex+1)-currentx*(ComboBoxScale.ItemIndex+1);
   end;
 end;
end;
//====================
begin
ItemOID:=0;
repeat
if currentx=bmp.width-1 then
begin
inc(currenty);
currentx:=0;
end else inc(currentx);
if currenty=bmp.height then
begin
timer.enabled:=false;
stats.lines.add('Остановлено! Рисунок нарисован!');
StartButton.enabled:=true;
exit;
end;
case bmp.Canvas.pixels[currentx,currenty] of //матрица пикселей
clBlack: if (SelectedItems[1,1]>0) and (GetCount(SelectedItems[1,1])>0) then ItemOID:=SelectedItems[1,1];
clRed:   if (SelectedItems[1,2]>0) and (GetCount(SelectedItems[1,2])>0) then ItemOID:=SelectedItems[1,2];
clGreen: if (SelectedItems[1,3]>0) and (GetCount(SelectedItems[1,3])>0) then ItemOID:=SelectedItems[1,3];
clBlue:  if (SelectedItems[1,4]>0) and (GetCount(SelectedItems[1,4])>0) then ItemOID:=SelectedItems[1,4];
clYellow:if (SelectedItems[1,5]>0) and (GetCount(SelectedItems[1,5])>0) then ItemOID:=SelectedItems[1,5];
end;
until ItemOID<>0;
if ItemOID=0 then exit;
stats.lines.add('Текущий элемент матрицы: x='+inttostr(currentx)+', y='+inttostr(currenty)+'.');
GetNextCoords;
if delta(MyX,MyY,NextX,NextY)>MaxDistance then begin  //расстояние между точками
buf:=#$0F;
WriteD(NextX);
writeD(NextY);
WriteD(MyZ);
WriteD(MyX);
WriteD(MyY);
WriteD(MyZ);
WriteD(1);
SendToServerEx(Name);
timer.enabled:=false; //Отключаем на время передвижения
ready:=true;
exit;
end;
buf:=#$17;
WriteD(ItemOID);
WriteD(1);
WriteD(NextX);
WriteD(NextY);
WriteD(MyZ);
SendToServerEx(Name);
end;
//--------------------------------------------
begin
if FromClient and (ConnectName=Name) then
case pck[1] of
     #$59: begin
             MyX:=ReadD(2); // постоянно считываем координаты чара
             MyY:=ReadD(6);
             MyZ:=ReadD(10);
             if ready and (delta(Myx,Myy,NextX,NextY)<MaxDistance/2) then begin //Меньше половины MaxDistance можно включать таймер
             buf:=#$17; //Выкидываем предмет который не выкинули когда дельта привышала MaxDistance
             WriteD(ItemOID);
             WriteD(1);
             WriteD(NextX);
             WriteD(NextY);
             WriteD(MyZ);
             SendToServerEx(Name);
             ready:=false;
             timer.enabled:=true;
             end;
           end;
end;
if FromServer and (ConnectName=Name) then
case pck[1] of
    #$11: CreateItemBase; //создание базы предметов
     //......................................
    #$21: InventoryUpdate; //Обновление базы
    #$62: if (StartButton.enabled=false) and (timer.enabled=false) and (ReadD(6)=3) then
          begin
            StartX:=ReadD(14); //Считываются только 1 раз
            StartY:=ReadD(22);
            StartZ:=ReadD(30);
            MyX:=StartX;
            MyY:=StartY;
            MyZ:=StartZ;
            timer.enabled:=true;//Вот теперь включаем таймер
          end;
end;
end.
Инструкция:
[HTML]//В Name ввдите ник
Нарисуйте картинку в любом графическом редакторе.
В поле "Путь к фалу" введите путь к этому файлу и нажмите Load
Черный,красный,зеленый,голубой,желтый цвета пикселей можно привязать к отдельному предмету
Выберите цвет в боксе color, затем предмет в боксе Item (предметов должно быть>1 чтобы они появились в списке)
scale - масштаб отступа между предметами от 1:1 до 10:1
Самый оптимальный масштаб 5:1
Направление - согласно компасу в игре[/HTML]
Пример [Ссылки могут видеть только зарегистрированные пользователи. ]
PHP код:
 Копирайт Coderx.ru отедльное спасибо Fer123 и QaK за идею и исполнение=) 
  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
Benjamin (15.08.2009), Derzkiy (28.10.2009), GnomMaster (19.01.2010), sacredandy (22.10.2009)
Старый 15.08.2009, 19:15   #9
 Сержант
Аватар для Benjamin
 
Benjamin скоро будет известенBenjamin скоро будет известенBenjamin скоро будет известенBenjamin скоро будет известенBenjamin скоро будет известен
Регистрация: 08.07.2009
Сообщений: 158
Популярность: 410
Сказал(а) спасибо: 295
Поблагодарили 197 раз(а) в 97 сообщениях
Отправить сообщение для Benjamin с помощью ICQ
 
По умолчанию Re: Скрипты для l2phx

Скрипт для поиска сундуков по ID
Название скрипта: Т Х __ТУПОЙ
Автор: TAMBIK
Источник: coderx.ru
Описание:
Код:
// скрипт для поиска сундуков по ID 
// ЗАДАТЬ МОЖНО ТОК до ДВУХ!!!!
// вкл скрипт в чате пойдет инфа о МОБАХ каких видим
// будет ID моба и его ЛВЛ
// пишем ID первого сундука в пати чат 
// пишем ID второго сундука в торговый чат то есть какие буш открывать
// по ID сундука будет поиск если нашел то открывать ключем
// если напали на чара и он ненашел или нашел сундук то атакует того кто напал
// после убийства моба произойдет обновление инфы о мобах и сундук снова поиск
// авто использование бутылок на ХП.Атаку.Бег - ЛЮБЫЕ !!!
// после вкл скрипта выпить бутыли чтоб их запомнить
// встать где получше в центре расположения сундуков
// нажать соцдействие ДА для начала и запоминания места старта
// нажать соцдействие НЕТ отмена
// открыть ключем сундук чтоб запомнить ключ
// скрипт проверялся на хрониках ХБ
Код:
const
  myName = 'ххххххх';  // Имя 
var
catt:integer;
procedure SendMsg2(msg:string);
begin 
if (catt=1) then begin 
  buf:=#$4A;
  WriteD(0);
  WriteD(10);
  WriteS('');
  WriteS(msg);
  SendToClientEx( myName);
end;
end;
//=============================================================== 
        var
  Timer1: TTimer;
  Timer2: TTimer;
  Timer3: TTimer;
  Timer4: TTimer;
  Timer5: TTimer;
    Timer6: TTimer;
  Position:integer;
  attacka,gamestart,poiskNpc:integer;
  NpcTId1,NpcTId2:integer;
  mobID,mobX,mobY,mobZ:integer;
  lvlMob,mytext, Name:string;
  klucID,hpID,uskorID,atakID:integer;
  TargetID, textlvl,textID, NpcTypeId:integer;
  MaxHP,CurHP,nybID,i:integer;
  myXpos,myYpos,myZpos:integer;
  startX,startY,startZ:integer;
  xpos, ypos,zpos: integer;
  myX,myY,myZ:integer;
//====================================================
function rastoyanie(xpos1, ypos1, xpos2, ypos2:extended):integer; //возвращ rezu растояние
begin
  result:= Round(Sqrt(((xpos1-xpos2)*(xpos1-xpos2))+((ypos1-ypos2)*(ypos1-ypos2))));
end;
//====================================================
procedure OnTimer5(Sender: TObject);
begin
 mestoStarta;
 poiskNpc:=1;
 upgredeInfoNPC;
 timer5.enabled:=false;
end;
//=============================================================== 
procedure  pickupDrop;
begin
 case ReadD(10) of
 951,952,955,956,947,948,729,730:begin
 poiskNpc:=0;
 mobID:=ReadD(6);
 mobX:=ReadD(14);
 mobY:=ReadD(18);
 mobZ:=ReadD(22);
 Action; 
 SendMsg2('подобрал');
 poiskNpc:=1;
end;
end;
end;
//=============================================================== 
procedure OnTimer1(Sender: TObject);
begin
 buf:=#$19;
 WriteD(hpID); 
 WriteD(0);
 SendToServerEx(myName);
end;

procedure OnTimer2(Sender: TObject);
begin
 buf:=#$19;
 WriteD(uskorID); 
 WriteD(0);
 SendToServerEx(myName);
end;

procedure OnTimer3(Sender: TObject);
begin
 buf:=#$19;
 WriteD(atakID); 
 WriteD(0);
 SendToServerEx(myName);
end;
//=============================================================== 
procedure OnTimer6(Sender: TObject);
 begin
 ActionKluc;
 ActionKluc;
 timer6.enabled:=false;
end;
//=============================================================== 
procedure Action;
begin
 buf:=#$1F;
 WriteD(mobID);
 WriteD(myxpos);
 WriteD(myypos);
 WriteD(myzpos); 
 SendToServerEx(myName);
end;
//=============================================================== 
procedure ActionKluc;
 begin
 buf:=#$19;
 WriteD(klucID); 
 WriteD(0);
 SendToServerEx(myName);
end;
//=============================================================== 
procedure startPoisk;
begin
 NpcTypeId:=ReadD(6);
 lvlMob:=ReadS(125);
 if (NpcTId1+NpcTId2=0) then SendMsg2('вижу : '+lvlMob+'_ ID : '+inttostr(NpcTypeId)+' '); 
 if  (poiskNpc=1)  then 
 if (rastoyanie(MyXpos, MyYpos, ReadD(14), ReadD(18))<=600) then
 CASE NpcTypeId OF 
 NpcTId1,NpcTId2:begin 
 mobID:=ReadD(2);
 mobX:=ReadD(14);
 mobY:=ReadD(18);
 mobZ:=ReadD(22);
 lvlMob:=ReadS(125);
 Action;
 RadarControl;
 poiskNpc:=0;// 
 SendMsg2('нашел С_У_Н_Д_У_К_:'+lvlMob+'_ID: '+inttostr(NpcTypeId)+'');
 if (gamestart=1)  then 
 timer6.enabled:=true; 
 timer5.enabled:=true; 
 buf:=#$0F;
 WriteD(mobX);
 WriteD(mobY);
 WriteD(mobZ);
 WriteD(myxpos);
 WriteD(myypos);
 WriteD(myzpos);
 WriteD(0);
 SendToServerEx(myName);
end;
end;
end;
//=============================================================== 
procedure startAttacka;
begin
 mobID:=ReadD(2);
 mobX:=ReadD(15);
 mobY:=ReadD(19);
 mobZ:=ReadD(23);
 attacka:=0;
 poiskNpc:=0;
 if (gamestart=1) then 
 Action;
 RadarControl;
 timer5.enabled:=false;
 Timer4.enabled:=true;
end;
 //=============================================================== 
procedure stopPoisk;
begin
 TargetID:=0;
 attacka:=1;
 poiskNpc:=1; 
 upgredeInfoNPC;
 stopRadarControl;
 Timer4.enabled:=false;
 timer5.enabled:=false;
 buf:=hstr('48 01 00 ');
 SendToServerEx(myName); 
end;
//=============================================================== 
procedure stopAttacka;
begin
 attacka:=1;
 poiskNpc:=1;
 stopRadarControl;
 timer5.enabled:=false;
 Timer4.enabled:=false; 
end;
//=============================================================== 
procedure OnTimer4(Sender: TObject);
begin 
 Action;
end;
//=============================================================== 
procedure startGAME;
begin
 catt:=0; 
 attacka:=1;
 poiskNpc:=1;
 gamestart:=1;
 upgredeInfoNPC;
 startX:=MyXpos;
 startY:=MyYpos;
 startZ:=MyZpos;
 SendMsg2('    ........... startGAME..........');
end;
//=============================================================== 
procedure stopGAME;
begin
 catt:=1; 
 attacka:=0;
 gamestart:=0;
 poiskNpc:=0;
 TargetID:=0;
 MoveToLocation;
 stopRadarControl;
 Timer4.enabled:=false;
 Timer4.enabled:=false;
 buf:=hstr('48 01 00 ');
 SendToServerEx(myName);
 SendMsg2('          ........... stopGAME..........');
end;
//=============================================================== 
procedure  upgredeInfoNPC;
begin
 if (0<NpcTId1+NpcTId2)  then begin
 buf:=#$6E;
 SendToServerEx(myName);
 poiskNpc:=1;
end; 
end;
//===============================================================  
procedure  addpoiskNPC;
begin
  i:=2;
  mytext:=ReadS(i);
  textID:=ReadD(i);
  if (textID=3) then begin
  NpcTId1:=StrToInt(mytext);
  SendMsg2( 'пати: Искать 1 моба  с  ID: '+IntToStr(NpcTId1)+'' );
  pck:='';
  exit;
end; 
  if (textID=8) then begin
  NpcTId2:=StrToInt(mytext);
  SendMsg2( 'торг: Искать 2 моба  с  ID: '+IntToStr(NpcTId2)+'' );
  pck:='';
  exit;
end; 
end;
//=============================================================== 
procedure  ValidatePosition;
begin
  myXpos:=ReadD(2);
  myYpos:=ReadD(6);
  myZpos:=ReadD(10);
  MyX:=MyXpos;
  MyY:=MyYpos;
  MyZ:=MyZpos;
end;
//=============================================================== 
procedure  mestoStarta;
begin
  buf:=#$0F;
  WriteD(startX);
  WriteD(startY);
  WriteD(startZ);
  WriteD(myxpos);
  WriteD(myypos);
  WriteD(myzpos);
  WriteD(0);
  SendToServerEx(myName);
end;
//=======================
procedure  MoveToLocation;
begin
 buf:=#$0F;
 WriteD(myx);
 WriteD(myy);
 WriteD(myz);
 WriteD(myxpos);
 WriteD(myypos);
 WriteD(myzpos);
 WriteD(0);
 SendToServerEx(myName);
end;
//=============================================================== 
procedure RadarControl;
begin
 buf:=#$F1;
 WriteD(0);
 WriteD(1);
 WriteD(mobX);
 WriteD(mobY);
 WriteD(mobZ);
 SendToClientEx(myName);
end;
//=============================================================== 
procedure stopRadarControl;
begin
 buf:=#$F1;
 WriteD(0);
 WriteD(1);
 WriteD(MyXpos);
 WriteD(MyYpos);
 WriteD(MyZpos);
 SendToClientEx(myName);
end;
//=============================================================== 
procedure RequestSocialAction;
begin
 CASE ReadD(2) OF
 5:begin stopGAME;
 pck:='';
 exit;
end;
 6:begin startGAME;
 pck:='';
 exit;
end;
end;
end;
//=============================================================== 
procedure Init;
begin
  catt:=1;
  NpcTId1:=0;
  NpcTId2:=0;
  poiskNpc:=0;
  gamestart:=0;
  TargetID:=0;
  timer1:=TTimer.Create(nil);
  timer1.OnTimer:=@OnTimer1;
  timer1.enabled:=false;
  timer1.interval:=11000;

  timer2:=TTimer.Create(nil);
  timer2.OnTimer:=@OnTimer2;
  timer2.enabled:=false;
  timer2.interval:=1120000;

  timer3:=TTimer.Create(nil);
  timer3.OnTimer:=@OnTimer3;
  timer3.enabled:=false;
  timer3.interval:=1120000;

  timer4:=TTimer.Create(nil);
  timer4.OnTimer:=@OnTimer4;
  timer4.enabled:=false;
  timer4.interval:=1400;

  timer5:=TTimer.Create(nil);
  timer5.OnTimer:=@OnTimer5;
  timer5.enabled:=false;
  timer5.interval:=15000;

 timer6:=TTimer.Create(nil);
  timer6.OnTimer:=@OnTimer6;
  timer6.enabled:=false;
  timer6.interval:=4000;

   buf:=#$6E;
  SendToServerEx(myName);
  SendMsg2('Открываем Сундук');
  SendMsg2('привет от ТАМБИКА');
  SendMsg2('выпей Бутылки и открой 1 сундук');
  SendMsg2('в пати чат пишем ID первого сундук  ');
  SendMsg2('в торгов чат пишем ID второго сундук  '); 
  SendMsg2(' нажимаем соцдейство ДА для начала ');
end;
procedure Free; 
begin
  timer1.free;
  Timer2.free;
  Timer3.free;
  Timer4.free;
  Timer5.free;
  Timer6.free;
end;
//===============================================================
procedure UserInfo;
begin
 i:=18;
 nybID:=ReadD(i);
 Name:=ReadS(i);
 i:=i+48;
 MaxHP:=ReadD(i);
end;
//============================
procedure StatsUpdate;
begin
 CurHP:=ReadD(14);
 if (50<=MaxHP-CurHP) then 
 Timer1.enabled:=true
 else 
 Timer1.enabled:=false;
 if (CurHP=0) then Timer4.enabled:=false; 
end;
//=============================================================== 
procedure addtoItem;
begin
  case ReadD(12) of
  1061,1539:begin//Зелье Исцеления ID:1061
  hpID:=ReadD(8);
  SendMsg2('запомнил:  З е л ь е    Исцеления');
end; 
  734,1374: begin//Зелье Ускорения ID:734
  uskorID:=ReadD(8); 
  Timer2.enabled:=true;
  SendMsg2('запомнил:  З е л ь е     Ускорения');
end;
  735,1375: begin//Зелье Быстрой Атаки ID:735
  atakID:=ReadD(8); 
  Timer3.enabled:=true;
  SendMsg2('запомнил:  З е л ь е     Атаки'); 
end;
 6667..6672: begin//Ключ от Сундука Сокровищ - Ранг 3,4.5.6.7.8.
  klucID:=ReadD(8); 
  SendMsg2('запомнил: _ К _ Л _ Ю _ Ч_ И _ К _'); 
end;
end;
end;
//=============================================================== 
begin
//=============================================================== 
if FromServer then
 case pck[1] of
  #$32:UserInfo;

  #$18:if ReadD(2)=nybID  then StatsUpdate;

  #$0C:startPoisk;

  #$62:if ReadD(2)=181 or 109 then mestoStarta;//MsgID: Неверная цель. ID:109 

  #$08:if ReadD(2)=TargetID then upgredeInfoNPC;

  #$00:if ReadD(2)=TargetID then  stopAttacka;

  #$21:addtoItem;

  #$23:if ReadD(2)=nybID then TargetID:= ReadD(6);

  #$33:if ReadD(2)=nybID then timer5.enabled:=false;

  #$16:if ReadD(2)=TargetID then  pickupDrop;
end;
//=============================================================== 
if FromClient then
  CASE  pck[1] OF
  #$49:addpoiskNPC;//Tип: 0x49 (Say2)

  #$34:RequestSocialAction;

  #$59:ValidatePosition;
end; 
//=============================================================== 
// я атакую
if FromServer and(pck[1]=#$33)and(ReadD(2)=nybID) then begin
  timer5.enabled:=false;
end;
//====================================
// не Атакуют ли  мой Выбор
if FromServer and (gamestart=1) and(pck[1]=#$33)and(ReadD(2)=TargetID) 
              and(ReadD(6)<>nybID) then stopPoisk;

if FromServer and (gamestart=1) and(pck[1]=#$33)and(ReadD(2)<>nybID) 
              and(ReadD(6)=TargetID) then stopPoisk;
//====================================
// напали на мне
 if FromServer  and (pck[1]=#$48)and(ReadD(2)<>nybID)and(ReadD(6)=nybID)then startAttacka;
//=================================== 
 if FromServer  and(attacka=1) and (pck[1]=#$33)and (ReadD(6)=nybID) then startAttacka;
 //=============================================================== 
   
end.
Авто:Таргет.Радар.Атака
Автор: TAMBIK
Источник: coderx.ru
Описание:
Код:
При нападение на чара, чар автоматом берет нападающего в таргет и атакует
Радар стрелка над чаром показывает направление откуда чара атакуют
Код:
//автор TAMBIK
//проверялось на ХБ
//не забудьте вписать имя своего чара
      const
  myName = ' ххххххх '; // Имя 

   var
  Timer1: TTimer;
  myID:integer;
  mobID,mobX,mobY,mobZ:integer;
  myXpos,myYpos,myZpos:integer;
  autoattacka,autoAction:boolean;

procedure SendMsg2(msg:string);
begin 
  buf:=#$4A;
  WriteD(0);
  WriteD(10);
  WriteS('');
  WriteS(msg);
  SendToClientEx(myName);
end;
  procedure  RequestSocialAction;
           begin   
        CASE ReadD(2) OF
      5:begin// стоп
        autoattacka:=false;
        autoAction:=false;
        stopRadarControl;
         SendMsg2('о т к л ю ч е н о');
         pck:='';
         exit;
         end;
       6:begin // старт
         autoattacka:=true;
         SendMsg2('в к л ю ч е н о');
         pck:='';
        exit;
      end;
 end;
 end;
 procedure OnTimer1(Sender: TObject);
  begin
     Action;
  end;
  procedure Action;
  begin
         buf:=#$1F;
         WriteD(mobID);
         WriteD(mobX);
         WriteD(mobY);
         WriteD(mobZ); 
         WriteC(00);
         SendToServerEx(myName);
        end; 
  procedure startPoisk;
  begin
         buf:=#$F1;
         WriteD(0);
         WriteD(1);
         WriteD(mobX);
         WriteD(mobY);
         WriteD(mobZ);
         SendToClientEx(myName);
        end; 
procedure startAttacka;
        begin
        mobID:=ReadD(2);
               Action;
             startPoisk;
           autoAction:=false;
          if autoattacka then  
            Timer1.enabled:=true;
             end;
 procedure stopRadarControl;
       begin
       buf:=#$F1;
       WriteD(0);
       WriteD(1);
       WriteD(MyXpos);
       WriteD(MyYpos);
       WriteD(MyZpos);
       SendToClientEx(myName);
            end; 
 procedure  ValidatePosition;
       begin
         myXpos:=ReadD(2);
         myYpos:=ReadD(6);
         myZpos:=ReadD(10);
       end; 
 procedure Init;
  begin
  autoAction:=true;
  autoattacka:=false;
  timer1:=TTimer.Create(nil);
  timer1.OnTimer:=@OnTimer1;
  timer1.enabled:=false;
  timer1.interval:=1000;
  buf:=#$14;
  SendToServerEx(myName);
  SendMsg2('для ВКЛ соцдействие ДА');
  SendMsg2('для ОТКЛ соцдействие НЕТ');
  SendMsg2('автор TAMBIK');
  end;
  procedure Free; 
  begin
  timer1.free;
  end;
 
    begin
 if fromserver  and (pck[1]=#$32)  then begin//Tип: 0x32 (UserInfo)
      myID:=ReadD(18);
           end;
 if FromClient and (pck[1]=#$34) then RequestSocialAction; 
 if FromServer and autoAction and (pck[1]=#$33) and (ReadD(6)=myID) then startAttacka;
 if FromServer  and autoAction and (pck[1]=#$48)and(ReadD(2)<>myID)and(ReadD(6)=myID)then startAttacka;
 if FromServer and (pck[1]=#$00) and (ReadD(2)=mobID) then  begin
        autoAction:=true;
        stopRadarControl;
        timer1.enabled:=false;  
 if FromClient and (pck[1]=#$59) then  ValidatePosition;
   end;
 end.
Цитата:
Сообщение от devils0nПосмотреть сообщение
Скрипт на заточку лежал до недавнего времени в подполье, но им особо там некто не пользуется (да и сам скрипт в шару был отправлен давно) - перезалейти этот скрипт пожалуйста...

Цитата:
Сообщение от gashichПосмотреть сообщение
перезалейте плиз

Цитата:
Сообщение от tokmakowПосмотреть сообщение
Перезалейте на депозит плииииз

Перезалил
Автоматизация заточки предметов до необходимого уровня by NLObP

Применение: Вставте в l2phx во вкладку скрипты не забудьте поменять ник(NLObP) в скрипте на свой.
Автор скрипта: NLObP
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]


Автоматизация изготовления ключей
Автор: TAMBIK
Источник: coderx.ru
Описание:
Код:
Скрипт изготовляет ключики(скилл у тх)
Для Hellbound'a
Запуск скрипта соц. действие ДА
Код:
var
timer1: TTimer;
Bypass:string; 
x,i: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>'+
'<font color="04fbfb">Cкрипт изготовление ключей</font><br>'+
'<font color="04fbfb"> Уровень Скила </font><br>'+
'<button value="= 1 =" action="bypass -h 1" width=80 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="= 2 =" action="bypass -h 2" width=80 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>'+
'<button value="ПУСК" action="bypass -h pusk" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<button value="СТОП" action="bypass -h stop" 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>'+
'</center></body></html>';

procedure SendMsg2(msg:string);
begin 
  buf:=#$4A;
  WriteD(0);
  WriteD(10);
  WriteS('');
  WriteS(msg);
  SendToClient;
end;

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

procedure OnTimer1(Sender: TObject);
begin
 buf:=hstr('39 A3 01 00 00 00 00 00 00 00' );
 SendToServer;

 end;

procedure Init;
begin
  timer1:=TTimer.Create(nil);
  timer1.OnTimer:=@OnTimer1;
  timer1.enabled:=false;
  timer1.interval:=0;
  x:=0; 
end;
procedure Free; 
begin
timer1.free;
end;
begin
 if FromClient and (pck[1]=#$34) and (pck[2]=#$06) then begin
  ShowHTML(HTML);
SendMsg2('Выберите Уровень скила');
pck:='';
 exit;
end;
begin
 if FromClient and (pck[1]=#$23) then
  begin
     Bypass:=ReadS(2);
     case Bypass of
'1':
begin
x:=1;
 timer1.interval:=1300000;//интервал 
 SendMsg2('Уровень скила=1');
 ShowHTML(HTML);
end;
'2':
begin
x:=1;
 timer1.interval:=1700000;//интервал 
 SendMsg2('Уровень скила=2');
 ShowHTML(HTML);
end;

'pusk':
 begin
if (x=0) then begin
SendMsg2('НЕ ВЫБРАН  Уровень скила');
       end;
if (x=1) then begin
  buf:=hstr('39 A3 01 00 00 00 00 00 00 00' );
  SendToServer;
  timer1.enabled:=true;
  SendMsg2('ПУСК');
  ShowHTML(HTML);
end;
end;

'stop':
begin
x:=0;
timer1.enabled:=false;
SendMsg2('СТОП');
ShowHTML(HTML);
timer1.interval:=0;//интервал 

end;
end;
end;
end;
end.

Последний раз редактировалось Benjamin; 15.08.2009 в 19:53. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 08.09.2009, 22:14   #10
 Разведчик
Аватар для MarkoPolo
 
MarkoPolo на правильном пути
Регистрация: 06.09.2009
Сообщений: 20
Популярность: 28
Сказал(а) спасибо: 3
Поблагодарили 8 раз(а) в 5 сообщениях
 
По умолчанию Re: Скрипты для l2phx

Скрипт на тп , то место которое запомнили(для серверов с тупой гео) Тестил на Interlude
Автор: pmen
Взято c сoderx.ru

Код:
var
// переменная
x:integer; y:integer;     
a:integer; b:boolean;  z:integer;
procedure Init; //Вызывается при включении скрипта
begin
SendMsc('Возьми себя в таргет');
b:=false;
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClient;
end;
Begin
begin
if FromClient and (pck[1]=#$04)and (not b) then 
begin
a:=ReadD(2); x:=ReadD(6);
y:=ReadD(10); z:=ReadD(14);
SendMsc('Запомнен ObjectID = '+inttostr(a));
SendMsc('Запомнен x = '+inttostr(x));
SendMsc('Запомнен y = '+inttostr(y));
SendMsc('Запомнен z = '+inttostr(z));
b:=true;
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 73 00 6F 00 68 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
Writed(x);
Writed(y); 
Writed(z);
SendToClient;
end;
end;
end.
Удобно Использовать вместе с скриптом на тп.Например ходить на твт(Сохранил точку где появился, тп в город за бафом и потом обратно на арену) .

Последний раз редактировалось MarkoPolo; 08.09.2009 в 22:38.
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
GraNIT (08.09.2009), S.O.A.D (23.09.2012)
Старый 08.09.2009, 22:25   #11
eBanned
 Старший сержант
Аватар для GraNIT
 
GraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауру
Регистрация: 27.07.2009
Сообщений: 237
Популярность: 578
Сказал(а) спасибо: 593
Поблагодарили 329 раз(а) в 147 сообщениях
Отправить сообщение для GraNIT с помощью ICQ Отправить сообщение для GraNIT с помощью Skype™
 
По умолчанию Re: Скрипты для l2phx

Простенький скрипт для "глухих", перенаправляет сообщения приходящие из выбранного вами чата в чат PartyChannel, в основном удобно для тех кто не пользуется TS, в замесах не всегда есть возможность читать мелкие буквы в чате, а со скриптом нужный вам чат будет выводиться большими буквами на экране.
Должен работать на всех хрониках начиная с Kamael и заканчивая Final.
Код:
Const
   TextType=0;  //меняем значение под нужный чат: 0=общий чат, 1=!,
                //2=PM, 3=Party, 4=Clan, 8=Trade, 9=Alli, 17=Hero
begin
   if FromServer and (pck[1]=#$4A) and (ReadD(6)=TextType) then
      begin
         buf:=pck;
         WriteD(15,6);
         pck:=buf;
      end;
end.
Автор [mks] coderx.ru
  Ответить с цитированием
Пользователь сказал cпасибо:
MarkoPolo (08.09.2009)
Старый 09.09.2009, 11:12   #12
 Разведчик
Аватар для MarkoPolo
 
MarkoPolo на правильном пути
Регистрация: 06.09.2009
Сообщений: 20
Популярность: 28
Сказал(а) спасибо: 3
Поблагодарили 8 раз(а) в 5 сообщениях
 
По умолчанию Re: Скрипты для l2phx

Скрипт на перевод текста .
Например заходишь в игру и пишешь Ghbdtn cthd ,а она меняет его на Привет серв.Тестировал на интерлюде.
Автор и откуда взял - непомню.

Код:
Program EngToRus;
const
Name='KHoIIka';
var
temp:string;
i:integer;
function ConvertNeeded(tmpstr : string) : boolean;
var i,countru,counteng:integer;
begin
countru:=0;
counteng:=0;
for i:=1 to length(tmpstr) do
begin
if tmpstr[i] in ['à'..'ÿ','À'..'ß'] then inc(countru);
if tmpstr[i] in ['a'..'z','A'..'Z'] then inc(counteng);
end;
result:=true;
if (countru>0) and (counteng>=0) then result:=false;
end;
function ConvertStr(tmpstr : string) : string;
var i:integer;
function ConvertChar(tmpchar : char) : char;
const
alphabet=[' ','[',']','{','}','<','>',',','.',':','"','/','?','q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m','`','~'];
rualphabet=[' ','õ','ú','Õ','Ú','Á','Þ','á','þ','Æ','Ý','.',',','é','ö','ó','ê','å','í','ã','ø','ù','ç','ô','û','â','à','ï','ð','î','ë','ä','ÿ','÷','ñ','ì','è','ò','ü','¸','¨'];
var i:integer;
begin
if tmpchar=chr(39) then begin
result:='ý';
exit;
end;
if tmpchar=';' then begin
result:='æ';
exit;
end;
if tmpchar='^' then begin
result:=':';
exit;
end;
if tmpchar='@' then begin
result:='"';
exit;
end;
if tmpchar in ['0'..'9'] then begin
result:=tmpchar;
exit;
end;
if tmpchar='$' then begin
result:=';';
exit;
end;
if tmpchar='&' then begin
result:='?';
exit;
end;
if tmpchar='|' then begin
result:='/';
exit;
end;
for i:=0 to (length(alphabet)-1) do
begin
if tmpchar=alphabet[i] then
begin
result:=rualphabet[i];
exit;
end;
if ord(tmpchar)=(ord(alphabet[i])-32) then
begin
result:=chr(ord(rualphabet[i])-32);
exit;
end;
end;
result:=tmpchar;
end;
begin
for i:=1 to length(tmpstr) do tmpstr[i]:=ConvertChar(tmpstr[i]);
result:=tmpstr;
end;
begin
if FromClient and (pck[1]=#$38) and (ConnectName=Name) then
begin
temp:=ReadS(2);
if ConvertNeeded(temp) then
begin
temp:=ConvertStr(temp);
if ReadD(length(temp)*2+4)=2 then
begin
buf:=#$38;
writes(temp);
writed(2);
writes(ReadS(length(temp)*2+8));
SendToServerEx(Name);
pck:='';
exit;
end;
buf:=#$38;
writes(temp);
buf:=buf+pck[length(pck)-3]+pck[length(pck)-2]+pck[length(pck)-1]+pck[length(pck)];
SendToServerEx(Name);
pck:='';
end;
end;
end.
  Ответить с цитированием
Старый 20.09.2009, 15:38   #13
 Сержант
Аватар для Benjamin
 
Benjamin скоро будет известенBenjamin скоро будет известенBenjamin скоро будет известенBenjamin скоро будет известенBenjamin скоро будет известен
Регистрация: 08.07.2009
Сообщений: 158
Популярность: 410
Сказал(а) спасибо: 295
Поблагодарили 197 раз(а) в 97 сообщениях
Отправить сообщение для Benjamin с помощью ICQ
 
По умолчанию Re: Скрипты для l2phx

Код:
//Скрипт на возрождение на месте после смерти. 
//Включите скрипт,когда вы умерли возьмите себя в таргет и нажмите в город. 
//Вы встанете наместе. 
//Автор pmen    ICQ - 479917081 
//=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= 
const 
//====================================== 
Name='ник сюды'; //<-----Ник Персонажа 
//====================================== 
var                 
a:integer;x:integer;MyID:string; 
y:integer;z:integer; 
b:boolean;ValidatePosition:string; 
    procedure Init;    //Вызывается при включении скрпта 
begin 
SendMsc('Возьми себя в таргет');  //Системное сообщение 
b:=false; //Условие b первоночально False 
end; 
    procedure SendMsc(msc:string); 
begin 
buf:=#$4A; 
WriteD(0); 
WriteD(10); 
WriteS(''); 
WriteS(msc); 
SendToClient; 
end; 
begin 
//Нечитаем пустые пакеты 
if pck='' then exit; 
//Если Имя соединения Name 
//И Пакет Action от клиента то   
    if FromClient and (ConnectName=Name) and (pck[1]=#$04) then  
begin 
//Сохраняем мой Обжект Ид 
MyID:= pck[2]+pck[3]+pck[4]+pck[5];   
a:=ReadD(2); x:=ReadD(6); //Читаем и запоминаем данные 
y:=ReadD(10); z:=ReadD(14); 
    SendMsc('Все данные сохранены!'); //Оповещаем о том что все прошло успешно 
b:=true; 
end; 
begin  
    if pck='' then exit; //Не читаем пустые пакеты 
//Если от Клиента пакет RequestRestartPoint 
//Запоминаем ValidatePosition до revive 
//Посылаем клиенту TeleportToLocation 
    if FromClient and (ConnectName=Name) and (pck=hstr('6D 00 00 00 00')) then 
    if FromClient and (ConnectName=Name) and (pck[1]=#$48) then ValidatePosition:=pck; 
    if FromServer and (ConnectName=Name) and (pck[1]=#$28) and (MyID= pck[2]+pck[3]+pck[4]+pck[5]) then 
   begin 
     pck:=''; //Убиваем стандартный пакет 
     buf:=ValidatePosition; //посылаем ValidatePosition 
   SendToServerEX(Name); 
     buf:=#$28; 
     WriteD(A);        //Obj.ID 
     WriteD(X);       //Coord.X 
     WriteD(Y);       //Coord.Y 
     WriteD(Z);       //Coord.Z 
     SendtoclientEX(Name); 
     buf:=ValidatePosition;  //посылаем ValidatePosition 
   SendToServerEX(Name); 
   end; 
end; 
end.

Последний раз редактировалось HellFire; 10.10.2009 в 21:55.
  Ответить с цитированием
Старый 21.10.2009, 17:04   #14
 Пехотинец
Аватар для dager315
 
dager315 на правильном путиdager315 на правильном пути
Регистрация: 24.05.2009
Сообщений: 94
Популярность: 152
Сказал(а) спасибо: 183
Поблагодарили 72 раз(а) в 47 сообщениях
Отправить сообщение для dager315 с помощью ICQ
 
По умолчанию Re: Скрипты для l2phx

Вот он
положить в папку l2phx.... в папку setings или просто в папку с прогой
Вложения
Тип файла: rar ItemsId.rar (82.1 Кб, 1678 просмотров)
________________
Чё уставился, СПАСИБО жми =))

P.S
КаПаЙ
  Ответить с цитированием
Старый 29.10.2009, 14:20   #15
 Разведчик
Аватар для Mest
 
Mest на правильном пути
Регистрация: 13.09.2009
Сообщений: 38
Популярность: 42
Сказал(а) спасибо: 5
Поблагодарили 16 раз(а) в 8 сообщениях
 
По умолчанию Re: Скрипты для l2phx

Антитаргет (пробывал на 3.1.9)
Код:
var act:integer; me1:char; me2:char; me3:char; me4:char; nm:integer; t1:char; t2:char; t3:char; t4:char; nt:integer; shade:integer; mz:integer; pz:integer; tz:integer; hz:integer;

procedure SendMsg(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msg);
SendToClient;
end;

begin


//анализ ИД себя

if nm<>1 then
begin
if FromServer and (pck[1]=#$04) then
begin
me1:=pck[18];
me2:=pck[19];
me3:=pck[20];
me4:=pck[21];
nm:= 1;
end;
end;


//защитная часть

if FromClient and (pck[1]=#$1B) and (pck[2]=#$06) then
begin
act:=1;
SendMsg('AT system on');
end;

if FromClient and (pck[1]=#$1B) and (pck[2]=#$05) then
begin
act:=0;
SendMsg('AT system off');
end;

if FromClient and (pck=#$38#$3C#$04#$2B#$00#$00#$00#$03#$00#$00#$00) then
begin
mz:=1;
SendMsg('Advanced m.def on')
end;

if FromClient and (pck=#$38#$3C#$04#$2D#$00#$00#$00#$03#$00#$00#$00) then
begin
mz:=0;
SendMsg('Advanced m.def off')
end;

if FromClient and (pck=#$38#$3F#$04#$2B#$00#$00#$00#$03#$00#$00#$00) then
begin
pz:=1;
SendMsg('Advanced p.def on')
end;

if FromClient and (pck=#$38#$3F#$04#$2D#$00#$00#$00#$03#$00#$00#$00) then
begin
pz:=0;
SendMsg('Advanced p.def off')
end;

if FromClient and (pck=#$38#$42#$04#$2B#$00#$00#$00#$03#$00#$00#$00) then
begin
tz:=1;
SendMsg('Anti-target on')
end;

if FromClient and (pck=#$38#$42#$04#$2D#$00#$00#$00#$03#$00#$00#$00) then
begin
tz:=0;
SendMsg('Anti-target off')
end;

if FromClient and (pck=#$38#$45#$04#$2B#$00#$00#$00#$03#$00#$00#$00) then
begin
hz:=1;
SendMsg('Hit"n"Hide on')
end;

if FromClient and (pck=#$38#$45#$04#$2D#$00#$00#$00#$03#$00#$00#$00) then
begin
hz:=0;
SendMsg('Hit"n"Hide off')
end;

if FromClient and (pck[1]=#$1B) and (pck[2]=#$03) then
begin
buf:=#$48#$00#$00#$FE#$FF#$7F#$AB#$03#$00#$E9#$F1#$FF#$FF#$88#$D4#$00#$00#$00#$00#$00#$00;
SendToServer;
end;

if act=1 then
begin

if tz=1 then
begin
if FromServer and (pck[1]=#$29) and (pck[6] = me1) and (pck[7] = me2) and (pck[8] = me3) and (pck[9] = me4) then
begin
buf:=#$48#$00#$00#$FE#$FF#$7F#$AB#$03#$00#$E9#$F1#$FF#$FF#$88#$D4#$00#$00#$00#$00#$00#$00;
SendToServer;
end;
end;

if mz=1 then
begin
if FromServer and (pck[1]=#$48) and (pck[6] = me1) and (pck[7] = me2) and (pck[8] = me3) and (pck[9] = me4) and (pck[2] <> me1) and (pck[3] <> me2) and (pck[4] <> me3) and (pck[5] <> me4) then
begin
buf:=#$48#$00#$00#$FE#$FF#$7F#$AB#$03#$00#$E9#$F1#$FF#$FF#$88#$D4#$00#$00#$00#$00#$00#$00;
SendToServer;
end;
end;

if pz=1 then
begin
if FromServer and (pck[1]=#$05) and (pck[6] = me1) and (pck[7] = me2) and (pck[8] = me3) and (pck[9] = me4) and (pck[2] <> me1) and (pck[3] <> me2) and (pck[4] <> me3) and (pck[5] <> me4) then
begin
buf:=#$48#$00#$00#$FE#$FF#$7F#$AB#$03#$00#$E9#$F1#$FF#$FF#$88#$D4#$00#$00#$00#$00#$00#$00;
SendToServer;
end;
end;

if hz=1 then
begin
if FromServer and (pck[1]=#$48) and (pck[6] = me1) and (pck[7] = me2) and (pck[8] = me3) and (pck[9] = me4) then
begin
buf:=#$48#$00#$00#$FE#$FF#$7F#$AB#$03#$00#$E9#$F1#$FF#$FF#$88#$D4#$00#$00#$00#$00#$00#$00;
SendToServer;
end;
end;

end;


//часть таргета

if FromClient and (pck[1]=#$04) then
begin
nt:=1;
t1:=pck[2];
t2:=pck[3];
t3:=pck[4];
t4:=pck[5];
end;

if FromClient and (pck[1]=#$37) then
begin
nt:=0;
end;

if nt=1 then
begin
if FromClient and (pck[1]=#$30) then
begin
buf:=#$04+t1+t2+t3+t4+#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00;
SendToServer;
buf:=#$A6+t1+t2+t3+t4+#$00#$00;
SendToClient;
end;
end;

if FromClient and (pck[1]=#$1B) and (pck[2]=#$04) then
begin
buf:=#$04+t1+t2+t3+t4+#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00;
SendToServer;
buf:=#$A6+t1+t2+t3+t4+#$00#$00;
SendToClient;
end;

//shadowmelt

if FromClient and (pck[1]=#$1B) and (pck[2]=#$07) then
begin
shade:=1;
buf:=#$48#$00#$00#$FE#$FF#$7F#$AB#$03#$00#$E9#$F1#$FF#$FF#$88#$D4#$00#$00#$00#$00#$00#$00;
SendToServer;
SendMsg('Skipped to Shadows');
end;

if FromClient and (pck[1]=#$1B) and (pck[2]=#$08) then
begin
shade:=0;
buf:=#$30#$00#$00;
SendToServer;
SendMsg('Reveal from Darkness');
end;

if shade = 1 then
begin
if FromClient and (pck[1]=#$30) then pck:='';
end;

end.
И так управление - нажимает Social Yes, система запущена, но еще не подключены модули... Подключаем те которые нам нужны...

пишем в ПАТИ ЧАТ:

т+ / т- - Включение/Выелючение АВТО антитаргета - таргет сбрасывется когда вас БЕРУТ НА ТАРГЕТ, тоесть он пытается выделить, а вы сбрасываете!

м+ / м- , п+ / п- - дополнительная магическая и физическая защита, непомню уже сам как работает (да у меня и не работает, изза лагучести инета) но знакомый говорит, если включить их в паре, то сбивает каст когда пытаются кастануть на вас заклинание, и "ичезает" прямо во время физической атаки на вас...

х+ / х- - уход в хайд после каждой своей физической атаки

Там есть еще такая штукенция, что после хайда, предыдущий таргет выберется автоматом (этого не видно в клиенте но он выделится, протестите на мобах)

Social Bow / Social Unaware - исчезнуть и появится, ну это кусок скрипта ХИНТА на его антитаргет.}

Добавлено через 6 минут
Инвиз
(только при том вы не можите двигаться а просто исчезаете, сильной полезности нет , но может кому нить пригодиться)

И так управление - нажимает Social Yes,No

Код:
//Invisible Mode 
var 
  pck48:string; 
  hidden:boolean; 
  i,x,y:integer; 

procedure Init; 
begin 
  hidden:=false; 
  pck48:=''; 
  randomize; 
end; 

procedure SendMsg(msg:string); 
begin 
  buf:=#$4A; 
  WriteD(0); 
  WriteD(2); 
  WriteS('hLaPEx'); 
  WriteS(msg); 
  SendToClient; 
end; 

begin 
  if FromServer then exit; 
  case ord(pck[1]) of 
    $1B:case ord(pck[2]) of 
      $05:begin 
        SendMsg('invisible_mode: Off'); 
        pck:=#$30; 
        hidden:=false; 
      end; 
      $06:begin 
        if pck48='' then exit; 
        SendMsg('invisible_mode: On'); 
        hidden:=true; 
        pck:=pck48; 
        i:=2; 
        x:=ReadD(i); 
        y:=ReadD(i); 
        x:=x+1000+round(random*200)-100; 
        y:=y+1000+round(random*200)-100; 
        buf:=pck; 
        WriteD(x,2); 
        WriteD(y,6); 
        pck:=buf; 
      end; 
    end; 
    $48:pck48:=pck; 
    $30:if hidden then pck:=''; 
  end; 
end.

Последний раз редактировалось Mest; 29.10.2009 в 14:26. Причина: Добавлено сообщение
  Ответить с цитированием
Ответ

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

Опции темы
Опции просмотра

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

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

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

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

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

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

Powered by vBulletin
Copyright © 2014 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production
Protected by GShost.net