Скриптинг  Форум посвещенный созданию скриптов для L2PacketHack  
	
	
	
	
	
	
	
	
	
	
	
	
		
		 
	
	
	
	
	 
 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#621  
	
 
	
			
            
			
			Пользователь
			
			
		
			
			
			
				 
				Регистрация: 03.09.2009
				
				
				
					Сообщений: 63
				
				 
	Сказал Спасибо: 19
	
		
			
				Имеет 5 спасибок в 3 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			Пробуй, только отпишись!  я сам нубась в это м деле
		
	
		
		
		
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение tiranosaur нажился спасибкой от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#622  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 25.02.2008
				Адрес: г.Волгоград
				
				
					Сообщений: 2,009
				
				 
	Сказал Спасибо: 1,285
	
		
			
				Имеет 1,458 спасибок в 793 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			xeno , попробуй вот так
	delphi Код:
	procedure  Init; //Вызывается при включении скрипта 
begin 
end ;
procedure  Free; //Вызывается при выключении скрипта 
begin 
end ;
//основная часть скрипта 
//вызывается при приходе каждого пакета если скрипт включен 
begin 
    if  FromServer then 
    begin 
        case  pck[1 ] of 
            #$05 :     //пакет 05=SpawnItem 
            begin 
                case  pck[10 ] of   //по смещению 10 находится ItemID 
                    17 , 57 , 1341 ..1345 : pck:='' ; //дропаем стрелы, адену, деревянные и т.д. стрелы 
                end ;
            end ;
            #$16 :      //пакет 16=DropItem 
            begin 
                case  pck[6 ] of  //по смещению 06 находится ItemID 
                    17 , 57 , 1341 ..1345 : pck:='' ; //дропаем стрелы, адену, деревянные и т.д. стрелы 
                end ;
            end ;
        end ;
    end ;
end .
  
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение NLObP нажился 2 спасибками от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#623  
	
 
	
			
            
			
			Пользователь
			
			
		
			
			
			
				 
				Регистрация: 03.09.2009
				
				
				
					Сообщений: 63
				
				 
	Сказал Спасибо: 19
	
		
			
				Имеет 5 спасибок в 3 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			А мой не покатит?
		
	
		
		
		
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#624  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 25.02.2008
				Адрес: г.Волгоград
				
				
					Сообщений: 2,009
				
				 
	Сказал Спасибо: 1,285
	
		
			
				Имеет 1,458 спасибок в 793 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	Цитата:
	
	
		
			
				
					Сообщение от 
tiranosaur 
					А мой не покатит?
			
		 
	 
	
 Будет работать. Только мой вариант, ИМХО, побыстрее. У тебя по два раза считывает из ячеек значение ItemID. Да и развить мой вариант по удалению других предметов проще.
			
				Последний раз редактировалось NLObP, 08.02.2010 в 01:23 .
				
				 
			
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#625  
	
 
	
			
            
			
			Новичок
			
			
		
			
			
			
				 
				Регистрация: 23.01.2010
				
				
				
					Сообщений: 7
				
				 
	Сказал Спасибо: 3
	
		
			
				Имеет 0 спасибок в 0 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			tiranosaur , 
NLObP , 
спасибо ребят.
кстати разве в этой часте скрипта 
	Код:
	case pck[10] of  
                    17, 57, 1341..1345: pck:=''; 
 ид итемов надо прописывать не в хексе?
да точно
			
				Последний раз редактировалось xeno, 08.02.2010 в 02:51 .
				Причина: добавлено
				 
			
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#626  
	
 
	
			
            
			
			Пользователь
			
			
		
			
			
			
				 
				Регистрация: 03.09.2009
				
				
				
					Сообщений: 63
				
				 
	Сказал Спасибо: 19
	
		
			
				Имеет 5 спасибок в 3 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
				 
			Подскажите где ошибка пжл. сервер грация
	delphi Код:
	const 
 NickName = '3ayp' ;   
 HPMedium = 95 ;  
 HPBottleID = 1061 ;  //1061=Healing Potion; 
 DrinkDelay = 14 ;
 InvRazmer = 79 ;  
var  
 MyX, MyY,MyZ : integer ;   
 MyID, MyHP, MyMaxHP: integer ;
 MyMP, MyMaxMP : integer ;
 HPlevelProcent : integer ;   
      CurrentInvRazmer : integer ; 
 TargetID : integer ;
 time1: integer ;
 Inventory: array[0 ..InvRazmer , 0 ..9 ] of  integer ;  
 HPBottleObjID: integer ;
HpBottleCount: integer ;
procedure  Init; //Вызывается при включении скрипта 
 begin   
  MyID:= 0 ;
  MyX:= 0 ;
  MyY:= 0 ;
  MyZ:= 0 ;
  MyID:= 0 ;
  MyHP:= 0 ;
  MyMaxHP:= 0 ;
  MyMP:= 0 ;
  MyMaxMP:= 0 ;
  TargetID:=0 ;
  time1:=1 ;
  buf:= #$14 ;                           
  SendToServerEx( NickName) ;  
 end ;
function  Wait( var  tick: integer ;Timewait: Integer ) : Boolean ; // сквозная проверка без остановки скрипта (c)dmitry501, modifed by Sh00rGo 
 var 
  t: integer ;
 begin 
  result:=false ;
  t:=Round ( Time *86400 ) ;
  if  t>( tick+Timewait)  then  begin 
    if  tick>0  then  result:=true ;
    tick:=t;
  end ;
 end ; 
procedure  UseItemID( ItemID:integer ) ;       //Использовать предмет с заданным ItemID 
 var 
  ObjItemID : integer ;
 begin 
  ObjItemID:= GetInv( ItemID,2 ,1 ) ;
  if  ObjItemID = -1  then  exit ;
  buf:=#$19 ;
  WriteD( ObjItemID) ;
  WriteD( 0 ) ;
  SendToServerEx( NickName) ;;
 end ;
procedure  InventoryCreate;
var 
  i,k, offset : integer ;
begin 
   offset:= 76  ;
  CurrentInvRazmer:=ReadH( 4 ) ;
 for  i:=0  to  InvRazmer do   
      if  i < CurrentInvRazmer then  begin 
      Inventory[i,0 ]:=ReadH( i*( 28 +offset) +6 ) ;  // itemType1 
      Inventory[i,1 ]:=ReadD( i*( 28 +offset) +8 ) ;  // ObjectId 
      Inventory[i,2 ]:=ReadD( i*( 28 +offset) +12 ) ; // ItemID 
      Inventory[i,3 ]:=ReadD( i*( 28 +offset) +16 ) ; // count 
      Inventory[i,4 ]:=ReadH( i*( 28 +offset) +20 ) ; // itemType2 
      Inventory[i,5 ]:=ReadH( i*( 28 +offset) +22 ) ; // CustType1 
      Inventory[i,6 ]:=ReadH( i*( 28 +offset) +24 ) ; // isEquipped 
      Inventory[i,7 ]:=ReadD( i*( 28 +offset) +26 ) ; // BodyPart 
      Inventory[i,8 ]:=ReadH( i*( 28 +offset) +30 ) ; // EnchantLevel 
      Inventory[i,9 ]:=ReadH( i*( 28 +offset) +32 ) ; // CustType2 
    end  else 
      for  k:=0  to  9  do  Inventory[i,k]:=0 ; // забиваем нулями 
end ;
procedure  InventoryUpdate;
 var 
  i,j,k, offset: integer ;
 begin 
  offset:= 82 ;
  for  j:=0  to  ( ReadH( 2 ) -1 )  do 
   begin 
    case  pck[j*offset+4 ] of 
     #$01 : k:=0 ; // add item, запишет на пустую ячейку 
     #$02 : k:=ReadD( j*offset+8 ) ; // mod item 
     #$03 : begin  // remove item, обнулит ячейки удаленного предмета 
            k:=ReadD( j*offset+8 ) ;
            for  i:=0  to  InvRazmer do  if  ( Inventory[i,1 ]=k)  then 
             begin 
              for  k:=0  to  9  do  Inventory[i,k]:=0 ;
              exit ;
             end ;
           end ;
    end ;
    for  i:=0  to  InvRazmer do  if  ( Inventory[i,1 ]=k)  then 
     begin 
      Inventory[i,0 ]:=ReadH( j*offset+6 ) ;  // itemType1 
      Inventory[i,1 ]:=ReadD( j*offset+8 ) ;  // ObjectId 
      Inventory[i,2 ]:=ReadD( j*offset+12 ) ; // ItemID 
      Inventory[i,3 ]:=ReadD( j*offset+20 ) ; // count 
      Inventory[i,4 ]:=ReadH( j*offset+24 ) ; // itemType2 
      Inventory[i,5 ]:=ReadH( j*offset+26 ) ; // CustType1 
      Inventory[i,6 ]:=ReadH( j*offset+28 ) ; // isEquipped 
      Inventory[i,7 ]:=ReadD( j*offset+30 ) ; // BodyPart 
      Inventory[i,8 ]:=ReadH( j*offset+34 ) ; // EnchantLevel 
      Inventory[i,9 ]:=ReadH( j*offset+36 ) ; // CustType2 
      break ;
     end ;
   end ;
 end ;
 			
				Последний раз редактировалось NLObP, 09.02.2010 в 00:32 .
				
				 
			
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#627  
	
 
	
			
            
			
			Пользователь
			
			
		
			
			
			
				 
				Регистрация: 03.09.2009
				
				
				
					Сообщений: 63
				
				 
	Сказал Спасибо: 19
	
		
			
				Имеет 5 спасибок в 3 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
				 
			
	delphi Код:
	function  GetInv( obj,up,down:integer ) : integer ; // up и down не проверяются 
   var  // 0-itemType1, 1-ObjectId, 2-ItemID, 3-count, 4-itemType2, 5-CustType1, 6-isEquipped, 7-BodyPart, 8-EnchantLevel, 9-CustType2 
    i: integer ;
 begin 
  for  i:=0  to  CurrentInvRazmer do  if  ( Inventory[i,up]=obj)  then 
   begin 
    Result:=Inventory[i,down];
    exit ;
   end ;
  Result:=-1 ;
end ;
procedure  UseItemObjID( ItemObjID:integer ) ;       //Использовать предмет с заданным ItemID 
 begin 
  buf:=#$19 ;
  WriteD( ItemObjID) ;
  WriteD( 0 ) ;
  SendToServerEx( NickName) ;;
 end ;
procedure  UserInfo;            // обновление донных о себе 
 var 
  i:word ;
 begin 
  MyID:=ReadD( 18 ) ;
  MyX:=ReadD( 2 ) ;
  MyY:=ReadD( 6 ) ;
  MyZ:=ReadD( 10 ) ;
  i:=22 ;
  ReadS( i) ;
  i:=i+48 ;
  MyMaxHP:=ReadD( i) ;
  MyHP:=ReadD( i) ;
  MyMaxMP:=ReadD( i) ;        // чисто информативно 
  MyMP:=ReadD( i) ;
 end ;
procedure  StatusUpdate;       // обновление данных о себе 
 var 
  i:integer ;
 begin 
  for  i:=0  to  ReadD( 6 ) -1  do 
   case  pck[i*8 +10 ] of 
    #$09 : MyHP:=ReadD( i*8 +14 ) ;
    #$0A: MyMaxHP:=ReadD( i*8 +14 ) ;
    #$0B: MyMP:=ReadD( i*8 +14 ) ;
    #$0C: MyMaxMP:=ReadD( i*8 +14 ) ;
   end ;
  if  MyMaxHP > 0  then  HPlevelProcent:= Round ( ( MyMaxHP/100 ) *HPlevelProcent) ;
 end ;
procedure  DrinkBottle;          // пьем бутылки и следим за их количеством 
 begin 
  if  ( HPBottleCount > 0 )  and  ( HPBottleObjID > 0 ) then 
   begin 
    UseItemObjID( HPBottleObjID) ;
    UseItemID( HPBottleID) ;
    dec  ( HPBottleCount) ;
   end ;
 end ; 
begin                    // Далее обработка входящих пакетов 
 if  pck = ''  then  exit ;
 if  ( ConnectName = NickName)  and  FromServer then 
  case  pck[1 ] of 
   #$32 : if  ReadS( 22 )  = NickName then  UserInfo;
   #$18 : if  MyID=ReadD( 2 )  then      //   StatusUpdate:h(ObjectID)d(Attributes) 
           begin 
            StatusUpdate;
            if  ( MyHP > 0 )  and  ( MyHP < HPlevelProcent)  then  if  Wait( time1, DrinkDelay)  then  DrinkBottle;     // пьем бутылки с интервалом в 19 сек 
            if  ( MyHP > 0 )  and  ( MyHP > HPlevelProcent)  then  time1:=1 ;
           end ;
    #$11 : begin 
           InventoryCreate;  // Инвентарь 
           if  HPBottleID <> 0  then 
            begin 
             HPBottleObjID:= getinv( HPBottleID, 2 ,1 ) ;
             HPBottleCount:= getinv( HPBottleID, 2 ,3 ) ;
            end ;
            end ;           
    #$21 : begin 
           InventoryUpdate;
           if  HPBottleID <> 0  then 
            begin 
             HPBottleObjID:= getinv( HPBottleID, 2 ,1 ) ;
             HPBottleCount:= getinv( HPBottleID, 2 ,3 ) ;
            end ;             
          end ;
 end ;    
end .
 
//nlobp: заключайте код в теги [ HIGHLIGHT = "delphi" ][ / HIGHLIGHT ] (самая правая решетка, параметр delphi) 			
				Последний раз редактировалось NLObP, 09.02.2010 в 00:34 .
				
				 
			
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#628  
	
 
	
			
            
			
			Рыцарь
			
			
		
			
				
			
			
			
				 
				Регистрация: 25.02.2008
				Адрес: г.Волгоград
				
				
					Сообщений: 2,009
				
				 
	Сказал Спасибо: 1,285
	
		
			
				Имеет 1,458 спасибок в 793 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			tiranosaur , заремь строку
PS: проверяйте код в редакторе скриптов пакетхака, строки с ошибками он покажет.
			
				Последний раз редактировалось NLObP, 09.02.2010 в 00:36 .
				
				 
			
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	
		
			
				
					За это сообщение NLObP нажился спасибкой от: 
				
				
				
			 
			 
	
  
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#629  
	
 
	
			
            
			
			Пользователь
			
			
		
			
			
			
				 
				Регистрация: 03.09.2009
				
				
				
					Сообщений: 63
				
				 
	Сказал Спасибо: 19
	
		
			
				Имеет 5 спасибок в 3 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			Дык закоменчена она а скрипт не хилит((( Я просто хочу написать автохил минимального размера. но что-то даже это пока не идет. Помочь может кто?
		
	
		
		
		
		
		
		
		
		
		
	
	 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
	
	
		
	
		
	
				
			
			 
		
			 
			#630  
	
 
	
			
            
			
			Новичок
			
			
		
			
			
			
				 
				Регистрация: 23.01.2010
				
				
				
					Сообщений: 7
				
				 
	Сказал Спасибо: 3
	
		
			
				Имеет 0 спасибок в 0 сообщенях
			
		
	
				
				
				
				    
			 					
		
	 
	
	
	
		
		
			
			
			
	Код:
	begin
    if FromServer then
    begin
        case pck[1] of
            #$05 :     //пакет 05=SpawnItem
            begin
                case pck[10]  of  //по смещению 10 находится ItemID
                    17, 57, 1341..1345: pck:=''; //дропаем стрелы, адену, деревянные и т.д. стрелы
                end;
            end;
            #$16 :      //пакет 16=DropItem
            begin
                case pck[6]  of //по смещению 06 находится ItemID
                    17, 57, 1341..1345: pck:=''; //дропаем стрелы, адену, деревянные и т.д. стрелы
                end;
            end;
        end;
    end;
end. 
 в общем сегодня выдался день потестить скрипты.
у 
NLObP , сразу заметил что итемид в пакетах дропитем и спавнитем перепутаны местами, но самая печаль, то что скрипт выдает ошибку 
Could not convert variant of type (String) into type (Double). 
скрипт 
tiranosaur , вообще не блочил пакеты, хотя поидее он должен работать.
 
 
	
		 
	
	
	
		
		
		
		
		
			 
 
 
	 
	
		 	
	 
 
		
 
	
		
 
  
	
		
	
		 
 
 
	
		
		Вы не можете  создавать темы
		Вы не можете  отвечать на сообщения
		Вы не можете  прикреплять файлы
		Вы не можете  редактировать сообщения
		HTML код Выкл. 
	  
 
	 
	
		
	 
 
Часовой пояс GMT +4, время: 01:54 .
		 	
	 
 
	
	
	
	vBulletin style designed by 
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: 
zCarot 
	
 
 
 
 
Вы хотите чувствовать себя в безопасности? чоп  Белган обеспечит её!