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

Скрипты для l2phx

-

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

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

Ответ
 
Опции темы
Старый 11.09.2011, 14:00   #76
 Разведчик
Аватар для icheater
 
icheater никому не известный тип
Регистрация: 10.09.2011
Сообщений: 6
Популярность: 14
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
Отправить сообщение для icheater с помощью Skype™
 
По умолчанию Скрипт для поиска PK игрока

Если PK поблизости, то можно автоматически взять его в цель и/или вывести сообщение в чат. Команды для управления скриптом (все они вводятся в чат):
Включить автоматическое взятие PK в цель - %pk_target 1
Выключить автоматическое взятие PK в цель - %pk_target 0
Включить уведомление в чат при обнаружении поблизости PK - %pk_msg 1
Выключить уведомление в чат при обнаружении поблизости PK - %pk_msg 0

Скачать - [Ссылки могут видеть только зарегистрированные пользователи. ]


Работает везде, где работает l2phx.


Цитата:
Сообщение от TAMBIK
Правила нашего Форума
19.А Публикация материалов в открытых разделах Zhyk.Ru с других порталов допускается лишь при наличии упоминания об авторстве (Имя автора и название портала-первоисточника). В случае жалобы на тот или иной материал, не содержащий упоминаний об авторстве и при наличии весомых на то аргументов - нарушитель получает предупреждение, а при повторных нарушениях - красную карточку. Данная мера наказания может быть применена лишь после подачи соответствующей жалобы Администрации Zhyk.Ru правообладателем.

не хватает в описание
// Автор: Furious
// Версия: 0.1

CoderX :: Forums


Последний раз редактировалось J-Fobos; 15.09.2011 в 20:21.
  Ответить с цитированием
Старый 15.09.2011, 17:16   #77
 Разведчик
Аватар для laserdance
 
laserdance никому не известный тип
Регистрация: 29.04.2009
Сообщений: 12
Популярность: 16
Сказал(а) спасибо: 7
Поблагодарили 10 раз(а) в 5 сообщениях
Отправить сообщение для laserdance с помощью ICQ
 
Thumbs up Re: l2phx+сервер+гайд tracone

Кстати мож кому пригодится скриптик, заменяет мучения с пакетами. Если сочтете нужным - могу оформить в отдельную темку. Для IL придется чутарик править
Код:
//пишем nik , запускаем, выбераем НПС и вводим номер МС
// использованы куски кода  от NLObP и Xkor с их небезызвестного сайта
//тестилось на ГФ и выше, работает периодически и на разных ГФШ

var
FormMain:TForm;
Nmbr:TEdit;
LaunchButton:TButton;
NPC:TLabel;
nik='BOPOBKA'
procedure Init; 
begin
 FormMain:=Create_FormMain;
 
end;

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

//////////////////////////////////////
procedure SMS (text:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(1);
WriteS('');
WriteS(text);
SendToClientEx(nik);
end;
///////////////////////////////////////

procedure LaunchButton_Click(Sender: TButton);
begin
buf:=Hstr('23 6E00 7000 6300 5F00 ');
WriteS(NPC.caption+'_multisell '+Nmbr.text);
Sendtoserverex(nik);

end;

//////////////////////////////////////////////////
function Create_FormMain : TForm;

Var
  Yes : boolean;
begin
  Yes := FALSE;
  Result := TForm.Create(nil);

  TRY
    //------------------------
    //Ñâîéñòâà ôîðìû
    Result.Caption     := '';
    Result.Left        := 0;
    Result.Top         := 0;
    Result.Width       := 320;
    Result.Height      := 25;
    Result.FormStyle   := fsStayOnTop;
    Result.Position    := poDesigned;
    Result.BorderStyle := bsnone;
    Result.BorderWidth := 0;
    Result.WindowState := wsNormal;
    Result.Font.Name   := 'Verdana';
    Result.Font.Size   := 8;
    Result.Font.Color  := clWindowText;
    Result.Font.CharSet:= 1;
    Result.alphablend  := true;
    Result.AlphaBlendValue := 175;
    Result.FormStyle:=fsStayOnTop; 
    Result.Color := clGray;
    Result.TransparentColor := True;
    Result.TransparentColorValue := clgray;
    //......................................
    Nmbr := TEdit.Create(Result);
    Nmbr.Parent := Result;
    Nmbr.Left    := 84;
    Nmbr.Top     := 4;
    Nmbr.Width   := 180;
    Nmbr.Height  := 20;
    Nmbr.Visible := TRUE;
    Nmbr.Tag     := 0;
    Nmbr.Enabled  := TRUE;
    Nmbr.Hint     := '';
    Nmbr.ShowHint := TRUE;
    Nmbr.Text       := '';
    Nmbr.Font.Name  := 'Tahoma';
    Nmbr.Font.Size  := 7;
    Nmbr.Font.Color := clWindowText;
    Nmbr.Color        := clWindow;
    Nmbr.TabOrder     := 5;
    Nmbr.TabStop      := TRUE;
    Nmbr.ReadOnly     := FALSE;
    Nmbr.MaxLength    := 0;
    Nmbr.AutoSize     := TRUE;
    //......................................
        LaunchButton := TButton.Create(Result);
        LaunchButton.Left    := 270;
        LaunchButton.Parent := Result;
    LaunchButton.Top     := 3;
    LaunchButton.Width   := 40;
    LaunchButton.Height  := 21;
    LaunchButton.Visible := TRUE;
    LaunchButton.Tag     := 0;
    LaunchButton.Enabled  := FALSE;
    LaunchButton.Hint     := '';
    LaunchButton.ShowHint := FALSE;
    LaunchButton.Caption    := 'Go!';
    LaunchButton.Font.Name  := 'Tahoma';
    LaunchButton.Font.Size  := 8;
    LaunchButton.Font.Color := clWindowText;
    LaunchButton.Font.CharSet := 1;
    LaunchButton.TabOrder     := 2;
    LaunchButton.TabStop      := TRUE;
    LaunchButton.Cancel       := FALSE;
    LaunchButton.ModalResult  := 0;
    LaunchButton.OnClick     := @LaunchButton_Click;
    ////////////////////////////////
     npc := TLabel.Create(Result);
    npc.Parent := result;
    npc.Left    := 4;
    npc.Top     := 6;
    npc.Width   := 60;
    npc.Height  := 13;
    npc.Visible := TRUE;
    npc.Tag     := 0;
    npc.Enabled  := TRUE;
    npc.Hint     := '';
    npc.ShowHint := FALSE;
    npc.Caption     := '[ Нет НПС ]';
    npc.Transparent := TRUE;
    npc.WordWrap    := FALSE;
    npc.Alignment   := taCenter;
    npc.Layout      := tlTop;
    npc.AutoSize    := TRUE;
    npc.Align       := alNone;
    npc.Font.Name   := 'Tahoma';
    npc.Font.Size   := 8;
    npc.Font.Color  := clRed;
    npc.Color       := clBtnFace;
    
    //////////////////////////////////////////
    Yes := TRUE;
  FINALLY
    if not Yes then begin
    
       if Result<>NIL then begin
          Result.Free;
          Result:=NIL;
       end;
    end;
  END;
  Result.Show;
end;
//////////////////////////////////////////////////

begin

   if (pck[1]=#$b9)  then begin
   NPC.caption:=inttostr(readd(2));
   NPC.font.color:=ClGreen;
    LaunchButton.Enabled := TRUE;   
    COL.Enabled := TRUE;     
    
   
   end;
//нижние две строки можно разкоментировать чтоб  писался в 
//клиент последний байпас (Пригодится чтоб отслеживать номера МС 
//гмшопов в клиенте не переключаясь на пх)
 
//  if (pck[1]=#$23) and (FromClient) then
//  SMS (ReadS(2)); 
   
end.
  Ответить с цитированием
Старый 05.11.2011, 06:23   #78
 Пехотинец
Аватар для HARDporno[™]
 
HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(HARDporno[™] сломал счётчик популярности :(
Регистрация: 08.03.2011
Сообщений: 93
Популярность: 17091
Сказал(а) спасибо: 52
Поблагодарили 536 раз(а) в 215 сообщениях
 
По умолчанию Re: Скрипты для l2phx

Авто-заточка High Five
Код:
const
 * nik='GreenPo1SoN';//Тут вписываем свой ник
 * Enchant=16;//это число при котором скрипт точить дальше не будит
 
var
 UseItem, SelectItem, EnchantItem: string;
 CurrentEnch: integer;
 key: boolean;
 Timer01, Timer02: TTimer;
 
procedure Init;
 begin
 Timer01:=TTimer.Create(nil);
 Timer01.OnTimer:=@OnTimer01;
 Timer01.enabled:=false;
 * Timer01.interval:=3000; //тут ставим интервал 1000 = 1 сек
 
Timer02:=TTimer.Create(nil);
 Timer02.OnTimer:=@OnTimer02;
 Timer02.enabled:=false;
 * Timer02.interval:=3000; //Тут тоже настраиваем под себя время заточки
 end;
 
procedure OnTimer01(Sender: TObject);
 begin
 case key of
 false: begin
 buf:=UseItem;
 SendToServerEx(nik);
 Timer02.enabled:=true;
 end;
 true: begin
 buf:=EnchantItem;
 SendToServerEx(nik);
 end;
 end;
 key:=not(key);
 end;
 
procedure OnTimer02(Sender: TObject);
 begin
 buf:=SelectItem;
 SendToServerEx(nik);
 Timer02.enabled:=false;
 end;
 
procedure Free;
 begin
 Timer01.free;
 Timer02.free;
 CurrentEnch:=0;
 key:=false;
 end;
 
begin
 if FromServer and (pck[1]=#$87) then case ReadD(2) of
 0: begin
 CurrentEnch:=CurrentEnch+1;
 if CurrentEnch=Enchant then Timer01.enabled:=false;
 end;
 3: CurrentEnch:=0;
 end;
 if FromClient and (pck[1]=#$19) then UseItem:=pck;
 if FromClient and (pck[1]=#$D0) then SelectItem:=pck;
 if FromClient and (pck[1]=#$5F) then EnchantItem:=pck;
 if FromClient and (pck[1]+pck[2]=#$56#$0C) then
 begin
 pck:='';
 Timer01.enabled:=not(Timer01.enabled);
 end;
 end.
 Используем так включаем скрипт точим затачиваем оружие +1 и пишем в чат /socialhello и все наша автозаточка началась!
  Ответить с цитированием
Старый 13.01.2012, 08:04   #79
 Разведчик
Аватар для Kolobok123
 
Kolobok123 никому не известный тип
Регистрация: 07.01.2012
Сообщений: 1
Популярность: 14
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 1 сообщении
 
По умолчанию Re: IG бот 2.09 на русском!

Может кому поможет. Играю на интерлюдии ИГ бот при запуске пишет ГМ-у отправлена инафа и тут же дисконнект. Пару таких попыток-бан. ГГ убить не вышло. Проблема решается легко. Добавляем в pkh вот такой скрипт:

begin
if FromClient and (pck[1]=#$01) then begin
buf:=pck;
WriteD(1);
pck:=buf;
end
end.

Бот работает на ура (спасибо большое J-Fobos научил) Смысл в том что ГГ при начале движения мышкой добавляет 01 00 00 00 в конце пакета. Когда это делает бот 01 00 00 00 не добавляется. Поэтому добавляем сами скриптом и ботим. Скрипт под интерлюдии под другие хроники надо править.
  Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
AnotherTest (24.02.2013), J-Fobos (13.01.2012), m+Mef14279 (14.01.2012)
Старый 11.03.2012, 19:03   #80
 Разведчик
Аватар для serge-er
 
serge-er никому не известный тип
Регистрация: 02.12.2010
Сообщений: 20
Популярность: 14
Сказал(а) спасибо: 68
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Скрипты для l2phx

Для gm pvp, ворует скиллы и приписывает их к себе.
Цитата:
var
m: TMemo;
frm:TForm;
penel: TPanel;
etext: tedit;
button: tbutton;
i, s, passive, lvl, id: Integer;
NumSkills : Integer;
Message, Name: String;

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

// Дает скилл пользователю
procedure SetSkill( id : Integer; lvl : Integer );
begin
buf:=#$74;
WriteS( 'setskill ' + IntToStr(id) + ' ' + IntToStr(lvl) );
SendToServer;
Delay( 10 );
end;

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

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

begin
if FromServer and (pck[1]=#$97) then
begin
i := 2;
name:=ReadS(i);
m.Lines.Add( Name+': ' );

NumSkills := ReadD(i);
m.Lines.Add( 'Количество скилов: ' + IntToStr(NumSkills) );
m.Lines.Add( '' );
for s:=1 to NumSkills do
begin
Passive := ReadD(i);
Lvl := ReadD(i);
Id := ReadD(i);
if Passive = 1 then
m.Lines.Add( 'Passive Id:' + IntToStr( Id ) + ' Lvl: ' + IntToStr( lvl ) )
else
m.Lines.Add( 'Active Id:' + IntToStr( Id ) + ' Lvl: ' + IntToStr( lvl ) );
ReadC(i);
SetSkill( Id, Lvl );
end;
end;
end.

Как использовать, выделяешь того, кому хочешь перекинуть скиллы, *можно себя*, нажимаешь alt+g(Gm panel, для особо тупых, это только для гмов) и вводишь там ник того, с кого будешь брать скиллы, и нажимаешь на кнопку Skill

Последний раз редактировалось serge-er; 23.03.2012 в 16:13.
  Ответить с цитированием
Старый 19.04.2012, 12:50   #81
 Разведчик
Аватар для tumanch1k
 
tumanch1k никому не известный тип
Регистрация: 03.03.2011
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию НЕ ПОЙМУ

Вот объясните этот скрипт вроде по функциональности должен быть нормальным но он не черта не хочет делать тупо когда точишь в ручную пишит объявления и все(
Хроника ХФ точка шмоток и вставка ЛСов работает на ура.


Цитата:
Const
NickName = 'Un1cum';
MaxEnchantLevel = 15;

interval = 0; //Интервал между точкой
MainDebug = true; // ПИСАТТЬ СОБОЩЕНИЯ В ЧАТ ИЛИ НЕТ ДА-true НЕТ-false

var
CurLevel: integer;
tick: integer;
SKillID: integer;

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


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

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

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

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

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


Зато этот точит с такой скорость что выкидывает с игры;

Цитата:
const
nik='Un1cum';
Enchant=15;

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вом или есть нормальный рабочий скрипт?
Сам я в скриптовании нуб
Если я пишу не по теме извините не знал где написать.
  Ответить с цитированием
Старый 19.04.2012, 16:55   #82
 Разведчик
Аватар для Kr1ps
 
Kr1ps на правильном пути
Регистрация: 02.03.2010
Сообщений: 8
Популярность: 30
Сказал(а) спасибо: 0
Поблагодарили 12 раз(а) в 6 сообщениях
 
По умолчанию Re: НЕ ПОЙМУ

Цитата:
Сообщение от tumanch1kПосмотреть сообщение
Вот объясните этот скрипт вроде по функциональности должен быть нормальным но он не черта не хочет делать тупо когда точишь в ручную пишит объявления и все(

Помогите разобраться что и как в 1вом или есть нормальный рабочий скрипт?

Первый скрипт помоему вообще какой-то нерабочий..либо не под хф...т.к. я там не нашел даже пакета 5F RequestEnchantItem
впрочем вот... Тык
  Ответить с цитированием
Старый 20.04.2012, 19:53   #83
 Разведчик
Аватар для xDontStopx
 
xDontStopx вызывает надежду
Регистрация: 26.04.2011
Сообщений: 10
Популярность: -22
Сказал(а) спасибо: 16
Поблагодарили 8 раз(а) в 5 сообщениях
Отправить сообщение для xDontStopx с помощью ICQ Отправить сообщение для xDontStopx с помощью Skype™
 
По умолчанию Re: Скрипты для l2phx

Открытие любых дверей
Код:
//**********************************************
//Открытие/закрытие любых дверей, ворот и т.д. А также проход в дальнейщем через откртую дверь дальше.
//Работает на всех серверах, но пройти через открытую дверь можно на сервере, где нет геодаты (java).
//Чтобы использовать скрипт, выделите нужную вам дверь через Shift + левая кнопка мыши
//**********************************************
var
Bypass: String;
ObjectID, ActionID, Status: Integer;

const
HTML='<html><body><center><img src="L2UI_CH3.herotower_deco"'+
' width=256 height=32><font color="LEVEL">Меню управления во'+
'ротами и дверями</font><br><font color="LEVEL">Автор: Furio'+
'us</font><img src="L2UI.SquareWhite" width=260 height=1><im'+
'g src="L2UI.SquareBlank" width=260 height=4><br1><td><butto'+
'n value="Открыть" action="bypass -h open" width=70 height=1'+
'5 back="sek.cbui94" fore="sek.cbui92"></td><br><td><button '+
'value="Закрыть" action="bypass -h close" width=70 height=15'+
' back="sek.cbui94" fore="sek.cbui92"></td><br></tr><img src'+
'="L2UI.SquareWhite" width=260 height=1><img src="L2UI.Squar'+
'eBlank" width=260 height=4><br1></center></body></html>';

procedure ShowHTML;
  begin
    buf:=#$0F;
    WriteD(5);
    WriteS(HTML);
    SendToClient;
  end;

procedure DoorAction;
  begin
    buf:=#$4D;
    WriteD(ObjectID);
    WriteD(Status);
    WriteD(0);
    WriteD(1);
    WriteD(0);
    SendToClient;
  end;


begin
  if FromClient and (pck[1]=#$04) then
    begin
      ActionID:=ReadC(18);
      if ActionID=1 then
        begin
          ObjectID:=ReadD(2);
          ShowHTML;
        end;
    end;
  if FromClient and (pck[1]=#$21) then
    begin
      Bypass:=ReadS(2);
      case Bypass of
      'open':Status:=0 and DoorAction;
      'close':Status:=1 and DoorAction;
      end;
    end;
end.
Добавлено через 4 минуты
Enchant
Код:
//Автоматизация заточки предметов до необходимого уровня
program Enchant;
{********************************************************************************
Возможности скрипта:
--------------------
0.1
+ Панель управления;
+ Затачиваем по очереди все предметы с ItemID пока не переломаем
  или не заточим, один предмет всегда остаётся;
0.2
+ исправлен выбор названий предметов из инвентаря;
+ небольшая правка кода;
0.3
+ Проверено на theAbyss (все предметы инвентаря чара видит);
+ исправлена ошибка кода выбора скроллов;
+ исправлена ошибка подсчета суммы предметов;
0.4
+ специально для Miler проверено на La2Titan (затачивал Mantikore Skin Shirt до +7);
+ исправлена процедура InventoryUpdate;
+ изменена логика затачивания;
+ заготовка покупки заточек/вещей;
0.5
+ проверено на L2Fantasy;
+ добавлена проверка, если заточка сбрасывается в 0 без поломки вещи;
+ добавлен код, если надо точить одну вещь (опционально);
0.6
+ изменил выборку ItemId;
0.7
+ исправлено смещение в CreateItemBase для С4, спасибо Mulder

====================================================================
Работа скрипта проверялась на локальном Интерлюда сервере,
для С4 не проверялась и поддерживаться далее не будет.
====================================================================

Необходимо затариться оружием, заточками и валерьянкой.
Name='Sneks'; //Вписать сюда имя чара
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=true; //Interlude - true, C4 - false

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

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

********************************************************************************}

//............................................
//Список констант
const
  Name='Sneks'; //Вписать сюда имя чара
  //установить константу в зависимости от типа игры (С4 или Интерлюд)
  interlude=true; //Interlude - true, C4 - false
  //-------------------------
  max=250;     //количество слотов в инвентаре чара

//............................................
//Список переменных
var
  Item, scrl:integer;
  ScrollID, ScrollOID:integer;  //ScrollID скролла заточки
  ItemID,ItemOID:integer;      //ItemID затачиваемого предмета
  MaxEnchLvl:integer;         //уровень заточки который требуется достичь
  ItemBase:  array[1..4,1..max] of integer; //ItemOID, ItemID, Kol-vo, ItemLvl
  ready, add : boolean;
  timer : TTimer;
  ItemCount, CurEnchLvl: integer;
  SocialID : integer; // вспомогательная
  ItemsName, StringList : TStringList;  //названия предметов, имена продавцов
  FormMain : TForm; //Создаваемая форма
  Splitter1 : TSplitter;
  Splitter2 : TSplitter;
  Stats : TMemo;
  Msg : TMemo;
  Panel1 : TPanel;
  GroupBox2 : TGroupBox;
  Label2 : TLabel;
  Label4 : TLabel;
  Label12 : TLabel;
  Label13 : TLabel;
  CheckBoxItem : TCheckBox;
  ComboBoxItem : TComboBox;
  ButtonStartEnchant : TButton;
  ButtonStopEnchant : TButton;
  CheckBoxScroll : TCheckBox;
  ComboBoxScroll : TComboBox;
  EditItemVal : TEdit;
  EditScrollVal : TEdit;
  EditScrollOID : TEdit;
  EditItemOID : TEdit;
  Label1 : TLabel;
  Label3 : TLabel;
  Edit1 : TEdit;
  Edit2 : TEdit;
//............................................
//*************************************
//Обработчики событий для элементов управления на форме
//......................................
//CheckBoxItem
procedure CheckBoxItem_Click(Sender: TCheckBox);
//Event : OnClick
begin
  if CheckBoxItem.Checked
  then begin
    ItemOID:=ItemBase[1,ComboBoxItem.ItemIndex+1];
    ItemID:=ItemBase[2,ComboBoxItem.ItemIndex+1];
    //проверка
//    EditItemOID.Text:=Inttostr(ItemID);
//    EditItemVal.text:=inttostr(ItemOID);

    ComboBoxItem.Enabled:=false; //выключаем
  end else begin
    ItemID:=0;               //отмена
    ItemOID:=0;
    ComboBoxItem.Enabled:=true;  //включаем
    //Пакет RequestItemList
    buf:=hstr('0F');
    SendToServerEx(Name);
  end;
end;
//......................................
//......................................
//ComboBoxItem
procedure ComboBoxItem_Click(Sender: TComboBox);
//Event : OnClick
begin
    ItemOID:=ItemBase[1,ComboBoxItem.ItemIndex+1];
    ItemID:=ItemBase[2,ComboBoxItem.ItemIndex+1];
//    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:=ItemBase[1,ComboBoxScroll.ItemIndex+1];
    ScrollID:=ItemBase[2,ComboBoxScroll.ItemIndex+1];
    //проверка
//    EditScrollOID.Text:=Inttostr(ScrollID);
//    EditScrollVal.text:=inttostr(ScrollOID);
    ComboBoxScroll.Enabled:=false; //выключаем
  end else begin
    ScrollID:=0;               //отмена
    ScrollOID:=0;
    ComboBoxScroll.Enabled:=true;  //включаем
    //Пакет RequestItemList
    buf:=hstr('0F');
    SendToServerEx(Name);
  end;
end;
//......................................
//......................................
//ComboBoxScroll
procedure ComboBoxScroll_Click(Sender: TComboBox);
//Event : OnClick
begin
    ScrollOID:=ItemBase[1,ComboBoxScroll.ItemIndex+1];
    ScrollID:=ItemBase[2,ComboBoxScroll.ItemIndex+1];
//    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 xDonTStoPx';
    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 xDonTStoPx!');
  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:=1000; //время задержки
  ready:=false;
  add:=false;
  //Пакет RequestItemList
  buf:=hstr('0F');
  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
//  ItemBase:=nil; //нельзя так делать с массивом
  timer.Free;
  StringList.Clear;
  ItemsName.Clear;
  //достаточно освободить форму
  Free_FormMain;
end;
//......................................
//******************************************************************************
procedure Say(msg:string);
begin
  buf:=hstr('4A 00 00 00 00');
  WriteD(2);
  WriteS(Name);
  WriteS(msg);
  SendToClientEx(Name);
end;
//......................................
//***************************************************************
procedure CreateItemBase; //пакет 1B, Создает базу ObjectID по ItemID
//1B=ItemListPacket:w(window)w(ListCount)w(itemType1)h(ObjectID)i(ItemID)d(count)w(itemType2)w(CustType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(CustType2)d(Augment)d(--)
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
    ItemBase[4,i]:=0;  //lvl
  end;
  j:=4; //смещение для ListCount
  ListCount:=ReadH(j); //количество итемов не должно превышать max!
  //if ListCount>maxitems then msg.Lines.Add('Внимание! Не все вещи влезли в массив. ListCount>Max='+IntToStr(ListCount)+'/'+IntToStr(maxitems));
  j:=8; //смещение для ObjectID
  //Пробегаем по Инвентарю и сохраняем ObjectID соответствующие необходимым ItemID
  for i:=1 to ListCount do begin
    itemBase[1,i]:=ReadD(j);    //OID
    itemBase[2,i]:=ReadD(j);   //ItemID
    itemBase[3,i]:=ReadD(j);  //кол-во
    inc(j,10);
    itemBase[4,i]:=ReadH(j);//EnchantLevel
//    msg.Lines.Add('i='+inttostr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemKol='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
    if interlude then inc(j,12) else inc(j,4);
    //msg.Lines.Add('j='+inttostr(j));
  end;
  //вносим изменения в чекбоксы
  StringList.Clear;
  try
    for i:=1 to ListCount do begin
      try
        //StringList.Add(ItemsName[ItemBase[2,i]-1]); //записываем название вещей из инвентаря
        StringList.Add(ItemsName.Values[IntToStr(ItemBase[2,i])]); //записываем название вещей из инвентаря
      except;
        msg.Lines.Add('Пропускаем! Нет ItemID='+inttostr(ItemBase[2,i])+' в itemsid.ini');
      end
    end;
  except;
    msg.Lines.Add('ошибка в CreateItemBase->StringList.Add()');
    msg.Lines.Add(inttostr(ItemBase[2,i]));
    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;
//......................................
//******************************************************************************
//27=InventoryUpdate:w(count)w(1add2mod3remove)w(itemType1)d(ObjectID)i(ItemId)d(Count)w(itemType2)w(cusType1)w(isEquipped)d(BodyPart)w(EnchantLevel)w(cusType2)-(8)
procedure InventoryUpdate; //пакет 27, обновляет базу ObjectID по ItemID
var
  i, ii, j, ItemOID, ItemID, ItemCount, ListCount, UpdType, Itemlvl: integer;
  add : boolean;
begin
  add:=false;
  ListCount:=ReadH(2); //количество итемов
  //Пробегаем по Инвентарю и сохраняем пары ObjectID - lvl
  j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален
  for ii:=1 to ListCount do begin
    UpdType:=ReadH(j);
    //inc(j,2);
    ReadH(j);               //ItemType1
    ItemOID:=ReadD(j);     //ObjectID
    ItemID:=ReadD(j);     //ItemID
    itemCount:=ReadD(j); //кол-во
    inc(j,10);
    Itemlvl:=ReadH(j);
    case UpdType of
      //добавлен
      1: begin
         for i:=1 to max do begin
           if (ItemBase[1,i]=0) and (add=false) then begin
             ItemBase[1,i]:=ItemOID;
             ItemBase[2,i]:=ItemID;
             ItemBase[3,i]:=ItemCount;
             ItemBase[4,i]:=Itemlvl;
             msg.Lines.Add('Добавили предмет!');
             msg.Lines.Add('i='+inttostr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemKol='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
             add:=true;
           end;
         end;
      end;
      //изменен
      2: begin
         for i:=1 to max do begin
           if ItemBase[1,i]=ItemOID then begin
             ItemBase[3,i]:=ItemCount;
             ItemBase[4,i]:=Itemlvl;
             msg.Lines.Add('Изменяем параметры предмета!');
             msg.Lines.Add('i='+inttostr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemKol='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
           end;
         end;
      end;
      //удален
      3: begin
         for i:=1 to max do begin
           if ItemBase[1,i]=ItemOID then begin
             msg.Lines.Add('Удаляем предмет!');
             msg.Lines.Add('i='+inttostr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemKol='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
             ItemBase[1,i]:=0;
             ItemBase[2,i]:=0;
             ItemBase[3,i]:=0;
             ItemBase[4,i]:=0;
           end;
         end;
      end;
    end;
    if interlude then inc(j,10) else inc(j,2);
    //msg.Lines.Add('j='+inttostr(j));
  end;
end;
//......................................
//******************************************************************************
//находим в инвентаре предмет с ItemID и возвращаем его ObjectID
function GetItem(item:integer; lvl:integer) : integer;
var
  i : integer;
begin
  for i:=1 to max do begin
    //находим подходящий предмет по ItemID
    if (ItemBase[2,i]=item) and (ItemBase[4,i]=lvl) then begin
      //если нашли, то возвращаем ObjectID предмета
      result:=ItemBase[1,i]; // itemOID
      ItemCount:=ItemBase[3,i];
      //Itemlvl:=ItemBase[4,i];
      //msg.Lines.Add('<item='+inttostr(item)+' lvl='+inttostr(lvl)+'> i='+inttostr(i)+' ItemOID='+IntToStr(ItemBase[1,i])+' ItemID='+IntToStr(ItemBase[2,i])+' ItemKol='+IntToStr(ItemBase[3,i])+' ItemLVL='+IntToStr(ItemBase[4,i]));
      exit;
    end;
  end;
  //ничего не нашли
  result:=0;
end;
//......................................
//******************************************************************************
procedure UseItem(ObjectID: integer);
begin
  buf:=#$14;
  WriteD(ObjectID);
  WriteD(0);
  SendToServerEx(Name);
end;
//......................................
//******************************************************************************
function SumItem(Item: integer):integer;
var
  sum, i : integer;
begin
  result:=0;
  //находим подходящий предмет по ItemID
  for i:=1 to max do begin
    if (ItemBase[2,i]=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+ItemBase[3,i];
      //inc(result);
    end;
  end;
end;
//......................................
//******************************************************************************
procedure RequestEnchantItem(ObjectID: integer);
begin
  buf:=#$58;
  WriteD(ObjectID);
  SendToServerEx(Name);
  //*********** использовать чит с петом ************************
{  buf:=#$8B;
  WriteD(ObjectID);
  writed(1);
  SendToServerEx(Name);
}  //***********
end;
//......................................
{//***************************************************************
function ExtractIDValues(sData: string): integer;
var
  s: string;
  i,j: integer;
begin
  i:=0;
  s:=sData;
  i:=pos('=',s);
  if i>=0 then
    s:=copy(s,1,i-1);
  try
    result:=strtoint(s);
  except
    result:=0;
  end;
end;
//............................................}
//******************************************************************************
procedure OnTimer(Sender: TObject);
begin
  EditItemVal.text:=inttostr(sumitem(ItemID));
  EditScrollVal.text:=inttostr(sumitem(ScrollID));
  if (CurEnchLvl>=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;
  ScrollOID:=GetItem(ScrollID,0);
  if ScrollOID=0 then begin
    msg.Lines.Add('Нет заточки! Прервано!');
    timer.enabled:=false;
    exit;
  end;
  UseItem(ScrollOID);
  msg.Lines.Add('Задействовали скролл ScrollID='+IntToStr(scrollID)+' ScrollOID='+IntToStr(ScrollOID));
  ready:=true; //готовы затачивать
//    delay(1000);
//    RequestEnchantItem(Item);
//    delay(1000);
    //************************************************
//    msg.Lines.Add('Пробуем улучшить ItemID='+IntToStr(Item));
//  end;
end;
//......................................
//***************************************************************
// Вся торговля здесь!!!
//***************************************************************
{procedure OnTrade1(Sender: TObject);
begin
  case trade of
    //-------------------------------------------------
    //покупаем у Misc Trader  из массива TradeBuyItem1
    //-------------------------------------------------
    100: begin
      if ReadyToBuy then exit; //если еще купили предыдущую вещь, то выходим сразу
      //мы у фишермана, покупаем крючки
      if FishermanOID=0 then begin
        Trade1.enabled:=false; //останавливаем торговлю
        msg.Lines.Add('Не готовы к торговле, нет OID фишермана! Требуется отбежать подальше и вернуться.');
        exit; //выходим
      end;
      if TradeCount=TradeBuyItemCount then begin //проверка на выход из массива
        trade:=400;
        msg.Lines.Add('Всё купили!');
        msg.Lines.Add('Переход к обмену...');
        TradeCount:=0; //начнем сначала массива
      end else begin
        if FindItem(TradeBuyItem[TradeCount])<strtoint(EditLure.text) then begin
          TargetAttacker(FishermanOID); //фишермана в таргет
          msg.Lines.Add('Готовы купить:'+inttostr(TradeBuyItem[TradeCount]));
          ReadyToBuy:=true; //готовы продавать
          NeedBuy:=strtoint(EditLure.text)-colvoitm2; //докупаем до 50
          msg.Lines.Add('Требуется докупит крючков:'+inttostr(NeedBuy));
        end else msg.Lines.Add('Не надо покупать, уже есть:'+inttostr(colvoitm2));
        Trd:=TradeCount;
        inc(TradeCount);
        msg.Lines.Add('TradeCount/TradeBuyItemCount:'+inttostr(TradeCount)+'/'+inttostr(TradeBuyItemCount-1));
      end;
    //-------------------------------------------------
    //покупаем у Armor Trader  из массива TradeBuyItem2
    //-------------------------------------------------
    200: begin
      if ReadyToBuy then exit; //если еще купили предыдущую вещь, то выходим сразу
      //мы у фишермана, покупаем крючки
      if FishermanOID=0 then begin
        Trade1.enabled:=false; //останавливаем торговлю
        msg.Lines.Add('Не готовы к торговле, нет OID фишермана! Требуется отбежать подальше и вернуться.');
        exit; //выходим
      end;
      if TradeCount=TradeBuyItemCount then begin //проверка на выход из массива
        trade:=400;
        msg.Lines.Add('Всё купили!');
        msg.Lines.Add('Переход к обмену...');
        TradeCount:=0; //начнем сначала массива
      end else begin
        if FindItem(TradeBuyItem[TradeCount])<strtoint(EditLure.text) then begin
          TargetAttacker(FishermanOID); //фишермана в таргет
          msg.Lines.Add('Готовы купить:'+inttostr(TradeBuyItem[TradeCount]));
          ReadyToBuy:=true; //готовы продавать
          NeedBuy:=strtoint(EditLure.text)-colvoitm2; //докупаем до 50
          msg.Lines.Add('Требуется докупит крючков:'+inttostr(NeedBuy));
        end else msg.Lines.Add('Не надо покупать, уже есть:'+inttostr(colvoitm2));
        Trd:=TradeCount;
        inc(TradeCount);
        msg.Lines.Add('TradeCount/TradeBuyItemCount:'+inttostr(TradeCount)+'/'+inttostr(TradeBuyItemCount-1));
      end;
    end;
  end;
end;
}//......................................
//******************************************************************************
// вызывается при приходе каждого пакета, если скрипт включен
//******************************************************************************
begin
  //****************************************************************************
  //не обрабатываем пустые пакеты
  if pck='' then exit;
  //****************************************************************************
  //покупка состоит из следующих шагов:
  //1. таргет  на продавце, пауза, снова таргет c04=Action, c04=Action
  //2. приходит s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
  //3. шлем выбранный пункт из меню c21=RequestBypassToServer:s(Cmd)
  //4. приходит s11=BuyList:d(Money)h(ListID)w(ListCount)w(ItemType1)h(ObjectID)i(ItemID)d(maxcnt)w(ItemType2)w(h)d(ItemBodyPart)
  //5. FindItem(ID) найдем OID, Count нужной вещи по ID
  //6. шлем c1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d(Count)
  //****************************************************************************
{  if ReadyToBuy and (FishermanOID<>0) then begin
    if (ConnectName=Name) and FromServer then begin
      case pck[1] of
        //после того как мы взяли в таргет продавца приходит этот пакет
        //s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
        #$0F: begin
          msg.Lines.Add('S>Пакет NpcHtmlMessage #$0F');
          if ReadD(2)=FishermanOID then begin
            //шлем запрос выбора пункта - продажа
            //c21=RequestBypassToServer:s(Cmd)
            delay(1000);
            RequestByPassToServer(getbuylist);
            msg.Lines.Add('C>Пакет RequestBypassToServer #$21 (sell)');
          end;
        end;
        //после выбора пункта - продажа, приходит этот пакет
        //s11=BuyList:d(Money)h(ListID)w(ListCount)w(ItemType1)h(ObjectID)i(ItemID)d(maxcnt)w(ItemType2)w(h)d(ItemBodyPart)
        #$11: begin
          msg.Lines.Add('S>Пакет BuyList #$11');
          ListID:=ReadD(6); //запоминаем, он все время разный
          msg.Lines.Add('ListID='+inttostr(ListID));
          //шлем запрос на продажу
          //1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d(Count)
          msg.Lines.Add('C>Пакет RequestBuyItem #$1F');
          //продадим первый из списка
          msg.Lines.Add('Item: ID:'+IntToStr(TradeBuyItem[Trd])+' Count:'+IntToStr(NeedBuy));
          delay(1000);
          RequestBuyItem(TradeBuyItem[Trd],NeedBuy);
          ReadyToBuy:=false;
        end;
      end;
    end;
  end;
}  //......................................
  //****************************************************************************
  if FromServer then
  case pck[1] of
     //......................................
    //Пакет ItemList
    #$1B: CreateItemBase; //создание базы предметов
     //......................................
    //если удалили предметы, стираем в базе предметов пары ObjectID - ItemID
    #$27: InventoryUpdate; //Обновление базы
     //......................................
    //Пакет ChooseInventory
    #$6F: if ready then begin //and (readd(2)=itemid)
      //ищем подходящий предмет для заточки
      timer.enabled:=false; //отключаем пока не найдем предмет для заточки
      repeat
        ItemOID:=GetItem(ItemID,CurEnchLvl);
        if ItemOID=0 then begin
          inc(CurEnchLvl);
          Edit2.text:=inttostr(CurEnchLvl);
        end;
      until ItemOID<>0;
      //************************************************
      msg.Lines.Add('Пробуем улучшить ItemID='+IntToStr(ItemID)+' ItemOID='+IntToStr(ItemOID));
      RequestEnchantItem(ItemOID);
      ready:=false;
      timer.enabled:=true; //пока в тесте отключаем (вкл. после заточки предмета)
    end;
    #$81: if readd(2)=0 then begin
          CurEnchLvl:=0; //начнем с начала
    end;
  end;
end.
________________
Помог? Тыкни Спасибку *_*

Последний раз редактировалось xDontStopx; 20.04.2012 в 19:58. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 20.04.2012, 20:00   #84
 Разведчик
Аватар для xDontStopx
 
xDontStopx вызывает надежду
Регистрация: 26.04.2011
Сообщений: 10
Популярность: -22
Сказал(а) спасибо: 16
Поблагодарили 8 раз(а) в 5 сообщениях
Отправить сообщение для xDontStopx с помощью ICQ Отправить сообщение для xDontStopx с помощью Skype™
 
По умолчанию Re: Скрипты для l2phx

Панель администратора.
Код:
{**
*** Панель администратора
**}

var
   cmd: String;
   Bypass : String;
   Param : String;
   CaptureSkills : boolean;
   SkillsList : TStringList;
   Id, Lvl, i, s, NumSkills : Integer;
   CurrSkill : Integer;

   TimerForSkills : TTimer;
   CounterForSkills : Integer;

const
   MainMenu = '<html><title>Панель администратора</title><body>'+
   '<center>'+
   '<table width=240><tr>'+
   '<td><button value="Телепорт" action="bypass -h admin_teleport" width=65 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Предметы" action="bypass -h admin_items" width=65 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Умения" action="bypass -h admin_skills" width=65 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Вызов" action="bypass -h admin_summon" width=65 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td></tr></table><br><br>'+
   '<edit var="qbox" width=120 height=15><br>'+
   'ГМ Комманды:'+
   '<table width=240><tr>'+
   '<td><button value="Hide on" action="bypass -h admin_hideon" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Hide off" action="bypass -h admin_hideoff" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="GMList On" action="bypass -h admin_gmliston" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="GMList Off" action="bypass -h admin_gmlistoff" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="В тюрьму" action="bypass -h admin_gcr" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="В город" action="bypass -h admin_sh" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Raid Curse" action="bypass -h admin_rc" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Dispel All" action="bypass -h admin_dall" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="Diet on" action="bypass -h admin_dieton" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Diet off" action="bypass -h admin_dietoff" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Fake" action="bypass -h admin_fake" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Show party" action="bypass -h admin_showpty" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="Set Karma" action="bypass -h admin_karma $qbox" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Strider" action="bypass -h admin_strider" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Wyvern" action="bypass -h admin_wyvern" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Announce" action="bypass -h admin_annou $qbox" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="Kick" action="bypass -h admin_kick" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Full HP/MP" action="bypass -h admin_heal" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Ress" action="bypass -h admin_ress" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Disp Petr" action="bypass -h admin_dispp" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="ПМ вкл" action="bypass -h admin_pmon" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="ПМ выкл" action="bypass -h admin_pmoff" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Рестарт" action="bypass -h admin_restart" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr></table>'+
   '</center>'+
   '</body></html>';

   TeleportMenu = '<html><title>Панель администратора: Телепорт</title><body>'+
   '<center>-==[ Города ]==-'+
   '<table width=240><tr>'+
   '<td><button value="TI" action="bypass -h admin_tp_ti" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Gludin" action="bypass -h admin_tp_gludin" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Gludio" action="bypass -h admin_tp_gludio" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Dion" action="bypass -h admin_tp_dion" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="Giran" action="bypass -h admin_tp_giran" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Heine" action="bypass -h admin_tp_heine" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Oren" action="bypass -h admin_tp_oren" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Aden" action="bypass -h admin_tp_aden" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="Goddard" action="bypass -h admin_tp_goddard" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Rune" action="bypass -h admin_tp_rune" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Schuttgart" action="bypass -h admin_tp_schuttgart" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Floran" action="bypass -h admin_tp_floran" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="Hunter" action="bypass -h admin_tp_hunter" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Elven" action="bypass -h admin_tp_elven" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="DarkElf" action="bypass -h admin_tp_darkelf" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Dwarf" action="bypass -h admin_tp_dwarf" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr></table><br><br>'+
   '-==[ Другие места ]==-<br>'+
   '<table width=240><tr>'+
   '<td><button value="Водопад" action="bypass -h admin_tp_singwat" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Над ГЦ" action="bypass -h admin_tp_gc" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Тюрьма" action="bypass -h admin_tp_gmcr" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Rainbow" action="bypass -h admin_tp_rainbow" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr></table><br><br>'+
   '<button value="Back" action="bypass -h admin_back" width=90 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</center>'+
   '</body></html>';

   ItemsMenu = '<html><title>Панель администратора: Предметы</title><body>'+
   '<center>'+
   '[Бижа]'+
   '<table width=280>'+
   '<tr><td><a action="bypass -h admin_rb">Сет эпической бижи</a></td></tr>'+
   '</table><br>'+
   '[Сеты]'+
   '<table width=280>'+
      '<tr><td><a action="bypass -h admin_dlb">Dynasty Leather Armor [Bow Master]</a></td></tr>'+
      '<tr><td><a action="bypass -h admin_dld">Dynasty Leather Armor [Dagger Master]</a></td></tr><br>'+
      '<tr><td><a action="bypass -h admin_dhf">Dynasty Blast Plate [Force Master]</a></td></tr><br>'+
      '<tr><td><a action="bypass -h admin_dtw">Dynasty Tunic [Human Wizard]</a></td></tr><br>'+
      '<tr><td><a action="bypass -h admin_dls">Draconic Leaser Set</a></td></tr><br>'+
      '<tr><td><a action="bypass -h admin_ics">Imperial Crusader Set</a></td></tr><br>'+
      '<tr><td><a action="bypass -h admin_dks">Dark Crystal Set</a></td></tr><br>'+
      '<tr><td><a action="bypass -h admin_mls">Majestic Leather Set</a></td></tr><br>'+
      '<tr><td><a action="bypass -h admin_abs">Apella Brigandine Set</a></td></tr><br>'+
      '<tr><td><a action="bypass -h admin_mas">Major Arcana Robe Set</a></td></tr><br>'+
   '</table><br>'+
   '[Оружие]'+
   '<table width=280>'+
      '<tr><td><a action="bypass -h admin_d30k">Knife 30k P.Atk</a></td></tr>'+
      '<tr><td><a action="bypass -h admin_l30k">Lance 30k P.Atk</a></td></tr>'+
      '<tr><td><a action="bypass -h admin_dinobow">Dynasty Bow [Focus]</a></td></tr>'+
      '<tr><td><a action="bypass -h admin_icarusbow">Icarus Spitter [Focus]</a></td></tr>'+
      '<tr><td><a action="bypass -h admin_tbxdle">Tallum Blade * Dark Legion''s Edge</a></td></tr>'+
      '<tr><td><a action="bypass -h admin_arca">Arcana Mace [Acumen]</a></td></tr>'+
      '<tr><td><a action="bypass -h admin_dma">Dynasty Mace [Acumen]</a></td></tr>'+
      '<tr><td><a action="bypass -h admin_icma">Icarus Hall Mace [Acumen]</a></td></tr>'+
   '</table><br>'+
   '[Оружие монстров]'+
   '<table width=280>'+
      '<tr><td><a action="bypass -h admin_modk">Doll Knife</a></td></tr>'+
      '<tr><td><a action="bypass -h admin_moahr">Ahrimanes</a></td></tr>'+
      '<tr><td><a action="bypass -h admin_moahr">Orc Officer</a></td></tr>'+
      '<tr><td><a action="bypass -h admin_moffc">Follower of Frintezza Calibur</a></td></tr>'+
      '<tr><td><a action="bypass -h admin_mofftc">Follower of Frintezza Tran Calibur</a></td></tr>'+
   '</table><br>'+
   '[Щиты]'+
   '<table width=280>'+
      '<tr><td><a action="bypass -h admin_nls">Nephilim Lord</a></td></tr>'+
   '</table><br>'+

   '<button value="Back" action="bypass -h admin_back" width=90 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</center>'+
   '</body></html>';

   SkillsMenu = '<html><title>Панель администратора: Умения</title><body>'+
   '<center>'+
   '<edit var="qbox" width=120 height=15><br>'+
   '<table width=240><tr>'+
   '<td><button value="Загрузить" action="bypass -h admin_loadskills $qbox" width=90 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Сохранить" action="bypass -h admin_saveskills $qbox" width=90 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Дать" action="bypass -h admin_giveskills $qbox" width=90 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="Копировать" action="bypass -h admin_copyskills $qbox" width=90 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Добавить" action="bypass -h admin_addskill $qbox" width=90 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr></table><br>'+
   '<button value="Back" action="bypass -h admin_back" width=90 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</center>'+
   '</body></html>';

   SummonMenu = '<html><title>Панель администратора: Вызов</title><body>'+
   '<center>'+
   '<edit var="qbox" width=120 height=15><br>'+
   '<button value="Вызвать" action="bypass -h admin_summnpc $qbox" width=90 height=25 back="L2UI_ct1.button_df"'+
   'fore="L2UI_ct1.button_df"><br><br>'+
   '-==[Рейд боссы]==-<br>'+
   '<table width=240><tr>'+
   '<td><button value="Baium" action="bypass -h admin_baium" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Antharas" action="bypass -h admin_antharas" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Gordon" action="bypass -h admin_gordon" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Lilith" action="bypass -h admin_lilith" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td></tr><tr>'+
   '<td><button value="Anakim" action="bypass -h admin_anakim" width=66 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr></table><br><br>'+
   '-==[NPC]==-<br>'+
   '<table width=240><tr>'+
   '<td><button value="Cat A" action="bypass -h admin_cata" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Дерево" action="bypass -h admin_tree" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Колодец" action="bypass -h admin_well" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Шкаф" action="bypass -h admin_bookshelf" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="Сундук" action="bypass -h admin_chest" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Ёлка" action="bypass -h admin_ctree" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Палатка" action="bypass -h admin_fow" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Шатер" action="bypass -h admin_bf" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="Скульптура" action="bypass -h admin_sculpt" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Sandstorm" action="bypass -h admin_sandstorm" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Алтарь" action="bypass -h admin_altar" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Грааль" action="bypass -h admin_grail" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="Огонек" action="bypass -h admin_soul" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Яица" action="bypass -h admin_egg" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Камень" action="bypass -h admin_rock" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Клариса" action="bypass -h admin_clarissa" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr><tr>'+
   '<td><button value="Поляна" action="bypass -h admin_table" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Taurin" action="bypass -h admin_taurin" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '<td><button value="Манумент" action="bypass -h admin_manofhero" width=68 height=17 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</tr></table><br><br>'+
   '<button value="Back" action="bypass -h admin_back" width=90 height=25 back="L2UI_ct1.button_df"'+
'fore="L2UI_ct1.button_df"></td>'+
   '</center>'+
   '</body></html>';

procedure Init; //?????????? ??? ????????? ???????
begin
  SkillsList:=TStringList.Create;

  TimerForSkills:=TTimer.Create(nil);
  TimerForSkills.OnTimer:=@OnTimerSkills;
  TimerForSkills.enabled:=false;
  TimerForSkills.interval:=1;
end;

procedure Free; //?????????? ??? ?????????? ???????
begin
  SkillsList.Clear;
end;

Procedure OnTimerSkills( Sender : TObject );
begin
   if (CounterForSkills = SkillsList.Count) then//or (TargetSet = false) then
   begin
      Say( IntToStr(CounterForSkills) + ' скилов было записано.' );
      TimerForSkills.enabled := false;
      exit;
   end;

   GMCommand( 'setskill ' + SkillsList[CounterForSkills] );
   inc( CounterForSkills );
end;

Procedure LoadSkills( FileName : String );
begin
   if TimerForSkills.enabled then
   begin
      Say( 'Уже работает.' );
      exit;
   end;

   if( Param = '' ) then begin Say( 'Введите имя файла.' ); exit; end;

   try
      SkillsList.LoadFromFile(FileName);
   except
      Say( 'Файл ' + FileName + ' не найден.' );
      exit;
   end;

   CounterForSkills := 0;
   TimerForSkills.enabled := true;
end;

procedure Say(msg:string);
begin
  buf:=hstr('4A 00 00 00 00');
  WriteD(2);
  WriteS('SYS');
  WriteS(msg);
  SendToClient;
end;

Procedure AddSkill;
begin
   if( Param = '' ) then begin Say( 'Введите номер скила и его уровень.' ); exit; end;
   GMcommand( 'setskill ' + Param );
end;


procedure ShowHTML( text : string );
begin
   buf:=#$19;
   WriteD(5);
   WriteS(text);
   SendToClient;
end;

// Выполняет ГМ комманду
procedure GMCommand( cmd : String );
begin
   buf:=#$74;
   WriteS( cmd );
   SendToServer;
   //Delay(10);
end;

// Выделяет комманду из bypass'а
Procedure GetCommand( bp : String );
var i : integer;
begin
   cmd := ''; param := '';

   for i:=1 to Length(bp) do
   begin
      if( bp[i] = ' ' ) then begin inc(i); break; end;
      cmd := cmd + bp[i];
   end;

   if( i = Length(bp) ) then begin Param := ''; exit; end;

   for i:=i to Length(bp) do
   begin
      Param := Param + bp[i];
   end;
end;


//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
     if FromClient then
     begin
     case pck[1] of
        #$74:
        begin
           cmd := ReadS(2);
           if cmd = 'admin' then begin ShowHTML(MainMenu); pck:=''; end;
        end;

        #$23:
        begin
           Bypass := ReadS(2);
           GetCommand(Bypass);
           case cmd of
              { Подменю }
              'admin_teleport': begin ShowHTML(TeleportMenu); pck:=''; end;
              'admin_items' : begin ShowHTML(ItemsMenu); pck:=''; end;
              'admin_skills': begin ShowHTML(SkillsMenu); pck:=''; end;
              'admin_back': begin ShowHTML(MainMenu); pck:=''; end;
              'admin_summon': begin ShowHTML(SummonMenu); pck:=''; end;

              { Умения }
              'admin_loadskills'    : begin LoadSkills(Param); ShowHTML(SkillsMenu); pck:=''; end;
           end;
        end;
     end;
     end;
end.
________________
Помог? Тыкни Спасибку *_*
  Ответить с цитированием
Пользователь сказал cпасибо:
serge-er (23.04.2012)
Старый 23.07.2012, 14:48   #85
 Разведчик
Аватар для 4okHytbIu
 
4okHytbIu никому не известный тип
Регистрация: 13.03.2010
Сообщений: 2
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Скрипты для l2phx

Код:
]Робочий скрипт на точку для ИТ

 const
 myname=''; //<<== пишем свой НИК

 max=150;//<<== колличество ячеек в рюкзаке

 xxx=10;//<<== колличество skrol при котором будет закупка 

 chat = 3;// <<== какой ЧАТ выводить сообщения
 // 3 - Party; 4 - Clan; 9 - Alli; 10 - anons ; 17 - Hero;
 // =======================================
 // в пати чат пишем уровень заточки
 // заточить один раз чтоб запомнить чем и что точить
 // СТАРТ нажать соцдействие ДА
 // СТОП нажать соцдействие НЕТ
 // включить системные сообщения соцдействие - приветствие \ hello 
 // выключить системные сообщения соцдействие - победа \ victory 
 // дальше скрипт сам точит до указаного уровня заточки
 // все предметы ОДИНАКОВЫЕ с ПЕРВЫМ заточеным 
 // предметы точатся добавляя по +1 на предмет
 // если предметов более одного : один предмет остается
 //===============================
 // есть возможность для закупки skrol для этого
 // поговорить с нпс и купить skrol столько ===сколько надо докупать
 // скрипт должен запомнить 
 // нпс должен быть выделен
 // АВТОР ==>>>> TAMBIK
 var
 BaseItems:array[1..max,1..9] of integer;
 Baselvl:array[1..max] of integer;
 Timer01: TTimer;
 Timer02: TTimer;
 Timer03: TTimer;
 Action,BypassToServer,MultiSell:string; 
 autostart,autoskrol,autoMsg,flag,start:Boolean;
 mytext:string; 
 ListSize,ItemEnch:word; 
 textID,itemID:integer;
 enchantObjectID:integer;
 enchantID,skrolObjectID:integer; 
 objectOID: integer; 
 sumskrol,sumitemID: integer;
 a,t,l,d,x,y,ii,i:integer;
 maxlvl,minlvl: integer;
 index,enchlvl,sumitem:integer;
 skrolID,skrolObj:integer;

 //-----------------------------------------
 procedure SendMsg2(msg:string);
 begin 
 if autoMsg then begin
 buf:=#$4A;
 WriteD(0);
 WriteD(chat);// <<==куда выводить сообщения
 WriteS('');
 WriteS(msg);
 SendToClientEx(myname);
 end;
 end;
 //===========================================
 procedure Resultmaxlvl;
 var
 i:integer;
 begin
 i:=2;
 mytext:=ReadS(i);
 textID:=ReadD(i);
 if (textID=3) then begin
 maxlvl:=StrToInt(mytext);
 SendMsg2( ' Установлен MAX Уровень Заточки : '+IntToStr(maxlvl)+'' ); 
 pck:='';
 exit;
 end;
 end;
 //..................................... 
 procedure ItemList;
 var
 i, j, k: integer;
 count:integer; 
 begin
 deleteBase;
 j:=4;
 ListSize:=ReadH(j); 
 for i:=1 to ListSize do
 if (i<=ListSize) then begin
 BaseItems[i,1]:=ReadH(j); 
 BaseItems[i,2]:=ReadD(j);//ObjectID
 BaseItems[i,3]:=ReadD(j);//ItemID
 BaseItems[i,4]:=ReadD(j);// count: 1интерлюд
 BaseItems[i,5]:=ReadH(j);// 
 BaseItems[i,6]:=ReadH(j);// 
 BaseItems[i,7]:=ReadH(j);//
 BaseItems[i,8]:=ReadD(j);// 
 BaseItems[i,9]:=ReadH(j);//-EnchantLevel: 
 inc(j,10); 
 end else for k:=1 to 9 do BaseItems[i,k]:=-1; // забиваем нулями
 if (itemID > 0) then addenchantitemID;
 if (skrolID > 0) then begin
 skrolObj:=0;
 sumskrol:=0;
 sumskrol:=Getsumitem(skrolID,3,4);// счет скоко свитков
 skrolObj:=Getitem(skrolID,3,2);//находим ObjectID skrol
 end;
 if (sumskrol = xxx) and (autoskrol = true) then begin 
 SendMsg2 (' _ З А К У П К А S K R O L _ ');
 SendMsg2 ('____________________________________ ');
 start:=false;
 Timer02.enabled:=false;
 a:=1; 
 Timer01.enabled:=true;
 end;
 if start and (sumskrol > 0) and (skrolObj > 0) then Timer02.enabled:=true; 
 if start and (sumskrol = 0) then begin
 autoMsg:=true;
 start:=false;
 SendMsg2 ('........ НЕДОСТАТОЧНО SKROL........ ');
 SendMsg2 (' ___ О С Т А Н О В Л Е Н О ___ ');
 Timer02.enabled:=false;
 end;
 end;
 //-----------------------------------------
 procedure OnTimer01(Sender: TObject);
 begin
 case a of 
 1:begin
 buf:=Action;
 SendToServerEx(myname);
 inc(a);
 SendMsg2( '............... Action ...............' ); 
 end;
 2:begin
 buf:=BypassToServer;
 SendToServerEx(myname);
 inc(a); 
 SendMsg2( '..........BypassToServer..........' );
 end;
 3:begin
 buf:= MultiSell;
 SendToServerEx(myname);
 a:=0; 
 SendMsg2( '.............MultiSell...............' );
 Timer01.enabled:=false;
 start:=true;
 Timer02.enabled:=true;
 end;
 end;
 end;
 //=============================
 procedure EnchantResult;
 begin
 for ii:=1 to max do 
 Baselvl[ii]:=-1;
 end;
 //=============================
 procedure deleteBase;
 var
 i,j,k:integer; 
 begin
 for i:=1 to max do
 if (BaseItems[i,2] > 0) then begin
 BaseItems[i,1]:=0;
 BaseItems[i,2]:=0; //ObjectID 
 BaseItems[i,3]:=0; //ItemID
 BaseItems[i,4]:=0; 
 BaseItems[i,5]:=0; 
 BaseItems[i,6]:=0; 
 BaseItems[i,7]:=0;
 BaseItems[i,8]:=0;
 BaseItems[i,9]:=0;
 end;
 end;
 //===========================================
 // СЧИТАЕМ ПРЕДМЕТЫ
 // НАХОДИМ ObjectID и ID ПРЕДМЕТа
 //===========================
 //счет скоко свитков и находим ObjectID, ItemID предметa
 function Getitem(Obj,up,down:integer):integer; 
 var 
 i:integer;
 begin
 Result:= 0; 
 for i:=1 to max do
 if (BaseItems[i,up]=Obj) then begin
 Result:=BaseItems[i,down];
 end;
 end;
 //счет скоко всего предметов
 //===========================
 function Getsumitem(Obj,up,down:integer):integer; 
 var 
 i:integer;
 begin
 Result:= 0; 
 for i:=1 to max do
 if (BaseItems[i,up]=Obj) then begin
 Result:=Result + BaseItems[i,down];
 end;
 end;
 //=============================
 // добавляем в базу ЛВЛ заточки
 procedure addenchantitemID;
 begin
 for i:=1 to max do
 if (BaseItems[i,3] = itemID) then begin
 enchlvl:=BaseItems[i,9];
 flag:=false; 
 for ii:=1 to max do
 if (Baselvl[ii] = enchlvl) then begin 
 flag := true; 
 BREAK; { прекращаем цикл }
 end;
 if (flag = false) then begin
 for ii:=1 to max do 
 if (Baselvl[ii]=-1) then begin 
 Baselvl[ii]:=enchlvl; 
 index :=ii; 
 BREAK; { прекращаем цикл }
 end;
 end;
 end;
 end;
 //========================== 
 procedure ChooseInventory;
 var
 OID,lvl:integer;
 begin
 objectOID:=0;
 if start then begin
 minlvl:=Baselvl[1];
 for ii:=2 to index do 
 if (Baselvl[ii] < minlvl) then
 minlvl:=Baselvl[ii];// мин заточка 
 sumitemID:=0;
 sumitemID:=Getsumitem(itemID,3,4); 
 SendMsg2( '*******************************************' );
 SendMsg2(' ---- П О И С К П Р Е Д М Е Т А ----' );
 if (sumitemID > sumitem) then objectOID:=GetObjectID(itemID);
 if (objectOID = 0) then begin
 autoMsg:=true;
 start:=false;
 SendMsg2(' Больше Предметов c ID : '+IntToStr(itemID)+' для заточки НЕТ ! ! ! ! ');
 SendMsg2 (' ___ О С Т А Н О В Л Е Н О ___ '); 
 end;
 end;
 end;
 //=================================
 //находим enchantID предмета по ItemID для заточки
 function GetObjectID(itemID:integer) : integer;
 var
 i:integer;
 begin
 enchantID:= 0;
 ItemEnch:=0; 
 Result:= 0;
 SendMsg2 (' Ищем ObjectID предмета с ID : ' +IntToStr(ItemID)+' ');
 SendMsg2('------------------------------' );
 for i:=1 to max do
 if (BaseItems[i,3]=itemID) and (BaseItems[i,9] = minlvl) and (BaseItems[i,9]< maxlvl) then begin
 Result:=BaseItems[i,2];
 ItemEnch:=BaseItems[i,9];
 enchantID:=BaseItems[i,2];
 SendMsg2(' .....Найден Предмет для Заточки ..... ');
 SendMsg2(' ID : '+IntToStr(itemID)+' и ObjectID : '+IntToStr(enchantID)+' заточен до : '+IntToStr(ItemEnch)+'');
 SendMsg2('------------------------------' );
 if start and (Result > 0) then Timer03.enabled:=true;
 Break;
 end;
 end;
 //===================================
 procedure OnTimer02(Sender: TObject);
 begin
 SendMsg2( ' Активирован SKROL ObjectID : '+IntToStr(skrolObj)+' ' );
 SendMsg2( ' ------------------------------------- ' );
 buf:=#$14;
 WriteD(skrolObj);
 WriteD(0);
 SendToServerEx(myname);
 Timer02.enabled:=false;
 end;
 //--------------------------
 procedure OnTimer03(Sender: TObject);
 begin 
 buf:=#$58;
 WriteD(enchantID);
 SendToServerEx(myname);
 Timer03.enabled:=false;
 SendMsg2(' -------- Точим Предмет ---------' );
 SendMsg2( ' ID : '+IntToStr(itemID)+' ObjectID : '+IntToStr(enchantID)+' до : '+IntToStr(maxlvl)+'' );
 SendMsg2('------------------------------' );
 end;
 //-----------------------------------------
 procedure Init;
 begin
 sumskrol:=0; sumitem:=0;sumitemID:=0;
 objectOID:=0; enchantID:=0;
 maxlvl:=0; minlvl:=0;
 itemID:=0; ItemEnch:=0;
 start:=false;flag:=false;
 autoMsg:=true;autoskrol:=false;
 autostart:=false;
 skrolObjectID:=0;
 enchantObjectID:=0;
 t:=0;l:=0;d:=0;index:=0; a:=0; 

 Timer01:=TTimer.Create(nil);
 Timer01.OnTimer:=@OnTimer01;
 Timer01.enabled:=false;
 Timer01.interval:=1; //<<== время между разговором

 Timer02:=TTimer.Create(nil);
 Timer02.OnTimer:=@OnTimer02;
 Timer02.enabled:=false;
 Timer02.interval:=1; //<<== время выбора скролл

 Timer03:=TTimer.Create(nil);
 Timer03.OnTimer:=@OnTimer03;
 Timer03.enabled:=false;
 Timer03.interval:=1; //<<== время между заточкой 
 SendMsg2( ' привет от ТАМБИКа' );
 SendMsg2( 'в пати чат пишем уровень заточки' );
 SendMsg2( ' заточить предмет ! ! !' );
 SendMsg2( ' СТАРТ соцдействие ДА ' );
 SendMsg2( ' СТОП соцдействие НЕТ' );
 SendMsg2( ' В К Л сообщения соцдействие - приветствие \ hello ' );
 SendMsg2( ' ВЫКЛ сообщения соцдействие - победа \ victory ' );
 SendMsg2( '=========================' );
 deleteBase;
 for ii:=1 to max do 
 Baselvl[ii]:=-1;
 OpenInventory;//открыть инвентарь.
 end;
 procedure Free;
 begin
 Timer01.free;
 Timer02.free;
 Timer03.free;
 end;
 //=========================
 procedure OpenInventory;//открыть инвентарь.14=RequestItemList
 begin
 buf:=hstr('0F');
 SendToServerEx(myname);
 end;
 //=========================
 procedure RequestActionUse; 
 begin
 case ReadD(2) of
 02:begin// Greeting 
 autoMsg:=true;
 end;
 03:begin//
 autoMsg:=false;
 end;
 06:begin
 if (maxlvl=0) then SendMsg2( ' НЕ ЗАДАН УРОВЕНЬ ЗАТОЧКИ !' );
 if (autostart=false) then SendMsg2( 'предмет незаточен или пакеты неприняты !' );
 if (maxlvl>0) and autostart then begin
 SendMsg2( ' ! ! ! П О Е Х А Л И ! ! !' ); 
 start:=true;
 OpenInventory;//открыть инвентарь
 end;
 end;
 05:begin
 start:=false;
 enchantID:=0;
 ItemEnch:=0;
 minlvl:=0;
 Timer03.enabled:=false;
 Timer02.enabled:=false;
 Timer01.enabled:=false;
 SendMsg2( ' ! ! ! С Т О П ! ! ! ' );
 SendMsg2 (' ___ О С Т А Н О В Л Е Н О ___ '); 
 index :=0;
 for ii:=1 to max do 
 Baselvl[ii]:=-1; 
 end;
 end;
 end;
 //=========
 begin
 if pck='' then exit; 
 if FromServer and (pck[1]=#$81) then begin EnchantResult;end;
 if FromServer and (pck[1]=#$1B) then begin ItemList;end;
 if FromServer and (pck[1]=#$6F) then begin skrolID:=ReadD(2);ChooseInventory;end;

 if FromClient and (pck[1]=#$1B) then begin RequestActionUse;pck:='';exit;end;//
 if FromClient and (pck[1]=#$38) then begin Resultmaxlvl;end; //
 if FromClient and (pck[1]=#$04) then begin Action:=pck;end;
 if FromClient and (pck[1]=#$21) then begin BypassToServer:=pck;end;
 if FromClient and (pck[1]=#$A7) then begin autoskrol:=true;
 MultiSell:=pck; 
 SendMsg2( '-- АВТОЗАКУПКА SKROL ВЫКЛ ----' );
 end;
 begin
 if (start=false) and FromClient then 
 case pck[1] of
 #$14:begin
 t:=0;
 autostart:=false;
 skrolObjectID:=0;
 skrolObjectID:=ReadD(2);
 if (skrolObjectID > 0 ) then begin
 SendMsg2( ' Активирован SKROLL с ObjectID : '+IntToStr(skrolObjectID)+' ' );
 t:=1;
 end;
 end;
 #$58:begin
 d:=0;
 itemID:=0;
 sumitem:=0;
 sumitemID:=0;
 enchantObjectID:=0;
 enchantObjectID:=ReadD(2);
 if (enchantObjectID > 0 ) then begin
 d:=1;
 itemID:=Getitem(enchantObjectID,2,3);//находим предмет с ItemID
 sumitemID:=Getsumitem(itemID,3,4); // считаем предметы для заточки
 if (sumitemID > 1) then sumitem:=1;
 SendMsg2( ' Заточен Предмет с ID : '+IntToStr(itemID)+' ' );
 if (t=1) and (d=1) then autostart:=true;
 end;
 end;
 end;
 end;
 end.
  Ответить с цитированием
Пользователь сказал cпасибо:
Kostyan35Rus (31.08.2012)
Старый 19.11.2012, 22:26   #86
 Разведчик
Аватар для ZadroTTer
 
ZadroTTer неизвестен в этих краях
Регистрация: 22.09.2012
Сообщений: 2
Популярность: -67
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 4 сообщениях
Отправить сообщение для ZadroTTer с помощью Skype™
 
По умолчанию Re: Скрипты для l2phx

Цитата:
//Скрипт работает только на хрониках Kamael и Gracia
Var
MyNick :string;
TitleList: TStringList;
Tim1: TTimer;
j,j2: integer;
procedure Init;
begin
MyNick:='Johnson'; //Тут пишем свой ник!
TitleList:= TStringList.Create;

TitleList.Add('Title1'); //Тут список перечисляемых титулов
TitleList.Add('Title2'); //При необходимости можно добавить
TitleList.Add('Title3'); //или удалить соответствующие строки
TitleList.Add('Title4');
TitleList.Add('Title5');

Tim1:=Ttimer.Create(nil);
Tim1.Interval:=1000; //Тут задаём скорость переключения, мс (1секунда = 1000мс)
Tim1.OnTimer:=@OnTimerProc;
Tim1.Enabled:=true;
j:=0;
j2:=TitleList.Count-1;
end;
procedure Free;
begin
Tim1.Enabled:=False;
Tim1.Free;
end;
Procedure OnTimerProc;
begin
SetTitle(TitleList[j]);
If j<j2 then j:=j+1
else j:=0;
end;
Procedure SetTitle(title:string);
begin
buf:=#$0B;
WriteS(MyNick);
WriteS(title);
SendToServer;
end;
begin
end.

Немножко)
________________
А я чё, я ни чё..
  Ответить с цитированием
Старый 15.12.2012, 22:02   #87
 Разведчик
Аватар для DrunkenMaster
 
DrunkenMaster никому не известный тип
Регистрация: 04.04.2012
Сообщений: 20
Популярность: 16
Сказал(а) спасибо: 146
Поблагодарили 30 раз(а) в 12 сообщениях
 
По умолчанию Re: Скрипты для l2phx

Скрипт для игнора пакетов
begin
if (FromClient) and (pck[1]=#$01) then pck:='';
end.
там где 01 вписываем id пакета который будем игнорить
Если не ошибаюсь автор скрипта j-fobos
________________
naxui mne podpis
  Ответить с цитированием
Пользователь сказал cпасибо:
S.O.A.D (18.12.2012)
Старый 17.12.2012, 02:12   #88
 Разведчик
Аватар для Dimchik09
 
Dimchik09 никому не известный тип
Регистрация: 09.12.2012
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
Отправить сообщение для Dimchik09 с помощью ICQ Отправить сообщение для Dimchik09 с помощью Skype™
 
По умолчанию Re: Скрипты для l2phx

Скрипт на сдачу Манора

Продолжим вкусным , "100% сдача манора" , что дает отличный доход , ваща задача всего лишь запустить скрипт минут за 5 до начала олимпиады , все остальное он сделает сам , вы будите довольно , не палится Гмом , хотя после N-ного количества сдач игроки могут расстроится и попросить проверить ГМа проверить логи , если он увидет , что все время сдаете только вы , может заподозрит чего .. ну да ладно , что-то я заговорился , скрипт:
__________________________________________________ ______________









var
PaketManora: string; //Пакет на сдачу манора, который мы отправим серваку зараннее с помощью клиента
// и запомним его для того чтобы вручную не формировать его кодом.
//важно что оправлять его нужно после после объявления об олимпиаде.
//так как в пакете манора используются ИД сессии, которые изменяются
//каждый ровный час.

timer1: TTimer; //таймер контролирующий системное время

StartTime: TDateTime;
EndTime: TDateTime;


x:integer;

procedure Init; //Вызывается при включении скрипта
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer; //
timer1.enabled:=false; // таймер по умолчанию выключен
timer1.interval:=400; // через каждые 0,4сек будем засекать контрольное время сдачи манора

x:=0;
end;

procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free; //освобождаем занимаемую память таймером
end;

//вызывается при срабатывании таймера
procedure OnTimer(Sender: TObject);
begin
//если наступило время сдавать манор и скрипт пока еще не отправил 30 попыток его сдать то
if (time >= EndTime) and (x<30) then
begin
// отправляем пакет на сдачу манора.
buf:=PaketManora;
SendToServer;
//счетчик попыток
x:=x+1;
end;
end;


begin

//если перехвачен пакет на сдачу манора то
if FromClient and (pck[1]=#$D0) and (pck[2]=#$09) and (pck[3]=#$00) then
begin
//запоминаем его полностью
PaketManora:=pck;
end;

//если получен пакет об начале олимпиады то
if FromServer and (pck[1]=#$64) and (pck[2]=#$69) and (pck[3]=#$06) then
begin
//засекаем текущее время
StartTime:=time;
//вычисляем время сдачи манора (прибавляем нужное время которое нужно засеч после получения сообщения об илимпиаде)
EndTime:=StartTime + EncodeTime(0,5,49,0); // изменяем и корректируем ето число в формате (ЧЧ,ММ,СС,МС)
//активируем таймер
timer1.enabled:=true;

end;

end.
  Ответить с цитированием
Старый 01.03.2013, 04:10   #89
 Разведчик
Аватар для VLADxx
 
VLADxx на правильном пути
Регистрация: 14.08.2009
Сообщений: 13
Популярность: 71
Сказал(а) спасибо: 10
Поблагодарили 63 раз(а) в 15 сообщениях
Отправить сообщение для VLADxx с помощью ICQ
 
По умолчанию Re: Скрипты для l2phx

Скрипт перебора МСов в полуавтоматическом режиме с возможностью ведения лога.
Слепил из 2х скриптов. В ходе теста показал хорошие результаты

Код:
//Скрипт перебора МСов в полуавтоматическом режиме с возможностью ведения лога.
//Без проблем редактируеться как для птс так и для явы
//Тестился на C4\IT
var i:integer;
Stream:TFileStream;
procedure Init; //Вызывается при включении скрипта
begin;
i:=1; //Номер мультиселла с которого начинаем перебор
try //пытаемся создать файл, но если такой существует то открываем его
Stream := TFileStream.Create('d:\id1.txt', fmOpenReadWrite);
except
Stream := TFileStream.Create('d:\id1.txt', fmCreate);
end;
end;
procedure Free; //Вызывается при выключении скрипта
begin
Stream.free;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
 begin
 if FromClient and (pck[1]=#$2F) then  //Первый байт пакета, к примеру какое-то соц.действие
 begin
 pck:='';
 i:=i+1; //Значение по сколько будем перебирать МСы 1,2,3 или 100,200,300
 i:=i-1;
 buf:=hstr('21'); //Первый байт мультиселла который имееться на сервере
 WriteS('menu_select?ask=-303&reply='+inttostr(i));
 SendToServer;
 inc(i);
 end;
   if (pck[1]+pck[6]=#$D0#$01) then
Stream.Write(inttostr(Readd(2))+' ',10);
end.
________________
Лучшая благодарность это ваша Спасибка

Последний раз редактировалось VLADxx; 05.03.2013 в 06:58.
  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
$$INFINITY$$ (01.03.2013), AnotherTest (04.07.2013), jorik076 (20.07.2014), monsterstreka (23.08.2013)
Старый 06.02.2016, 07:21   #90
 Разведчик
Аватар для calipso1994
 
calipso1994 никому не известный тип
Регистрация: 29.08.2014
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Скрипты для l2phx

новых скриптов нету чтоли?
  Ответить с цитированием
Ответ

Метки
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

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

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

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