PDA

Просмотр полной версии : Аугментация в одно нажатие


raid
01.07.2008, 17:43
Активируем скрипт, в клиенте должно появиться окошко чата.
"Соц. Да" - снятие аугмента и аугментирование.
В инвентаре должна быть только одна пуха с данным ID.
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*Ge msAmount)+')</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.

Grinch
02.07.2008, 20:36
добавить проверку на аргумент ) получившийся если нет и кул скрипт затариться геймами кристаллами этими и ловить аргумент нужный

raid
02.07.2008, 22:02
добавить проверку на аргумент ) получившийся если нет и кул скрипт затариться геймами кристаллами этими и ловить аргумент нужный
Я так и не понял как узнать полученный аугмент, единственное что в голову пришло: одевать пуху и смотреть изменение в скиллах(это я реализовал)
По моим тестам во время нажатия кнопки "аугмент" и после нее, инфа об ауге не приходит... значет можно узнать какие ауги ты можешь получить не аугментируя пухи...

X_^
10.07.2008, 23:33
пытался зделать под камаэль не получилось где ощибки в изминений пакетов ?
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('19');
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*Ge msAmount)+')</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('19 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('B0 2A A0 00 00 80 84 1E 00 0A 00 00 00 00 00 00 00 00 00 00 00');
SendToServerEx(Name);
buf:=hstr('B0 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;
#$21: UpdateItemBase;
end;
end.

4uTePoK
20.08.2008, 05:50
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('19');
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*Ge msAmount)+')</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('19 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]=#$34) then begin
SocialID:=ReadD(2);
pck:='';
case SocialID of
7: begin
buf:=hstr('B0 2A A0 00 00 80 84 1E 00 0A 00 00 00 00 00 00 00 00 00 00 00');
SendToServerEx(Name);
buf:=hstr('B0 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
#$34: CreateItemBase;
#$21: UpdateItemBase;
end;
end.
Этот скрипт зделал под T0 но ощибка в скрипте когда проверил синтаксис
Вот сама ощибка...
Ошибка: Identifier redeclared: 'StrToHex'

Breadfan
20.08.2008, 18:15
пытался зделать под камаэль не получилось где ощибки в изминений пакетов ?
Изменяй не только ID пакетов, но и не забывайте о необходимой модификации процедур UpdateItemBase; CreateItemBase. Кстати там у тебя неверный ID, должно быть
if FromServer then
case pck[1] of
#$11: CreateItemBase;
#$21: UpdateItemBase;
end;

Rubec
23.09.2008, 11:13
Извеняюсь, это что типа СА можно без мамона вставлять ?

QaK
23.09.2008, 13:22
Это не са, это типа добака к са.

®ennie™
21.10.2008, 14:15
тестил скрипт на Interlude
ЛС вставляется но после вставки толи информация об инвентае толи хз что не обновляется и ЛС по следующему нажатию "Да" не вытаскивается. Скрипт пытается повторно вставить ЛС в аргументированную пуху. Это исправляется если после аргументации пуху положить и вытащить из вх. Я в скриптах не шарю, ктонить может вставить процедуру в скрипт с этим действием после вставки/удаления ЛС? Буду очень благодарен :)

chillabizz
21.10.2008, 15:55
после первого раза снова одень пуху и жми да

CMEPTb
23.10.2008, 00:50
Этот скрипт зделал под T0 но ощибка в скрипте когда проверил синтаксис
Вот сама ощибка...
Ошибка: Identifier redeclared: 'StrToHex'
Как бороться с этой ошибкой?

NLObP
23.10.2008, 15:21
Ошибка: Identifier redeclared: 'StrToHex'
Как бороться с этой ошибкой?

Удалить в скрипте определение процедуры 'StrToHex' или все вхождения слова 'StrToHex' впереименовать в 'StrToHex2'

Витя
05.11.2008, 14:43
поменял все пакеты, открываю онвентарь появляеться окошко нажимаю "Соц. Да" ничего не происходит, в чем ошибка?
const
Name='manny'; // ник
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('19');
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*Ge msAmount)+')</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('19 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]=#$11) then begin
SocialID:=ReadD(2);
pck:='';
case SocialID of
7: begin
buf:=hstr('B0 2A A0 00 00 80 84 1E 00 0A 00 00 00 00 00 00 00 00 00 00 00');
SendToServerEx(Name);
buf:=hstr('B0 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
#$11: CreateItemBase;
#$21: UpdateItemBase;
end;
end.

chillabizz
05.11.2008, 16:38
запусти скрипт на заточку там айдишники все глянь
скорее всего айдишник лайфстоуна неправельный

Витя
05.11.2008, 20:28
запусти скрипт на заточку там айдишники все глянь
скорее всего айдишник лайфстоуна неправельный

ID Все правильные проверял с помощью скрипта на заточку при выборе предмета показывается его ID

Витя
10.11.2008, 00:26
изменил пакет на аглуминтирование и снятия аглуминтации, изменил обновление базы итемов все равно не получаеться:o не могу понять че за пакет #B0 вот кусок из скрипта
begin
if pck='' then exit;
if FromClient and (ConnectName=Name) and (pck[1]=#$11) then begin
SocialID:=ReadD(2);
pck:='';
case SocialID of
7: begin
buf:=hstr('B0 2A A0 00 00 80 84 1E 00 0A 00 00 00 00 00 00 00 00 00 00 00');
SendToServerEx(Name);
buf:=hstr('B0 29 A0 00 00 40 0D 03 00 FA 00 00 00 00 00 00 00 00 00 00');
SendToServerEx(Name);

exit;
end;

и сам скритп
const
Name='manny'; // ник
ItemID=6608; // пуха
LifeID=8752; // лайфстон
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('19');
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*Ge msAmount)+')</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('19 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);//количество итемов не должно превышать max!
if ListCount>max then ListCount:=max;
j:=8;
for i:=1 to ListCount do begin
ObjID:=ReadD(j);
ItmID:=ReadD(j);
j:=j+4;
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+44 //Gracia
// j:=j+2; //для С4
// j:=j+10; //для Интерлюдии
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);
j:=j+4;
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+44;
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 26 00');
WriteD(Item);
SendToServerEx(Name);
delay(100);
buf:=hstr('D0 27 00');
WriteD(Item);
WriteD(Life);
SendToServerEx(Name);
delay(100);
buf:=hstr('D0 28 00');
WriteD(Item);
WriteD(Life);
WriteD(Gems);
WriteD(GemsAmount);
SendToServerEx(Name);
delay(100);
buf:=hstr('D0 44 00');
WriteD(Item);
WriteD(Life);
WriteD(Gems);
WriteD(GemsAmount);
SendToServerEx(Name);
end;
procedure DisAugment;
begin
buf:=hstr('D0 45 00');
WriteD(Item);
SendToServerEx(Name);
buf:=hstr('D0 46 00');
WriteD(Item);
SendToServerEx(Name);
end;
begin
if pck='' then exit;
if FromClient and (ConnectName=Name) and (pck[1]=#$11) then begin
SocialID:=ReadD(2);
pck:='';
case SocialID of
7: begin
buf:=hstr('B0 2A A0 00 00 80 84 1E 00 0A 00 00 00 00 00 00 00 00 00 00 00');
SendToServerEx(Name);
buf:=hstr('B0 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;
//ItemList
if FromServer and (ConnectName=Name) and (pck[1]=#$11) then CreateItemBase; //создание базы предметов
// if (ColvoWpn=0) or (ColvoScrl=0) then exit; //если нет базы итемов, скрипт дальше не пустит
//************************************************** **************************
//если удалились предметы, стираем в базе предметов пары ObjectID - ItemID
if FromServer and (ConnectName=Name) and (pck[1]=#$21) then UpdateItemBase; //Обновление базы, если принят пакет на удаление предмета
end.

Slaventy
16.03.2009, 18:50
Простинько и со вкусом нужно нажымать две кнопки "инкрустировать" "удалить")))
begin
buf:=hstr('FE 52 00 ');//окно удаления лс
SendToClient;
buf:=hstr('FE 51 00 ');//окно Арг
SendToClient;
buf:=hstr('43 26 00 0E 1C 07 10');//вещь
SendToServer;
buf:=hstr('43 27 00 0E 1C 07 10 7D 46 06 10');//лс
SendToServer;
buf:=hstr('43 28 00 0E 1C 07 10 7D 46 06 10 93 5D 05 10 19 00 00 00');//гемы
SendToServer;
buf:=hstr('FE 51 00 ');//окно удаления арг
SendToClient;

buf:=hstr('43 45 00 5D FB 03 10 ');//вещь
SendToServer;
end.
А вставлять лс можна в любом месте))

MaRLiN
06.04.2009, 23:41
всем доброго времени суток, попробовал скриптик на аргументацию, и nxjnj он не пашет начала подсвечивал слова в скрипте я их стерё и всё бы норм, но при запуске скрипта клиент перезаходит в игру а потом критует! в чем может быть дело?

8tomat8
20.04.2009, 18:21
Аугментировал скриптом ФБ +12 - все было норм, потом точнул её на 22 и скрипт говорит что не подходящие условия( не подскажите в чем может быть трабл?
Зарание Спасибо.

mks
20.04.2009, 19:49
аналогичный скрипт, только ид випона, лсов, гемов, кол-во гемов не надо вводить, включаем скрипт и аугментируем пуху вручную 1раз, скприпт считывает все нужные данные для аугментации и ее снятия, далее 2соц действие вытащить лс, 1е соц действие вставить, писал для грации 2, на других хорониках не проверял

const
nik='ник';

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.

Fer123
04.05.2009, 21:15
Я так и не понял как узнать полученный аугмент, единственное что в голову пришло: одевать пуху и смотреть изменение в скиллах(это я реализовал)
По моим тестам во время нажатия кнопки "аугмент" и после нее, инфа об ауге не приходит... значет можно узнать какие ауги ты можешь получить не аугментируя пухи...
Полученый агумент приходит в пакете inventoryupdate
0034 d AugId: 174800762
а клиент уже по полученому ид показывает инфу об агументе

Kitsune
11.05.2009, 18:34
Предлагаю вашему вниманию переделанный скрипт mks на аугментацию, кусочек взят из кода Slaventy на открытие окошек в клиенте, откорректирован под Gracia Final (Java):
const
nik='ваш ник';

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 = HStr('56 0D 00 00 00 00 00 00 00 00 ')) then //56 0D 00 00 00 00 00 00 00 00 (Social No)

begin
buf:=hstr('FE 52 00 ');//окно удаления арГ
SendToClient;
delay(300);
pck:='';
Buf:=#$D0#$42#$00;
WriteD(WeaponID);
SendToServerEx(nik);
Buf:=#$D0#$43#$00;
WriteD(WeaponID);
SendToServerEx(nik);

end;

//Augment
if FromClient and (pck = HStr('56 0C 00 00 00 00 00 00 00 00 ')) then //56 0C 00 00 00 00 00 00 00 00 (Social Yes)
begin
buf:=hstr('FE 51 00 ');//окно Арг
SendToClient;
delay(300);
pck:='';
Buf:=#$D0#$26#$00;
WriteD(WeaponID);
SendToServerEx(nik);
delay(50);
Buf:=#$D0#$27#$00;
WriteD(WeaponID);
WriteD(LsID);
SendToServerEx(nik);
delay(50);
Buf:=#$D0#$28#$00;
WriteD(WeaponID);
WriteD(LsID);
WriteD(GemID);
WriteD(GemCount);
SendToServerEx(nik);
delay(50);
Buf:=#$D0#$41#$00;
WriteD(WeaponID);
WriteD(LsID);
WriteD(GemID);
WriteD(GemCount);
SendToServerEx(nik);
end;
end.

HORSE
15.07.2009, 02:49
я так и не понял одного...Аргументировать по скрипту можно без ЛСа или просто в любом месте???

QaK
15.07.2009, 11:00
HORSE, скрипт просто упрощает процедуру аугментации.

mks
15.07.2009, 11:03
я так и не понял одного...Аргументировать по скрипту можно без ЛСа или просто в любом месте???
нет, одним нажатием вставляешь лс(не приходится выставлять пуху, лс, гемы) и вторым вытаскиваешь, причем без задержек, в общем скриптом можно сотню лсов перевставлять за 5 минут, в поиске нужного

v0ltag3
25.07.2009, 11:22
У меня клиент финала сторил пакет так, что в конце было 8 нулей и без них он отказывался аугументить... Вот исправил. Включаем скрипт, аугументим первый раз руками, потом первое социальное действие - вставить, второе - удалить.
const
nik='v0ltag3';

var
WeaponID, LsID, GemID, GemCount, zero: 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);
zero:=ReadD(20);
end;

//Cancel Augment

if FromClient and (pck = HStr('56 0D 00 00 00 00 00 00 00 00 ')) then //56 0D 00 00 00 00 00 00 00 00 (Social No)

begin
buf:=hstr('FE 52 00 ');//окно удаления арГ
SendToClient;
delay(300);
pck:='';
Buf:=#$D0#$42#$00;
WriteD(WeaponID);
SendToServerEx(nik);
Buf:=#$D0#$43#$00;
WriteD(WeaponID);
SendToServerEx(nik);

end;

//Augment
if FromClient and (pck = HStr('56 0C 00 00 00 00 00 00 00 00 ')) then //56 0C 00 00 00 00 00 00 00 00 (Social Yes)
begin
buf:=hstr('FE 51 00 ');//окно Арг
SendToClient;
delay(300);
pck:='';
Buf:=#$D0#$26#$00;
WriteD(WeaponID);
SendToServerEx(nik);
delay(50);
Buf:=#$D0#$27#$00;
WriteD(WeaponID);
WriteD(LsID);
SendToServerEx(nik);
delay(50);
Buf:=#$D0#$28#$00;
WriteD(WeaponID);
WriteD(LsID);
WriteD(GemID);
WriteD(GemCount);
WriteD(zero);
SendToServerEx(nik);
delay(50);
Buf:=#$D0#$41#$00;
WriteD(WeaponID);
WriteD(LsID);
WriteD(GemID);
WriteD(GemCount);
WriteD(zero);
SendToServerEx(nik);
end;
end.

Skagerrak
25.09.2009, 01:18
Подскажите пожалуйста, что надо откорректировать в скрипте от авторов: Kitsune & v0ltag3, чтобы он у меня вставлял гемстоуны, этот этап приходится постоянно делать самому.
Сервер gracia final (java какая-то).

Furyk
22.11.2009, 19:37
procedure Init; //Вызывается при включении скрипта
begin

end;


Почему тут простые процедуры , и почему они должны работать , скрипт от волтажа.
Я полный нуб , подскажите плз.

ololo
28.12.2009, 18:38
выдает ошибку List index of bounds (1), что это значит?

кто может помочь с адаптацией скрипта под ХБ?

QaK
04.01.2010, 11:23
выдает ошибку List index of bounds (1), что это значит?это значит, что скрипт над переделывать, разбор пакета инвентаря неправильный

Breadfan
12.01.2010, 09:23
это значит, что скрипт над переделывать, разбор пакета инвентаря неправильный
Да примеров - море, к примеру те же скрипты на заточку от NLobP

skaner
26.01.2010, 12:21
баян, куча подобного повсюду, но удобная чтука, на х10 и выше, - в том что порой он думает что у тебя кончились ЛСы....

Imperial2008
05.02.2010, 15:56
Захотел я попробовать на интерлюде поагментить. Но вот какая проблема. На первой странице она уже была указана, но толком решения я не нашел. Пакеты все верны, пуха агментится 1 раз, потом дисагментится 1 раз и на этом весь процесс заканчивается. Я думал, возможно, не правильно пересчитываются гемы, но нет, все пересчитывается верно. При чем ни обновление инвентаря, ни одевание/снятие пухи, ни выброс ее на землю, ни положение в ВХ ничего не исправляет. Помогает только одно - перезапустить скрипт предварительно поменяв кол-во гемов (каждый раз), но тогда и смысл скрипта теряется. Кто-то знает какой то выход? Буду очень благодарен.

dAsk
07.02.2010, 18:53
В чем ошибка? Вот скрин: (http://s003.radikal.ru/i204/1002/3d/36902393f289.jpg) ИД предметов вводил опираясь на ItemsID.ini

BioDread
10.02.2010, 00:32
Я думаю дело в том что каждый ЛС если находится в разных слотах имеет свой уникальный ид
Вот если б ЛСы лежали стопкой то ИД у каждого из них был бы одинаковым.
Люди кто знает если я не прав просвятите мну плиз)

dAsk
10.02.2010, 21:23
На моем сервере ЛС стопкой лежат. Хронини HellBound
Проблема актуальна :help:

mks
14.02.2010, 17:42
Я думаю дело в том что каждый ЛС если находится в разных слотах имеет свой уникальный ид
Вот если б ЛСы лежали стопкой то ИД у каждого из них был бы одинаковым.
Люди кто знает если я не прав просвятите мну плиз)
правильно думаешь)

Vilson
28.02.2010, 11:46
Наконец-то удалось полностью автоматизировать этот процесс, теперь аугментация перебирается сама пока не будет получен нужный скил. Для тех кому интересно как определить какой нам попался скил:

в таймере где выбираем предметы первым делом вызваю

RequestExRqItemLink(MyName, TargetItemObjID);
в основном блоке:

if (ConnectName=MyName) and (FromServer) then
case pck[1] of
#$FE:if ReadH(2)=108 then //RequestExRqItemLinkReply
begin
ReadAugSkillID:=ReadH(34);
if NeedAugSkillID=ReadAugSkillID then
begin
TimerItemSelect.Enabled:=False;
TimerAugItem.Enabled:=False;
StartAug:=False;
SendMsg2(MyName, ' УСПЕШНО ПОЛУЧЕН СКИЛ : '+IntToStr(NeedAugSkillID));
Exit;
end;
SendMsg2(MyName, 'НУЖЕН : '+IntToStr(NeedAugSkillID)+ ', ПОЛУЧЕНО : '+IntToStr(ReadAugSkillID));
RequestRefineCancel(MyName, TargetItemObjID);
pck:='';
exit;
end;
end;

Только помните что AugSkillID это не SkillID, смотрите таблицу соответствия. Например
<augmentation id="16333"> <skillId val="3249"> <skillLevel val="10"> <!-- Passive: Increases your critical attack rate. -->
<augmentation id="16284"> <skillId val="3244"> <skillLevel val="10"> <!-- Passive: Increases your P. Def. -->

Pitkin
05.03.2010, 20:56
Вот скрипт переделанный под Gracia Epilogue (фришка).На простом финале не тестил,если кому надо проверьте сами....const
nik='name';

var
WeaponID, LsID, GemID, GemCount, zero: 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 = HStr('56 19 00 00 00 00 00 00 00 00')) then //62 AB 07 00 00 00 00 00 00 (Social No)

begin
buf:=hstr('FE 52 00 ');//окно удаления арГ
SendToClient;
delay(400);
pck:='';
Buf:=#$D0#$42#$00;
WriteD(WeaponID);
SendToServerEx(nik);
Buf:=#$D0#$43#$00;
WriteD(WeaponID);
SendToServerEx(nik);

end;

//Augment
if FromClient and (pck = HStr('56 18 00 00 00 00 00 00 00 00')) then //62 A5 07 00 00 00 00 00 00 (Social Yes)
begin
buf:=hstr('FE 51 00 ');//окно Арг
SendToClient;
delay(400);
pck:='';
Buf:=#$D0#$26#$00;
WriteD(WeaponID);
SendToServerEx(nik);
delay(350);
Buf:=#$D0#$27#$00;
WriteD(WeaponID);
WriteD(LsID);
SendToServerEx(nik);
delay(400);
Buf:=#$D0#$28#$00;
WriteD(WeaponID);
WriteD(LsID);
WriteD(GemID);
WriteD(GemCount);
WriteD(zero);
SendToServerEx(nik);
delay(400);
Buf:=#$D0#$41#$00;
WriteD(WeaponID);
WriteD(LsID);
WriteD(GemID);
WriteD(GemCount);
WriteD(zero);
SendToServerEx(nik);
end;
end.

dAsk
06.03.2010, 21:33
На моем сервере (Хроники HellBound) при нажатии на соц. действие просто ничего не происходит. Я сравнивал пакеты вроде все сходится, есть подозрение что менять что-то нужно в этой части
begin
WeaponID:=ReadD(4);
LsID:=ReadD(8);
GemID:=ReadD(12);
GemCount:=ReadD(16);
end;

какие пакеты нужно просматривать чтобы что-то подстраивать под свой сервер в этой части скрипта?

ER ER
24.04.2010, 11:14
const
nik='KpucaTX';

var
WeaponID, LsID, GemID, GemCount, zero: 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);
zero:=ReadD(20);
end;

//Cancel Augment

if FromClient and (pck = HStr('34 05 00 00 00')) then //34 05 00 00 00 (Social No)

begin
buf:=hstr('FE 52 00 ');//окно удаления арГ
SendToClient;
delay(300);
pck:='';
Buf:=#$D0#$45#$00;
WriteD(WeaponID);
SendToServerEx(nik);
Buf:=#$D0#$46#$00;
WriteD(WeaponID);
SendToServerEx(nik);

end;

//Augment
if FromClient and (pck = HStr('34 06 00 00 00')) then //34 06 00 00 00 (Social Yes)
begin
buf:=hstr('FE 51 00 ');//окно Арг
SendToClient;
delay(300);
pck:='';
Buf:=#$D0#$26#$00;
WriteD(WeaponID);
SendToServerEx(nik);
delay(50);
Buf:=#$D0#$27#$00;
WriteD(WeaponID);
WriteD(LsID);
SendToServerEx(nik);
delay(50);
Buf:=#$D0#$28#$00;
WriteD(WeaponID);
WriteD(LsID);
WriteD(GemID);
WriteD(GemCount);
WriteD(zero);
SendToServerEx(nik);
delay(50);
Buf:=#$D0#$44#$00;
WriteD(WeaponID);
WriteD(LsID);
WriteD(GemID);
WriteD(GemCount);
WriteD(zero);
SendToServerEx(nik);
end;
end.

la2world.ru
Hlb

проблема в том что WeaponID меняется после аугментации и ее снятия. Как возможно это исправить?

пробывал это:
http://coderx.ru/showthread.php?t=4070

так же изменик пакеты аугментации и ее снятия на свои в PacketsT2. И ничего не помогло

L2.exe
14.12.2010, 12:15
begin
buf:=hstr('FE 52 00 ');//окно удаления лс
SendToClient;
buf:=hstr('FE 51 00 ');//окно Арг
SendToClient;
buf:=hstr('43 26 00 0E 1C 07 10');//вещь
SendToServer;
buf:=hstr('43 27 00 0E 1C 07 10 7D 46 06 10');//лс
SendToServer;
buf:=hstr('43 28 00 0E 1C 07 10 7D 46 06 10 93 5D 05 10 19 00 00 00');//гемы
SendToServer;
buf:=hstr('FE 51 00 ');//окно удаления арг
SendToClient;

buf:=hstr('43 45 00 5D FB 03 10 ');//вещь
SendToServer;
end.
Это не в 1 нажатие:p

Не моё)),украл где то)),но вроде работает