|
Нужна помощь. - Общение и обсуждение, архив Lineage 2 - Cобытия, информация, вопросы и ответы по Lineage 2 |
26.07.2012, 18:25
|
#1
|
|
|
|
Разведчик
|
Регистрация: 26.07.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Нужна помощь.
Лагает при покупке точек и предметов, а при точке все нормально.
Помогите хочу что бы не залагивало при покупке.
|
Цитата: |
|
|
|
|
|
|
|
|
program Enchant;
Const
CharName = 'ghhj' ;
ScrollID = 959 ;
ItemID = 6591 ;
EnchantTarget = 17 ;
MaxScrolls = 35;
MaxItems = 20 ;
TimerInterval = 270;
Var
ItemBase : Array[1..100,1..4] of integer ; // ItemID, ObjId, void, void
ItemCount : integer ;
ItemToEnchant, Scroll : Integer ;
Timer : TTimer ;
Enabled : boolean ;
procedure BuyItem ;
Var
i : integer ;
begin
buf := hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 35 00 35 00 38 00 00 00') ;
SendToServerEx(CharName) ;
delay(500) ;
for i := 1 to MaxItems do
Begin
buf := hstr('A7 2E 02 00 00 27 00 00 00 01 00 00 00') ;
SendToServerEx(CharName) ;
delay(500) ;
End ;
end ;
procedure BuyScroll ;
Var
i : integer ;
begin
buf := hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 35 00 39 00 30 00 00 00') ;
SendToServerEx(CharName) ;
delay(500) ;
For i := 1 to MaxScrolls do
Begin
buf := hstr('A7 4E 02 00 00 11 00 00 00 01 00 00 00') ;
sendtoserverEx(CharName) ;
delay(500) ;
End ;
end ;
Procedure GetItemBase ;
Var
i : integer ;
ReadIndex : integer ;
Begin
Timer.Enabled := False ;
For i := 1 to 8 do
Begin
ItemBase[i,1] := 0 ;
ItemBase[i,2] := 0 ;
ItemBase[i,3] := 0 ;
ItemBase[i,4] := 0 ;
End ;
ReadIndex := 4 ;
ItemCount := ReadH(ReadIndex) ;
For i := 1 to ItemCount do
Begin
ReadH(ReadIndex) ;
ItemBase[i,2] := ReadD(ReadIndex) ; //objID
ItemBase[i,1] := ReadD(ReadIndex) ; //ItemID
ReadD(ReadIndex) ;
ReadH(ReadIndex) ;
ReadH(ReadIndex) ;
ReadH(ReadIndex) ;
ReadD(ReadIndex) ;
ItemBase[i,3] := ReadH(ReadIndex) ; //EnchLvl
ReadH(ReadIndex) ;
End ;
Timer.Enabled := true ;
End ;
Procedure FindItemToEnchant ;
Var
I : Integer ;
Begin
ItemToEnchant := 0 ;
For i := 1 to 80 do
Begin
If (ItemBase[i,1] = ItemID) and (ItemBase[i,3] < EnchantTarget) then
Begin
ItemToEnchant := ItemBase[i,2] ;
Exit ;
End ;
End ;
End ;
Procedure FindScroll ;
Var
I : Integer ;
Begin
Scroll := 0 ;
For i := 1 to 80 do
Begin
If (ItemBase[i,1] = ScrollID) then
Begin
Scroll := ItemBase[i,2] ;
Exit ;
End ;
End ;
End ;
Procedure EnchantItem ;
Begin
buf := hstr('14') ;
WriteD(Scroll) ;
WriteD(0) ;
SendToServerEx(CharName) ;
delay(600) ;
buf := hstr('58') ;
WriteD(ItemToEnchant) ;
SendToServerEx(CharName)
End ;
Procedure OnTimer(Sender : TObject) ;
Var
i : Integer ;
Begin
Timer.Enabled := False ;
FindItemToEnchant ;
FindScroll ;
If (ItemToEnchant <> 0) and (Scroll <> 0) then
EnchantItem
Else
Begin
If Scroll = 0 then BuyScroll ;
If ItemToEnchant = 0 then BuyItem ;
buf:=hstr('0F');
SendToServerEx(CharName);
End ;
Timer.Enabled := True ;
End ;
Procedure Init ;
Var
i : Integer ;
Begin
Timer := TTimer.Create(nil) ;
Timer.Interval := TimerInterval ;
Timer.Enabled := False ;
Timer.Ontimer := @OnTimer ;
buf:=hstr('0F');
SendToServerEx(CharName);
End ;
Procedure Free ;
Begin
Timer.Free ;
End ;
{Begin
if FromServer then
Begin
if pck[1] = #$1B then
Begin
GetItemBase ;
Timer.Enabled := True ;
End ;
End ;
End. }
Procedure UpdateItemBase ;
Var
ReadIndex : Integer ;
Count : Integer ;
i, j : Integer ;
CItem : Integer ;
UpdType : integer ;
ObjID, IID, IC, EnchLvl : integer ;
Begin
ReadIndex := 2 ;
Count:=ReadH(ReadIndex) ;
For i := 1 to Count do
Begin
UpdType := ReadH(ReadIndex) ;
ReadH(ReadIndex) ;
ObjID := ReadD(ReadIndex) ;
IID := ReadD(ReadIndex) ;
ReadD(ReadIndex) ;
ReadH(ReadIndex) ;
ReadH(ReadIndex) ;
ReadH(ReadIndex) ;
ReadD(ReadIndex) ;
EnchLvl := ReadH(ReadIndex) ;
ReadH(ReadIndex) ;
Case UpdType of
1 : Begin
For j := 1 to 80 do
If ItemBase[j,1] = 0 then
Begin
ItemBase[j,1] := IID ;
ItemBase[j,2] := ObjID ;
ItemBase[j,3] := EnchLvl ;
j := 80 ;
End ;
End ;
2 : Begin
For j := 1 to 80 do
Begin
If ItemBase[j,2] = ObjID then
Begin
ItemBase[j,3] := EnchLvl ;
j := 80 ;
End ;
End ;
End ;
3 : Begin
For j := 1 to 80 do
Begin
if ItemBase[j,2] = ObjID then
Begin
ItemBase[j,1] := 0 ;
ItemBase[j,2] := 0 ;
ItemBase[j,3] := 0 ;
ItemBase[j,4] := 0 ;
j := 80 ;
End ;
End ;
End ;
End ;
End ;
End ;
Begin
If FromServer then
Begin
If pck[1] = #$27 then UpdateItemBase ;
If pck[1] = #$1B then GetItemBase ;
End ;
End . |
|
|
|
|
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 17:16.
|
|