 |
Скрипты для l2phx - Скрипты и перехват пакетов - Скрипты и перехват пакетов |
29.12.2009, 23:23
|
#31
|
|
|
|
Разведчик
|
 Регистрация: 08.11.2009
 Сообщений: 19
 Популярность: 58
 Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 15 сообщениях
|
Re: Скрипты для l2phx
Еще работает кое где
Код:
// автор ТАМБИК
// Kamael-Hellbound
const
Name = 'TAMBIK'; // Имя
procedure Init;
begin
end;
procedure Free;
begin
end;
// пати сам с собой
// чара кто будит приглашать в пати и предлогать трейд .можно грузить без l2phx
// кидаешь чару TAMBIK пати - скрипт принимает пати - 1раз
// кидаешь чару TAMBIK трейд - скрипт принимает пати - не больше
// положеного колличества членов пати
// передаешь чару TAMBIK лидера пати
// выходишь из пати .итог = >> чар TAMBIK с собой в пати
//основная часть скрипта
//выполняется при приходе каждого пакета если скрипт включен
begin
if FromServer and (pck[1]=#$39) then begin // вам приглашение в пати
buf:=#$43;
WriteD(1); // принять пати
SendToServerEx(Name);
pck:='';
exit;
end;
begin
if FromServer and (pck[1]=#$70) then begin// вам трейд
buf:=#$55;
WriteD(1); // принять пати
SendToServerEx(Name);
pck:='';
exit;
end;
end;
end.
|
|
|
06.01.2010, 09:41
|
#32
|
|
|
|
Сержант
|
 Регистрация: 29.10.2009
 Сообщений: 117
 Популярность: 1783
 Сказал(а) спасибо: 78
Поблагодарили 242 раз(а) в 79 сообщениях
|
Re: Скрипты для l2phx
Код:
//FreedomEmulator v1.0beta
//скрипт скрывающий нпс и\или игроков
//помогает снять нагрузку с несчастного клиента
//при убивании пакетов активность можно посмотреть в отдельном окне
//тестировался на la2c6 abyss 10alpha
//(c)metalFan
const name=('metalFan');
var
frm,frm2: TForm;
Button1,Button2,Button3,Button4,Button5: TButton;
m:TMemo;
box:TGroupBox;
i,k,RaceID,SexID,ClassID: integer;
r1,r2,r3,s:boolean;
CharName,FName,VictimName,race,sex,class,message: string;
Inventory: array[0..79,0..9] of integer;
IdItem:real;
zu:Tlabel;
procedure Init; //Вызывается при включении скрипта
begin
//формочка
frm2 := TForm.Create(Application);
frm2.Caption := 'Activity (player\class\race\sex)';
frm2.BorderStyle := bsSizeable;
frm2.Position := poDesigned;
frm2.Width:=300;
frm2.Height:=200;
frm2.OnClose := @FormClose;
frm := TForm.Create(nil);
frm.Caption := 'FreedomEmulator by metalFan v1.0b';
frm.BorderStyle := bsDialog;
frm.Position := poScreenCenter;
frm.Width:=295;
frm.Height:=120;
frm.OnClose := @FormClose;
box:=TGroupBox.Create(nil);
box.parent:=frm;
box.Width:=273;
box.Height:=73;
box.Left := 8;
box.top := 8;
box.align:=alnone;
zu:=Tlabel.create(nil);
zu.parent:=frm;
zu.Width:=73;
zu.Height:=25;
zu.top:=52;
zu.left:=184;
zu.Caption:=('(c)metalFan');
zu.Transparent := False;
zu.Visible := True;
m:=TMemo.Create(frm2);
m.parent:=frm2;
m.align:=alClient;
m.ReadOnly:=true;
m.ScrollBars:=ssBoth;
Button1 := TButton.Create(frm);
Button1.Parent := frm;
Button1.Caption := '>.<';
Button1.Left := 16;
Button1.Top := 16;
Button1.onClick := @Action1;
Button1.OnMouseMove := @Button1MouseMove;
Button2 := TButton.Create(frm);
Button2.Parent := frm;
Button2.Caption := '>.<';
Button2.Left := 96;
Button2.Top := 16;
Button2.onClick := @Action2;
Button2.OnMouseMove := @Button2MouseMove;
Button3 := TButton.Create(frm);
Button3.Parent := frm;
Button3.Caption := '>.<';
Button3.Left := 16;
Button3.Top := 48;
Button3.onClick := @Action3;
Button3.OnMouseMove := @Button3MouseMove;
Button4 := TButton.Create(frm);
Button4.Parent := frm;
Button4.Caption := '>.<';
Button4.Left := 96;
Button4.Top := 48;
Button4.onClick := @Action4;
Button4.OnMouseMove := @Button4MouseMove;
Button5 := TButton.Create(frm);
Button5.Parent := frm;
Button5.Caption := '>.<';
Button5.Left := 176;
Button5.Top := 16;
Button5.onClick := @Action5;
Button5.OnMouseMove := @Button5MouseMove;
buf:=Hstr('4A 00 00 00 00 0A 00 00 00 00 00 4B 00 69 00 6C 00 6C 00 20 00 50 00 6C 00 61 00 79 00 65 00 72 00 73 00 20 00 2D 00 20 00 41 04 3A 04 40 04 4B 04 32 04 30 04 35 04 42 04 20 00 32 04 41 04 35 04 45 04 20 00 3F 04 35 04 40 04 41 04 3E 04 3D 04 30 04 36 04 35 04 39 04 2C 00 20 00 4B 00 69 00 6C 00 6C 00 20 00 4E 00 70 00 63 00 20 00 2D 00 20 00 41 04 3A 04 40 04 4B 04 32 04 30 04 35 04 42 04 20 00 32 04 41 04 35 04 45 04 20 00 32 04 35 04 3D 04 34 04 3E 04 40 04 3E 04 32 04 20 00 3A 00 29 00 20 00 2C 00 20 00 43 00 75 00 72 00 65 00 20 00 2D 00 20 00 32 04 4B 04 3A 04 3B 04 4E 04 47 04 30 04 35 04 42 04 20 00 41 04 3A 04 40 04 4B 04 32 04 30 04 3B 04 3A 04 43 04 2C 00 20 00 34 04 3B 04 4F 04 20 00 3E 04 42 04 3E 04 31 04 40 04 30 04 36 04 35 04 3D 04 38 04 4F 04 20 00 32 04 41 04 35 04 45 04 20 00 32 04 3E 04 3A 04 40 04 43 04 33 04 20 00 32 04 3A 04 3B 04 4E 04 47 04 38 04 42 04 35 04 20 00 38 04 20 00 37 04 30 04 42 04 35 04 3C 04 20 00 32 04 4B 04 3A 04 3B 04 4E 04 47 04 38 04 42 04 35 04 20 00 32 04 38 04 34 04 35 04 3E 04 41 04 4A 04 35 04 3C 04 3A 04 43 04 20 00 40 04 3E 04 3B 04 38 04 3A 04 3E 04 32 04 20 00 28 00 41 04 29 00 6D 00 65 00 74 00 61 00 6C 00 46 00 61 00 6E 00 00 00');
SendToClientEx(name);
frm.show;
frm2.Show;
r1:=False;
r2:=False;
r3:=True;
s:=true;
end;
procedure Free; //Вызывается при выключении скрипта
begin
button1.free;
button2.free;
button3.free;
m.free;
frm2.free;
frm.free;
end;
//(c)NLObP скажи нет случайному закрытию формы
procedure FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caNone;
end;
procedure OnDisconnect(WithClient: Boolean); //Вызывается при установке соединения
begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
end;
procedure Button1MouseMove(Sender: TButton);
begin
Button1.Caption := 'Kill players';
end;
procedure Button2MouseMove(Sender: TButton);
begin
Button2.Caption := 'Kill npc';
end;
procedure Button3MouseMove(Sender: TButton);
begin
Button3.Caption := 'Stop filter';
end;
procedure Button4MouseMove(Sender: TButton);
begin
Button4.Caption := 'Switch';
end;
procedure Button5MouseMove(Sender: TButton);
begin
if s=true then
begin
Button5.Caption := 'Hide Monitor'
end else
begin
Button5.Caption := 'Show Monitor';
end;
end;
procedure Action1(Sender: TButton);
begin
r1:=True;
buf:=Hstr('4A 00 00 00 00 0A 00 00 00 00 00 23 04 31 04 38 04 32 04 30 04 4E 04 20 00 38 04 33 04 40 04 3E 04 3A 04 3E 04 32 04 00 00');
SendToClientEx(name);
end;
procedure Action2 (Sender: TButton);
begin
r2:=True;
buf:=Hstr('4A 00 00 00 00 0A 00 00 00 00 00 23 04 31 04 38 04 32 04 30 04 4E 04 20 00 32 04 35 04 3D 04 34 04 3E 04 40 04 3E 04 32 04 00 00');
SendToClientEx(name);
end;
procedure Action3 (Sender: TButton);
begin
Button3.Caption := 'Load...';
r1:=False;
r2:=False;
buf:=Hstr('CF');
SendToServerEx(name);
delay(5000);
Button3.Caption := 'Done';
end;
procedure Action4 (Sender: TButton);
begin
if r3=true then
begin
r3:=False;
Button4.Caption := 'Stop...';
m.Lines.Add('Остановка монитора');
end
else
begin r3:=true;
Button4.Caption := 'Start...';
m.Lines.Add('Запуск монитора');
end;
delay(1000);
Button4.Caption := 'Done';
end;
procedure Action5 (Sender: TButton);
begin
if s=true then
begin
m.Lines.Add('Сворачиваю окошко с живностью');
s:=false;
m.Lines.Add('>.<');
delay(1000);
frm2.hide;
Button5.Caption := '>.<';
end else
begin
frm2.Show;
s:=True;
delay(1000);
m.Lines.Add('Разворачиваю окошко с живностью');
Button5.Caption := '>.<';
end;
end;
//(c)Shura1oplot инвентарь
procedure InventoryCreate;
var
i,k: integer;
begin
for i:=0 to 79 do
if (i<ReadH(4)) then begin
Inventory[i,0]:=ReadH(i*28+6); // itemType1
Inventory[i,1]:=ReadD(i*28+8); // ObjectId
Inventory[i,2]:=ReadD(i*28+12); // ItemID
end else
for k:=0 to 9 do Inventory[i,k]:=0; // забиваем нулями
end;
function GetInv(obj,up,down:integer): integer;
var
i: integer;
begin
for i:=0 to 79 do
if (Inventory[i,up]=obj) then begin
Result:=Inventory[i,down];
exit;
end;
Result:=-1;
end;
begin
if (FromServer) and (ConnectName=name) then
case pck[1] of
#$03: begin
if r1=true then
begin
pck:='';
end;
end;
#$16: begin
if r2=true then
begin
pck:='';
end;
end;
end;
if FromServer and (pck[1]=#$03) and r3=true then
begin
k:=22;
FName:=ReadS(k);
RaceID:=ReadD(k);
SexID:=ReadD(k);
ClassID:=ReadD(k);
case RaceID of
0:race:='Human';
1:race:='Elf';
2:race:='Dark Elf';
3:race:='Оrc';
4:race:='Dwarf';
end;
case SexID of
0:sex:='Male';
1:sex:='Female';
end;
case ClassID of
0:class:='Fighter';
1:class:='Warrior';
2:class:='Gladiator';
88:class:='Duelist';
3:class:='Warlord';
89:class:='Dreadnought';
4:class:='Knight';
5:class:='Paladin';
90:class:='PhoenixKnight';
6:class:='DarkAvenger';
91:class:='HellKnight';
7:class:='Rogue';
8:class:='TreasureHunter';
93:class:='Adventurer';
9:class:='Hawkeye';
92:class:='Sagittarius';
10:class:='Mage';
11:class:='Wizard';
12:class:='Sorceror';
94:class:='Archmage';
13:class:='Necromancer';
95:class:='Soultaker';
14:class:='Warlock';
96:class:='ArcanaLord';
15:class:='Cleric';
16:class:='Bishop';
97:class:='Cardinal';
17:class:='Prophet';
98:class:='Hierophant';
18:class:='Fighter';
19:class:='Knight';
20:class:='TempleKnight';
99:class:='EvaTemplar';
21:class:='SwordSinger';
22:class:='Scout';
23:class:='PlainsWalker';
101:class:='WindRider';
24:class:='SilverRanger';
102:class:='MoonlightSentinel';
25:class:='Mage';
26:class:='Wizard';
27:class:='SpellSinger';
103:class:='MysticMuse';
28:class:='ElementalSummoner';
104:class:='ElementalMaster';
29:class:='Oracle';
30:class:='Elder';
105:class:='EvaSaint';
31:class:='Fighter';
32:class:='PaulusKnight';
33:class:='ShillienKnight';
106:class:='ShillienTemplar';
34:class:='BladeDancer';
107:class:='SpectralDancer';
35:class:='Assassin';
36:class:='AbyssWalker';
108:class:='GhostHunter';
37:class:='PhantomRanger';
109:class:='GhostSentinel';
38:class:='Mage';
39:class:='DarkWizard';
40:class:='Spellhowler';
110:class:='StormScreamer';
41:class:='PhantomSummoner';
111:class:='SpectralMaster';
42:class:='ShillienOracle';
43:class:='ShillienElder';
112:class:='ShillienSaint';
44:class:='Fighter';
45:class:='Raider';
46:class:='Destroyer';
113:class:='Titan';
47:class:='Monk';
48:class:='Tyrant';
114:class:='GrandKhauatari';
49:class:='Mage';
50:class:='Shaman';
51:class:='Overlord';
115:class:='Dominator';
52:class:='Warcryer';
116:class:='Doomcryer';
53:class:='Fighter';
54:class:='Scavenger';
55:class:='BountyHunter';
117:class:='FortuneSeeker';
56:class:='Artisan';
57:class:='Warsmith';
118:class:='Maestro';
end;
Message:=(class+ ' |' +race+ ' |' +sex+ ' |');
m.Lines.Add(FName+' | '+Message);
end;
end.
end.
end.
в общем идете вы в гиран мило купить бутылки у вендора на сервере где онлайн под пару тысяч закатил, а там...
лаги... всюду гномы трейдеры и ктото бегает в общем очень плохо ващему слабому компьютеру...
но этот скрипт если не полностью, (MoveToPawn, MoveToLocation ни как не убить =\ хотя...) то облягчит вам жизнь, он скроет всех ненужных игроков и\или вендоров
функции можно включать\отключать в общем методом тыка думаю разберетесь
(с)metalFan
________________
Продвижение вашего сайта, увеличение ссылочной массы, продвижение по НЧ-СЧ-ВЧ запросам. Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
10.01.2010, 12:51
|
#33
|
|
|
|
Разведчик
|
 Регистрация: 10.12.2009
 Сообщений: 4
 Популярность: 30
 Сказал(а) спасибо: 3
Поблагодарили 9 раз(а) в 7 сообщениях
|
Re: Скрипты для l2phx
Код:
// Бегущая строка в титуле, ©Br1nk v0.2
// пишем rt в пати чате для включения и выключения
var
title, temp, titleoff: string;
activated, mult, safemode: integer;
tmr: TTimer;
procedure Init; //Вызывается при включении скрипта
begin
title := 'ВСЕХ ЛЮБЛЮ НА СВЕТЕ Я ЭТО РОДИНА МОЯ!'; // текст титула
titleoff := '-=ШОН=-';
activated := 0; // Определяет, включается ли бегущая строка сразу при запуске скрипта или только после введения команды rt в патичат
safemode := 1; // безопасный режим, стандартная длина титула. Если вы играете на кривой яве, поставьте 0, это даст вам более длинный титул, соответственно выглядит пижже..)
tmr := TTimer.Create(nil);
tmr.Interval := 800; // Частота обновления (мс)
tmr.Enabled := False;
tmr.OnTimer := @Tick;
mult := 4; // Определяет на сколько букв сдвигается строка в титуле при обновлении
end;
procedure Free;
begin
tmr.Free;
SetTitle(titleoff);
end;
procedure Tick;
begin
temp := copy(title, 2 + mult, Length(title) - 1 - mult) + copy(title, 1, 1 + mult);
title := temp;
if safemode then
SetTitle(Copy(temp, 0, 16))
else
SetTitle(temp);
end;
procedure Announce(text:string); // for debug purposes
begin
buf := #$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(text);
SendToClient;
end;
procedure SetTitle(text: string);
begin
buf := HStr('55');
WriteS(ConnectName);
WriteS(text);
WriteD(0);
SendToServer;
end;
begin
if FromClient and (pck=HStr('38 72 00 74 00 00 00 03 00 00 00')) then
begin
if (activated = 1) then
begin
activated := 0;
SetTitle(titleoff);
Announce('Title script powered off.');
end
else
activated := 1;
pck := '';
end;
if (activated = 1) then
tmr.Enabled := True
else
tmr.Enabled := False;
end.
бегущий титул ))пишем все что угодно ,мож кому пригодится
ТЕСТИЛ НА ВЕРСИИ 4,3,0,13
включаем скрипт,пишем rt в пати чат
пригодится дайте спасибку)))
Последний раз редактировалось siiion1; 10.01.2010 в 12:58.
|
|
|
02.02.2010, 17:32
|
#34
|
|
|
|
Разведчик
|
 Регистрация: 11.08.2009
 Сообщений: 35
 Популярность: 104
 Сказал(а) спасибо: 20
Поблагодарили 48 раз(а) в 18 сообщениях
|
Re: Скрипты для l2phx
PHP код:
[CODE][QUOTE=siiion1;139088][CODE][CODE]//Список констант
const
Name='siiion'; //Вписать сюда имя чара
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=true; //Interlude - true, C4 - false
//-------------------------
max=100; //количество слотов в инвентаре чара
//............................................
//Список переменных
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 NLObP v.0.7';
Result.Left := 397;
Result.Top := 233;
Result.Width := 581;
Result.Height := 205;
Result.FormStyle := fsNormal;
Result.Position := poDesigned;
Result.BorderStyle := bsSizeable;
Result.BorderWidth := 0;
Result.WindowState := wsNormal;
Result.Color := clBtnFace;
Result.Font.Name := 'Tahoma';
Result.Font.Size := 8;
Result.Font.Color := clWindowText;
Result.Font.CharSet:= 1;
//------------------------
//......................................
//Splitter1
Splitter1 := TSplitter.Create(Result);
Splitter1.Parent := Result;
Splitter1.Align := alBottom;
Splitter1.Color := clBtnFace;
Splitter1.Left := 0;
Splitter1.Top := 103;
Splitter1.Width := 573;
Splitter1.Height := 3;
Splitter1.Visible := TRUE;
Splitter1.Tag := 0;
//......................................
//......................................
//Splitter2
Splitter2 := TSplitter.Create(Result);
Splitter2.Parent := Result;
Splitter2.Align := alRight;
Splitter2.Color := clBtnFace;
Splitter2.Left := 442;
Splitter2.Top := 0;
Splitter2.Width := 1;
Splitter2.Height := 103;
Splitter2.Visible := TRUE;
Splitter2.Tag := 0;
//......................................
//......................................
//Stats
Stats := TMemo.Create(Result);
Stats.Parent := Result;
Stats.Left := 443;
Stats.Top := 0;
Stats.Width := 130;
Stats.Height := 103;
Stats.Visible := TRUE;
Stats.Tag := 0;
Stats.Enabled := TRUE;
Stats.Hint := '';
Stats.ShowHint := FALSE;
Stats.Font.Name := 'Tahoma';
Stats.Font.Size := 8;
Stats.Font.Color := clWindowText;
Stats.Color := clWindow;
Stats.TabOrder := 0;
Stats.TabStop := TRUE;
Stats.Align := alRight;
Stats.WordWrap := TRUE;
Stats.Alignment := taLeftJustify;
Stats.WantTabs := FALSE;
Stats.WantReturns := TRUE;
Stats.HideSelection := TRUE;
Stats.MaxLength := 0;
Stats.OEMConvert := FALSE;
Stats.ReadOnly := FALSE;
Stats.ScrollBars := ssNone;
//......................................
//......................................
//Msg
Msg := TMemo.Create(Result);
Msg.Parent := Result;
Msg.Left := 0;
Msg.Top := 106;
Msg.Width := 573;
Msg.Height := 65;
Msg.Visible := TRUE;
Msg.Tag := 0;
Msg.Enabled := TRUE;
Msg.Hint := '';
Msg.ShowHint := FALSE;
Msg.Font.Name := 'Tahoma';
Msg.Font.Size := 8;
Msg.Font.Color := clWindowText;
Msg.Color := clWindow;
Msg.TabOrder := 1;
Msg.TabStop := TRUE;
Msg.Align := alBottom;
Msg.WordWrap := TRUE;
Msg.Alignment := taLeftJustify;
Msg.WantTabs := FALSE;
Msg.WantReturns := TRUE;
Msg.HideSelection := TRUE;
Msg.MaxLength := 0;
Msg.OEMConvert := FALSE;
Msg.ReadOnly := FALSE;
Msg.ScrollBars := ssNone;
//......................................
//......................................
//Panel1
Panel1 := TPanel.Create(Result);
Panel1.Parent := Result;
Panel1.Left := 0;
Panel1.Top := 0;
Panel1.Width := 442;
Panel1.Height := 103;
Panel1.Visible := TRUE;
Panel1.Tag := 0;
Panel1.Enabled := TRUE;
Panel1.Hint := '';
Panel1.ShowHint := FALSE;
Panel1.Caption := '';
Panel1.Align := alClient;
Panel1.Color := clBtnFace;
Panel1.Font.Name := 'Tahoma';
Panel1.Font.Size := 8;
Panel1.Font.Color := clWindowText;
Panel1.Font.CharSet := 1;
Panel1.BevelWidth := 1;
Panel1.BorderWidth := 0;
Panel1.BevelInner := bvNone;
Panel1.BevelOuter := bvRaised;
Panel1.TabOrder := 2;
Panel1.TabStop := FALSE;
Panel1.AutoSize := FALSE;
//......................................
//......................................
//GroupBox2
GroupBox2 := TGroupBox.Create(Result);
GroupBox2.Parent := Panel1;
GroupBox2.Left := 1;
GroupBox2.Top := 1;
GroupBox2.Width := 440;
GroupBox2.Height := 101;
GroupBox2.Visible := TRUE;
GroupBox2.Tag := 0;
GroupBox2.Enabled := TRUE;
GroupBox2.Hint := '';
GroupBox2.ShowHint := FALSE;
GroupBox2.Caption := 'Настройки';
GroupBox2.Align := alClient;
GroupBox2.Color := clBtnFace;
GroupBox2.Font.Name := 'Tahoma';
GroupBox2.Font.Size := 8;
GroupBox2.Font.Color := clWindowText;
GroupBox2.Font.CharSet := 1;
GroupBox2.TabOrder := 0;
GroupBox2.TabStop := FALSE;
//......................................
//......................................
//Label1
Label1 := TLabel.Create(Result);
Label1.Parent := GroupBox2;
Label1.Left := 10;
Label1.Top := 70;
Label1.Width := 58;
Label1.Height := 13;
Label1.Visible := TRUE;
Label1.Tag := 0;
Label1.Enabled := TRUE;
Label1.Hint := '';
Label1.ShowHint := FALSE;
Label1.Caption := 'Уровень Макс.:';
Label1.Transparent := TRUE;
Label1.WordWrap := FALSE;
Label1.Alignment := taLeftJustify;
Label1.Layout := tlTop;
Label1.AutoSize := TRUE;
Label1.Align := alNone;
Label1.Font.Name := 'Tahoma';
Label1.Font.Size := 8;
Label1.Font.Color := clWindowText;
Label1.Color := clBtnFace;
//......................................
//......................................
//Label1
Label3 := TLabel.Create(Result);
Label3.Parent := GroupBox2;
Label3.Left := 170;
Label3.Top := 70;
Label3.Width := 58;
Label3.Height := 13;
Label3.Visible := TRUE;
Label3.Tag := 0;
Label3.Enabled := TRUE;
Label3.Hint := '';
Label3.ShowHint := FALSE;
Label3.Caption := 'Мин.:';
Label3.Transparent := TRUE;
Label3.WordWrap := FALSE;
Label3.Alignment := taLeftJustify;
Label3.Layout := tlTop;
Label3.AutoSize := TRUE;
Label3.Align := alNone;
Label3.Font.Name := 'Tahoma';
Label3.Font.Size := 8;
Label3.Font.Color := clWindowText;
Label3.Color := clBtnFace;
//......................................
//......................................
//Edit1
Edit1 := TEdit.Create(Result);
Edit1.Parent := GroupBox2;
Edit1.Left := 90;
Edit1.Top := 67;
Edit1.Width := 60;
Edit1.Height := 21;
Edit1.Visible := TRUE;
Edit1.Tag := 0;
Edit1.Enabled := TRUE;
Edit1.Hint := 'Введи желаемый уровень заточки';
Edit1.ShowHint := TRUE;
Edit1.Text := '65535';
Edit1.Font.Name := 'Tahoma';
Edit1.Font.Size := 8;
Edit1.Font.Color := clWindowText;
Edit1.Color := clWindow;
Edit1.TabOrder := 5;
Edit1.TabStop := TRUE;
Edit1.ReadOnly := FALSE;
Edit1.MaxLength := 0;
Edit1.AutoSize := TRUE;
Edit1.OnExit := @Edit1_Exit;
//......................................
//......................................
//Edit2
Edit2 := TEdit.Create(Result);
Edit2.Parent := GroupBox2;
Edit2.Left := 199;
Edit2.Top := 67;
Edit2.Width := 60;
Edit2.Height := 21;
Edit2.Visible := TRUE;
Edit2.Tag := 0;
Edit2.Enabled := TRUE;
Edit2.Hint := 'Какого уровня смогли достичь';
Edit2.ShowHint := TRUE;
Edit2.Text := '0';
Edit2.Font.Name := 'Tahoma';
Edit2.Font.Size := 8;
Edit2.Font.Color := clWindowText;
Edit2.Color := clWindow;
Edit2.TabOrder := 5;
Edit2.TabStop := FALSE;
Edit2.ReadOnly := TRUE;
Edit2.MaxLength := 0;
Edit2.AutoSize := TRUE;
//......................................
//......................................
//Label2
Label2 := TLabel.Create(Result);
Label2.Parent := GroupBox2;
Label2.Left := 416;
Label2.Top := 19;
Label2.Width := 18;
Label2.Height := 13;
Label2.Visible := TRUE;
Label2.Tag := 0;
Label2.Enabled := TRUE;
Label2.Hint := '';
Label2.ShowHint := FALSE;
Label2.Caption := 'шт.';
Label2.Transparent := TRUE;
Label2.WordWrap := FALSE;
Label2.Alignment := taLeftJustify;
Label2.Layout := tlTop;
Label2.AutoSize := TRUE;
Label2.Align := alNone;
Label2.Font.Name := 'Tahoma';
Label2.Font.Size := 8;
Label2.Font.Color := clWindowText;
Label2.Color := clBtnFace;
//......................................
//......................................
//Label4
Label4 := TLabel.Create(Result);
Label4.Parent := GroupBox2;
Label4.Left := 416;
Label4.Top := 43;
Label4.Width := 18;
Label4.Height := 13;
Label4.Visible := TRUE;
Label4.Tag := 0;
Label4.Enabled := TRUE;
Label4.Hint := '';
Label4.ShowHint := FALSE;
Label4.Caption := 'шт.';
Label4.Transparent := TRUE;
Label4.WordWrap := FALSE;
Label4.Alignment := taLeftJustify;
Label4.Layout := tlTop;
Label4.AutoSize := TRUE;
Label4.Align := alNone;
Label4.Font.Name := 'Tahoma';
Label4.Font.Size := 8;
Label4.Font.Color := clWindowText;
Label4.Color := clBtnFace;
//......................................
//......................................
//Label12
Label12 := TLabel.Create(Result);
Label12.Parent := GroupBox2;
Label12.Left := 273;
Label12.Top := 3;
Label12.Width := 33;
Label12.Height := 13;
Label12.Visible := TRUE;
Label12.Tag := 0;
Label12.Enabled := TRUE;
Label12.Hint := '';
Label12.ShowHint := FALSE;
Label12.Caption := 'ItemID';
Label12.Transparent := TRUE;
Label12.WordWrap := FALSE;
Label12.Alignment := taLeftJustify;
Label12.Layout := tlTop;
Label12.AutoSize := TRUE;
Label12.Align := alNone;
Label12.Font.Name := 'Tahoma';
Label12.Font.Size := 8;
Label12.Font.Color := clWindowText;
Label12.Color := clBtnFace;
//......................................
//......................................
//Label13
Label13 := TLabel.Create(Result);
Label13.Parent := GroupBox2;
Label13.Left := 349;
Label13.Top := 3;
Label13.Width := 35;
Label13.Height := 13;
Label13.Visible := TRUE;
Label13.Tag := 0;
Label13.Enabled := TRUE;
Label13.Hint := '';
Label13.ShowHint := FALSE;
Label13.Caption := 'Кол-во';
Label13.Transparent := TRUE;
Label13.WordWrap := FALSE;
Label13.Alignment := taLeftJustify;
Label13.Layout := tlTop;
Label13.AutoSize := TRUE;
Label13.Align := alNone;
Label13.Font.Name := 'Tahoma';
Label13.Font.Size := 8;
Label13.Font.Color := clWindowText;
Label13.Color := clBtnFace;
//......................................
//......................................
//CheckBoxItem
CheckBoxItem := TCheckBox.Create(Result);
CheckBoxItem.Parent := GroupBox2;
CheckBoxItem.Left := 18;
CheckBoxItem.Top := 18;
CheckBoxItem.Width := 66;
CheckBoxItem.Height := 17;
CheckBoxItem.Visible := TRUE;
CheckBoxItem.Tag := 0;
CheckBoxItem.Enabled := TRUE;
CheckBoxItem.Hint := 'Поставить галочку если выбрали предмет';
CheckBoxItem.ShowHint := TRUE;
CheckBoxItem.Caption := 'Предмет';
CheckBoxItem.Font.Name := 'Tahoma';
CheckBoxItem.Font.Size := 8;
CheckBoxItem.Font.Color := clWindowText;
CheckBoxItem.Color := clBtnFace;
CheckBoxItem.TabOrder := 0;
CheckBoxItem.TabStop := TRUE;
CheckBoxItem.Checked := FALSE;
CheckBoxItem.AllowGrayed := FALSE;
CheckBoxItem.State := cbUnchecked;
CheckBoxItem.OnClick := @CheckBoxItem_Click;
//......................................
//......................................
//ComboBoxItem
ComboBoxItem := TComboBox.Create(Result);
ComboBoxItem.Parent := GroupBox2;
ComboBoxItem.Left := 90;
ComboBoxItem.Top := 16;
ComboBoxItem.Width := 169;
ComboBoxItem.Height := 21;
ComboBoxItem.Visible := TRUE;
ComboBoxItem.Tag := 0;
ComboBoxItem.Enabled := TRUE;
ComboBoxItem.Hint := 'Выбери из списка затачиваемый предмет';
ComboBoxItem.ShowHint := TRUE;
ComboBoxItem.Text := 'ComboBoxItem';
ComboBoxItem.Font.Name := 'Tahoma';
ComboBoxItem.Font.Size := 8;
ComboBoxItem.Font.Color := clWindowText;
ComboBoxItem.Color := clWindow;
ComboBoxItem.TabOrder := 1;
ComboBoxItem.TabStop := TRUE;
ComboBoxItem.ItemIndex := -1;
ComboBoxItem.Sorted := FALSE;
ComboBoxItem.ItemHeight := 13;
ComboBoxItem.OnClick := @ComboBoxItem_Click;
//......................................
//......................................
//ButtonStartEnchant
ButtonStartEnchant := TButton.Create(Result);
ButtonStartEnchant.Parent := GroupBox2;
ButtonStartEnchant.Left := 265;
ButtonStartEnchant.Top := 67;
ButtonStartEnchant.Width := 75;
ButtonStartEnchant.Height := 25;
ButtonStartEnchant.Visible := TRUE;
ButtonStartEnchant.Tag := 0;
ButtonStartEnchant.Enabled := TRUE;
ButtonStartEnchant.Hint := '';
ButtonStartEnchant.ShowHint := FALSE;
ButtonStartEnchant.Caption := 'Start';
ButtonStartEnchant.Font.Name := 'Tahoma';
ButtonStartEnchant.Font.Size := 8;
ButtonStartEnchant.Font.Color := clWindowText;
ButtonStartEnchant.Font.CharSet := 1;
ButtonStartEnchant.TabOrder := 2;
ButtonStartEnchant.TabStop := TRUE;
ButtonStartEnchant.Cancel := FALSE;
ButtonStartEnchant.ModalResult := 0;
ButtonStartEnchant.OnClick := @ButtonStartEnchant_Click;
//......................................
//......................................
//ButtonStopEnchant
ButtonStopEnchant := TButton.Create(Result);
ButtonStopEnchant.Parent := GroupBox2;
ButtonStopEnchant.Left := 341;
ButtonStopEnchant.Top := 67;
ButtonStopEnchant.Width := 75;
ButtonStopEnchant.Height := 25;
ButtonStopEnchant.Visible := TRUE;
ButtonStopEnchant.Tag := 0;
ButtonStopEnchant.Enabled := TRUE;
ButtonStopEnchant.Hint := '';
ButtonStopEnchant.ShowHint := FALSE;
ButtonStopEnchant.Caption := 'Stop';
ButtonStopEnchant.Font.Name := 'Tahoma';
ButtonStopEnchant.Font.Size := 8;
ButtonStopEnchant.Font.Color := clWindowText;
ButtonStopEnchant.Font.CharSet := 1;
ButtonStopEnchant.TabOrder := 3;
ButtonStopEnchant.TabStop := TRUE;
ButtonStopEnchant.Cancel := FALSE;
ButtonStopEnchant.ModalResult := 0;
ButtonStopEnchant.OnClick := @ButtonStopEnchant_Click;
//......................................
//......................................
//CheckBoxScroll
CheckBoxScroll := TCheckBox.Create(Result);
CheckBoxScroll.Parent := GroupBox2;
CheckBoxScroll.Left := 18;
CheckBoxScroll.Top := 41;
CheckBoxScroll.Width := 66;
CheckBoxScroll.Height := 23;
CheckBoxScroll.Visible := TRUE;
CheckBoxScroll.Tag := 0;
CheckBoxScroll.Enabled := TRUE;
CheckBoxScroll.Hint := 'Поставить галочку если выбрали скролл заточки';
CheckBoxScroll.ShowHint := TRUE;
CheckBoxScroll.Caption := 'Заточка';
CheckBoxScroll.Font.Name := 'Tahoma';
CheckBoxScroll.Font.Size := 8;
CheckBoxScroll.Font.Color := clWindowText;
CheckBoxScroll.Color := clBtnFace;
CheckBoxScroll.TabOrder := 4;
CheckBoxScroll.TabStop := TRUE;
CheckBoxScroll.Checked := FALSE;
CheckBoxScroll.AllowGrayed := FALSE;
CheckBoxScroll.State := cbUnchecked;
CheckBoxScroll.OnClick := @CheckBoxScroll_Click;
//......................................
//......................................
//ComboBoxScroll
ComboBoxScroll := TComboBox.Create(Result);
ComboBoxScroll.Parent := GroupBox2;
ComboBoxScroll.Left := 90;
ComboBoxScroll.Top := 40;
ComboBoxScroll.Width := 169;
ComboBoxScroll.Height := 21;
ComboBoxScroll.Visible := TRUE;
ComboBoxScroll.Tag := 0;
ComboBoxScroll.Enabled := TRUE;
ComboBoxScroll.Hint := 'Выбери из списка скролл заточки';
ComboBoxScroll.ShowHint := TRUE;
ComboBoxScroll.Text := 'ComboBoxScroll';
ComboBoxScroll.Font.Name := 'Tahoma';
ComboBoxScroll.Font.Size := 8;
ComboBoxScroll.Font.Color := clWindowText;
ComboBoxScroll.Color := clWindow;
ComboBoxScroll.TabOrder := 5;
ComboBoxScroll.TabStop := TRUE;
ComboBoxScroll.ItemIndex := -1;
ComboBoxScroll.Sorted := FALSE;
ComboBoxScroll.ItemHeight := 13;
ComboBoxScroll.OnClick := @ComboBoxScroll_Click;
//......................................
//......................................
//EditItemVal
EditItemVal := TEdit.Create(Result);
EditItemVal.Parent := GroupBox2;
EditItemVal.Left := 341;
EditItemVal.Top := 16;
EditItemVal.Width := 72;
EditItemVal.Height := 21;
EditItemVal.Visible := TRUE;
EditItemVal.Tag := 0;
EditItemVal.Enabled := TRUE;
EditItemVal.Hint := '';
EditItemVal.ShowHint := FALSE;
EditItemVal.Text := '0';
EditItemVal.Font.Name := 'Tahoma';
EditItemVal.Font.Size := 8;
EditItemVal.Font.Color := clWindowText;
EditItemVal.Color := clWindow;
EditItemVal.TabOrder := 6;
EditItemVal.TabStop := TRUE;
EditItemVal.ReadOnly := TRUE;
EditItemVal.MaxLength := 0;
EditItemVal.AutoSize := TRUE;
//......................................
//......................................
//EditScrollVal
EditScrollVal := TEdit.Create(Result);
EditScrollVal.Parent := GroupBox2;
EditScrollVal.Left := 341;
EditScrollVal.Top := 40;
EditScrollVal.Width := 72;
EditScrollVal.Height := 21;
EditScrollVal.Visible := TRUE;
EditScrollVal.Tag := 0;
EditScrollVal.Enabled := TRUE;
EditScrollVal.Hint := '';
EditScrollVal.ShowHint := FALSE;
EditScrollVal.Text := '0';
EditScrollVal.Font.Name := 'Tahoma';
EditScrollVal.Font.Size := 8;
EditScrollVal.Font.Color := clWindowText;
EditScrollVal.Color := clWindow;
EditScrollVal.TabOrder := 7;
EditScrollVal.TabStop := TRUE;
EditScrollVal.ReadOnly := TRUE;
EditScrollVal.MaxLength := 0;
EditScrollVal.AutoSize := TRUE;
//......................................
//......................................
//EditScrollOID
EditScrollOID := TEdit.Create(Result);
EditScrollOID.Parent := GroupBox2;
EditScrollOID.Left := 263;
EditScrollOID.Top := 40;
EditScrollOID.Width := 72;
EditScrollOID.Height := 21;
EditScrollOID.Visible := TRUE;
EditScrollOID.Tag := 0;
EditScrollOID.Enabled := TRUE;
EditScrollOID.Hint := '';
EditScrollOID.ShowHint := FALSE;
EditScrollOID.Text := '0';
EditScrollOID.Font.Name := 'Tahoma';
EditScrollOID.Font.Size := 8;
EditScrollOID.Font.Color := clWindowText;
EditScrollOID.Color := clWindow;
EditScrollOID.TabOrder := 8;
EditScrollOID.TabStop := TRUE;
EditScrollOID.ReadOnly := TRUE;
EditScrollOID.MaxLength := 0;
EditScrollOID.AutoSize := TRUE;
//......................................
//......................................
//EditItemOID
EditItemOID := TEdit.Create(Result);
EditItemOID.Parent := GroupBox2;
EditItemOID.Left := 264;
EditItemOID.Top := 16;
EditItemOID.Width := 72;
EditItemOID.Height := 21;
EditItemOID.Visible := TRUE;
EditItemOID.Tag := 0;
EditItemOID.Enabled := TRUE;
EditItemOID.Hint := '';
EditItemOID.ShowHint := FALSE;
EditItemOID.Text := '0';
EditItemOID.Font.Name := 'Tahoma';
EditItemOID.Font.Size := 8;
EditItemOID.Font.Color := clWindowText;
EditItemOID.Color := clWindow;
EditItemOID.TabOrder := 9;
EditItemOID.TabStop := TRUE;
EditItemOID.ReadOnly := TRUE;
EditItemOID.MaxLength := 0;
EditItemOID.AutoSize := TRUE;
//......................................
Yes := TRUE;
FINALLY
if not Yes then begin
//Освобождаем ресурсы, если неудачно ...
if Result<>NIL then begin
Result.Free;
Result:=NIL;
end;
end;
END;
msg.Lines.Add('Автоматизация заточки by NLObP!');
Result.Show;
end; //Create_FormMain
//========================
//========================
procedure Init; //Вызывается при включении скрипта
var
i:integer;
begin
FormMain:=Create_FormMain;
//Enchant:=false;
CurEnchLvl:=0;
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimer;
timer.enabled:=false;
timer.interval:=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.
[CODE][/CODE]
подскажите де в этом скрипте менять МИН ЗНАЧЕНИЕ ТОЧКИ?
просто на серваке точиш пуху приполомке она падает не на 0 а на +3,из за етого прога виснет
спс[/CODE][/QUOTE][CODE][/CODE]
Скриптика побольше не нашлось?
З.Ы. - пост редактируй что бы скрипт был в тегах [ CODE]Text[ /CODE] (пробельчики убери)
________________
Зачем Ла2 себе скачал? Зачем ее установил? Я сон нормальный потерял. Про жизнь реальную забыл. Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось H0oL1GaN; 02.02.2010 в 17:36.
|
|
|
16.02.2010, 18:04
|
#35
|
|
|
|
Разведчик
|
 Регистрация: 01.11.2009
 Сообщений: 36
 Популярность: -189
 Сказал(а) спасибо: 10
Поблагодарили 22 раз(а) в 8 сообщениях
|
Re: Скрипты для l2phx
Антитаргет
Код:
Const
Name='Lafi';
var
// переменная
ValidatePosition:string;
a:integer; b:boolean;
procedure Init; //Вызывается при включении скрипта
begin
SendMsc('Возьми себя в таргет!');
b:=false;
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClientEX(Name);
end;
//защитная часть
begin
begin
if FromClient and (pck[1]=#$04)and (not b) then
begin
a:=ReadD(2);
SendMsc('Запомнен ObjectID = '+inttostr(a));
b:=true;
end;
end;
If FromClient and (pck=hstr('38 2E 00 6F 00 6E 00 00 00 00 00 00 00')) then
begin
Buf:=#$9F;
WriteD(a);
buf:=buf+ hstr('01 00 00 00 56 0D 20 10 02 00 00 00');
SendToServerEX(Name);
end;
end.
Работает сам использую
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Помог? тыкай спасибо КТО знает баги или дюы шок ворлда отпишите в личку
|
|
|
21.02.2010, 13:14
|
#36
|
|
|
|
Разведчик
|
 Регистрация: 02.08.2009
 Сообщений: 7
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Скрипты для l2phx
Пробовал переделать под ГФ, знающие люди скажите что я упустил:
Код:
Const
Name='xxxx';
var
// переменная
ValidatePosition:string;
a:integer; b:boolean;
procedure Init; //Вызывается при включении скрипта
begin
SendMsc('Возьми себя в таргет!');
b:=false;
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClientEX(Name);
end;
//защитная часть
begin
begin
if FromClient and (pck[1]=#$1F)and (not b) then
begin
a:=ReadD(2);
SendMsc('Запомнен ObjectID = '+inttostr(a));
b:=true;
end;
end;
If FromClient and (pck=hstr('49 2E 00 6F 00 6E 00 00 00 00 00 00 00')) then
begin
Buf:=#$A8;
WriteD(a);
buf:=buf+ hstr('01 00 00 00 56 0D 20 10 02 00 00 00');
SendToServerEX(Name);
end;
end.
|
|
|
27.02.2010, 16:23
|
#37
|
|
|
|
Разведчик
|
 Регистрация: 12.02.2010
 Сообщений: 1
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Скрипты для l2phx
люди пожалусто объясне что за скрипт название скрипта FakeGM
вот сам скрипт
Код:
//Set Builder
var
i:integer;
begin
if FromServer then if pck[2]=#$04 then begin
i:=22;
ReadS(i);
i:=i+328;
buf:=pck;
WriteD(1,i);
pck:=buf;
end;
end.
{ некоторые ГМ команды:
///l2debugwindow - консолька
///l2debug - показывает сообщения в открытой консоли
///geodata - не пробовал пока... для работы необходимо скопировать папку геодата в папку сустем клиента
///buildzone map=[map_name] такая же ****ь но на одну область
///showborderline - показывает границу обасти
///showsectors - разбивает мир по секторам
///camerawalking mode=on|off - позволяет двигать камеру на ограниченное расстояние без движения перса.
///c_rmode [1-7] - изменяет внешнее отображение мира... очень жестоко ) приминения пока не нашел )
///bighead size=[1-n] - увеличивает размер головы. Видно ессестно только тебе )
///open [map name] - не пробовал
///get [class_name] [attrib_name]
///set [class_name] [attrib_name]
///editdefault class=[class_name]
///stat l2 - общая инфа обо всем... постоянно меняется. полезна.
///stat fps - да здравствует анрил ))) показывает как вы думаете что? ))) конечно же количество кадров в секунду )
}
Последний раз редактировалось GraNIT; 27.02.2010 в 16:26.
|
|
|
01.03.2010, 20:24
|
#38
|
|
|
|
Старший сержант
|
 Регистрация: 27.07.2009
 Сообщений: 237
 Популярность: 578
 Сказал(а) спасибо: 593
Поблагодарили 329 раз(а) в 147 сообщениях
|
Re: Скрипты для l2phx
Аргументация в 2 кнопки
Код:
const
nik='GraNIT';
var
WeaponID, LsID, GemID, GemCount: integer;
procedure Init; //Вызывается при включении скрипта
begin
end;
procedure OnTimer01(Sender: TObject);
begin
end;
procedure Free; //Вызывается при выключении скрипта
begin
end;
procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin
end;
procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединения
begin
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromClient and (pck[1]=#$D0) then
begin
WeaponID:=ReadD(4);
LsID:=ReadD(8);
GemID:=ReadD(12);
GemCount:=ReadD(16);
end;
//Cancel Augment
if FromClient and (pck=#$34#$03#$00#$00#$00) then
begin
pck:='';
Buf:=#$D0#$45#$00;
WriteD(WeaponID);
SendToServerEx(nik);
Buf:=#$D0#$46#$00;
WriteD(WeaponID);
SendToServerEx(nik);
end;
//Augment
if FromClient and (pck=#$34#$02#$00#$00#$00) then
begin
pck:='';
Buf:=#$D0#$44#$00;
WriteD(WeaponID);
WriteD(LsID);
WriteD(GemID);
WriteD(GemCount);
SendToServerEx(nik);
end;
end.
Инструкция:
1. Включили скрипт
2. Вставили ЛС в игре.
3. Второе соц. действие вытаскиевает ЛС.
4. Первое соц. действие вставляет ЛС.
P.S. тестилось на Part 2 :Grace World, Megal2 .
Последний раз редактировалось GraNIT; 02.03.2010 в 00:33.
|
|
|
24.04.2010, 19:52
|
#39
|
|
|
|
Разведчик
|
 Регистрация: 08.04.2010
 Сообщений: 26
 Популярность: 42
 Сказал(а) спасибо: 117
Поблагодарили 22 раз(а) в 14 сообщениях
|
Re: Скрипты для l2phx
У меня на серве у нпц бафера есть функция вылечить и она ресает сразу фулл хп мп сп. Будет ли этот скрипт работать?
|
|
|
24.04.2010, 20:00
|
#40
|
|
|
|
Старший сержант
|
 Регистрация: 27.05.2009
 Сообщений: 199
 Популярность: 643
 Сказал(а) спасибо: 207
Поблагодарили 267 раз(а) в 126 сообщениях
|
Re: Скрипты для l2phx
|
|
|
29.04.2010, 22:03
|
#41
|
|
|
|
Разведчик
|
 Регистрация: 20.04.2010
 Сообщений: 2
 Популярность: 12
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Скрипты для l2phx
Бьём без флага и урона
Код:
begin
if FromClient and ((pck[1]=#$0A) or (pck[1]=#$04)) then //Если атакуем, то:
begin
buf:=pck;
SendToServer; //Отправил пакет дальше
delay(100);
buf:=#$73; //Открыть продажу
SendToServer;
buf:=#$76; //Закрыть продажу
SendToServer;
pck:='';
end;
if fromserver and (pck[1]=#$9a) then pck:='';
end.
l2phx 3.5.33.154 но работать должно на всех
скрипт мой. C4/IL дальше не проверял. Не работает-фикс
Просто ставим галочку
Последний раз редактировалось Lyn}{; 29.04.2010 в 23:37.
|
|
|
03.05.2010, 19:31
|
#42
|
|
|
|
Сержант
|
 Регистрация: 04.12.2009
 Сообщений: 131
 Популярность: 466
 Сказал(а) спасибо: 144
Поблагодарили 176 раз(а) в 94 сообщениях
|
Re: Скрипты для l2phx
|
|
|
Пользователь сказал cпасибо:
|
|
04.05.2010, 09:08
|
#43
|
|
|
|
Разведчик
|
 Регистрация: 31.05.2009
 Сообщений: 12
 Популярность: 64
 Сказал(а) спасибо: 105
Поблагодарили 27 раз(а) в 6 сообщениях
|
Re: Скрипты для l2phx
 |
Цитата: |
 |
|
|
|
|
|
А можно этот скрипт переписать под Interlude ?
|
|
|
11.05.2010, 21:12
|
#44
|
|
|
|
Разведчик
|
 Регистрация: 11.05.2010
 Сообщений: 1
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Скрипты для l2phx
У меня вот такой вопрос есть СВС и БД оф пати скрипт который работает на ХБ, после перехода на Эпилог при выборе дансов появляется скилы не бд и свс. Собственно это шоки как можна переделать скрипт или помогите с новым.
|
|
|
13.05.2010, 18:43
|
#45
|
|
|
|
Разведчик
|
 Регистрация: 13.02.2010
 Сообщений: 32
 Популярность: 105
 Сказал(а) спасибо: 52
Поблагодарили 97 раз(а) в 38 сообщениях
|
Re: Скрипты для l2phx
сталкивался со скриптами вставки ЛС на интерлюде. увы но мой phx выдавал ошибки. код значительно не отличается от оригинального. немного поправлена ошибка с hex. Код правил самолично. ибо нигде не нашел рабочего скрипта.
скрипт лежит и у нас. но брал исходники с codex.ru
тестим и радуемся
PHP код:
const Name='RMF'; // ник ItemID=6608; // пуха LifeID=8762; // лайфстон GemsID=2131; // гемстон GemsAmount=25; //кол-во гемов max=80; // инвентарь var LifeBase:array[1..max] of integer; ColvoLife,ColvoGems,Life,Item,Gems,SocialID,augid:integer; procedure Init; var i:integer; begin buf:=hstr('0F'); SendToServerEx(Name); end; procedure Free; var i:integer; begin for i:=1 to max do LifeBase[i]:=0; end; function StrToHex2(packet: string):string; var i:integer; tmp:byte; function ByteToHex(b: byte): Char; begin if b<10 then result:=chr(b+$30) else result:=chr(b+$37); end; begin result:=''; for i:=1 to length(packet) do begin tmp:=ord(packet[i]) div 16; result:=result+ByteToHex(tmp); tmp:=ord(packet[i]) - tmp*16; result:=result+ByteToHex(tmp)+' '; end; end; function inttohex(n:integer):string; var i:integer; t:string; a:array[0..15] of char; begin a[0]:='0'; a[1]:='1'; a[2]:='2'; a[3]:='3'; a[4]:='4'; a[5]:='5'; a[6]:='6'; a[7]:='7'; a[8]:='8'; a[9]:='9'; a[10]:='A'; a[11]:='B'; a[12]:='C'; a[13]:='D'; a[14]:='E'; a[15]:='F'; result:=''; t:=''; i:=0; while n<>0 do begin if (i mod 2=0)and(i>0) then begin result:=result+t+' '; t:=''; end; t:=a[n mod 16]+t; n:=n div 16; inc(i); end; result:=result+t; end; procedure Say; var i:integer; s:string; begin s:='<tr><td>LS='+inttostr(ColvoLife)+' (*'+inttostr(GemsAmount)+'='+inttostr(ColvoLife*GemsAmount)+')</td></tr>'; s:=s+'<tr><td>Gems='+inttostr(ColvoGems)+' (/'+inttostr(GemsAmount)+'='+inttostr(ColvoGems div GemsAmount)+')</td></tr>'; s:=s+'<tr><td>---</td></tr>'; if Item=0 then s:=s+'<tr><td>No Weapon</td></tr>' else if augid>0 then s:=s+'<tr><td>Augmented ('+inttohex(augid)+')</td></tr>' else s:=s+'<tr><td>Not augmented</td></tr>'; buf:=hstr('0F 01 00 00 00'); WriteS('<html><body><br><table width=100%>'+s+'</table><br><br><br><br><br><br>'+ '"Social Yes" - Cancel Augment(if augmented) and Augment(if you have enough gems and LSs)<br>'+ '"Social No" - Show this help<br><br>'+ 'Sometimes client dont get packet InventoryUpdate and you see "Not augment" when weapon is augmented.'+ ' Simply press [Tab] twice or wear weapon.<br><br>'+ '(c) raid aka Mamy</body></html>'); // '(c) raid aka Mamy<br>'+strtohex(pck)+'</body></html>'); WriteD(0); SendToClientEx(Name); end; procedure CreateItemBase; var i,ss,j,ObjID,ItmID,ListCount,count,aug:integer; begin Item:=0; ss:=1; j:=4; ListCount:=ReadH(j); if ListCount>max then ListCount:=max; j:=8; for i:=1 to ListCount do begin ObjID:=ReadD(j); ItmID:=ReadD(j); Count:=ReadD(j); j:=j+14; aug:=ReadD(j); case ItmID of LifeID: begin LifeBase[ss]:=ObjID; inc(ss); end; ItemID: begin Item:=ObjID; augid:=aug; end; GemsID: begin Gems:=ObjID; ColvoGems:=Count; end; end; j:=j+6; end; ColvoLife:=ss-1; Say; end; procedure UpdateItemBase; var i,ii,j,ObjID,ItmID,ListCount,Count,UpdType,aug: integer; begin ListCount:=ReadH(2); j:=4; for i:=1 to ListCount do begin UpdType:=ReadH(j); j:=j+2; ObjID:=ReadD(j); ItmID:=ReadD(j); Count:=ReadD(j); j:=j+14; aug:=ReadD(j); case UpdType of 1:case ItmID of ItemID: begin Item:=ObjID; augid:=aug; end; LifeID: begin for ii:=1 to max do if LifeBase[ii]=0 then begin LifeBase[ii]:=ObjID; ColvoLife:=ColvoLife+1; break; end; end; GemsID: begin Gems:=ObjID; ColvoGems:=Count; end; end; 2:case ItmID of ItemID: begin Item:=ObjID; augid:=aug; end; GemsID: begin Gems:=ObjID; ColvoGems:=Count; end; end; 3:case ItmID of ItemID: Item:=0; GemsID: begin Gems:=ObjID; ColvoGems:=Count; end; LifeID: begin for ii:=1 to max do if LifeBase[ii]=ObjID then begin LifeBase[ii]:=0; ColvoLife:=ColvoLife-1; end; end; end; end; j:=j+6; end; Say; end; function GetNextLife: integer; var i:integer; begin Result:=-1; for i:=1 to max do begin if (LifeBase[i]<>0) then begin Result:=LifeBase[i]; exit; end; end; end; procedure Augment; begin buf:=hstr('D0 29 00'); WriteD(Item); SendToServerEx(Name); delay(100); buf:=hstr('D0 2A 00'); WriteD(Item); WriteD(Life); SendToServerEx(Name); delay(100); buf:=hstr('D0 2B 00'); WriteD(Item); WriteD(Life); WriteD(Gems); WriteD(GemsAmount); SendToServerEx(Name); delay(100); buf:=hstr('D0 2C 00'); WriteD(Item); WriteD(Life); WriteD(Gems); WriteD(GemsAmount); SendToServerEx(Name); end; procedure DisAugment; begin buf:=hstr('D0 2D 00'); WriteD(Item); SendToServerEx(Name); buf:=hstr('D0 2E 00'); WriteD(Item); SendToServerEx(Name); end; begin if pck='' then exit; if FromClient and (ConnectName=Name) and (pck[1]=#$1B) then begin SocialID:=ReadD(2); pck:=''; case SocialID of 7: begin buf:=hstr('A7 2A A0 00 00 80 84 1E 00 0A 00 00 00 00 00 00 00 00 00 00 00'); SendToServerEx(Name); buf:=hstr('A7 29 A0 00 00 40 0D 03 00 FA 00 00 00 00 00 00 00 00 00 00'); SendToServerEx(Name);
exit; end; 6: begin if augid>0 then begin DisAugment; delay(300); end; Life:=GetNextLife; if (Life=-1)or(ColvoGems<GemsAmount)or(ColvoLife<1) then exit; Augment; exit; end; 5: begin Say; exit; end; end; end; if FromServer then case pck[1] of #$1B: CreateItemBase; #$27: UpdateItemBase; end; end.
Управление:
1. социальное действие "да" - вытащить и вставить ЛС
2. социальное действие "нет" - вызов справки.
3. для работы скрипта впишите нужные данные в начале скрипта (читаем примечание после каждой строки)
Примечание. В вашем инвентаре должна быть только одна пушка с таким же ID в которій вы хотите вставить скилл.
не откажусь от благодарности.
З.Ы. скорость вставки ЛС поражает
________________
дедики не продаю!!!
Последний раз редактировалось sekaskissa; 13.05.2010 в 18:50.
Причина: добавление информации
|
|
|
6 пользователя(ей) сказали cпасибо:
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 23:23.
|
 |