Рейтинг@Mail.ru
Чистка инвентаря в варехауз - Форум atms
Главная Мой профиль Регистрация Выход Вход
- Суббота, 02:00:1
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Скриптинг L2PHX "Lineage C4" (Давно заброшенный раздел) » Скрипты L2PHX "для хроник С4" » Чистка инвентаря в варехауз
Чистка инвентаря в варехауз
ПользовательДата: Вторник, 01 Января 2013, 22:06 | Сообщение # 1
Некто
Группа: Обычный пользователь
Сообщений: 141
Репутация: 19
Статус: Нет на форме
Имя в скрипте определяется автоматически, вводить его не требуется.
Скрипт освобождает инвентарь от хлама, сбрасывая в варехаус стопковые предметы
которые уже имеются на складе и в инвентаре.
К примеру на складе лежит 142 Animal Bone и в инвентаре 18 Animal Bone,
Скрипт просматривает склад и инвентарь, и выявляет что Animal Bone имеется там и там,
потом, собрав в список все подобные предметы перекидывает их на склад, избавляя
вас от нудной работы по отчистке инвентаря.
Скрипт так же работает со складом клана.

1) Подойти в варехаус к начальнику склада
2) Выбрать "Забрать вещи с личного склада"
(при этом скрипт запомнит все предметы на складе, и появится
сообщение в чате "Вещи на складе запомнены")
3) Выбрать "Положить вещи на хранение"
(скрипт запомнит все предметы в инвентаре, и появится
сообщение в чате "Вещи в инвентаре запомнены")
4) Ввести в пати чат цифры 777, скрипт начнет составлять список вещей которые
имеются в инвентаре и на складе, в итоге перекинет хлам из инвентаря на склад,
появится сообщение в чате о кол-ве перенесенных предметов и о том что все готово.


Код

//Автор ATMS_DIFKS
var
ListItems,ListCount:integer;
Items:array[1..200] of integer;
Count:array[1..200] of integer;
Items2:array[1..200] of integer;
Count2:array[1..200] of integer;
ObjectId:array[1..200] of integer;
find:array[1..200] of integer;
findC:array[1..200] of integer;
findO:array[1..200] of integer;
i,i2,n,m,n2,m2,i3,i4,fn:integer;
name:string;
procedure Init; //Вызывается при включении скрипта
begin

end;

procedure Free; //Вызывается при выключении скрипта
begin

end;

procedure SendMsc(msc:string);    
begin    
buf:=#$4A;    
WriteD(0);    
WriteD(2); //тип сообщения 1 шаут 2 приват 10 аноним обьявление и тд
WriteS(''); //ник от кого
WriteS(msc);    
SendToClientEX(name);    
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
          if fromserver and (pck[1]=#$42) then
          begin        
          name := ConnectName;    
          SendMsc('Имя в скрипте определяется автоматически, вы: '+name);
          ListItems := ReadH(8); n:=-16;    
                
            for i:=1 to 200 do begin Items[i]:=0; Count[i]:=0; end;
            for i:=1 to ListItems do
            begin     
             n:=n+32;  m:=n-4;    
            Items[i]:=ReadD(m+4);
            Count[i]:=ReadD(m+8);    
           // SendMsc(inttostr(i)+')  '+inttostr(Items[i])+' = '+inttostr(m+4)+' C='+inttostr(Count[i]));
            end;
                
            SendMsc('Вещи на складе запомнены');
       
          end;    
             
             
             
          if fromserver and (pck[1]=#$41) then
          begin              
          name := ConnectName;    
          SendMsc('Имя в скрипте определяется автоматически, вы: '+name);
          ListCount := ReadH(8); n2:=-16;    
          //SendMsc(inttostr(ListCount));
              
            for i2:=1 to 200 do begin Items2[i2]:=0; Count2[i2]:=0; end;
           for i2:=1 to ListCount do
            begin
            n2:=n2+32;  m2:=n2-4;
            Items2[i2]:=ReadD(m2+4);
            Count2[i2]:=ReadD(m2+8);    
            ObjectId[i2]:=ReadD(m2+22+4);    
         // SendMsc(inttostr(i2)+')  '+inttostr(Items2[i2])+' = '+inttostr(m2)+' C='+inttostr(Count2[i2])+' OID='+inttostr(ObjectId[i2]));
            end;    
            SendMsc('Вещи в инвентаре запомнены');
          end;     
             
             
          If fromclient and (pck=hstr('38 37 00 37 00 37 00 00 00 03 00 00 00')) and (ConnectName=name) then     
          begin    
          pck:=''; fn:=0;
           SendMsc('start');     
                
            for i4:=1 to 200 do
            begin
               for i3:=1 to 200 do
               begin
                if Items[i3] = Items2[i4] then
                begin
                  if Count[i3] > 1 then    
                  begin
                  fn:=fn+1;
                  find[fn]:=Items[i3];
                  findC[fn]:=Count2[i4];
                  findO[fn]:=ObjectId[i4];
                  end;
                end;
                   
               end;    
             end;    
                
           { for i:=1 to 200 do
            begin
             if i <= fn then  SendMsc(inttostr(i)+') id='+inttostr(find[i])+' c='+inttostr(findC[i])+' o='+inttostr(findO[i]));
            end;
            }
               
            if fn > 0 then
            begin      
            buf:=#$31;    
            WriteD(fn);
             for i:=1 to fn do
             begin       
              WriteD(findO[i]);
              WriteD(findC[i]);    
             end;          
             SendToServerEX(name);
            SendMsc('Готово, '+inttostr(fn)+' тип предметов было отправлено на склад.');    
            fn:=0;
            end else  SendMsc('Чистка скрипта не требуется');
                 
          end;
end.


Да хранит вас Ctrl+S.
Да убережет вас Alt+F4 от порнобанера.
Админь...
 
Форум » Скриптинг L2PHX "Lineage C4" (Давно заброшенный раздел) » Скрипты L2PHX "для хроник С4" » Чистка инвентаря в варехауз
  • Страница 1 из 1
  • 1
Поиск:

atms 2009 © 2024