Скриптинг Форум посвещенный созданию скриптов для L2PacketHack
29.10.2009, 18:56
#1
Новичок
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Скрипт на обмен (HB)
Написал простой скрипт на обмен КоЛов, и обмен на гейтпассы. Но где-то ошибка, и не могу понять где. Скрипт нормально обменивает колы, но потом утыкается и не хочет переходить на вторую часть.
Да, и еще, как можно сделать проверку на конкретный пакет s19=NpcHtmlMessage:d(MessageID)s(HTML)d(d)?
Id у них одинаковые, но мессаги внутри разные. Нужно их как-то определять, и исходя из сообщения, направлять скрипт.
ЗЫ Сам запостил, сам поковырял, сам исправил =) Выкладываю рабочую версию. Запускается действием Приветствие.
__________________
Shadows anywhere...
Последний раз редактировалось Shadow, 30.10.2009 в 01:14 .
29.10.2009, 19:01
#2
Новичок
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
delphi Код:
//Константы
const
Name='Nick' ; //Вписать сюда имя чара
DebugMode=False ;
//***
Max =100 ; //количество слотов в инвентаре чара
kID=1023000 ; //смещение C6
//------------------------------------------------------------------------------
//Список переменных
var
Item, Cnt: integer ;
ReadyBuy, ReadyChange, NeedToBuy, NeedToChange, Start, TimerRun: boolean ;
Timer1: TTimer;
BuyDelay, ScriptDelay: integer ;
MyX, MyY, MyZ, MyOID, ObjectID: integer ; //Статы
//==============================================================================
//******************************************************************************
//21=RequestBypassToServer:s(Cmd)
procedure RequestByPassToServer( cmd:string ) ;
begin
buf:=#$23 ;
WriteS( cmd) ;
SendToServerEx( Name) ;
end ;
//******************************************************************************
procedure RequestMultiSellChoose( ListId, EntryID, Count:integer ) ;
begin
SendMsg_to_Private( 'Покупаем ListID:' +IntToStr ( ListID) +' EntryID:' +IntToStr ( EntryID) +' в кол-ве:' +IntToStr ( count) ) ;
buf:=#$B0;
WriteD( ListID) ;
WriteD( EntryId) ;
WriteD( Count) ;
SendToServerEx( Name) ;
end ;
//==============================================================================
//******************************************************************************
procedure Init; //Вызывается при включении скрипта
begin
Timer1:=TTimer.Create ( nil ) ;
Timer1.OnTimer :=@OnTimer1;
Timer1.Enabled :=false ;
Timer1.Interval :=1000 ;
TimerRun:=False ;
Cnt:=0 ;
Start:=True ;
end ;
//***---------------------------------------------------------------------------
procedure Free; //Вызывается при выключении скрипта
begin
Timer1.free ;
end ;
//***---------------------------------------------------------------------------
//==============================================================================
procedure OnTimer1( Sender: TObject ) ;
begin
if Start then begin
MenuChange;
Start:=False ;
end ;
if NeedToChange then begin
DebugMsg( 'Menu ->' ) ;
MenuChange;
DebugMsg( '>- Change' ) ;
end ;
if NeedToBuy then begin
DebugMsg( 'Menu ->' ) ;
MenuBuy;
DebugMsg( '>- Buy' ) ;
end ;
DebugMsg( 'Timer ' +inttostr ( Cnt) +' - ' +( Name) ) ;
Cnt:=( Cnt+1 ) ;
end ;
//***---------------------------------------------------------------------------
procedure MenuChange;
begin
buf := HStr( '22 7A 00 7A 00 7A 00 5F 00 72 00 65 00 6C 00 61 00 78 00 5F 00 63 00 61 00 74 00 31 00 5F 00 39 00 36 00 30 00 2E 00 68 00 74 00 6D 00 00 00' ) ;
ReadyChange:=True ;
SendToServerEx( Name) ;
delay( 150 ) ;
end ;
//***---------------------------------------------------------------------------
procedure MenuBuy;
begin
buf := HStr( '22 7A 00 7A 00 7A 00 5F 00 72 00 65 00 6C 00 61 00 78 00 5F 00 63 00 61 00 74 00 31 00 5F 00 39 00 30 00 30 00 2E 00 68 00 74 00 6D 00 00 00' ) ;
SendToServerEx( Name) ;
DebugMsg( '1 ->' ) ;
delay( 300 ) ;
buf := HStr( '22 7A 00 7A 00 7A 00 5F 00 72 00 65 00 6C 00 61 00 78 00 5F 00 63 00 61 00 74 00 31 00 5F 00 39 00 30 00 37 00 2E 00 68 00 74 00 6D 00 00 00' ) ;
ReadyBuy:=True ;
SendToServerEx( Name) ;
DebugMsg( '2 ->' ) ;
delay( 150 ) ;
end ;
//***---------------------------------------------------------------------------
procedure MenuReturn;
begin
buf := HStr( '22 7A 00 7A 00 7A 00 5F 00 72 00 65 00 6C 00 61 00 78 00 5F 00 63 00 61 00 74 00 31 00 5F 00 30 00 30 00 31 00 2E 00 68 00 74 00 6D 00 00 00' ) ;
SendToServerEx( Name) ;
delay( 150 ) ;
end ;
//***---------------------------------------------------------------------------
//###################### Сообщения #############################################
// послать сообщение в чат себе
procedure SendMsg_to_Chat( ChatType: integer ; msg:string ) ; // отправка системных сообщений клиенту
begin
buf:=#$4A;
WriteD( 0 ) ;
WriteD( ChatType) ;
WriteS( Name) ;
WriteS( msg) ;
SendToClientEx( Name) ;
end ;
// послать отладочное сообщение себе
procedure DebugMsg( msg:string ) ;
begin
if DebugMode then
SendMsg_to_Private( msg) ;
end ;
// послать сообщение себе в приват
procedure SendMsg_to_Private( msg:string ) ;
begin
SendMsg_to_Chat( 2 ,msg) ;
end ;
//###############################################################################
__________________
Shadows anywhere...
Последний раз редактировалось Shadow, 29.10.2009 в 20:48 .
За это сообщение Shadow нажился 2 спасибками от:
29.10.2009, 19:02
#3
Новичок
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Я чего-то не понял, как код теперь всталять, если ограничение в 5000 символов???
delphi Код:
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
//****************************************************************************
//не обрабатываем пустые пакеты
if pck='' then exit ;
//****************************************************************************
if FromClient and ( pck=#$34 #$02 #$00 #$00 #$00 ) then begin
if Not TimerRun then begin
Timer1.Enabled :=True ;
TimerRun:=True ;
DebugMsg( 'Timer Running' ) ;
end ;
end ;
if ReadyChange then begin
NeedToChange:=False ;
NeedToBuy:=False ;
if ( ConnectName=Name) and FromServer then begin
DebugMsg( 'S>Need to Change. Timer Stop' ) ;
Timer1.Enabled :=False ;
case pck[1 ] of
//s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
#$19 : begin
//DebugMsg(IntToStr(ReadD(4)));
//шлем запрос выбора пункта - продажа c21=RequestBypassToServer:s(Cmd)
delay( 150 ) ;
RequestByPassToServer( 'menu_select?ask=-11&reply=19001' ) ;
DebugMsg( 'C>Пакет RequestBypassToServer' ) ;
end ;
#$D0: begin
Timer1.Enabled :=False ;
DebugMsg( 'S>Пакет MultiSellList #$D0' ) ;
RequestMultiSellChoose( 19001 , 3 , 1 ) ;
delay( 350 ) ;
ReadyChange:=False ;
MenuReturn;
NeedToBuy:=True ;
Timer1.Enabled :=True ;
end ;
end ;
end ;
end ;
if ReadyBuy then begin
NeedToChange:=False ;
NeedToBuy:=False ;
if ( ConnectName=Name) and FromServer then begin
DebugMsg( 'S>Need to Buy. Timer Stop' ) ;
Timer1.Enabled :=False ;
case pck[1 ] of
//s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
#$19 : begin
//DebugMsg(IntToStr(ReadD(4)));
//шлем запрос выбора пункта - продажа c21=RequestBypassToServer:s(Cmd)
delay( 150 ) ;
RequestByPassToServer( 'menu_select?ask=-9&reply=15006' ) ;
DebugMsg( 'C>Пакет RequestBypassToServer' ) ;
end ;
#$D0: begin
Timer1.Enabled :=False ;
DebugMsg( 'S>Пакет MultiSellList #$D0' ) ;
RequestMultiSellChoose( 15006 , 11 , 1333 ) ;
delay( 350 ) ;
ReadyBuy:=False ;
MenuReturn;
NeedToChange:=True ;
Timer1.Enabled :=True ;
end ;
end ;
end ;
end ;
end .
__________________
Shadows anywhere...
Последний раз редактировалось Shadow, 29.10.2009 в 20:48 .
За это сообщение Shadow нажился 2 спасибками от:
30.10.2009, 00:09
#4
Рыцарь
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
Цитата:
Сообщение от
Shadow
Я чего-то не понял, как код теперь всталять, если ограничение в 5000 символов???
Прикрепляй файлом.
За это сообщение NLObP нажился спасибкой от:
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 04:58 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!