PDA

Просмотр полной версии : Скрипт на сброс вещей


n1ce?!
13.05.2009, 01:42
Вопрос,в старых версиях l2phx,а точнее 3.2.0 скрипт работает отлично сам скрипт
var
i, p: integer;
Items: integer;
x, y, z: integer;
ObjectID, ItemID, Count: array [1..120] of integer;
m:TMemo;
First: boolean;

procedure Init;
begin
ShowTab;
m:=TMemo.Create(UserTab);
m.parent:=UserTab;
m.align:=alClient;
m.ReadOnly:=false;
m.ScrollBars:=ssBoth;
end;

begin
if FromClient and (pck[1]=#$03) then
begin
First:=True;

buf:=#$0F;
SendToServer;
end;

if FromServer and (pck[1]=#$1B) then
begin
p:=4;
Items:=(ReadC(p));
ReadC(p);
ReadC(p);
ReadC(p);
m.Lines.Add('Количество вещей в инвентаре: '+IntToStr(Items));
for i:=1 to Items do
begin
ObjectID[i]:=ReadD(p);
ItemID[i]:=ReadD(p);
Count[i]:=ReadD(p);
ReadD(p);
ReadD(p);
ReadD(p);
ReadD(p);
m.Lines.Add('OId: '+IntToStr(ObjectID[i])+' IId: '+IntToStr(ItemID[i])+' к-во: '+IntToStr(Count[i]));
end;
end;

if FromServer and (pck[1]=#$04) and (First) then
begin
if Items <> 0 then First:=false;
p:=2;
x:=ReadD(p);
y:=ReadD(p);
z:=ReadD(p);
m.Lines.Add('Ваши координаты: x='+IntToStr(x)+' y='+IntToStr(y)+' z='+IntToStr(z));

for i := 1 to Items do
begin
if ItemID[i]>0 then // - Дропнуть все вещи
// if ItemID[i] = 1463 then // - Дропнуть только вещь с заданным ItemID
begin
buf:=#$12;
WriteD(ObjectID[i]);
// Count[i]:=1; // - Дропнуть только одну вещь с заданным ItemID (речь о количестве... SS/SpS, например)
WriteD(Count[i]);
WriteD(x);
WriteD(y);
WriteD(z);
SendToServer;
m.Lines.Add('Дропнулось IId: '+IntToStr(Count[i])+' в количестве: '+IntToStr(ItemID[i]));
end;
end;
end;

end. procedure Init;
begin
//OnConnect
end;

procedure Free;
begin
//OnDisconnect
end;

begin
//OnRead
end.

2 скрина
http://s53.radikal.ru/i139/0905/7b/33442d2470a4.jpg
http://s59.radikal.ru/i163/0905/69/2e9046071a1e.jpg
Когда из скрипта убераю
procedure Init;
begin
ShowTab;
m:=TMemo.Create(UserTab);
m.parent:=UserTab;
m.align:=alClient;
m.ReadOnly:=false;
m.ScrollBars:=ssBoth;
end;
Скрипт по просту ничего не делает,а должен делать авто дроп,подскажите что нить

J-Fobos
13.05.2009, 02:11
n1ce?!, во первых, это не тема для обсуждения скриптов.
Во вторых, надо создать форму на которой будет рисоватся TMemo, как это сделать на форуме написано в соотвествующих темах..
В третих, у вас две процедуры Init и два исполняемых блока begin end, я вообще хз как этот скрипт мог раньше работать.

n1ce?!
13.05.2009, 02:14
n1ce?!, во первых, это не тема для обсуждения скриптов.
Во вторых, надо создать форму на которой будет рисоватся TMemo, как это сделать на форуме написано в соотвествующих темах..
В третих, у вас две процедуры Init и два исполняемых блока begin end, я вообще хз как этот скрипт мог раньше работать.

На счёт как создавать TMemo я без понятие,работал и не раз проверял,вообще был написан еще когда hlapex был,в нём 1-ый раз и использовал,потом в l2phx,данный скрипт мне помогает чистить чаров у которых в инверьтаре больше 150+ предметов,со скриптом на смерть(оверстат) для птс,который на яве по другому работает)

NLObP
13.05.2009, 04:23
В changelog.txt
Revision: 84
Author: alexteam
Date: 19:51:44, 3 Апреля 2009 г.
Message:
[!] Альфа версия, переписано большинство кода, для совместимости требует небольшие изменения скриптов и существенные изменения в ваших плагинах.
Скрипты: UserTab заменен на UserForm, showtab на ShowForm, hidetab на HideForm. подробности касательно плагинов ищите на форуме.


Внес коррективы в скрипт, на предмет открытия формы:

var
i, p: integer;
Items: integer;
x, y, z: integer;
ObjectID, ItemID, Count: array [1..120] of integer;
m:TMemo;
First: boolean;

procedure Init; //Вызывается при включении скрипта
begin
m:=TMemo.Create(UserForm);
m.parent:=UserForm;
m.align:=alClient;
m.ReadOnly:=false;
m.ScrollBars:=ssBoth;
ShowForm;
end;
procedure Free; //Вызывается при выключении скрипта
begin
HideForm;
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromClient and (pck[1]=#$03) then
begin
First:=True;
buf:=#$0F;
SendToServer;
end;

if FromServer and (pck[1]=#$1B) then
begin
p:=4;
Items:=(ReadC(p));
ReadC(p);
ReadC(p);
ReadC(p);
m.Lines.Add('Количество вещей в инвентаре: '+IntToStr(Items));
for i:=1 to Items do
begin
ObjectID[i]:=ReadD(p);
ItemID[i]:=ReadD(p);
Count[i]:=ReadD(p);
ReadD(p);
ReadD(p);
ReadD(p);
ReadD(p);
m.Lines.Add('OId: '+IntToStr(ObjectID[i])+' IId: '+IntToStr(ItemID[i])+' к-во: '+IntToStr(Count[i]));
end;
end;

if FromServer and (pck[1]=#$04) and (First) then
begin
if Items <> 0 then First:=false;
p:=2;
x:=ReadD(p);
y:=ReadD(p);
z:=ReadD(p);
m.Lines.Add('Ваши координаты: x='+IntToStr(x)+' y='+IntToStr(y)+' z='+IntToStr(z));
for i := 1 to Items do
begin
if ItemID[i]>0 then // - Дропнуть все вещи
// if ItemID[i] = 1463 then // - Дропнуть только вещь с заданным ItemID
begin
buf:=#$12;
WriteD(ObjectID[i]);
// Count[i]:=1; // - Дропнуть только одну вещь с заданным ItemID (речь о количестве... SS/SpS, например)
WriteD(Count[i]);
WriteD(x);
WriteD(y);
WriteD(z);
SendToServer;
m.Lines.Add('Дропнулось IId: '+IntToStr(Count[i])+' в количестве: '+IntToStr(ItemID[i]));
end;
end;
end;
end.

var
i, p: integer;
Items: integer;
x, y, z: integer;
ObjectID, ItemID, Count: array [1..120] of integer;
FormMain : TForm; //Создаваемая форма
m:TMemo;
First: boolean;

procedure Init; //Вызывается при включении скрипта
begin
FormMain:=TForm.Create(nil);
FormMain.Caption := 'Item Dropper';
FormMain.Left := 0;
FormMain.Top := 0;
FormMain.Width := 200;
FormMain.Height := 300;
FormMain.FormStyle := fsNormal;
FormMain.BorderStyle := bsSizeable;
FormMain.BorderWidth := 0;
FormMain.WindowState := wsNormal;
FormMain.Color := clBtnFace;
FormMain.Font.Name := 'Tahoma';
FormMain.Font.Size := 8;
FormMain.Font.Color := clWindowText;
FormMain.Font.CharSet:= 1;
m:=TMemo.Create(FormMain);
m.parent:=FormMain;
m.align:=alClient;
m.ReadOnly:=false;
m.ScrollBars:=ssBoth;
FormMain.Show;
end;

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

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromClient and (pck[1]=#$03) then
begin
First:=True;
buf:=#$0F;
SendToServer;
end;

if FromServer and (pck[1]=#$1B) then
begin
p:=4;
Items:=(ReadC(p));
ReadC(p);
ReadC(p);
ReadC(p);
m.Lines.Add('Количество вещей в инвентаре: '+IntToStr(Items));
for i:=1 to Items do
begin
ObjectID[i]:=ReadD(p);
ItemID[i]:=ReadD(p);
Count[i]:=ReadD(p);
ReadD(p);
ReadD(p);
ReadD(p);
ReadD(p);
m.Lines.Add('OId: '+IntToStr(ObjectID[i])+' IId: '+IntToStr(ItemID[i])+' к-во: '+IntToStr(Count[i]));
end;
end;

if FromServer and (pck[1]=#$04) and (First) then
begin
if Items <> 0 then First:=false;
p:=2;
x:=ReadD(p);
y:=ReadD(p);
z:=ReadD(p);
m.Lines.Add('Ваши координаты: x='+IntToStr(x)+' y='+IntToStr(y)+' z='+IntToStr(z));

for i := 1 to Items do
begin
if ItemID[i]>0 then // - Дропнуть все вещи
// if ItemID[i] = 1463 then // - Дропнуть только вещь с заданным ItemID
begin
buf:=#$12;
WriteD(ObjectID[i]);
// Count[i]:=1; // - Дропнуть только одну вещь с заданным ItemID (речь о количестве... SS/SpS, например)
WriteD(Count[i]);
WriteD(x);
WriteD(y);
WriteD(z);
SendToServer;
m.Lines.Add('Дропнулось IId: '+IntToStr(Count[i])+' в количестве: '+IntToStr(ItemID[i]));
end;
end;
end;

end.

PS: работу не проверял.

BloodToken
23.09.2009, 12:11
Подскажи плиз что нужно вписывать в m:=TMemo.Create(UserForm);,я когда включаю скрипт оно у меня красным высвечивается

TAMBIK
23.09.2009, 15:16
Подскажи плиз что нужно вписывать в m:=TMemo.Create(UserForm);,я когда включаю скрипт оно у меня красным высвечивается

версия l2phx ?