Ну так я и говорил про статы...и не надо тут отмазываться...ссылки на серваки ты мне так и не дал!
Добавлено через 2 минуты
АвТОзаТоЧкА для gracia final СКРИПТИК
Код:
// хроники Грация ФИНАЛ
// в пати чат пишем уровень заточки
// можно менять в процесе работы скрипта
// заточить один раз чтоб запомнить чем и что точить
// точить для запоминания по одному предмету
// если будите точить разные предметы
// предметы должны соответствовать применяемому skrol
// СТАРТ нажать соцдействие ДА
// СТОП нажать соцдействие НЕТ
// включить системные сообщения соцдействие - приветствие \ hello
// выключить системные сообщения соцдействие - победа \ victory
// дальше скрипт сам точит до указаного уровня заточки
// все предметы одинаковые с первыми заточеными
// точит первый предмет до максима потом второй и т.д
// т.е если вы заточили несколько разных предметов
// одного класса армор или веапон они будут точиться
// АВТОР ==>>>> TAMBIK
program Enchant_gracia;
const
myname='TAMBIK'; //<<== пишем свой НИК
max=140;//<<== колличество ячеек в рюкзаке
var
BaseItems:array[1..max,1..11] of integer;
BaseID:array[1..max] of integer;
Timer01: TTimer;
Timer02: TTimer;
Timer03: TTimer;
flag,start,select,selectID,autoMsg:Boolean;
autostart:Boolean;
mytext:string;
ListSize,ItemEnch:word;
textID,itemID:integer;
enchantObjectID:integer;
enchantID,skrolObjectID:integer;
ItemOID,objectOID: integer;
sumskrol,sumitemID: integer;
key,x,y,ii:integer;
maxlvl: integer;
GetiD:integer;
skrolID,skrolObj:integer;
t,l,d:integer;
//-----------------------------------------
procedure SendMsg2(msg:string);
begin
if autoMsg then begin
buf:=#$4A;
WriteD(0);
WriteD(3);
WriteS('');
WriteS(msg);
SendToClientEx(myname);
end;
end;
//===========================================
procedure Resultmaxlvl;
var
i:integer;
begin
if FromClient and (pck[1]=#$49) then begin
i:=2;
mytext:=ReadS(i);
textID:=ReadD(i);
if (textID=3) then begin
maxlvl:=StrToInt(mytext);
SendMsg2( ' установлен Уровень Заточки: '+IntToStr(maxlvl)+'' );
pck:='';
exit;
end;
end;
end;
//..............................................................................
procedure ItemList;
var
i, j, k: integer;
count,x:integer;
begin
count:=0;
x:=0;
y:=0;
j:=4; //пропускаем дo ListSize
ListSize:=ReadH(j);
for i:=1 to ListSize do
if (i<=ListSize) then begin
BaseItems[i,1]:=ReadH(j); //ItemType1- 1:одето броня. 0:бижа. 4:в рюкзаке
BaseItems[i,2]:=ReadD(j); //ObjectID
BaseItems[i,3]:=ReadD(j); //ItemID
BaseItems[i,4]:=ReadD(j); //LocationSlot
BaseItems[i,5]:=ReadD(j); // Amount:
BaseItems[i,6]:=ReadD(j); // Amount:
BaseItems[i,7]:=ReadH(j);//ItemType2
BaseItems[i,8]:=ReadH(j);// CustomType1
BaseItems[i,9]:=ReadH(j);//isEquipped:
BaseItems[i,10]:=ReadD(j);//BodyPart
BaseItems[i,11]:=ReadH(j);//EnchantLevel
inc(x); // счетчик
count:=round((Length(pck)-5) / ListSize);// длина блока
//y := пропускаем до следущего блока
y:=count*x-(j-6);// . 6= длина ListSize + 4 байта пропуска в начале пакета
inc(j,y);
end else for k:=1 to 11 do BaseItems[i,k]:=0; // забиваем нулями
if (0 < skrolObjectID) then begin
sumskrol:=Getitem(skrolID,3,5);
SendMsg2 (' SKROL ... c ID : '+IntToStr(skrolID)+' = '+IntToStr(sumskrol)+' ШТ ');
if start and (0<sumskrol) then Timer01.enabled:=true;
if (sumskrol=0) then begin
Timer01.enabled:=false;
stopselectskrol;
SendMsg2 ('........ НЕДОСТАТОЧНО SKROL........ ');
SendMsg2 ('___ О С Т А Н О В Л Е Н О ___ ');
end;
end;
end;
//=============================
procedure EnchantResult;
begin
end;
//=============================
procedure InventoryUpdate;
var
Id,ObjId:integer;
begin
ObjId:=ReadD(8);
Id:=ReadD(12);
SendMsg2 ('удален предмет Id : '+IntToStr(Id)+' ObjectID: '+IntToStr(ObjId)+' ');
deleteBase;
end;
//=============================
procedure deleteBase;
var
i,j,k:integer;
begin
for i:=1 to max do
if (BaseItems[i,2]=enchantID) then begin
BaseItems[i,1]:=0;
BaseItems[i,2]:=0; //ObjectID
BaseItems[i,3]:=0; //ItemID
BaseItems[i,4]:=0;
BaseItems[i,5]:=0;
BaseItems[i,6]:=0;
BaseItems[i,7]:=0;
BaseItems[i,8]:=0;
BaseItems[i,9]:=0;
BaseItems[i,10]:=0;
BaseItems[i,11]:=0;
inc(j,y);
end else for k:=1 to 11 do BaseItems[i,k]:=0; // забиваем нулями
end;
//===========================================
//
//===========================
function Getitem(Obj,up,down:integer): integer;
var
i: integer;
begin
Result:= 0; //В начале у нас 0
for i:=1 to max do
if (BaseItems[i,up]=Obj) then begin
Result:=BaseItems[i,down];
end;
end;
//===========================
function Getsumitem(Obj,up,down:integer): integer;
var
i: integer;
begin
Result:= 0; //В начале у нас 0
for i:=1 to max do
if (BaseItems[i,up]=Obj) then begin
Result:=Result+BaseItems[i,down];
end;
end;
//=================================
//добавляем в базу ID предмета
procedure addIDtoarray(ItemOID:integer);
begin
SendMsg2( '------------------------------------- ' );
SendMsg2 (' добавить в базу для заточки ID : '+IntToStr(ItemOID)+' Предмета ');
SendMsg2(' .................' );
flag:=false;
for ii:=1 to max do
if (BaseID[ii]=ItemOID) then begin // текущий ID уже есть в массиве,
flag := true;
sumitemID:=Getsumitem(ItemOID,3,5);//счет скоко предметов
SendMsg2 (' предмет в базе есть с ID : '+IntToStr(ItemOID)+' = '+IntToStr(sumitemID)+' ШТ ');
SendMsg2( '------------------------------------- ' );
Break; // прерываем дальнейший перебор массива.
end;
if (flag = false) then begin
for ii:=1 to max do
if (BaseID[ii]=0) then begin // добавим ID в массив,
BaseID[ii]:=ItemOID;
sumitemID:=Getsumitem(ItemOID,3,5);//счет скоко предметов
SendMsg2 (' Добавлен Предмет с ID : '+IntToStr(ItemOID)+' = '+IntToStr(sumitemID)+' ШТ ');
SendMsg2( '------------------------------------- ' );
Break; // прерываем дальнейший перебор массива.
end;
end;
end;
//=============================
procedure ChooseInventory;
begin
if (itemID>0) then begin
objectOID:=GetObjectID(itemID);//находим по ItemID предмет с ObjectID
if (objectOID=0) then begin
stopselectskrol;
SendMsg2 (' предметов c ID : '+IntToStr(itemID)+' для заточки НЕТ ! ! ! ! ');
for ii:=1 to max do
if (BaseID[ii]=itemID) then begin
BaseID[ii]:=0;
SendMsg2 (' ..... ПОИСК ______ ПРЕДМЕТА..... ');
GetItemID ;
Break; // прерываем дальнейший перебор массива.
end;
if (itemID=0) then begin
SendMsg2 ('___НЕТ ПРЕДМЕТОВ ДЛЯ ЗАТОЧКИ___ ');
SendMsg2 (' ___ О С Т А Н О В Л Е Н О ___ ');
stopselectskrol;
start:=false;
end;
end;
end;
end;
//=================================
// GetiD:=GetItemID(itemID);//находим в базе ItemID предмет для Заточки
//находим ItemID предмета для Заточки в базе ItemID
procedure GetItemID ;
begin
if start then begin
if (maxlvl=0) then begin
SendMsg2 (' неуказан уровень заточки ');
stopselectskrol;
SendMsg2 ('___ О С Т А Н О В Л Е Н О ___ ');
end;
if (maxlvl>0) then begin
itemID:=0;
for ii:=1 to max do
if (BaseID[ii]<>0) then begin
itemID:=BaseID[ii];
SendMsg2 (' НАШЛИ ПРЕДМЕТ для ЗАТОЧКИ с ID = '+IntToStr(itemID)+' ');
Timer01.enabled:=true;
Break; // прерываем дальнейший перебор массива.
end;
end;
end;
end;
//=================================
//находим enchantID предмета по ItemID для заточки
function GetObjectID(itemID:integer) : integer;
var
i:integer;
begin
enchantID:= 0;
ItemEnch:=0;
Result:= 0;
SendMsg2('------------------------------' );
if (itemID>0) then begin
SendMsg2 (' ищем ObjectID предмета с ID : ' +IntToStr(itemID)+' ');
SendMsg2('------------------------------' );
for i:=1 to max do
if (BaseItems[i,3]= itemID) and (BaseItems[i,11]< maxlvl) then begin
enchantID:=BaseItems[i,2];
Result:=BaseItems[i,2];
ItemEnch:=BaseItems[i,11];
SendMsg2(' ..... найден предмет для заточки ..... ');
SendMsg2(' ID : '+IntToStr( itemID)+' и ObjectID : '+IntToStr(enchantID)+' заточен до : '+IntToStr(ItemEnch)+' ');
SendMsg2('------------------------------' );
if (enchantID>0) then startselectEnch;
Break; // прерываем дальнейший перебор массива.
end;
end;
end;
//==========================
procedure stopselectskrol;
begin
buf:=hstr('D04E00');
SendToServerEx(myname);
end;
//===================================
procedure OnTimer01(Sender: TObject);
begin
buf:=#$19;
WriteD(skrolObjectID);
WriteD(0);
SendToServerEx(myname);
Timer01.enabled:=false;
end;
//--------------------------
procedure startselectEnch;
begin
Timer02.enabled:=true
end;
procedure OnTimer02(Sender: TObject);
begin
buf:=hstr('D04C00');
WriteD(enchantID);
SendToServerEx(myname);
Timer02.enabled:=false;
Timer03.enabled:=true;
end;
procedure OnTimer03(Sender: TObject);
begin
buf:=#$5F;
WriteD(enchantID);
WriteD(0);
SendToServerEx(myname);
Timer03.enabled:=false;
SendMsg2(' ..... Точим Предмет ..... ');
SendMsg2( ' ID : '+IntToStr(itemID)+' ObjectID : '+IntToStr(enchantID)+' - до : '+IntToStr(maxlvl)+' ' );
SendMsg2( '_______________________________' );
end;
//-----------------------------------------
procedure Init;
begin
t:=0;l:=0;d:=0;
autostart:=false;
flag:=false;
selectID:=false;
autoMsg:=true;
GetiD:=0;
sumskrol:=0;
objectOID:=0;
maxlvl:=0;
itemID:=0;
enchantID:=0;
ItemEnch:=0;
start:=false;
select:=false;
skrolObjectID:=0;
enchantObjectID:=0;
Timer01:=TTimer.Create(nil);
Timer01.OnTimer:=@OnTimer01;
Timer01.enabled:=false;
Timer01.interval:=400; //<<== время выбора свитка
Timer02:=TTimer.Create(nil);
Timer02.OnTimer:=@OnTimer02;
Timer02.enabled:=false;
Timer02.interval:=400; //<<== время выбора предмета
Timer03:=TTimer.Create(nil);
Timer03.OnTimer:=@OnTimer03;
Timer03.enabled:=false;
Timer03.interval:=3000; //<<== время между заточкой
SendMsg2( 'в пати чат пишем уровень заточки' );
SendMsg2( ' заточить предметы один раз ! ! !' );
SendMsg2( ' СТАРТ соцдействие ДА ' );
SendMsg2( ' СТОП соцдействие НЕТ' );
SendMsg2('В К Л сообщения соцдействие-приветствие\hello ' );
SendMsg2('ВЫКЛ сообщения соцдействие-победа\victory ' );
SendMsg2( '------------------------------------- ' );
buf:=hstr('14');
SendToServerEx(myname);
for ii:=1 to max do
BaseID[ii]:=0;
end;
procedure Free;
begin
Timer01.free;
Timer02.free;
Timer03.free;
end;
//=========================
procedure RequestActionUse;
begin
case ReadD(2) of
12:begin autoMsg:=true; pck:=''; exit; end;
13:begin autoMsg:=false; pck:=''; exit; end;
24:begin
if (autostart=false) then SendMsg2( 'предмет незаточен или пакеты неприняты !' );
if autostart then begin
SendMsg2( ' ! ! ! П О Е Х А Л И ! ! !' );
SendMsg2( '_______________________________' );
start:=true;
GetItemID ;
pck:='';
exit;
end;
end;
25:begin
start:=false;
enchantID:=0;
ItemEnch:=0;
Timer01.enabled:=false;
Timer02.enabled:=false;
Timer03.enabled:=false;
SendMsg2( ' ! ! ! С Т О П ! ! ! ' );
stopselectskrol;
pck:='';
exit;
end;
end;
end;
//=========
begin
//не обрабатываем пустые пакеты
if pck='' then exit;
if FromServer and (pck[1]=#$87) then EnchantResult;
if FromServer and (pck[1]=#$21) and (ReadH(4)=3)then InventoryUpdate;
if FromServer and (pck[1]=#$11) then ItemList;
if FromServer and (pck[1]=#$7C) then ChooseInventory;
if FromClient and (pck[1]=#$49) then Resultmaxlvl;
if FromClient and (pck[1]=#$56) then RequestActionUse;
begin
if (start=false) and FromClient then
case pck[1] of
#$19:begin
t:=1;
skrolObjectID:=ReadD(2);
skrolID:= Getitem(skrolObjectID,2,3);//находим по ObjectID скрол с ItemID
SendMsg2(' .................' );
SendMsg2(' активирован SKROL ID : '+IntToStr(skrolID)+' ' );
SendMsg2(' .................' );
buf:=hstr('14');
SendToServerEx(myname);
end;
#$D0:if ReadH(2)=76 then begin
l:=1;
SendMsg2(' окно выбора предмета ' );
SendMsg2(' .................' );
end;
#$5F:begin
d:=1;
enchantObjectID:=ReadD(2);
if (t=1) and (l=1) and (d=1) then begin
autostart:=true;
ItemOID:= Getitem(enchantObjectID,2,3);//находим по ObjectID предмет с ItemID
SendMsg2 (' заточен предмет c ID : '+IntToStr(ItemOID)+' ');
SendMsg2(' .................' );
addIDtoarray(ItemOID);//добавляем в базу ID предмета
stopselectskrol;
end;
end;
end;
end;
end.
Цитата:
by TAMBIK coderx.ru
Последний раз редактировалось GraNIT; 29.10.2009 в 16:49.
Причина: Добавлено сообщение
АвТОзаТоЧкА--- авто-gracia_final +1.
автор я
www.coderx.ru l2phx.3.5.28.151
Код:
// авто-gracia_final +1.
// хроники Грация ФИНАЛ
// Соцдействие ДА открыть управление скриптом
// в пати чат пишем уровень заточки
// можно менять в процесе работы скрипта
// заточить один предмет чтоб запомнить чем и что точить
// дальше скрипт сам точит до указаного уровня заточки
// все предметы ОДИНАКОВЫЕ с ПЕРВЫМ заточеным
// предметы точатся добавляя по +1 на предмет
// т.е если у вас предметы с одинаковым уровнем заточки например 0
// будет точится первый предмет до +1, потом второй до +1 и т.д
// если предмет при заточки блесс скрол слетел на 0 или на уровень как у вас на сервере
// то будет точиться он пока несравняется с остальными
// и т.д
// пока недостигнете заданого уровня заточки
// если предметов более 1 то один остается
// АВТОР ==>>>> TAMBIK
program Enchant_gracia;
const
//===========================================
myname='TAMBIK'; //<<== пишем свой НИК
max=80;//<<== колличество ячеек в рюкзаке
//===========================================
HTML='<html><body><center>'+
'<img src="L2UI_CH3.herotower_deco width=256 height=32>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<font color="04fbfb">Cкрипт автозаточка для gracia_final</font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.Squarewidth" width=260 height=1>'+
'<font color="04fbfb">системные сообщения</font><br>'+
'<button value="в к л" action="bypass -3" width=80 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<img src="L2UI.SquareWhite" width=60 height=1>'+
'<img src="L2UI.Squarewidth" width=60 height=4>'+
'<font color="04fbfb"> </font><br>'+
'<button value=" в ы к л " action="bypass -4" width=80 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<img src="L2UI.SquareWhite" width=60 height=1>'+
'<img src="L2UI.Squarewidth" width=60 height=4>'+
'<font color="04fbfb"> </font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.Squarewidth" width=260 height=4>'+
'<font color="04fbfb">АВТОЗАТОЧКА</font><br>'+
'<font color="04fbfb"> </font><br>'+
'<button value="П У С К" action="bypass -pusk" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">'+
'<img src="L2UI.SquareWhite" width=60 height=1>'+
'<img src="L2UI.Squarewidth" width=60 height=4>'+
'<font color="04fbfb"> </font><br>'+
'<button value="С Т О П" action="bypass -stop" width=100 height=20 back="sek.cbui94" fore="sek.cbui92">'+
'<img src="L2UI.SquareWhite" width=60 height=1>'+
'<img src="L2UI.Squarewidth" width=60 height=4>'+
'<font color="04fbfb"> </font><br>'+
'<img src="L2UI.SquareWhite" width=260 height=1>'+
'<img src="L2UI.Squarewidth" width=260 height=4>'+
'<img src="L2UI.SquareWhite" width=60 height=1>'+
'<img src="L2UI.Squarewidth" width=60 height=4>'+
'<font color="LEVEL">Автор TAMBIK</font><br>'+
'</center></body></html>';
//==========================================
var
BaseItems:array[1..max,1..11] of integer;
Baselvl:array[0..max] of integer;
Timer01: TTimer;
Timer02: TTimer;
Timer03: TTimer;
mytext:string;
Bypass:string;
autostart,start,autoMsg:Boolean;
flag : Boolean;
t,l,d,x,y,ii,i:integer;
ListSize,ItemEnch:word;
textID,itemID:integer;
enchantObjectID:integer;
enchantID,skrolObjectID:integer;
ItemOID,objectOID:integer;
sumskrol,sumitemID,sumitem:integer;
maxlvl,minlvl,enchlvl,selectlvl:integer;
skrolID,skrolObj:integer;
minEnchitem:integer;
object,index : integer;
//==========================================
// ShowHTML(HTML);
Procedure ShowHTML( _html : string );
begin
buf:=#$19;
WriteD(5);
WriteS(_HTML);
SendToClientEx(myname);
end;
//========================
procedure ActionUse;
begin
Bypass:=ReadS(2);
case Bypass of
'-3':begin autoMsg:=true; end;
'-4':begin autoMsg:=false; end;
'-pusk':begin
if (autostart=false) then SendMsg2( 'предмет незаточен или пакеты неприняты !' );
if (maxlvl=0) then SendMsg2( ' Неуказан Уровень Заточки !' );
SendMsg2( '_______________________________' );
if autostart and (maxlvl>0) then begin
buf:=hstr('14');
SendToServerEx(myname);
SendMsg2( ' ! ! ! П О Е Х А Л И ! ! !' );
SendMsg2( '_______________________________' );
start:=true;
Timer01.enabled:=true;// вкл таймер выбора свитка
end;
end;
'-stop':begin
deleteBase;
start:=false;
enchantID:=0;
ItemEnch:=0;
minlvl:=0;
sumitem:=0;
Timer01.enabled:=false;
Timer02.enabled:=false;
Timer03.enabled:=false;
SendMsg2( ' ! ! ! С Т О П ! ! ! ' );
stopselectskrol;
index :=0;
for ii:=1 to max do
Baselvl[ii]:=-1;
end;
end;
end;
//===========================================
procedure SendMsg2(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(3);
WriteS('');
WriteS(msg);
SendToClientEx(myname);
end;
//===========================================
procedure Resultmaxlvl;
var
i:integer;
begin
i:=2;
mytext:=ReadS(i);
textID:=ReadD(i);
if (textID=3) then begin
maxlvl:=StrToInt(mytext);
SendMsg2( ' установлен Уровень Заточки: '+IntToStr(maxlvl)+'' );
end;
end;
//..............................................................................
procedure ItemList;
var
i, j, k: integer;
count,x:integer;
begin
count:=0;
x:=0;
y:=0;
j:=4; //пропускаем дo ListSize
ListSize:=ReadH(j);
count:=round((Length(pck)-5) / ListSize);// длина блока
for i:=1 to ListSize do
if (i<=ListSize) then begin
BaseItems[i,1]:=ReadH(j); //ItemType1- 1:одето броня. 0:бижа. 4:в рюкзаке
BaseItems[i,2]:=ReadD(j); //ObjectID
BaseItems[i,3]:=ReadD(j); //ItemID
BaseItems[i,4]:=ReadD(j); //LocationSlot
BaseItems[i,5]:=ReadD(j); // Amount:
BaseItems[i,6]:=ReadD(j); // Amount:
BaseItems[i,7]:=ReadH(j);//ItemType2
BaseItems[i,8]:=ReadH(j);// CustomType1
BaseItems[i,9]:=ReadH(j);//isEquipped:
BaseItems[i,10]:=ReadD(j);//BodyPart
BaseItems[i,11]:=ReadH(j);//EnchantLevel
inc(x); // счетчик
//y := пропускаем до следущего блока
y:=count*x-(j-6);// . 6= длина ListSize + 4 байта пропуска в начале пакета
inc(j,y);
end else for k:=1 to 11 do BaseItems[i,k]:=0; // забиваем нулями
addenchantitemID;
if (skrolID>0) then begin
sumskrol:=Getitem(skrolID,3,5);//считаем SKROL
if autoMsg then SendMsg2 (' SKROL ... c ID : '+IntToStr(skrolID)+' = '+IntToStr(sumskrol)+' ШТ ');
if start and (0<sumskrol) then Timer01.enabled:=true;// вкл таймер выбора свитка
if (sumskrol=0) then begin
SendMsg2 ('........ НЕДОСТАТОЧНО SKROL........ ');
SendMsg2 ('___ О С Т А Н О В Л Е Н О ___ ');
start:=false;
end;
end;
end;
//=============================
procedure EnchantResult;
begin
deleteBase;
index :=0;
for ii:=1 to max do
Baselvl[ii]:=-1;
end;
//=============================
procedure deleteBase;
var
i,j,k:integer;
begin
for i:=1 to max do
BaseItems[i,1]:=0;
BaseItems[i,2]:=0; //ObjectID
BaseItems[i,3]:=0; //ItemID
BaseItems[i,4]:=0;
BaseItems[i,5]:=0;
BaseItems[i,6]:=0;
BaseItems[i,7]:=0;
BaseItems[i,8]:=0;
BaseItems[i,9]:=0;
BaseItems[i,10]:=0;
BaseItems[i,11]:=0;
inc(j,y);
end;
//===========================
function Getitem(Obj,up,down:integer): integer;
var
i: integer;
begin
Result:= 0; //В начале у нас 0
for i:=1 to max do
if (BaseItems[i,up]=Obj) then begin
Result:=BaseItems[i,down];
end;
end;
//===========================
function Getsumitem(Obj,up,down:integer): integer;
var
i: integer;
begin
Result:= 0; //В начале у нас 0
for i:=1 to max do
if (BaseItems[i,up]=Obj) then begin
Result:=Result+BaseItems[i,down];
end;
end;
//=============================
// добавляем в базу ЛВЛ заточки
procedure addenchantitemID;
begin
for i:=1 to max do
if (BaseItems[i,3] = ItemOID) then begin
enchlvl:=BaseItems[i,11];
flag:=false;
for ii:=1 to max do
if (Baselvl[ii] = enchlvl) then begin // текущий уже есть в массиве,
flag := true;
BREAK; { прекращаем цикл }
end;
if (flag = false) then begin
for ii:=1 to max do
if (Baselvl[ii]=-1) then begin // добавим в массив,
Baselvl[ii]:=enchlvl;
index :=ii;
BREAK; { прекращаем цикл }
end;
end;
end;
end;
//==========================
procedure ChooseInventory;
var
OID, lvl:integer;
begin
if (ItemOID>0) and start then begin
sumitemID:=0;
sumitemID:=Getsumitem(ItemOID,3,5); // считаем предметы для заточки
minlvl:=Baselvl[1];
for ii:=2 to index do
if Baselvl[ii] < minlvl then
minlvl:=Baselvl[ii];// мин заточка
objectOID:=0;
if (sumitemID > sumitem) then objectOID:=GetObjectID(ItemOID);//находим по ItemID предмет с ObjectID
if (objectOID = 0) then begin
start:=false;
SendMsg2('Больше предметов c ID : '+IntToStr(ItemOID)+' для заточки НЕТ ! ! ! ! ');
lvl:=0;
for i:=1 to max do
if (BaseItems[i,3] = ItemOID) then begin
OID:=BaseItems[i,2];
lvl:=BaseItems[i,11];
SendMsg2('Предмет c ID : '+IntToStr(ItemOID)+' с ObjectID : '+IntToStr(OID)+' заточен до : '+IntToStr(lvl)+' ');
end;
end;
end;
end;
//=========================
//находим enchantID предмета по ItemID для заточки
function GetObjectID(ItemOID:integer) : integer;
var
ID,i:integer;
begin
enchantID:= 0;
ItemEnch:=0;
Result:= 0;
if autoMsg then SendMsg2( '*******************************************' );
if (ItemOID>0) then begin
if autoMsg then SendMsg2 (' ищем ObjectID предмета с ID : ' +IntToStr(ItemOID)+' ');
if autoMsg then SendMsg2('------------------------------' );
for i:=1 to max do
if (BaseItems[i,3] = ItemOID) and (BaseItems[i,11] = minlvl) and (BaseItems[i,11] < maxlvl) then begin
enchantID:=BaseItems[i,2];
Result:=BaseItems[i,2];
ItemEnch:=BaseItems[i,11];
if autoMsg then SendMsg2(' ..... найден предмет для заточки ..... ');
if autoMsg then SendMsg2(' ID : '+IntToStr(ItemOID)+' и ObjectID : '+IntToStr(enchantID)+' заточен до : '+IntToStr(ItemEnch)+'');
if autoMsg then SendMsg2('------------------------------' );
if (enchantID>0) then Timer02.enabled:=true;
Break; // прерываем дальнейший перебор массива.
end;
end;
end;
//==========================
procedure stopselectskrol;
begin
buf:=hstr('D04E00');
SendToServerEx(myname);
end;
//===================================
procedure OnTimer01(Sender: TObject);
begin
buf:=#$19;
WriteD(skrolObjectID);
WriteD(0);
SendToServerEx(myname);
Timer01.enabled:=false;
end;
//--------------------------
procedure OnTimer02(Sender: TObject);
begin
buf:=hstr('D04C00');
WriteD(enchantID);
SendToServerEx(myname);
Timer02.enabled:=false;
Timer03.enabled:=true;
end;
procedure OnTimer03(Sender: TObject);
begin
buf:=#$5F;
WriteD(enchantID);
WriteD(0);
SendToServerEx(myname);
Timer03.enabled:=false;
if autoMsg then SendMsg2(' ..... Точим Предмет ..... ');
if autoMsg then SendMsg2( ' ID : '+IntToStr(ItemOID)+' и ObjectID : '+IntToStr(enchantID)+' - до : '+IntToStr(maxlvl)+'' );
if autoMsg then SendMsg2( '_______________________________' );
end;
//-----------------------------------------
procedure Init;
begin
minlvl:=0; maxlvl:=0; enchlvl:=0; ItemEnch:=0;
sumskrol:=0; sumitem:=0; sumitemID:=0;
objectOID:=0; object:=0; enchantObjectID:=0;
enchantID:=0; skrolObjectID:=0;
skrolID:=0; itemID:=0; ItemOID:=0;
t:=0;l:=0;d:=0;index :=0;
flag:=false;
autostart:=false;
start:=false;
autoMsg:=true;
Timer01:=TTimer.Create(nil);
Timer01.OnTimer:=@OnTimer01;
Timer01.enabled:=false;
Timer01.interval:=400; //<<== время выбора свитка
Timer02:=TTimer.Create(nil);
Timer02.OnTimer:=@OnTimer02;
Timer02.enabled:=false;
Timer02.interval:=400; //<<== время выбора предмета
Timer03:=TTimer.Create(nil);
Timer03.OnTimer:=@OnTimer03;
Timer03.enabled:=false;
Timer03.interval:=4500; //<<== время между заточкой
SendMsg2( ' в пати чат пишем уровень заточки' );
SendMsg2( ' заточить предмет ! !' );
SendMsg2( ' Соцдействие ДА - откр окно управления ' );
SendMsg2( '------------------------------------- ' );
buf:=hstr('14');
SendToServerEx(myname);
for ii:=1 to max do
Baselvl[ii]:=-1;
end;
procedure Free;
begin
Timer01.free;
Timer02.free;
Timer03.free;
end;
//=========================
begin
//не обрабатываем пустые пакеты
if pck='' then exit;
if FromServer and (pck[1]=#$87) then EnchantResult;
if FromServer and (pck[1]=#$11) then ItemList;
if FromServer and (pck[1]=#$7C) then ChooseInventory;
if FromClient and (pck[1]=#$49) then begin Resultmaxlvl;pck:='';exit;end; //
if FromClient and (pck[1]=#$56) and (ReadD(2)=24) then begin
ShowHTML(HTML); pck:='';exit; end;
if FromClient and (pck[1]=#$23) then begin ActionUse; pck:='';exit;end; //
begin
if (start=false) and FromClient then
case pck[1] of
#$19:begin
stopselectskrol;
buf:=hstr('14');
SendToServerEx(myname);
t:=1;
skrolObjectID:=ReadD(2);
skrolID:= Getitem(skrolObjectID,2,3);//находим по ObjectID скрол с ItemID
SendMsg2(' .................' );
SendMsg2(' активирован SKROL ID : '+IntToStr(skrolID)+' ' );
SendMsg2(' .................' );
end;
#$D0:if ReadH(2)=76 then begin
l:=1;
SendMsg2(' окно выбора предмета ' );
SendMsg2(' .................' );
end;
#$5F:begin
d:=1;
enchantObjectID:=ReadD(2);
if (t=1) and (l=1) and (d=1) then begin
autostart:=true;
ItemOID:= Getitem(enchantObjectID,2,3);//находим по ObjectID предмет с ItemID
SendMsg2 (' ID предмета : '+IntToStr(ItemOID)+' для заточки');
sumitemID:=0;
sumitem:=0;
sumitemID:=Getsumitem(ItemOID,3,5); // считаем предметы для заточки
SendMsg2 (' Предметов для заточки с ID : '+IntToStr(ItemOID)+' = '+IntToStr(sumitemID)+' ШТ ');
if (sumitemID > 1) then sumitem:=1;
stopselectskrol;
end;
end;
end;
end;
end.
Последний раз редактировалось TAMBIK; 08.11.2009 в 17:22.
Мб у каго то нету Скрипт на ФЛуд чата без бана..открывает отдельное окно чата.
Код:
const
MaxMessages = 1000;
var
m: TMemo;
frm:TForm;
penel: TPanel;
etext: tedit;
button: tbutton;
box : TCheckBox;
every : TEdit;
_Name : TEdit;
i: Integer;
tm:TTimer;
Message, Name: String;
procedure SendMs(Sender: TObject);
var
Msg, Nm: String;
dd: integer;
begin
if etext.text<>'' then begin
buf:=#$38;
case etext.text[1] of
'!': begin
Msg:=Copy(etext.text,2,1000);
dd:=1;
nm:='';
end;
'$': begin
Msg:=Copy(etext.text,2,1000);
dd:=9;
nm:='';
end;
'+': begin
Msg:=Copy(etext.text,2,1000);
dd:=8;
nm:='';
end;
'"': begin
dd:=pos(' ', etext.text);
Msg:=Copy(etext.text,dd+1,1000);
nm:=Copy(etext.text,2,dd-3);
dd:=2;
end;
'#': begin
Msg:=Copy(etext.text,2,1000);
dd:=3;
nm:='';
end;
'@': begin
Msg:=Copy(etext.text,2,1000);
dd:=4;
nm:='';
end;
else begin
Msg:=etext.text;
dd:=0;
nm:='';
end;
end;
WriteS(Msg);
WriteD(dd);
if nm<>'' then WriteS(Nm);
SendToServerEx(_Name.Text);
end;
end;
procedure onNewCommand(obj:TObject;key:string);
var i:integer;
var symbol:Variant;
var after:string;
begin
if (key[1]=#$0D) then begin
SendMs(obj);
symbol := etext.Text[1];
after := '';
if symbol = '#' then after := '#';
if symbol = '!' then after := '!';
if symbol = '@' then after := '@';
if symbol = '$' then after := '$';
if symbol = '%' then after := '%';
etext.Text := after;
end;
end;
procedure onTimer(Sender:TObject);
begin
tm.Interval := StrToInt(every.Text);
if box.checked = true then SendMs(Sender);
end;
procedure Init;
begin
frm := TForm.Create(nil);
frm.Caption := 'Chat';
frm.BorderStyle := bsSizeable;
frm.Position := poDesigned ;
frm.Width:=400;
frm.Height:=600;
m:=TMemo.Create(frm);
m.parent:=frm;
m.align:=alClient;
m.ReadOnly:=true;
m.ScrollBars:=ssBoth;
penel:=TPanel.Create(frm);
penel.parent:=frm;
penel.align:=alBottom;
penel.height:=48;
etext:=tedit.Create(penel);
etext.parent:=penel;
button:=tbutton.Create(penel);
button.parent:=penel;
button.top := etext.height;
button.caption:='Send';
button.onClick:=@SendMs;
box := TCheckBox.Create(penel);
box.parent := penel;
box.Top := etext.height + 2;
box.Left := button.width + button.left +2;
box.Caption := 'Шторм через: ';
every:=tedit.Create(penel);
every.parent:=penel;
every.Left := box.Left + box.Width;
every.Top := button.top;
every.Text := IntToStr(3000);
tm := TTimer.Create(frm);
tm.Interval := 1000;
tm.Enabled := true;
tm.OnTimer := @OnTimer;
etext.OnKeyPress := @onNewCommand;
_Name:=tedit.Create(frm);
_Name.parent:=frm;
_Name.Text := '';
frm.Show;
end;
procedure SaveToFile(prefix:string);
var name:string;
begin
name := prefix+'.'+ConnectName+'.'+DateToStr(Date)+'.'+TimeToStr(Time)+'.txt';
while Pos(':',name) <> 0 do begin
name[Pos(':',name)] := '-';
end;
m.Lines.SaveToFile(name);
end;
procedure Free;
begin
SaveToFile('ChatLog');
box.Free;
every.Free;
tm.Free;
etext.Free;
button.Free;
penel.Free;
m.Free;
frm.Free;
end;
var tp:integer;
var ct:string;
var MessageCounter:integer;
begin
if _Name.Text = '' then _Name.Text := ConnectName;
if FromServer and (ConnectName = _Name.Text) and (pck[1]=#$4a) then
begin
i:=10;
name:=ReadS(i);
message:=ReadS(i);
tp := ReadD(6);
ct := '???';
if tp = 0 then ct := 'GNR';
if tp = 8 then ct := 'TRD';
if tp = 3 then ct := 'PRT';
if tp = 4 then ct := 'CLN';
if tp = 9 then ct := 'ALY';
ct := DateToStr(Date) + ' '+ TimeToStr(Time) + ', '+ ct;
if name='' then name:='Объявление: ';
m.Lines.Add('['+ct+'] '+Name+': '+message);
if MessageCounter > MaxMessages then begin
SaveToFile('Backup');
//m.Lines.Add('BACKUPED');
MessageCounter := 0;
end;
MessageCounter := MessageCounter+1;
end;
end.
Последний раз редактировалось ISharkI; 09.11.2009 в 18:26.
//by mks
//помошник в PvP и PK.
//пьет CP и HP пробирки в нужное время(можно добавить и MP для пвп серваков), и освобождает вас от небоходимости зажатия клавиши Ctrl, которая так меня раздражает!(думаю это раздражает и не только меня)
///////////////////////////////////////////////////////
///////////////Master PvP by MKS v.1.0/////////////////
///////////////////////////////////////////////////////
//после активации скрипта необходимо выпить сначала банку CP, потом HP для получения их ID
const
Name='Name'; //ник перса
var
CurHP,MaxHP,CurCP,MaxCP: integer;
CPuse,HPuse: string;
TimerCP,TimerHP: TTimer;
procedure Init; //Вызывается при включении скрипта
begin
TimerCP:=TTimer.Create(nil);
TimerCP.OnTimer:=@OnTimerCP;
TimerCP.enabled:=false;
TimerCP.interval:=10000; //интервал 1сек, т.к. чаще пить CP всеравно не будет, дабы не засорять трафик
TimerHP:=TTimer.Create(nil);
TimerHP.OnTimer:=@OnTimerHP;
TimerHP.enabled:=false;
TimerHP.interval:=15000; //интервал 15сек, т.к. действие одной бутылки = 15сек
end;
procedure OnTimerCP(Sender: TObject);
begin
buf:=CPuse;
SendToServerEx(Name);
end;
procedure OnTimerHP(Sender: TObject);
begin
buf:=HPuse;
SendToServerEx(Name);
end;
procedure Free; //Вызывается при выключении скрипта
begin
TimerCP.free;
TimerHP.free;
HPuse:='';
CPuse:='';
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
//пьем сначала CP, потом HP банку что б запомнить их ID(я решил взять эти пакеты целиком, дабы не усложнять)
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuse='') then CPuse:=pck;
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuse<>pck) and (HPuse='') then HPuse:=pck;
//считываем текущие и максимальные значения CP и HP
if FromServer and (pck[1]+pck[6]=#$0E#$04) then
begin
CurHP:=ReadD(14);
MaxHP:=ReadD(22);
CurCP:=ReadD(30);
MaxCP:=ReadD(38);
end;
if CurHP<>0 then
begin
//если вы используете не грэйтер CP то вместо 200 подставьте кол-во CP сколько восстанавливает 1 банка
if (CurCP<MaxCP-200) and (CPuse<>'') then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurHP<MaxHP) and (HPuse<>'') then TimerHP.enabled:=true else TimerHP.enabled:=false;
//если используем скилы или заклинания добавляем флаг Ctrl, что б не надо было удерживать контрол
if FromClient and (ConnectName=Name) and (pck[1]=#$2F) then pck[6]:=#$01;
//если наводим таргет, повторное нажатие по нему подменивается на атаку, опять же что б не удерживать контрол
if FromClient and (ConnectName=Name) and (pck[1]=#$04) then pck[1]:=#$0A;
end
else
begin
TimerHP.enabled:=false;
TimerCP.enabled:=false;
end;
end.
P.S. - Если гдето не та ссылка ну например 2 одинаковые ссылки, то пишыте я перезалью, просто я быстро писал может гдето чтото пропустил)
________________
Зачем Ла2 себе скачал? Зачем ее установил? Я сон нормальный потерял. Про жизнь реальную забыл. Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось H0oL1GaN; 10.11.2009 в 17:07.
const
nik='NIK'; //сюда свой ник
Enchant=5;
var
UseItem, EnchantItem: string;
Count, CurrentEnch: integer;
Timer01: TTimer;
procedure Init;
begin
Timer01:=TTimer.Create(nil);
Timer01.OnTimer:=@OnTimer01;
Timer01.enabled:=false;
Timer01.interval:=3200; //скорость точки
end;
procedure OnTimer01(Sender: TObject);
begin
buf:=UseItem;
SendToServerEx(nik);
buf:=EnchantItem;
SendToServerEx(nik);
end;
procedure Free;
begin
Timer01.free;
count:=0;
CurrentEnch:=0;
end;
begin
if FromServer and (pck[1]=#$87) then
begin
CurrentEnch:=ReadD(2);
if CurrentEnch=Enchant then Timer01.enabled:=false;
end;
if FromClient and (pck[1]=#$19) then UseItem:=pck;
if FromClient and (pck[1]=#$5F) then EnchantItem:=pck;
if FromClient and (pck=#$34#$02#$00#$00#$00) then
begin
pck:='';
Timer01.enabled:=not(Timer01.enabled);
end;
end.
ВОТ НОРМ СКРИПТ НА АВТО ТОЧКУ.....здесь не надо нечего делать кроме как сперва врубить скрипт, 1 раз заточить и нажать соц. действие привецтвие..... токо есть одна проблема оно точитса без ограничения.....переделайте плз этот скрипт чтобы останавливалось до указанои точки очень прошу.....
________________
Пум-пу-Пумп............
Последний раз редактировалось GraNIT; 01.03.2010 в 19:46.
var act:integer; me1:char; me2:char; me3:char; me4:char; nm:integer; t1:char; t2:char; t3:char; t4:char; nt:integer; shade:integer; mz:integer; pz:integer; tz:integer; hz:integer;
procedure SendMsg(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msg);
SendToClient;
end;
begin
//анализ ИД себя
if nm<>1 then
begin
if FromServer and (pck[1]=#$04) then
begin
me1:=pck[18];
me2:=pck[19];
me3:=pck[20];
me4:=pck[21];
nm:= 1;
end;
end;
//защитная часть
if FromClient and (pck[1]=#$1B) and (pck[2]=#$06) then
begin
act:=1;
SendMsg('AT system on');
end;
if FromClient and (pck[1]=#$1B) and (pck[2]=#$05) then
begin
act:=0;
SendMsg('AT system off');
end;
if FromClient and (pck=#$38#$3C#$04#$2B#$00#$00#$00#$03#$00#$00#$00) then
begin
mz:=1;
SendMsg('Advanced m.def on')
end;
if FromClient and (pck=#$38#$3C#$04#$2D#$00#$00#$00#$03#$00#$00#$00) then
begin
mz:=0;
SendMsg('Advanced m.def off')
end;
if FromClient and (pck=#$38#$3F#$04#$2B#$00#$00#$00#$03#$00#$00#$00) then
begin
pz:=1;
SendMsg('Advanced p.def on')
end;
if FromClient and (pck=#$38#$3F#$04#$2D#$00#$00#$00#$03#$00#$00#$00) then
begin
pz:=0;
SendMsg('Advanced p.def off')
end;
if FromClient and (pck=#$38#$42#$04#$2B#$00#$00#$00#$03#$00#$00#$00) then
begin
tz:=1;
SendMsg('Anti-target on')
end;
if FromClient and (pck=#$38#$42#$04#$2D#$00#$00#$00#$03#$00#$00#$00) then
begin
tz:=0;
SendMsg('Anti-target off')
end;
if FromClient and (pck=#$38#$45#$04#$2B#$00#$00#$00#$03#$00#$00#$00) then
begin
hz:=1;
SendMsg('Hit"n"Hide on')
end;
if FromClient and (pck=#$38#$45#$04#$2D#$00#$00#$00#$03#$00#$00#$00) then
begin
hz:=0;
SendMsg('Hit"n"Hide off')
end;
if FromClient and (pck[1]=#$1B) and (pck[2]=#$03) then
begin
buf:=#$48#$00#$00#$FE#$FF#$7F#$AB#$03#$00#$E9#$F1#$FF#$FF#$88#$D4#$00#$00#$00#$00#$00#$00;
SendToServer;
end;
if act=1 then
begin
if tz=1 then
begin
if FromServer and (pck[1]=#$29) and (pck[6] = me1) and (pck[7] = me2) and (pck[8] = me3) and (pck[9] = me4) then
begin
buf:=#$48#$00#$00#$FE#$FF#$7F#$AB#$03#$00#$E9#$F1#$FF#$FF#$88#$D4#$00#$00#$00#$00#$00#$00;
SendToServer;
end;
end;
if mz=1 then
begin
if FromServer and (pck[1]=#$48) and (pck[6] = me1) and (pck[7] = me2) and (pck[8] = me3) and (pck[9] = me4) and (pck[2] <> me1) and (pck[3] <> me2) and (pck[4] <> me3) and (pck[5] <> me4) then
begin
buf:=#$48#$00#$00#$FE#$FF#$7F#$AB#$03#$00#$E9#$F1#$FF#$FF#$88#$D4#$00#$00#$00#$00#$00#$00;
SendToServer;
end;
end;
if pz=1 then
begin
if FromServer and (pck[1]=#$05) and (pck[6] = me1) and (pck[7] = me2) and (pck[8] = me3) and (pck[9] = me4) and (pck[2] <> me1) and (pck[3] <> me2) and (pck[4] <> me3) and (pck[5] <> me4) then
begin
buf:=#$48#$00#$00#$FE#$FF#$7F#$AB#$03#$00#$E9#$F1#$FF#$FF#$88#$D4#$00#$00#$00#$00#$00#$00;
SendToServer;
end;
end;
if hz=1 then
begin
if FromServer and (pck[1]=#$48) and (pck[6] = me1) and (pck[7] = me2) and (pck[8] = me3) and (pck[9] = me4) then
begin
buf:=#$48#$00#$00#$FE#$FF#$7F#$AB#$03#$00#$E9#$F1#$FF#$FF#$88#$D4#$00#$00#$00#$00#$00#$00;
SendToServer;
end;
end;
end;
//часть таргета
if FromClient and (pck[1]=#$04) then
begin
nt:=1;
t1:=pck[2];
t2:=pck[3];
t3:=pck[4];
t4:=pck[5];
end;
if FromClient and (pck[1]=#$37) then
begin
nt:=0;
end;
if nt=1 then
begin
if FromClient and (pck[1]=#$30) then
begin
buf:=#$04+t1+t2+t3+t4+#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00;
SendToServer;
buf:=#$A6+t1+t2+t3+t4+#$00#$00;
SendToClient;
end;
end;
if FromClient and (pck[1]=#$1B) and (pck[2]=#$04) then
begin
buf:=#$04+t1+t2+t3+t4+#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00;
SendToServer;
buf:=#$A6+t1+t2+t3+t4+#$00#$00;
SendToClient;
end;
//shadowmelt
if FromClient and (pck[1]=#$1B) and (pck[2]=#$07) then
begin
shade:=1;
buf:=#$48#$00#$00#$FE#$FF#$7F#$AB#$03#$00#$E9#$F1#$FF#$FF#$88#$D4#$00#$00#$00#$00#$00#$00;
SendToServer;
SendMsg('Skipped to Shadows');
end;
if FromClient and (pck[1]=#$1B) and (pck[2]=#$08) then
begin
shade:=0;
buf:=#$30#$00#$00;
SendToServer;
SendMsg('Reveal from Darkness');
end;
if shade = 1 then
begin
if FromClient and (pck[1]=#$30) then pck:='';
end;
end.
И так управление - нажимает Social Yes, система запущена, но еще не подключены модули... Подключаем те которые нам нужны...
пишем в ПАТИ ЧАТ:
т+ / т- - Включение/Выелючение АВТО антитаргета - таргет сбрасывется когда вас БЕРУТ НА ТАРГЕТ, тоесть он пытается выделить, а вы сбрасываете!
м+ / м- , п+ / п- - дополнительная магическая и физическая защита, непомню уже сам как работает (да у меня и не работает, изза лагучести инета) но знакомый говорит, если включить их в паре, то сбивает каст когда пытаются кастануть на вас заклинание, и "ичезает" прямо во время физической атаки на вас...
х+ / х- - уход в хайд после каждой своей физической атаки
Там есть еще такая штукенция, что после хайда, предыдущий таргет выберется автоматом (этого не видно в клиенте но он выделится, протестите на мобах)
Social Bow / Social Unaware - исчезнуть и появится, ну это кусок скрипта ХИНТА на его антитаргет.}
Добавлено через 6 минут
Инвиз
(только при том вы не можите двигаться а просто исчезаете, сильной полезности нет , но может кому нить пригодиться)
И так управление - нажимает Social Yes,No
Код:
//Invisible Mode
var
pck48:string;
hidden:boolean;
i,x,y:integer;
procedure Init;
begin
hidden:=false;
pck48:='';
randomize;
end;
procedure SendMsg(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(2);
WriteS('hLaPEx');
WriteS(msg);
SendToClient;
end;
begin
if FromServer then exit;
case ord(pck[1]) of
$1B:case ord(pck[2]) of
$05:begin
SendMsg('invisible_mode: Off');
pck:=#$30;
hidden:=false;
end;
$06:begin
if pck48='' then exit;
SendMsg('invisible_mode: On');
hidden:=true;
pck:=pck48;
i:=2;
x:=ReadD(i);
y:=ReadD(i);
x:=x+1000+round(random*200)-100;
y:=y+1000+round(random*200)-100;
buf:=pck;
WriteD(x,2);
WriteD(y,6);
pck:=buf;
end;
end;
$48:pck48:=pck;
$30:if hidden then pck:='';
end;
end.
Ни одно ни другое что то нехочет работать Пишет ошибка в этой строчке procedure SendMsg(msg:string);
________________
Продвижение вашего сайта, увеличение ссылочной массы, продвижение по НЧ-СЧ-ВЧ запросам. Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось ISharkI; 10.11.2009 в 16:05.
Причина: Забыл добавить кое что
да не роботают ети скрипты, первый наполовину робочий.. когда нажываеш социалбов то ты как будто исчезаеш, стоиш на месте но бить тебя не могут, и ето только на некоторых серверах роботает..
что б первый зароботал , я делал текст инит ,в версии 3.4.1.81 и когда у меня выделяло то что плохо написано я просто удалял там какраз строчку ету:
Код:
procedure SendMsg(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msg);
SendToClient;
end;
и сохраняеш, и должно роботать , у меня впринцыпе роботало .. но говорю еще раз на малом количестве серверов, и зависит от сборки
________________
Зачем Ла2 себе скачал? Зачем ее установил? Я сон нормальный потерял. Про жизнь реальную забыл. Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось H0oL1GaN; 10.11.2009 в 17:12.
Вопрос не в тему конечно, но если кто умеет писать скрипты, скажите плиз какие тут используются языки программирования, а то понимаю отдельные строки но в целом не могу понять, а так как занимаюсь веб программированием смогу в легкую разобраться и писать сам скрипты и тут выкладывать, мб есть какая то литературка почитать? Можно все в ЛС писать
ВОТ НОРМ СКРИПТ НА АВТО ТОЧКУ.....здесь не надо нечего делать кроме как сперва врубить скрипт, 1 раз заточить и нажать соц. действие привецтвие..... токо есть одна проблема оно точитса без ограничения.....переделайте плз этот скрипт чтобы останавливалось до указанои точки очень прошу.....
ну, раз так хочется - лови:
Код:
const
nik='NIK'; //сюда свой ник
Enchant=5;
var
UseItem, EnchantItem: string;
Count, CurrentEnch: integer;
Timer01: TTimer;
procedure Init;
begin
Timer01:=TTimer.Create(nil);
Timer01.OnTimer:=@OnTimer01;
Timer01.enabled:=false;
Timer01.interval:=3200; //скорость точки
end;
procedure OnTimer01(Sender: TObject);
begin
buf:=UseItem;
SendToServerEx(nik);
buf:=EnchantItem;
SendToServerEx(nik);
end;
procedure Free;
begin
Timer01.free;
count:=0;
CurrentEnch:=0;
end;
begin
if FromServer and (pck[1]=#$87) then
begin
if ReadD(2)=0 then inc(CurrentEnch);
if CurrentEnch=Enchant then Timer01.enabled:=false;
end;
if FromClient and (pck[1]=#$19) then UseItem:=pck;
if FromClient and (pck[1]=#$5F) then EnchantItem:=pck;
if FromClient and (pck=#$34#$02#$00#$00#$00) then
begin
pck:='';
Timer01.enabled:=not(Timer01.enabled);
end;
end.
Последний раз редактировалось GraNIT; 01.03.2010 в 19:46.
begin
if FromServer and (pck[1]=#$87) then
begin
if ReadD(2)=0 then inc(CurrentEnch);
if CurrentEnch=Enchant then Timer01.enabled:=false;
end;
здесь пакет от сервера о заточки 87
на разных сервах по разному приходит инфа
есть : 0-заточили.2- отмена.3-сломали.
а есть приходит уровень на какой заточили предмет
/===========================================
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);
inc(j,4);
ItemBase[3,i]:=ReadD(j);
inc(j,48); // <<<< == ДОЛЖНО БЫТЬ ТАК
end;
StringList.Clear;
try
Скрипт реально работает, на всех сборках la2base и везде где у бафера есть кнопки heal,cp,mana,Лично проверял.//
Код:
Скрипт на регенерацию Маны,Хп,Цп на сервере *****
//Для активации окна введите в парти чат '.window'
//Перед включением скрипта нужно стоять рядом с бафером!
//Для регенерации хп нужно просто посылать '.heal' в парти чат
//Работает на сервер где есть у бафера регенерация хп мп цп
//Версия 6.0 Final
//Автор Crazy$
var
// переменная
ValidatePosition:string; c:integer; e:integer; n:integer; r:boolean;
a:integer; b:boolean; d:integer; f:integer; v:integer;
procedure Init; //Вызывается при включении скрипта
begin
SendMsc('Возьми в таргет бафера и сделай шаг!');
b:=false;
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClient;
end;
//защитная часть
begin
begin
if FromClient and (pck[1]=#$04)and (not b) then
begin
a:=ReadD(2); c:=ReadD(6);
d:=ReadD(10); e:=ReadD(14);
f:=ReadC(18);
SendMsc('Запомнен ObjectID = '+inttostr(a));
b:=true;
end;
end;
begin
if FromClient and (pck[1]=#$48) then
begin
v:=ReadD(14); n:=ReadD(18);
end;
end;
//запоминание пакета ValidatePosition
if FromClient and (pck[1]=#$48) then ValidatePosition:=pck;
if pck='' then exit;
if fromclient and (pck=#$38#$2E#$00#$77#$00#$69#$00#$6E#$00#$64#$00#$6F#$00#$77#$00#$00#$00#$03#$00#$00#$00) then
begin
buf:=#$04;
WriteD(a);
WriteD(c);
WriteD(d);
WriteD(e);
WriteC(f);
SendToServer;
buf:=#$48;
WriteD(c);
WriteD(d);
WriteD(e);
WriteD(v);
WriteD(n);
SendToServer;
buf:=#$21;
Writes('npc_'+inttostr(a)+'_restore hp 1');
SendToServer;
buf:=#$21;
WriteS('npc_'+inttostr(a)+'_restore mp 1');
SendToServer;
buf:=#$21;
WriteS('npc_'+inttostr(a)+'_restore cp 1');
SendToServer;
buf:=hstr('37 01 00');
SendToServer;
//отсылка пакета ValidatePosition, запомненого ранее
buf:=ValidatePosition; SendToServer;
end;
begin
if FromClient and (pck[1]=#$48) then ValidatePosition:=pck;
if pck='' then exit;
if FromClient and (pck=#$38#$2E#$00#$68#$00#$65#$00#$61#$00#$6C#$00#$00#$00#$03#$00#$00#$00) then
begin
buf:=#$48;
WriteD(c);
WriteD(d);
WriteD(e);
WriteD(v);
WriteD(n);
SendToServer;
buf:=#$21;
Writes('npc_'+inttostr(a)+'_restore hp 1');
SendToServer;
buf:=#$21;
WriteS('npc_'+inttostr(a)+'_restore mp 1');
SendToServer;
buf:=#$21;
WriteS('npc_'+inttostr(a)+'_restore cp 1');
SendToServer;
//отсылка пакета ValidatePosition, запомненого ранее
buf:=ValidatePosition; SendToServer;
end;
end;
end.
________________
Продвижение вашего сайта, увеличение ссылочной массы, продвижение по НЧ-СЧ-ВЧ запросам. Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).