Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 01.03.2009, 14:36   #1
Местный
 
Регистрация: 05.11.2008
Сообщений: 168
Сказал Спасибо: 35
Имеет 139 спасибок в 66 сообщенях
Fer123 пока неопределено
Сообщение ItemPainter по идее QaK

Скрипт для рисования аденой и другими предметами.
Вобщем увидел в теме Рисую аденой:
Цитата:
никому не надо пока готовое, хотябы 60% рабочее, кто-нить не выложит.
А вообще лучше сделать так: рисуешь в любом графическом редакторе черным по белому. Сохраняешь как матрицу нулей и единиц 0 - белый, 1 - черный, потом читаешь матрицу и, соответственно выкидываешь адену по всему массиву.
З.Ы. идея интересная, реализовывать - тупо лень =)
(Это коммент QaK так что идея его)

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

Скрипт для Gracia ЗДЕСЬ

Вот для примера эту картинку
скрипт нарисовал так:

Еще одна картинка нарисованная этим скриптом:

Последний раз редактировалось Fer123, 17.05.2009 в 19:18. Причина: обновление версии скрипта
Fer123 вне форума   Ответить с цитированием
За это сообщение Fer123 нажился 24 спасибками от:
Старый 29.06.2010, 23:55   #101
Местный
 
Аватар для J-Fobos
 
Регистрация: 09.06.2008
Сообщений: 867
Сказал Спасибо: 175
Имеет 468 спасибок в 259 сообщенях
J-Fobos пока неопределено
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
то что он пишет тип не может бросить так далеко это окей?)
блин, полный отстой, на нашем серваке исчезает все через 10 минут(
Там есть проверка на расстояние чара к точке выброса, надо уменьшить это расстояние.
А то что исчезают не проблема Заблокируйте пакет (к сожалению не помню id) на удаление итема с земли (всего одна строчка if FromServer and pck[1]=#$ID then pck:=''; ) и исчезновение не будет мешать рисовать, правда картинку только вы сможете видеть, но скрин выйдет как надо
__________________

В любом из нас спит гений. И с каждым днем все крепче.

Переходим на протокол нового поколения jabber
J-Fobos вне форума   Ответить с цитированием
Старый 30.06.2010, 02:18   #102
Местный
 
Регистрация: 05.11.2008
Сообщений: 168
Сказал Спасибо: 35
Имеет 139 спасибок в 66 сообщенях
Fer123 пока неопределено
По умолчанию

supernewbie, MaxDistance поставь меньше...

J-Fobos, если уж на то пошло, то можно вместо RequestDropItem сделать SpawnItem для клиента. Тогда уже и на счет расстояния не надо париться, и таймер интервал можно поставить хоть 1 мсек.
Fer123 вне форума   Ответить с цитированием
Старый 30.06.2010, 02:45   #103
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

Цитата:
Сообщение от J-Fobos Посмотреть сообщение
Там есть проверка на расстояние чара к точке выброса, надо уменьшить это расстояние.
А то что исчезают не проблема Заблокируйте пакет (к сожалению не помню id) на удаление итема с земли (всего одна строчка if FromServer and pck[1]=#$ID then pck:=''; ) и исчезновение не будет мешать рисовать, правда картинку только вы сможете видеть, но скрин выйдет как надо
спасибо блин кэп) но как бы эт самое главное( чтобы все видели(
переделал под пакеты на клиент, лаги жуть)

Последний раз редактировалось supernewbie, 30.06.2010 в 03:04.
supernewbie вне форума   Ответить с цитированием
Старый 30.06.2010, 14:09   #104
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

...начали появляться индивидуумы, рисующие чегонть прям на тп, наподобие "вары - казлы", что приводит к увеличению времени прогрузки после тп того же вара, и спокойно сливают, даже танки отлетают, невзирая на кучу удов...просто не могут прогрузиться успеть...Оно, конечно, и просто так можно накидать кучу хлама, но когда хлам сложен в ровные и аккуратные буковки - вдвойне приятно (неприятно)
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."

А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
Breadfan вне форума   Ответить с цитированием
Старый 10.11.2010, 16:27   #105
Новичок
 
Регистрация: 10.11.2010
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
AdioS пока неопределено
По умолчанию

Попробовал запустить на Gracia Final. Тот скрипт что в начале - ругается. Выкидывать не хочет. В игре в чат пишет что не может так часто что то там...
Скачал скрипт от supernewbie - ItemPainter по идее QaK.rar
Начал рисовать но в чате в игре пишет что "Невозможно так часто повторить" или как то так.
Вопрос - в какой строке скрипта надо заменить число, чтобы время между выбросами итемов увеличить?!
P.S.Заранее спс!
AdioS вне форума   Ответить с цитированием
Старый 11.11.2010, 01:08   #106
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от AdioS Посмотреть сообщение
Вопрос - в какой строке скрипта надо заменить число, чтобы время между выбросами итемов увеличить?!
Найди такую строку и исправь её
delphi Код:
timer.interval:=700; //время задержки  
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 09.05.2011, 05:44   #107
Новичок
 
Регистрация: 09.05.2011
Сообщений: 1
Сказал Спасибо: 0
Имеет 2 спасибок в 1 сообщении
Seque1 пока неопределено
По умолчанию

Спасибо за скрипт

Убил на это 6+ часов
http://i043.radikal.ru/1104/6f/8c60bf5edcb0.jpg
Seque1 вне форума   Ответить с цитированием
За это сообщение Seque1 нажился 2 спасибками от:
Старый 09.05.2011, 16:15   #108
Местный
 
Регистрация: 04.11.2009
Адрес: Где-то в жопе европы
Сообщений: 316
Сказал Спасибо: 32
Имеет 42 спасибок в 39 сообщенях
wimax пока неопределено
По умолчанию

Seque1, Супер хД
wimax вне форума   Ответить с цитированием
Старый 05.03.2012, 07:48   #109
Новичок
 
Регистрация: 05.03.2012
Сообщений: 1
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Zooey пока неопределено
По умолчанию

Добрый день\вечер,хотелось бы узнать возможно этот скрипт подогнать под high five?
p.s. поиск юзал,и эта единственная тема по "рисункам аденой"
прошу ответить мне и не удалять мой пост .Простите что поднял тему 2х летний давности,но это очень важно для меня
Zooey вне форума   Ответить с цитированием
Старый 05.03.2012, 10:06   #110
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

Zooey, канеш возможно, только инфа 97% что всем пох и нет времени на это, так что флаг тебе в руки
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
За это сообщение supernewbie нажился 3 спасибками от:
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг


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

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

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


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

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!