Добро пожаловать дорогой гость сайта Line-age2.3dn.ru! У нас вы можете найти все для Lineage. А именно: сборки серверов, Программы,боты, защита сервера, все для сервера, гайды, советы, шаблоны и дизайны. Все бесплатно! Файлы проверены на вирусы.
1. Публікуємо сюди скрипти для l2phx, вказуємо на якій версії l2phx тестувався скрипт. 2.Скріпт обов'язково повинен бути в теге "коду" ([CODE] [/ CODE] без пробілів) 3. Скрипт повинен бути з описом (інструкцією якщо така є) і з зазначенням автора скрипта.
Скрипт для Аугментація в одне натискання, працює на будь-яких версіях.
const Name='Mamy'; // ник ItemID=6608; // пуха LifeID=8762; // лайфстон GemsID=2131; // гемстон GemsAmount=25; //кол-во гемов max=100; // инвентарь 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 StrToHex(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.
Опис: Активуємо скрипт, в клієнті повинне з'явитися віконце чату. "Соц. Так" - зняття аугмента і аугментірованіе. В інвентарі повинна бути тільки одна пуху з даними ID.
Скрипт на Авто-таргет ПК, тестилось на L2J и L2F серверах
// Авторы: Furious, metalFan // Отдельное спасибо PanAm за помощь в написании // Версия: Gracia 1.5 PreFinal Const UserName=('онатоле'); var ObjectID, KarmaPK, TargetPK, MessagePK, ClassPK, i, x, y, z, TempPK: Integer; NamePK, CvarPK : String; ClassName: TStringList; procedure Init; begin MessagePK:=1; TargetPK:=0; buf:=#$4A; WriteD(0); WriteD(10); WriteS(''); WriteS('PK Scanner for Gracia 1.5 by Furious, metalFan'); SendToClientEx(UserName); ClassName :=TStringList.Create; ClassName.LoadFromFile('ClassName.ini'); end; procedure Free; begin ClassName.free; end; procedure OnConnect(WithClient: Boolean); begin end; procedure OnDisonnect(WithClient: Boolean); begin end; procedure MessageSend(Msg:string); begin buf:=#$4A; WriteD(0); WriteD(10); WriteS(''); WriteS(Msg); SendToClientEx(UserName); end; procedure TargetingPK(ObjectID: Integer); begin if TargetPK=1 then begin buf:=#$1F; WriteD(ObjectID); WriteD(0); Writed(0); Writed(0); WriteC(0); SendToServerEx(UserName); end; end; procedure KillRadar; begin buf:=#$F1; WriteD(0); WriteD(1); WriteD(0); WriteD(0); WriteD(0); SendToClientEx(UserName); end; function GetClassName(CID : integer) : string; begin result:=ClassName.Strings[CID]; end; begin if (FromServer) and (ConnectName=UserName) and (pck[1]=#$31) then begin x:=ReadD(2); y:=ReadD(6); z:=ReadD(10); i:=22; NamePK:=ReadS(i); ClassPK:=ReadD(i+8); KarmaPK:=ReadD(i+176); if (KarmaPK>0) then begin ObjectID:=ReadD(18); TargetingPK(ObjectID); if MessagePK=1 then begin MessageSend(''+NamePK+' | '+GetClassName(ClassPK)+' | '+IntToStr(KarmaPK)+) end; buf:=#$F1; WriteD(0); WriteD(1); WriteD(X); WriteD(Y); WriteD(Z); SendToClientEx(UserName); end; end; if (FromServer) and (ConnectName=UserName) and (pck[1]=#$08) then begin TempPK:=ReadD(2); case TempPK of ObjectID: KillRadar; end; end; if (FromClient) and (ConnectName=UserName) and (pck[1]=#$49) then begin CvarPK:=ReadS(2); case CvarPK of '\start': begin TargetPK:=1; MessageSend('Search On!'); pck:=''; end; '\stop': begin TargetPK:=0; MessageSend('Stopped all services!'); pck:=''; end; '\radar': begin MessageSend('Radar Killed'); KillRadar; pck:=''; end; end; end; end.