Скрипт на взятие атакующего игрока или моба в таргет:
Данный скрипт нужен, к примеру, если вас атаковал моб или игрок, которого вы не видели, то он автоматически выделяется (таргет), это облегчит процесс борьбы, если вас атаковали внезапно или в спину.
Код:
// Автоматическое взятие в таргет атакующего вас игрока или моба
// Чтобы включить скрипт используйте в игре социальное действие - Yes
// Чтобы выключить скрипт используйте в игре социальное действие - No
// Автор: Furious
// Версия: 0.4
var
Attacker, CharID, ObjectID, SocialID, Status: Integer;
procedure TargetAttacker(Attacker: Integer);
begin
buf:=#$04;
WriteD(Attacker);
SendToServer;
end;
begin
if FromServer and (pck[1]=#$04) then
CharID:=ReadD(18);
if FromClient and (pck[1]=#$1B) then
begin
SocialID:=ReadD(2);
case SocialID of
6:Status:=1;
5:Status:=0;
end;
end;
if Status=1 then
begin
if FromServer and ((pck[1]=#$48) or (pck[1]=#$05)) then
begin
Attacker:=ReadD(2);
ObjectID:=ReadD(6);
end;
if (Attacker<>ObjectID) and (CharID=ObjectID) then TargetAttacker(Attacker);
end;
end.
Скрипт для вывода информации об игроках в специальное окно:
Выводит информацию иб игроках в User Tab окно в hLaPEx, а именно ник, расу и пол. Информация собирается в том случаи, если игроки находятся в зоне видимости для вас (то есть, к примеру, город).Удобно для брута или других вещей. После того как насобираете информацию можеет ее скопировать из User Tab и сохранить в нужном вам файле для архива.
Код:
// Скрипт для вывода информации об игроках на сервере
// в User Tab: ник, раса, пол, класс.
// Автор: Furious
// Версия: 0.3
var
m:TMemo;
RaceID, SexID, ClassID, i: Integer;
Message, Name, Sex, Race, Class: String;
procedure Init;
begin
ShowTab;
m:=TMemo.Create(UserTab);
m.parent:=UserTab;
m.align:=alClient;
m.ReadOnly:=true;
m.ScrollBars:=ssBoth;
end;
procedure Free;
begin
m.Free;
HideTab;
end;
begin
if FromServer and (pck[1]=#$03) then
begin
i:=22;
Name:=ReadS(i);
RaceID:=ReadD(i);
SexID:=ReadD(i);
ClassID:=ReadD(i);
case RaceID of
0:race:='Люди';
1:race:='Светлые эльфы';
2:race:='Темные эльфы';
3:race:='Орки';
4:race:='Гномы';
end;
case SexID of
0:sex:='Мужской';
1:sex:='Женский';
end;
case ClassID of
0:class:='H_Fighter';
1:class:='H_Warrior';
2:class:='H_Gladiator';
88:class:='H_Duelist';
3:class:='H_Warlord';
89:class:='H_Dreadnought';
4:class:='H_Knight';
5:class:='H_Paladin';
90:class:='H_PhoenixKnight';
6:class:='H_DarkAvenger';
91:class:='H_HellKnight';
7:class:='H_Rogue';
8:class:='H_TreasureHunter';
93:class:='H_Adventurer';
9:class:='H_Hawkeye';
92:class:='H_Sagittarius';
10:class:='H_Mage';
11:class:='H_Wizard';
12:class:='H_Sorceror';
94:class:='H_Archmage';
13:class:='H_Necromancer';
95:class:='H_Soultaker';
14:class:='H_Warlock';
96:class:='H_ArcanaLord';
15:class:='H_Cleric';
16:class:='H_Bishop';
97:class:='H_Cardinal';
17:class:='H_Prophet';
98:class:='H_Hierophant';
18:class:='E_Fighter';
19:class:='E_Knight';
20:class:='E_TempleKnight';
99:class:='E_EvaTemplar';
21:class:='E_SwordSinger';
22:class:='E_Scout';
23:class:='E_PlainsWalker';
101:class:='E_WindRider';
24:class:='E_SilverRanger';
102:class:='E_MoonlightSentinel';
25:class:='E_Mage';
26:class:='E_Wizard';
27:class:='E_SpellSinger';
103:class:='E_MysticMuse';
28:class:='E_ElementalSummoner';
104:class:='E_ElementalMaster';
29:class:='E_Oracle';
30:class:='E_Elder';
105:class:='E_EvaSaint';
31:class:='DE_Fighter';
32:class:='DE_PaulusKnight';
33:class:='DE_ShillienKnight';
106:class:='DE_ShillienTemplar';
34:class:='DE_BladeDancer';
107:class:='DE_SpectralDancer';
35:class:='DE_Assassin';
36:class:='DE_AbyssWalker';
108:class:='DE_GhostHunter';
37:class:='DE_PhantomRanger';
109:class:='DE_GhostSentinel';
38:class:='DE_Mage';
39:class:='DE_DarkWizard';
40:class:='DE_Spellhowler';
110:class:='DE_StormScreamer';
41:class:='DE_PhantomSummoner';
111:class:='DE_SpectralMaster';
42:class:='DE_ShillienOracle';
43:class:='DE_ShillienElder';
112:class:='DE_ShillienSaint';
44:class:='O_Fighter';
45:class:='O_Raider';
46:class:='O_Destroyer';
113:class:='O_Titan';
47:class:='O_Monk';
48:class:='O_Tyrant';
114:class:='O_GrandKhauatari';
49:class:='O_Mage';
50:class:='O_Shaman';
51:class:='O_Overlord';
115:class:='O_Dominator';
52:class:='O_Warcryer';
116:class:='O_Doomcryer';
53:class:='D_Fighter';
54:class:='D_Scavenger';
55:class:='D_BountyHunter';
117:class:='D_FortuneSeeker';
56:class:='D_Artisan';
57:class:='D_Warsmith';
118:class:='D_Maestro';
end;
Message:='Раса: '+race+', Пол: '+sex+', Класс: '+class+'.';
m.Lines.Add(Name+': '+Message);
end;
end.
Скрипт для установки стрелки (радара) над чаром к цели, при использовании таргета:
Выделяете NPC, чара или моба. И у вас над головой появляется стрелка, указывающая путь к объекту. Включается и выключается социальными действиями Yes и No. Также удобно пользовать /target name, стрелка тут в самый раз будет найти нужный объект.
Код:
/ Установка стрелки (радара) над чаром к цели, при использовании таргета
// Чтобы включить скрипт используйте в игре социальное действие - Yes
// Чтобы выключить скрипт используйте в игре социальное действие - No
// Автор: Furious
// Версия: 0.2
var
Attacker, SocialID, CorX, CorY, CorZ, Status: Integer;
procedure TargetRadar(CorX, CorY, CorZ: Integer);
begin
buf:=#$EB;
WriteD(0);
WriteD(1);
WriteD(CorX);
WriteD(CorY);
WriteD(CorZ);
SendToClient;
end;
procedure TargetRadarDrop;
begin
buf:=#$EB;
WriteD(2);
WriteD(1);
WriteD(0);
WriteD(0);
WriteD(0);
SendToClient;
end;
begin
if FromClient and (pck[1]=#$1B) then
begin
SocialID:=ReadD(2);
case SocialID of
6:Status:=1;
5:Status:=0 and TargetRadarDrop;
end;
end;
if Status=1 then
begin
if FromServer and (pck[1]=#$61) then
begin
CorX:=ReadD(6);
CorY:=ReadD(10);
CorZ:=ReadD(14);
TargetRadar(CorX, CorY, CorZ);
end;
end;
end.
Скрипт на открытие/закрытие дверей:
С помощью данного скрипта вы можете открывать, закрывать двери, ворота и тд, а потом проходить через них. К примеру, на осаде замка

Открытие/закрытие будет работать везде, а вот пройти через открытую дверь, можно лишь на сервере, где нет геодаты (JAVA). Чтобы открыть или закрыть дверь, выделите его через shift + левая кнопка мыши.
Код:
// Открытие/закрытие любых дверей, ворот и т.д. А также проход в дальнейщем через откртую дверь дальше.
// Работает на всех серверах, но пройти через открытую дверь можно на сервере, где нет геодаты (java).
// Чтобы использовать скрипт, выделите нужную вам дверь через Shift + левая кнопка мыши
// Автор: Furious
// Версия: 0.2
var
Bypass: String;
ObjectID, ActionID, Status: Integer;
const
HTML='<html><body><center><img src="L2UI_CH3.herotower_deco"'+
' width=256 height=32><font color="LEVEL">Меню управления во'+
'ротами и дверями</font><br><font color="LEVEL">Автор: Furio'+
'us</font><img src="L2UI.SquareWhite" width=260 height=1><im'+
'g src="L2UI.SquareBlank" width=260 height=4><br1><td><butto'+
'n value="Открыть" action="bypass -h open" width=70 height=1'+
'5 back="sek.cbui94" fore="sek.cbui92"></td><br><td><button '+
'value="Закрыть" action="bypass -h close" width=70 height=15'+
' back="sek.cbui94" fore="sek.cbui92"></td><br></tr><img src'+
'="L2UI.SquareWhite" width=260 height=1><img src="L2UI.Squar'+
'eBlank" width=260 height=4><br1></center></body></html>';
procedure ShowHTML;
begin
buf:=#$0F;
WriteD(5);
WriteS(HTML);
SendToClient;
end;
procedure DoorAction;
begin
buf:=#$4D;
WriteD(ObjectID);
WriteD(Status);
WriteD(0);
WriteD(1);
WriteD(0);
SendToClient;
end;
begin
if FromClient and (pck[1]=#$04) then
begin
ActionID:=ReadC(18);
if ActionID=1 then
begin
ObjectID:=ReadD(2);
ShowHTML;
end;
end;
if FromClient and (pck[1]=#$21) then
begin
Bypass:=ReadS(2);
case Bypass of
'open':Status:=0 and DoorAction;
'close':Status:=1 and DoorAction;
end;
end;
Скрипт для поиска PK игрока:
Если PK поблизости, то можно автоматически взять его в цель и/или вывести сообщение в чат. Команды для управления скриптом (все они вводятся в чат):
Включить автоматическое взятие PK в цель - %pk_target 1
Выключить автоматическое взятие PK в цель - %pk_target 0
Включить уведомление в чат при обнаружении поблизости PK - %pk_msg 1
Выключить уведомление в чат при обнаружении поблизости PK - %pk_msg 0
Код:
// Автоматический поиск PK поблизости. Если PK игрок находится рядом с вами, то можно:
// Автоматически взять его в цель и/или вывести сообщение в чат
// Команды для управления скриптом (все они вводятся в чат):
// Включить автоматическое взятие PK в цель - %pk_target 1
// Выключить автоматическое взятие PK в цель - %pk_target 0
// Включить уведомление в чат при обнаружении поблизости PK - %pk_msg 1
// Выключить уведомление в чат при обнаружении поблизости PK - %pk_msg 0
// Автор: Furious
// Версия: 0.1
var
ObjectID, Karma, Target, Message, i: Integer;
Name, Cvar: String;
procedure SendMsg(Msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(Msg);
SendToClient;
end;
procedure TargetPK(ObjectID: Integer);
begin
buf:=#$04;
WriteD(ObjectID);
SendToServer;
end;
begin
if FromServer and (pck[1]=#$03) then
begin
i:=18;
ObjectID:=ReadD(i);
Name:=ReadS(i);
Karma:=ReadD(i+60);
if (Karma>0) then
begin
if Message=1 then SendMsg('PK с ником '+Name+' находится поблизости!');
if Target=1 then TargetPK(ObjectID);
end;
end;
if FromClient and (pck[1]=#$38) then
begin
Cvar:=ReadS(2);
case Cvar of
'pk_target 1':
begin
Target:=1;
SendMsg('Автоматическое взятие PK в цель включено!');
end;
'pk_target 0':
begin
Target:=0;
SendMsg('Автоматическое взятие PK в цель выключено!');
end;
'pk_msg 1':
begin
Message:=1;
SendMsg('Вывод сообщения в чат при обнаружении PK включено!');
end;
'pk_msg 0':
begin
Message:=0;
SendMsg('Вывод сообщения в чат при обнаружении PK выключено!');
end;
end;
end;
end.
Скрипт для автоматического энчанта шмота:
Код:
var
x,i,OID,ItemID,ItemID1,ItemCount,ScrollID,j,k,l,m,temp1,temp2,ItemIDToEncant,MaxEnchant,
ItemOIDToEncant,ItemIDToEncant1,n,f,EnchantLevel,o:Integer;
z,Load,temp:word;
Scrolls:Array[0..299,0..1] of Integer;
procedure Init; //Вызывается при включении скрипта
begin
ItemIDToEncant:=6379;
//9857-Dynasty Two Handed Sword [Focus]
//9864-Dynasty Bow [Guidance]
//6379 Draconic Leather Armor
//6380 Draconic Leather Gloves
//6381 Draconic Leather Boots
//6382 Draconic Leather Helmet
//6656 Earring of Antharas
//6657 Necklace of Valakas
//6658 Ring of Baium
//6659 Zaken's Earring
//6660 Ring of Queen Ant
//6661 Earring of Orfen
//6662 Ring of Core
ScrollID:=960;
//959-EWS
//960-EAS
MaxEnchant:=180;
j:=0;
k:=0;
n:=0;
end;
procedure SendMsg(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msg);
SendToClient;
end;
Procedure Enchant(ScrolOID1,ItemOID1:Integer);
begin
buf:=#$14;
WriteD(ScrolOID1);
WriteD(0);
SendToServer;
delay(500);
buf:=#$58;
WriteD(ItemOID1);
SendToServer;
delay(30);
end;
begin
//Для запуска скрипта скажите "е" без кавычек на английской раскладке в пати-чат
if FromClient and (pck=#$38#$31#$00#$00#$00#$03#$00#$00#$00) then
begin
SendMsg('Процесс заточки начался! Это может занять от нескольких секунд, до 2-3 минут. Пожалуйста, подождите!');
SendMsg('В это время может замечаться зависание клиента, это нормально.');
buf:=#$0F;
SendToServer;
n:=1;
o:=1;
end;
if FromServer and (pck[1]=#$1B) and (o=1) then
begin
i:=4;
l:=0;
o:=0;
Load:=ReadH(i);
For x:=1 to Load do
begin
temp:=ReadH(i);
OID:=ReadD(i);
ItemID:=ReadD(i);
ItemCount:=ReadD(i);
if ItemID=ScrollID then
begin
Scrolls[l,0]:=ItemID;
Scrolls[l,1]:=OID;
l:=l+1;
end;
if ItemID=ItemIDToEncant then
begin
ItemOIDToEncant:=OID;
ItemIDToEncant1:=ItemID;
end;
i:=i+22;
end;
buf:=#$14;
WriteD(ItemOIDToEncant);
WriteD(0);
SendToServer;
end;
if FromServer and (pck[1]=#$27) and (n=1) then
begin
f:=12;
ItemID1:=ReadD(f);
temp:=ReadH(f);
temp:=ReadH(f);
temp:=ReadH(f);
temp:=ReadH(f);
temp:=ReadH(f);
temp1:=ReadD(f);
EnchantLevel:=ReadH(f);
if (ItemID1=ItemIDToEncant1) and (EnchantLevel<MaxEnchant) then
begin
n:=0;
For m:=0 to 299 do
begin
temp1:=Scrolls[m,0]; //ItemID
temp2:=Scrolls[m,1]; //OID
if temp1 <> 0 then
begin
Enchant(temp2,ItemOIDToEncant);
end;
end;
end;
end;
end.