Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 21.11.2007, 03:37   #81
Новичок
 
Регистрация: 13.11.2007
Сообщений: 10
Сказал Спасибо: 4
Имеет 1 спасибку в 1 сообщении
maxim22
По умолчанию

Все проверил в ручном режиме-- стою там.
Количество шотов и крючков считает верно..
отправил ПМ
maxim22 вне форума   Ответить с цитированием
Старый 22.11.2007, 12:22   #82
Гость
 
Сообщений: n/a
По умолчанию

Всем привет! Много чего уже прочел на форуме и есть некие мысли. Я не программист но немного понимаю. Так вот есть вопросик можно ли вызвать из скрипта выполнение другого скрипта при определенных условиях и после выполнения вызваного скрипта чтобы опять запускался первый скрипт, т.е. можно в принципе сделать чтобы второй скрипт вызывал 1 и завершался?
Нужно это для того чтобы когда боч на каче умер то реснулся в город и по проложеной схеме попер обратно на место кача.
ПанкРедиска тебе кстати удалось написать скриптик по открытию сундуков, если да то может в массы выложишь?
  Ответить с цитированием
Старый 28.11.2007, 15:01   #83
Новичок
 
Регистрация: 22.11.2007
Сообщений: 17
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Rubec
По умолчанию Re: Re:

Цитата:
Сообщение от mks
ты не прав, то что сумон атакует цель которая находится в таргете хозяина это все работа клиента, а пакет атаки сумона прост - тупо ИД таргета и его координаты, и пофиг где хозяин. А ид моба и его координаты мы берем от коммандира.
Я со своим скриптом уводил на кач сумона за пол карты от его хозяина
МКС плиз выложи скрипт свой на сумона чтоб на пол карты бегать )
Rubec вне форума   Ответить с цитированием
Старый 28.11.2007, 19:15   #84
Рыцарь
 
Аватар для mks
 
Регистрация: 21.09.2007
Сообщений: 376
Сказал Спасибо: 11
Имеет 218 спасибок в 106 сообщенях
mks пока неопределено
По умолчанию Re: Re:

Цитата:
Сообщение от Rubec
Цитата:
Сообщение от mks
ты не прав, то что сумон атакует цель которая находится в таргете хозяина это все работа клиента, а пакет атаки сумона прост - тупо ИД таргета и его координаты, и пофиг где хозяин. А ид моба и его координаты мы берем от коммандира.
Я со своим скриптом уводил на кач сумона за пол карты от его хозяина
МКС плиз выложи скрипт свой на сумона чтоб на пол карты бегать )
Этот скрипт я писал на скорую руку(за 5-10мин) чисто для быстрой прокачки чара с помощью суммона другова чара большого лвл.
скрипт узконаправленный и сырой, поэтому думаю не стоит его выкладывать для общего пользования....
__________________
FA©Q!
mks вне форума   Ответить с цитированием
Старый 29.11.2007, 14:27   #85
Новичок
 
Регистрация: 22.11.2007
Сообщений: 17
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Rubec
По умолчанию

Код:
//Скрипт на БД чтобы танцевал каждые 2 минуты и бегал за командиром
const //Dance
    d1='2F 11 01 00 00 00 00 00 00 00';    // Dance of Mystic
    d2='2F 15 01 00 00 00 00 00 00 00';    // Dance of Light
    d4='2F 10 01 00 00 00 00 00 00 00';    // Inspirations
    d3='2F 12 01 00 00 00 00 00 00 00';    // Dance of Fire
    d5='';    // Dance of Concentration

    var
    IDPartyMember, IDAssistTarget: String; //ИД командира и ИД его таргета и Собственный ИД
    CoordBDX, CoordBDY, CoordBDZ :String; //координаты бота
    NameBD, NameKomandos : String; // Имена
    x: integer;
    timerBD: TTimer;
    timerBD1: TTimer;

procedure OnTimerBD(Sender: TObject);
    begin
    Case x of
    1:  begin
        buf:=hstr(d1);
        SendToServerEx(NameBD);
        x:=x+1;
        end;
    2:  begin
        buf:=hstr(d2);
        SendToServerEx(NameBD);
        x:=x+1;
        end;
    3: begin
       bRun;
       x:=0;
       timerBD.enabled:=false;
       end;
    end;
    end;

procedure OnTimerBD1(Sender: TObject);
    begin
         timerBD.enabled:=true;
         x:=1;
    end;

procedure bRun;
     begin
         if (CoordBDX <> '') and (IDPartyMember <> '') then
         begin
              //выделяем командира, эмулируя щелчек мыши
              buf:=hstr('04') + IDPartyMember + CoordBDX + CoordBDY + CoordBDZ + hstr('00');
              SendToServerEX(NameBD);
              //бежим за командиром эмулируя повторный щелчек мыши по таргету
              buf:=hstr('04') + IDPartyMember + CoordBDX + CoordBDY + CoordBDZ + hstr('00');
              SendToServerEX(NameBD);
         end;
    end;

procedure Init; //Вызывается при включении скрипта
begin
     NameBD:='НИК БД;
     NameKomandos:='НИК КОМАНДИРА';
     timerBD:=TTimer.Create(nil);
     timerBD.OnTimer:=@OnTimerBD;
     timerBD.enabled:=false;
     timerBD.interval:=2000;
     x:=0;
     timerBD1:=TTimer.Create(nil);
     timerBD1.OnTimer:=@OnTimerBD1;
     timerBD1.enabled:=false;
     timerBD1.interval:=120000;
end;

procedure Free; //Вызывается при выключении скрипта
begin
     timerBD.Free;
     timerBD1.Free;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
      if pck='' then exit;

         //если от сервака принят пакет с ИД и Координатами членов пати то
         if FromServer and (pck[1]=#$a7) then
         begin
              //запоминаем ИД командира
              IDPartyMember:=pck[6] + pck[7] + pck[8] + pck[9];
         end;

       //если принят пакет от клиента с кординатами бд то
       if FromClient and (ConnectName=NameBD) and (pck[1]=#$48) then
       begin
            //запоминаем координаты
            CoordBDX:= pck[6] + pck[7] + pck[8] + pck[9];
            CoordBDY:= pck[10] + pck[11] + pck[12] + pck[13];
            CoordBDZ:= pck[14] + pck[15] + pck[16] + pck[17];
       end;


     //далее идут управляющие команды

       //если КОМАНДИР пишет в любой чат цифру "1" то
       if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
          if (pck[2]=#$31) and (pck[3]=#$00) then
          begin
               //убиваем этот пакет, чтоб сервер его не получил
               pck:='';
               //БД БЕЖИТ за КОМАНДИРОМ
               bRun;

               //выйти из рабочей части скрипта чтобы другие услови не проверяли убитый пакет нулевой длинны
               exit;
          end;
// запускаем танцы
    if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
           if (pck[2]=#$38) and (pck[3]=#$00) then
           begin
                //убиваем этот пакет, чтоб сервер его не получил
                pck:='';

                // бафы
                timerBD1.enabled:=true;
                timerBD.enabled:=true;
                x:=1;
           exit;
           end;

// остановить танцы
     if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
           if (pck[2]=#$39) and (pck[3]=#$00) then
               begin
                //убиваем этот пакет, чтоб сервер его не получил
                pck:='';

                timerBD1.enabled:=false;
                exit;
                end;
end.
Есть проблема с этим скриптом, наверное я чего то там намутил не так как надо хоть сам скрипт и работает но выскакивает ошибка в программе << Access violation at address 00512A77 in module "l2phx.exe". Read of address 00000043. >>
Да и после отключения скрипта ошибка продолжает выскакивать.
Rubec вне форума   Ответить с цитированием
Старый 30.11.2007, 12:29   #86
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: ДА БУДЕТ БОТ!

Код:
NameBD:='НИК БД;
NameKomandos:='НИК КОМАНДИРА';
Эти два пункта под своих чаров изменял? Обычно такая ошибка выскакивает когда не то имя стоит.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 02.12.2007, 21:04   #87
Гость
 
Сообщений: n/a
По умолчанию точка

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



Код:
 ВЫДЕЛИТЬ ВСЁ
//Автоматизация заточки предметов до необходимого уровня by NLObP
//Затачиваем поочереди все предметы с Weapon ID пока не переломаем или не заточим

//Работа проверена на L2C4 Protocol 660 LocalServer "L2J FORTRESS"

//Необходимо затариться оружием, заточками и валерьянкой
//Открываем инвентарь для инициализации скрипта
//Социальное действие YES начать
//Социальное действие NO остановиться

//Enjoy!

{Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.}

//******************************************************************************
const
  Name='NLObP';
  Scroll=957; // 957 - ItemID Crystall Scroll Enchant Weapon (Grade D)
  Weapon=129; // 129 - ItemID Sword of Revolution D-grade
  MaxEnchLvl=20; //max уровень заточки
  max=250;    //max количество предметов в базе
var
//  WpnObjID:  array[1..maxwpn,1..maxwpn] of integer;    //Weapon ObjID
  WpnBase:  array[1..2,1..max] of integer;    //Weapon ObjID,lvl
  ScrlBase:  array[1..max] of integer;    //Scroll ObjID
  add: boolean; //прошла заточка?
  timer: TTimer;
  CurEnchLvl, ColvoWpn, ColvoScrl, CurWpn, CurScrl: integer;
//******************************************************************************
procedure Init; //Вызывается при включении скрипта
var
  i:integer;
begin
  //Enchant:=false;
  CurEnchLvl:=0;
  timer:=TTimer.Create(nil);
  timer.OnTimer:=@OnTimerHP;
  timer.enabled:=false;
  timer.interval:=2500; //время задержки
  Say('Для инициализации скрипта, откройте инвентарь');
end;
//******************************************************************************
procedure Free; //Вызывается при выключении скрипта
begin
  WpnBase:=nil;
  ScrlBase:=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
  i, ss, ww, j, ObjID, ItemID, lvl, ListCount: integer;
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
     ItemID:=ReadD(j);    //ItemID
     j:=j+14;
     Lvl:=ReadD(j);    //Level
     case ItemID of
        scroll: begin
            ScrlBase[ss]:=ObjID;
            ss:=ss+1;
            //Say('ColvoScrl='+IntToStr(ss));
        end;
        weapon: begin
            WpnBase[1,ww]:=ObjID;
            WpnBase[2,ww]:=lvl;
            ww:=ww+1;
            //Say('ColvoWpn='+IntToStr(ww));
        end;
     end;
    j:=j+2; //для С4
//    j:=j+10; //для Интерлюдии
  end;
  ColvoWpn:=ww-1;
  ColvoScrl:=ss-1;
  Say('>ColvoWpn='+IntToStr(ColvoWpn)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl));
end;
//******************************************************************************
procedure UpdateItemBase; //пакет 27, Создает базу ObjectID по ItemID
var
  i, ii, j, ss, ww, ObjID, ItemID, Lvl, ListCount, UpdType: integer;
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);
    ItemID:=ReadD(j);
    j:=j+14;
    Lvl:=ReadH(j);
//    Say('Предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID));
    case UpdType of
      1:case ItemID of
          weapon: begin
            ColvoWpn:=ColvoWpn+1;
            //Say('Добавили предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(weapon));
            for ii:=1 to max do
              if WpnBase[1,ii]=0 then begin WpnBase[1,ii]:=ObjID; WpnBase[2,ii]:=lvl; end;
          end;
          scroll: begin
            ss:=ss+1;
            //Say('Добавили скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(scroll));
            for ii:=1 to max do
              if ScrlBase[ii]=0 then ScrlBase[ii]:=ObjID;
          end;
      end;
      2:case ItemID of
          weapon:
            for ii:=1 to max do
              if WpnBase[1,ii]=ObjID then WpnBase[2,ii]:=lvl;
          scroll:
            //Say('Внимание! Изменения в скролле!?');
      end;
      //удален
      3:case ItemID of
          weapon: begin
             ColvoWpn:=ColvoWpn-1;
             for ii:=1 to max do
              if WpnBase[1,ii]=ObjID then begin WpnBase[1,ii]:=0; WpnBase[2,ii]:=0; end;
              //Say('Удаляем предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(weapon));
          end;
          scroll: begin
             ColvoScrl:=ColvoScrl-1;
             for ii:=1 to max do
              if ScrlBase[ii]=ObjID then ScrlBase[ii]:=0;
              //Say('Удаляем скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(scroll));
          end;
      end;
    end;
    j:=j+2; //для С4
//    j:=j+10; //для Интерлюдии
  end;
  Say('>>ColvoWpn='+IntToStr(ColvoWpn)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl));
end;
//******************************************************************************
function GetNextWeapon: integer; //Выдает ObjID предмета, если  не найден в базе, выдает -1,
//достигли макс уровня заточки -2, подбираем мин текущий уровень заточки -3
var
  i: integer;
begin
  Result:=-1;
  if CurEnchLvl>=MaxEnchLvl then begin
    Result:=-2;
    exit;
  end;
  for i:=1 to max do begin
    //находим первый подходящий предмет
    if (WpnBase[1,i]<>0) and (WpnBase[2,i]=CurEnchLvl) then begin
      Result:=WpnBase[1,i];
      exit;
    end;
  end;
  CurEnchLvl:=CurEnchLvl+1;
  Result:=-3;
end;
//******************************************************************************
function GetNextScroll: integer; //Выдает ObjID скролла, если  не найден в базе, выдает -1
var
  i: integer;
begin
  Result:=-1;
  for i:=1 to max do begin
    //находим первый подходящий предмет
    if (ScrlBase[i]<>0) then begin
      Result:=ScrlBase[i];
      exit;
    end;
  end;
end;
//******************************************************************************
procedure UseItem(ObjectID: integer);
begin
  buf:=#$14;
  WriteD(ObjectID);
  WriteD(0);
  SendToServerEx(Name);
end;
//******************************************************************************
procedure RequesEnchantItem(ObjectID: integer);
begin
  buf:=#$58;
  WriteD(ObjectID);
  SendToServerEx(Name);
end;
//******************************************************************************
procedure OnTimerHP(Sender: TObject);
var
  wpn, scrl:integer;
begin
    if ColvoScrl=0 then begin
      Say('Кончились скроллы! Прервано!');
      timer.enabled:=false;
      exit;
    end;
    if ColvoWpn=1 then begin
      Say('Остался последний предмет! Прервано!');
      timer.enabled:=false;
      exit;
    end;
    Scrl:=GetNextScroll;
    if scrl=-1 then begin
      Say('Нет такой заточки! Прервано!');
      timer.enabled:=false;
      exit;
    end;
    Wpn:=GetNextWeapon;
    case wpn of
    -1: begin
          Say('Нет такого предмета! Прервано!');
          timer.enabled:=false;
          exit;
       end;
    -2: begin
          Say('Достигли максимальный уровень заточки! Прервано!');
          timer.enabled:=false;
          exit;
        end;
    -3: begin
          //Say('Подбираем текущий уровень заточки!');
          timer.enabled:=true;
          exit;
        end;
    end;
    //************************************************
    UseItem(Scrl);
    RequesEnchantItem(Wpn);
    //************************************************
    Say('Заточили предмет! Weapon='+IntToStr(Wpn));
end;
//******************************************************************************
// вызывается при приходе каждого пакета, если скрипт включен
//******************************************************************************
begin
  //****************************************************************************
  //не обрабатываем пустые пакеты
  if pck='' then exit;
  //****************************************************************************
  //социальное действие yes для начало точки
  if FromClient and (ConnectName=Name) and (pck=HStr('1B 06 00 00 00')) then begin
    CurEnchLvl:=0;
    Say('Команда Старт!!!');
    timer.enabled:=true;
  end;
  //****************************************************************************
  //социальное действие no для начало точки
  if FromClient and (ConnectName=Name) and (pck=HStr('1B 05 00 00 00')) then begin
    Say('Команда Стоп!!!');
    timer.enabled:=false;
  end;
  //****************************************************************************
  //ItemList
  if FromServer and (ConnectName=Name) and (pck[1]=#$1B) then CreateItemBase; //создание базы предметов
//  if (ColvoWpn=0) or (ColvoScrl=0) then exit; //если нет базы итемов, скрипт дальше не пустит
  //****************************************************************************
  //если удалились предметы, стираем в базе предметов пары ObjectID - ItemID
  if FromServer and (ConnectName=Name) and (pck[1]=#$27) then UpdateItemBase; //Обновление базы, если принят пакет на удаление предмета
end.
  Ответить с цитированием
Старый 02.12.2007, 22:44   #88
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: точка

Цитата:
Сообщение от Denou
подскажите пж че надо поменять в скрипте для точки S оружия и шмота и чтобы заработал, а то у меня не пашет
В эти места ставь ItemID предметов
Код:
Scroll=957; //ItemID Scroll Enchant, чем точим
Weapon=129; //ItemID предмета, которое точим
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 03.12.2007, 10:33   #89
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: точка

Цитата:
Сообщение от Denou
а где взять ItemID предмета?
1. В комплекте с пакетхаком идет ItemsID.ini. Можно в самом пакетхаке глянуть, сбросив и подобрав предмет.
Код:
для С4
959=Scroll: Enchant Weapon (Grade S)
960=Scroll: Enchant Armor (Grade S)
961=Crystal Scroll: Enchant Weapon (Grade S)
962=Crystal Scroll: Enchant Armor (Grade S)
2.Где то здесь на форуме выкладивали ссылку на файлик, поищи.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 05.12.2007, 00:39   #90
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re:

Цитата:
Сообщение от Rubec
Ну что никто так и не посмотрит скрипт на БД ??
Он у тебя рабочий. Ищи ошибку в другом месте. Вот он же с небольшими изменениями в логике включения бафов.
Код:
//Скрипт на БД чтобы танцевал каждые 2 минуты и бегал за командиром
const //Dance
    d1='2F 11 01 00 00 00 00 00 00 00';    // Dance of Mystic
    d2='2F 15 01 00 00 00 00 00 00 00';    // Dance of Light
    d4='2F 10 01 00 00 00 00 00 00 00';    // Inspirations
    d3='2F 12 01 00 00 00 00 00 00 00';    // Dance of Fire
    d5='';    // Dance of Concentration

    var
    IDPartyMember, IDAssistTarget: String; //ИД командира и ИД его таргета и Собственный ИД
    CoordBDX, CoordBDY, CoordBDZ :String; //координаты бота
    NameBD, NameKomandos : String; // Имена
    x: integer;
    timerBD: TTimer;
    timerBD1: TTimer;

procedure OnTimerBD(Sender: TObject);
    begin
    Case x of
    1:  begin
        buf:=hstr(d1);
        SendToServerEx(NameBD);
        x:=x+1;
        end;
    2:  begin
        buf:=hstr(d2);
        SendToServerEx(NameBD);
        x:=x+1;
        end;
    3:  begin
        buf:=hstr(d3);
        SendToServerEx(NameBD);
        x:=x+1;
        end;
    4:  begin
        buf:=hstr(d4);
        SendToServerEx(NameBD);
        x:=x+1;
        end;
    5: begin
       bRun;
       x:=0;
       timerBD1.enabled:=true;
       timerBD.enabled:=false;
       end;
    end;
    end;

procedure OnTimerBD1(Sender: TObject);
    begin
         timerBD.enabled:=true;
         x:=1;
    end;

procedure bRun;
     begin
         if (CoordBDX <> '') and (IDPartyMember <> '') then
         begin
              //выделяем командира, эмулируя щелчек мыши
              buf:=hstr('04') + IDPartyMember + CoordBDX + CoordBDY + CoordBDZ + hstr('00');
              SendToServerEX(NameBD);
              //бежим за командиром эмулируя повторный щелчек мыши по таргету
              buf:=hstr('04') + IDPartyMember + CoordBDX + CoordBDY + CoordBDZ + hstr('00');
              SendToServerEX(NameBD);
         end;
    end;

procedure Init; //Вызывается при включении скрипта
begin
     NameBD:='BladeDancer';
     NameKomandos:='Kommander';
     timerBD:=TTimer.Create(nil);
     timerBD.OnTimer:=@OnTimerBD;
     timerBD.enabled:=false;
     timerBD.interval:=2000;
     x:=0;
     timerBD1:=TTimer.Create(nil);
     timerBD1.OnTimer:=@OnTimerBD1;
     timerBD1.enabled:=false;
     timerBD1.interval:=120000;
end;

procedure Free; //Вызывается при выключении скрипта
begin
     timerBD.Free;
     timerBD1.Free;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
      if pck='' then exit;

         //если от сервака принят пакет с ИД и Координатами членов пати то
         if FromServer and (pck[1]=#$a7) then
         begin
              //запоминаем ИД командира
              IDPartyMember:=pck[6] + pck[7] + pck[8] + pck[9];
         end;

       //если принят пакет от клиента с кординатами бд то
       if FromClient and (ConnectName=NameBD) and (pck[1]=#$48) then
       begin
            //запоминаем координаты
            CoordBDX:= pck[6] + pck[7] + pck[8] + pck[9];
            CoordBDY:= pck[10] + pck[11] + pck[12] + pck[13];
            CoordBDZ:= pck[14] + pck[15] + pck[16] + pck[17];
       end;


     //далее идут управляющие команды

       //если КОМАНДИР пишет в любой чат цифру "1" то
       if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
          if (pck[2]=#$31) and (pck[3]=#$00) then
          begin
               //убиваем этот пакет, чтоб сервер его не получил
               pck:='';
               //БД БЕЖИТ за КОМАНДИРОМ
               bRun;

               //выйти из рабочей части скрипта чтобы другие услови не проверяли убитый пакет нулевой длинны
               exit;
          end;
// запускаем танцы
    if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
           if (pck[2]=#$38) and (pck[3]=#$00) then
           begin
                //убиваем этот пакет, чтоб сервер его не получил
                pck:='';

                // бафы
                //timerBD1.enabled:=true;
                timerBD.enabled:=true;
                x:=1;
           exit;
           end;

// остановить танцы
     if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
           if (pck[2]=#$39) and (pck[3]=#$00) then
               begin
                //убиваем этот пакет, чтоб сервер его не получил
                pck:='';

                timerBD1.enabled:=false;
                timerBD.enabled:=false;
                exit;
                end;
end.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг


Опции темы
Опции просмотра

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

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


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

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!