Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

help по скриптам

-

Общение и обсуждение, архив Lineage 2

- Cобытия, информация, вопросы и ответы по Lineage 2

Ответ
 
Опции темы
Старый 05.12.2011, 15:14   #1
 Сержант
Аватар для AnotherTest
 
AnotherTest блестящий пример для подражанияAnotherTest блестящий пример для подражанияAnotherTest блестящий пример для подражанияAnotherTest блестящий пример для подражанияAnotherTest блестящий пример для подражанияAnotherTest блестящий пример для подражанияAnotherTest блестящий пример для подражанияAnotherTest блестящий пример для подражанияAnotherTest блестящий пример для подражанияAnotherTest блестящий пример для подражанияAnotherTest блестящий пример для подражания
Регистрация: 24.06.2010
Сообщений: 167
Популярность: 2000
Сказал(а) спасибо: 936
Поблагодарили 224 раз(а) в 109 сообщениях
 
По умолчанию help по скриптам

собственно первый раз решил воспользоваться скриптами на автоточку, и впал в ступор...на последовательности действий.

прошу помочь, разложить все по полочкам.

К примеру как делаю я.
Код:
//  для любых хроник
//  в пати чат пишем уровень заточки
//  можно менять в процесе работы скрипта
//  заточить один раз чтоб запомнить чем и что точить
//  точить для запоминания  по одному предмету 
//  если будите точить   разные предметы
//  предметы должны  соответствовать применяемому skrol
//  СТАРТ нажать соцдействие ДА
//  СТОП нажать соцдействие  НЕТ
//  включить системные сообщения соцдействие - приветствие \ hello 
//  выключить системные сообщения соцдействие - победа \ victory 
//  дальше скрипт сам точит до указаного уровня заточки
//  все предметы одинаковые с первыми  заточеными
//  точит первый предмет до максима потом второй и т.д
//  т.е если вы заточили несколько разных предметов
//  одного класса армор или веапон они будут точиться
//  АВТОР ==>>>> TAMBIK
program Enchant_gracia;
   const
   myname='TAMBIK'; //<<== пишем свой НИК
   max=140;//<<== колличество ячеек в рюкзаке
      var
    BaseItems:array[1..max,1..11] of integer;
    BaseID:array[1..max] of integer;
    Timer01: TTimer;
    Timer02: TTimer;
    Timer03: TTimer;
    flag,start,select,selectID,autoMsg:Boolean;
    autostart:Boolean;
    mytext:string; 
    ListSize,ItemEnch:word; 
    textID,itemID:integer;
    enchantObjectID:integer;
    enchantID,skrolObjectID:integer; 
    ItemOID,objectOID: integer;  
    sumskrol,sumitemID: integer;
    key,x,y,ii:integer;
    maxlvl: integer;
    GetiD:integer;
    skrolID,skrolObj:integer;
    t,l,d:integer;
//-----------------------------------------
procedure SendMsg2(msg:string);
begin 
if autoMsg  then begin
  buf:=#$4A;
  WriteD(0);
  WriteD(3);
  WriteS('');
  WriteS(msg);
  SendToClientEx(myname);
end;
end;
//===========================================
procedure Resultmaxlvl;
var
  i:integer;
begin
 if FromClient and (pck[1]=#$49) then begin
    i:=2;
    mytext:=ReadS(i);
    textID:=ReadD(i);
 if (textID=3)  then begin
     maxlvl:=StrToInt(mytext);
SendMsg2( '  установлен Уровень Заточки: '+IntToStr(maxlvl)+'' ); 
  pck:='';
 exit;
end;
end;
end;
//.............................................................................. 
procedure ItemList;
var
  i, j, k: integer;
  count,x:integer; 
 begin
   count:=0;
   x:=0;
   y:=0;
   j:=4; //пропускаем дo ListSize
  ListSize:=ReadH(j); 
  for i:=1 to ListSize do
  if (i<=ListSize) then begin
      BaseItems[i,1]:=ReadH(j);  //ItemType1- 1:одето броня. 0:бижа. 4:в рюкзаке
      BaseItems[i,2]:=ReadD(j);  //ObjectID
      BaseItems[i,3]:=ReadD(j);  //ItemID
      BaseItems[i,4]:=ReadD(j);  //LocationSlot
      BaseItems[i,5]:=ReadD(j);  //  Amount: 
      BaseItems[i,6]:=ReadD(j);  //  Amount: 
      BaseItems[i,7]:=ReadH(j);//ItemType2
      BaseItems[i,8]:=ReadH(j);// CustomType1
      BaseItems[i,9]:=ReadH(j);//isEquipped: 
      BaseItems[i,10]:=ReadD(j);//BodyPart
      BaseItems[i,11]:=ReadH(j);//EnchantLevel
             inc(x); // счетчик 
    count:=round((Length(pck)-5) / ListSize);// длина блока
         //y := пропускаем до следущего блока
    y:=count*x-(j-6);// . 6= длина ListSize + 4 байта пропуска в начале пакета
            inc(j,y); 
  end else for k:=1 to 11 do BaseItems[i,k]:=0; // забиваем нулями

if (0 < skrolObjectID)  then begin
    sumskrol:=Getitem(skrolID,3,5);
    SendMsg2 ('   SKROL ... c  ID : '+IntToStr(skrolID)+' =  '+IntToStr(sumskrol)+' ШТ ');
     if start and (0<sumskrol) then  Timer01.enabled:=true;
     if (sumskrol=0) then  begin
                Timer01.enabled:=false;
                stopselectskrol;
       SendMsg2 ('........ НЕДОСТАТОЧНО  SKROL........  ');
         SendMsg2 ('___ О С Т А Н О В Л Е Н О ___ ');
     end;
  end;
end;
//=============================
procedure EnchantResult;
  begin
 
  end;
//=============================
procedure InventoryUpdate;
var
 Id,ObjId:integer;
begin 
   ObjId:=ReadD(8); 
    Id:=ReadD(12); 
SendMsg2 ('удален предмет Id : '+IntToStr(Id)+'  ObjectID: '+IntToStr(ObjId)+' ');
    deleteBase;
 end;
//=============================
procedure deleteBase;
var
  i,j,k:integer;  
 begin
    for i:=1 to max do
 if (BaseItems[i,2]=enchantID) then begin
      BaseItems[i,1]:=0;
      BaseItems[i,2]:=0; //ObjectID  
      BaseItems[i,3]:=0;  //ItemID
      BaseItems[i,4]:=0;  
      BaseItems[i,5]:=0; 
      BaseItems[i,6]:=0; 
      BaseItems[i,7]:=0;
      BaseItems[i,8]:=0;
      BaseItems[i,9]:=0;
      BaseItems[i,10]:=0;
      BaseItems[i,11]:=0;
               inc(j,y);  
 end else for k:=1 to 11 do BaseItems[i,k]:=0; // забиваем нулями
end;
//===========================================
//         
//===========================
function Getitem(Obj,up,down:integer): integer; 
var 
  i: integer;
begin
 Result:= 0; //В начале у нас 0
  for i:=1 to max do
    if (BaseItems[i,up]=Obj) then begin
      Result:=BaseItems[i,down];
   end;
end;
//===========================
function Getsumitem(Obj,up,down:integer): integer; 
var 
  i: integer;
begin
 Result:= 0; //В начале у нас 0
  for i:=1 to max do
    if (BaseItems[i,up]=Obj) then begin
      Result:=Result+BaseItems[i,down];
   end;
end;
//=================================
//добавляем в базу ID предмета
procedure addIDtoarray(ItemOID:integer);
 begin
  SendMsg2( '------------------------------------- ' );
  SendMsg2 (' добавить в базу для заточки  ID : '+IntToStr(ItemOID)+'  Предмета    ');
  SendMsg2(' .................' );
   flag:=false; 
   for ii:=1 to max do 
 if  (BaseID[ii]=ItemOID) then begin // текущий ID уже есть в массиве,
     flag := true;
     sumitemID:=Getsumitem(ItemOID,3,5);//счет скоко предметов
     SendMsg2 (' предмет в базе  есть с ID : '+IntToStr(ItemOID)+'  =  '+IntToStr(sumitemID)+' ШТ ');
     SendMsg2( '------------------------------------- ' );
     Break;  // прерываем дальнейший перебор массива.
     end;
 if (flag = false) then begin
         for ii:=1 to max do 
     if (BaseID[ii]=0) then begin // добавим ID  в массив,
     BaseID[ii]:=ItemOID;
  sumitemID:=Getsumitem(ItemOID,3,5);//счет скоко предметов
  SendMsg2 (' Добавлен  Предмет с ID :  '+IntToStr(ItemOID)+'  =  '+IntToStr(sumitemID)+'  ШТ  ');
  SendMsg2( '------------------------------------- ' );
 Break;  // прерываем дальнейший перебор массива.
 end;
end;
end;
//=============================
procedure ChooseInventory;
begin

  if (itemID>0) then  begin
            objectOID:=GetObjectID(itemID);//находим по ItemID  предмет с ObjectID
      if (objectOID=0) then begin
               stopselectskrol;
               SendMsg2 ('  предметов c ID : '+IntToStr(itemID)+' для заточки НЕТ ! ! ! ! ');
              for ii:=1 to max do 
           if  (BaseID[ii]=itemID) then begin
                  BaseID[ii]:=0;
          SendMsg2 ('    ..... ПОИСК ______ ПРЕДМЕТА..... ');
                     GetItemID ;
              Break;  // прерываем дальнейший перебор массива.
                     end;
  if (itemID=0) then  begin
       SendMsg2 ('___НЕТ ПРЕДМЕТОВ ДЛЯ ЗАТОЧКИ___ ');
       SendMsg2 ('    ___ О С Т А Н О В Л Е Н О ___ ');
            stopselectskrol;
               start:=false;
        end;
   end;
end;
end;

//=================================
//  GetiD:=GetItemID(itemID);//находим в базе ItemID предмет для Заточки
//находим ItemID предмета для Заточки в базе ItemID
procedure GetItemID ;
 begin
 if start  then begin
     if (maxlvl=0)  then begin
                   SendMsg2 ('   неуказан уровень заточки ');
                 stopselectskrol;
                   SendMsg2 ('___ О С Т А Н О В Л Е Н О ___ ');
                    end;
  if (maxlvl>0)  then begin
            itemID:=0;
                 for ii:=1 to max do 
             if (BaseID[ii]<>0) then begin
                      itemID:=BaseID[ii];
      SendMsg2 (' НАШЛИ ПРЕДМЕТ для ЗАТОЧКИ с ID = '+IntToStr(itemID)+' ');
                    Timer01.enabled:=true;
    Break;  // прерываем дальнейший перебор массива.
end;
end;
end;
end;
//=================================
//находим enchantID предмета по  ItemID для заточки
function GetObjectID(itemID:integer) : integer;
var
  i:integer;
begin
enchantID:= 0;
  ItemEnch:=0;  
  Result:= 0;
   SendMsg2('------------------------------' );
 if (itemID>0) then begin
      SendMsg2 ('    ищем ObjectID предмета с ID  :  ' +IntToStr(itemID)+' ');
    SendMsg2('------------------------------' );
     for i:=1 to max do
 if (BaseItems[i,3]= itemID) and (BaseItems[i,11]< maxlvl) then begin
     enchantID:=BaseItems[i,2];
      Result:=BaseItems[i,2];
     ItemEnch:=BaseItems[i,11];
 SendMsg2('   ..... найден предмет для заточки  ..... ');
 SendMsg2(' ID  : '+IntToStr( itemID)+' и ObjectID : '+IntToStr(enchantID)+' заточен до : '+IntToStr(ItemEnch)+' ');
 SendMsg2('------------------------------' );
     if (enchantID>0) then startselectEnch;
      Break;  // прерываем дальнейший перебор массива.
   end;
end;
 end;
//==========================
procedure stopselectskrol;
begin
  buf:=hstr('D04E00');
 SendToServerEx(myname);
end;
//===================================
procedure OnTimer01(Sender: TObject);
begin
  buf:=#$19;
  WriteD(skrolObjectID);
  WriteD(0);
  SendToServerEx(myname);
 Timer01.enabled:=false;
   end;
//--------------------------
procedure startselectEnch;
begin
   Timer02.enabled:=true
 end;
procedure OnTimer02(Sender: TObject);
begin
   buf:=hstr('D04C00');
   WriteD(enchantID);
   SendToServerEx(myname);
   Timer02.enabled:=false;
   Timer03.enabled:=true;
   end;
procedure OnTimer03(Sender: TObject);
begin 
   buf:=#$5F;
   WriteD(enchantID);
   WriteD(0);
   SendToServerEx(myname);
   Timer03.enabled:=false;
  SendMsg2('      .....    Точим Предмет    ..... ');
 SendMsg2( ' ID :  '+IntToStr(itemID)+'  ObjectID : '+IntToStr(enchantID)+'  -  до  :  '+IntToStr(maxlvl)+' ' );
 SendMsg2( '_______________________________' );
 end;
//-----------------------------------------
procedure Init;
begin
  t:=0;l:=0;d:=0;
  autostart:=false;
  flag:=false;
  selectID:=false;
  autoMsg:=true; 
   GetiD:=0;
   sumskrol:=0;
   objectOID:=0;
   maxlvl:=0;
   itemID:=0;
   enchantID:=0;
   ItemEnch:=0;
   start:=false;
   select:=false;
   skrolObjectID:=0;
   enchantObjectID:=0;
   Timer01:=TTimer.Create(nil);
   Timer01.OnTimer:=@OnTimer01;
   Timer01.enabled:=false;
   Timer01.interval:=400; //<<== время  выбора свитка
 
   Timer02:=TTimer.Create(nil);
   Timer02.OnTimer:=@OnTimer02;
   Timer02.enabled:=false;
   Timer02.interval:=400; //<<== время  выбора предмета

   Timer03:=TTimer.Create(nil);
   Timer03.OnTimer:=@OnTimer03;
   Timer03.enabled:=false;
   Timer03.interval:=3000; //<<== время между заточкой  

 SendMsg2( 'в пати чат пишем уровень заточки' );
 SendMsg2( '    заточить предметы один раз ! ! !' );
 SendMsg2( '  СТАРТ  соцдействие  ДА ' );
 SendMsg2( '  СТОП   соцдействие  НЕТ' );
 SendMsg2('В К Л сообщения соцдействие-приветствие\hello  ' );
 SendMsg2('ВЫКЛ  сообщения соцдействие-победа\victory   ' );
  SendMsg2( '------------------------------------- ' );
   buf:=hstr('14');
   SendToServerEx(myname);
  for ii:=1 to max do 
      BaseID[ii]:=0;
 end;
procedure Free;
begin
  Timer01.free;
  Timer02.free;
  Timer03.free;
end;
//=========================
procedure RequestActionUse;
begin
case ReadD(2) of
  12:begin  autoMsg:=true;   pck:=''; exit; end; 
  13:begin  autoMsg:=false;  pck:=''; exit; end; 
 24:begin
   if (autostart=false) then SendMsg2( 'предмет незаточен или пакеты неприняты !' );
   if autostart  then begin
      SendMsg2( '     ! ! !   П О Е Х А Л И    ! ! !' );
      SendMsg2( '_______________________________' );
     start:=true;
      GetItemID ;
        pck:='';
     exit;     
     end;
     end;
 25:begin
     start:=false;
     enchantID:=0;
     ItemEnch:=0;
     Timer01.enabled:=false;
     Timer02.enabled:=false;
     Timer03.enabled:=false;
    SendMsg2( '         ! ! !   С Т О П   ! ! ! ' );
    stopselectskrol;
    pck:='';
    exit;     
   end;
end;
end;

//=========
begin
//не обрабатываем пустые пакеты
  if pck='' then exit; 
 if FromServer and (pck[1]=#$87) then EnchantResult;
 if FromServer and (pck[1]=#$21) and (ReadH(4)=3)then InventoryUpdate;
 if FromServer and (pck[1]=#$11) then ItemList;
 if FromServer and (pck[1]=#$7C) then ChooseInventory;
 if FromClient and (pck[1]=#$49) then Resultmaxlvl;
 if FromClient and (pck[1]=#$56) then RequestActionUse;
 
begin
 if (start=false) and FromClient then   
    case pck[1] of
 #$19:begin 
      t:=1;
    skrolObjectID:=ReadD(2);
    skrolID:= Getitem(skrolObjectID,2,3);//находим по ObjectID скрол с ItemID
    SendMsg2(' .................' );
    SendMsg2('   активирован SKROL  ID : '+IntToStr(skrolID)+' ' );
    SendMsg2(' .................' );
        buf:=hstr('14');
        SendToServerEx(myname);
     end;
 #$D0:if  ReadH(2)=76 then  begin
       l:=1;
       SendMsg2('    окно выбора предмета ' );
       SendMsg2(' .................' );
     end;
 #$5F:begin
       d:=1;
    enchantObjectID:=ReadD(2);
    if  (t=1) and (l=1) and (d=1) then begin
        autostart:=true;
       ItemOID:= Getitem(enchantObjectID,2,3);//находим по ObjectID предмет с ItemID
       SendMsg2 (' заточен предмет  c  ID  :  '+IntToStr(ItemOID)+'  ');
       SendMsg2(' .................' );
       addIDtoarray(ItemOID);//добавляем в базу ID предмета
       stopselectskrol;
      end;
     end;
   end;
end;
end. 
 
 
 
 
 
 
 
 
 
 
 
 
 вкл на соц  приветствие
 
 
 
 
 const
   nik='NIK';   //сюда свой ник
   Enchant=5;

var
   UseItem, EnchantItem: string;
   Count, CurrentEnch: integer;
   Timer01: TTimer;

procedure Init;
begin
   Timer01:=TTimer.Create(nil);
   Timer01.OnTimer:=@OnTimer01;
   Timer01.enabled:=false;
   Timer01.interval:=3200;   //скорость точки
end;

procedure OnTimer01(Sender: TObject);
begin
   buf:=UseItem;
   SendToServerEx(nik);
   buf:=EnchantItem;
   SendToServerEx(nik);
end;

procedure Free;
begin
  Timer01.free;
  count:=0;
  CurrentEnch:=0;
end;

begin
    if FromServer and (pck[1]=#$87) then
       begin
          if ReadD(2)=0 then inc(CurrentEnch);
          if CurrentEnch=Enchant then Timer01.enabled:=false;
       end;
    if FromClient and (pck[1]=#$19) then UseItem:=pck;
    if FromClient and (pck[1]=#$5F) then EnchantItem:=pck;
    if FromClient and (pck=#$34#$02#$00#$00#$00) then
       begin
          pck:='';
          Timer01.enabled:=not(Timer01.enabled);
       end;
end.
как делаю я:
1.ставлю галочку на выполнение
2.пишу в пати чат 80
3.точу вещь что бы запомнил
4.жму СТАРТ нажать соцдействие ДА

ии всё.ничего не происходит.ни на 1 сервере(опробовал около 50)
пробовал всеми скриптами что смог найти.Ни 1 не пашет.Тоесть тупо ни-че-го не происходит...

Добавлено через 12 часов 4 минуты
потестил еще 3 версии, так и не вкурил что к чему...может кто поможет?
________________
Не стоит принимать доброту за слабость, грубость за силу, а подлость — за умение
жить

Последний раз редактировалось AnotherTest; 06.12.2011 в 03:18. Причина: Добавлено сообщение
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Скрипт] Помощь по Скриптам par-vova Боты, скрипты и прочий софт для Aion 9 15.10.2011 13:47
Небольшой вопрос и предложения по скриптам! WiDragon Вопросы и ответы, обсуждения 1 26.12.2009 22:49

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 02:32.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net