Показать сообщение отдельно
Старый 16.02.2009, 00:26   #2
Местный
 
Аватар для 8tomat8
 
Регистрация: 17.01.2009
Сообщений: 282
Сказал Спасибо: 64
Имеет 81 спасибок в 63 сообщенях
8tomat8 пока неопределено
По умолчанию

PHP код:
//Автоматизация заточки предметов до необходимого уровня
program zatochka_IL

{
Затачиваем поочереди все предметы с WeaponID пока не переломаем или не заточим 

Работа проверена на локальном Интерлюда сервере 

Необходимо затариться оружием
заточками и валерьянкой

Социальное действие YES начать заточку предметов 
Социальное действие NO 
остановиться 

Enjoy


Скрипт распространяется как естьи я не несу ответственности за точто 
ВЫ натворили у себя
его используя.} 

const
  
Name='Niksan'//Вписать сюда имя чара
  
ScrollID=6577;     //957 ScrollID скролла заточки
  
ItemID=6580;    //129 ItemIDID затачиваемого предмета
  
MaxEnchLvl=15//уровень заточки который требуется достич
  
max=200;     //количество слотов в инвентаре чара, максимально - 250

var 
  
ItemBase:  array[1..2,1..maxof integer;    //ItemID ObjID, lvl 
  
ScrollBase:  array[1..maxof integer;    //Scroll 
  
addboolean//прошла заточка? 
  
timerTTimer
  
CurEnchLvlColvoItemColvoScrlCurItemCurScrlinteger
  
SocialID:integer// вспомогательная 

procedure Init//Вызывается при включении скрипта 
var 
  
i:integer
begin 
  
//Enchant:=false; 
  
CurEnchLvl:=0
  
timer:=TTimer.Create(nil); 
  
timer.OnTimer:=@OnTimerHP
  
timer.enabled:=false
  
timer.interval:=1500//время задержки
  
add:=false
  for 
i:=1 to max do begin 
    
//очищаем масив 
    //Say('очищаем масив'); 
    
ItemBase[1,i]:=0
    
ItemBase[2,i]:=0
  
end

  
//Пакет RequestItemList 
  
buf:=hstr('0F'); 
  
SendToServerEx(Name); 
end

//****************************************************************************** 
procedure Free//Вызывается при выключении скрипта 
begin 
  ItemBase
:=nil
  
ScrollBase:=nil
  
timer.Free
end

//****************************************************************************** 
procedure Say(msg:string); 
begin 
  buf
:=hstr('4A 00 00 00 00'); 
  
WriteD(2); 
  
WriteS(Name); 
  
WriteS(msg); 
  
SendToClientEx(Name); 
end

//****************************************************************************** 
procedure CreateItemBase//пакет 1B, Создает базу ObjectID по ItemID 
var 
  
isswwjObjIDItmIDlvlListCountinteger
begin 
  ss
:=1//индекс в массиве скроллов 
  
ww:=1//индекс в массиве предметов 
  
j:=4//смещение для ListCount 
  
ListCount:=ReadH(j); //количество итемов не должно превышать max! 
  
if ListCount>max then ListCount:=max
  
j:=8//смещение для ObjectID 
  //Пробегаем по Инвентарю и сохраняем ObjectID соответствующие необходимым ItemID 
  
for i:=1 to ListCount do begin 
     ObjID
:=ReadD(j);      //ObjectID 
     
ItmID:=ReadD(j);    //ItemID 
     
j:=j+14
     
Lvl:=ReadD(j);    //Level 
     
case ItmID of 
        ScrollID
begin 
            ScrollBase
[ss]:=ObjID
            
inc(ss); 
            
Say('ColvoScrl='+IntToStr(ss)); 
        
end
        
ItemIDbegin 
            ItemBase
[1,ww]:=ObjID
            
ItemBase[2,ww]:=lvl
            
inc(ww); 
            
Say('ColvoItem='+IntToStr(ww)); 
        
end
     
end
    
j:=j+10
  
end
  
ColvoItem:=ww-1
  
ColvoScrl:=ss-1
  
Say('>ColvoItem='+IntToStr(ColvoItem)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl)); 
end

//****************************************************************************** 
procedure UpdateItemBase//пакет 27, Создает базу ObjectID по ItemID 
var 
  
iiijsswwObjIDItmIDLvlListCountUpdTypeinteger
begin 
  ListCount
:=ReadH(2); //количество итемов 
  //Пробегаем по Инвентарю и сохраняем пары ObjectID - Lvl 
  
j:=4//смещение для действия с предметом 1-добавлен 2-изменен 3-удален 
//  Say('Апдейт базы!'); 
  
for i:=1 to ListCount do begin 
    UpdType
:=ReadH(j); 
    
j:=j+2
    
ObjID:=ReadD(j); 
    
ItmID:=ReadD(j); 
    
j:=j+14
    
Lvl:=ReadH(j); 
    
Say('Предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID)); 
    case 
UpdType of 
      1
:case ItmID of 
          ItemID
begin 
            ColvoItem
:=ColvoItem+1
            
Say('Добавили предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID)); 
            for 
ii:=1 to max do 
              if 
ItemBase[1,ii]=0 then begin ItemBase[1,ii]:=ObjIDItemBase[2,ii]:=lvlend
          
end
          
ScrollIDbegin 
            ss
:=ss+1
            
Say('Добавили скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ScrollID)); 
            for 
ii:=1 to max do if ScrollBase[ii]=0 then ScrollBase[ii]:=ObjID
          
end
      
end
      
2:case ItmID of 
        ItemID

          for 
ii:=1 to max do 
            if 
ItemBase[1,ii]=ObjID then ItemBase[2,ii]:=lvl
        
ScrollID
          
Say('Внимание! Изменения в скролле!?'); 
      
end
      
//удален 
      
3:case ItmID of 
        ItemID
begin 
          ColvoItem
:=ColvoItem-1
          for 
ii:=1 to max do 
            if 
ItemBase[1,ii]=ObjID then begin ItemBase[1,ii]:=0ItemBase[2,ii]:=0end
              
Say('Удаляем предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID)); 
        
end
        
ScrollIDbegin 
          ColvoScrl
:=ColvoScrl-1
          for 
ii:=1 to max do 
            if 
ScrollBase[ii]=ObjID then ScrollBase[ii]:=0
            
Say('Удаляем скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ScrollID)); 
        
end
      
end
    
end
    
j:=j+10//следующее смещение для действия с предметом 1-добавлен 2-изменен 3-удален 
  
end
  
Say('>>ColvoItem='+IntToStr(ColvoItem)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl)); 
end

//****************************************************************************** 
function GetNextItemIDinteger
//Выдает ObjID предмета, если не найден в базе, выдает -1, 
//достигли макс уровня заточки -2, подбираем минимальный текущий уровень заточки -3 
var 
  
iinteger
begin 
  Result
:=-1
  if 
CurEnchLvl>=MaxEnchLvl then begin 
    Result
:=-2
    exit; 
  
end
  for 
i:=1 to max do begin 
    
//находим первый подходящий предмет 
    
if (ItemBase[1,i]<>0) and (ItemBase[2,i]<=CurEnchLvlthen begin 
      Result
:=ItemBase[1,i]; 
      exit; 
    
end
  
end
  
inc(CurEnchLvl); 
  
Result:=-3
end

//****************************************************************************** 
function GetNextScrollinteger
//Выдает ObjID скролла, если предмет не найден в базе, выдает -1 
var 
  
iinteger
begin 
  Result
:=-1
  for 
i:=1 to max do begin 
    
//находим первый подходящий предмет 
    
if (ScrollBase[i]<>0then begin 
      Result
:=ScrollBase[i]; 
      exit; 
    
end
  
end
end

//****************************************************************************** 
procedure UseItem(ObjectIDinteger); 
begin 
  buf
:=#$14; 
  
WriteD(ObjectID); 
  
WriteD(0); 
  
SendToServerEx(Name); 
end

//****************************************************************************** 
procedure RequestEnchantItem(ObjectIDinteger); 
begin 
  buf
:=#$58; 
  
WriteD(ObjectID); 
  
SendToServerEx(Name); 
end

//****************************************************************************** 
procedure OnTimerHP(SenderTObject); 
var 
  
Itemscrl:integer
begin 
    
if ColvoScrl=0 then begin 
      
///Say('Кончились скроллы! Прервано!'); 
      
timer.enabled:=false
      
buf:=('A7 47 F4 10 00 40 0D 03 00 01 00 00 00 00 00 00 00 00 00 00 00 '/// покупает Адену (продает 1 КОЛ)
      
SendToServer;
      
buf:=('Пакет на покупку скролов');
      
SendToServer;
      exit; 
    
end
    if 
ColvoItem=1 then begin
      Say
('Остался последний предмет! Прервано!'); 
      
timer.enabled:=false
      exit; 
    
end
    
Scrl:=GetNextScroll
    if 
scrl=-1 then begin 
      Say
('Нет такой заточки! Прервано!'); 
      
timer.enabled:=false
      exit; 
    
end
    
Item:=GetNextItemID
    case 
Item of 
      
-1begin 
          Say
('Нет такого предмета! Прервано!'); 
          
timer.enabled:=false
          exit; 
      
end
      -
2begin 
          Say
('Достигли максимальный уровень заточки! Прервано!'); 
          
timer.enabled:=false
          exit; 
      
end
      -
3begin 
          Say
('Подбираем текущий уровень заточки!'); 
          
timer.enabled:=true
          exit; 
      
end
    
end
    
//************************************************ 
    
UseItem(Scrl); 
    
RequestEnchantItem(Item); 
    
//************************************************ 
    
Say('Заточили предмет! ItemID='+IntToStr(Item)); 
end

//****************************************************************************** 
// вызывается при приходе каждого пакета, если скрипт включен 
//****************************************************************************** 
begin 
  
//**************************************************************************** 
  //не обрабатываем пустые пакеты 
  
if pck='' then exit; 

  
//**************************************************************************** 
  
if FromClient and (ConnectName=Name) and (pck[1]=#$1B) then begin 
    
SocialID:=ReadD(2); 
    case 
SocialID of 
      
//социальное действие Yes для начала затачивания 
      
6begin 
        CurEnchLvl
:=0
        
Say('Команда Старт!!!'); 
        
timer.enabled:=true
        exit; 
      
end
      
//социальное действие No для окончания 
      
5begin 
        Say
('Команда Стоп!!!'); 
        
timer.enabled:=false
        exit; 
      
end
    
end
  
end

  
//**************************************************************************** 
  
if FromServer then 
  
case pck[1of 
    
//Пакет ItemList 
    #$1B: CreateItemBase; //создание базы предметов 
    //если удалили предметы, стираем в базе предметов пары ObjectID - ItemID 
    #$27: UpdateItemBase; //Обновление базы, если принят пакет на удаление предмета 
  
end

end

Так Должно работать, токо я не понимаю что это за странный пакет?Оо чото в нем не правильно. Купи на 1 КОЛ столько сколько возможно точек и выложи пакет сюда, только покупай за 1 раз, а не по одной!

Добавлено через 1 минуту
Этот скрипт не закончеН!!! там надо поставить пакет на покупку, жду

Последний раз редактировалось 8tomat8, 16.02.2009 в 00:26. Причина: Добавлено сообщение
8tomat8 вне форума   Ответить с цитированием
За это сообщение 8tomat8 нажился спасибкой от: