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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 13.02.2008, 20:17   #241
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
По умолчанию Re:

Цитата:
Сообщение от Гость
Цитата:
d1:=sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by)); // 1-я сторона (длина)
d2:=sqrt((cx-bx)*(cx-bx)+(cy-by)*(cy-by)); // 2-я сторона (длина)
d3:=sqrt((ax-cx)*(ax-cx)+(ay-cy)*(ay-cy)); // 3-я сторона (длина)
per:=(d1+d2+d3)/2; // полуппериметр
Result:=Round(sqrt(per*(per-d1)*(per-d2)*(per-d3))); // считаем площадь
end;
Без всего этого можно обойтись и только целочисленной математикой, ищи алгоритмы целочисленной геометрии в интернете.
исчи и выкладывай :) я просто плохо помню геометрию особенно координаты ет было давно и неправда :) просто это для чего я дадумался сам и главное работает, и впринципе скрипт узкозадачный для кач бота. возможно рано или поздно напишу
Grinch вне форума   Ответить с цитированием
Старый 13.02.2008, 21:41   #242
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re:

Цитата:
Сообщение от xkor
чтоб пришел пакет UserInfo надо просто открыть и закрыть окно инвенторя в клиенте)
ЗЫ а чтоб это сам скрипт делал надо прост заставить его при запуске слать пакет запроса инвенторя, я его номер непомню, так что прост поймай его и шли когда нужно получить UserInfo
Вот это можно включить в процедуру INIT
Код:
  //RequestItemList
  buf:=hstr('0F');
  SendToServerEx(Name);
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 13.02.2008, 22:45   #243
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
По умолчанию

NLObP
не ты первый кто говорит об этом, но это пока начало кода бота возможно придётся ещё модернизировать чёнить а там ID сам проскочит, допустим в мониторинге сосок стрел и всякой ботвы :) мечтаю о таком скрипте хотя он почти готов на хп и цп подправить и гуд будет, а то у меня бывает в каче я робот :D соски заканчиваются неожидано особено у сумонеров 5к+ за баф в катах если и без пофа пп :) спириты вообще улетают так что цель есть :) next => :evil:
Grinch вне форума   Ответить с цитированием
Старый 14.02.2008, 12:40   #244
Пользователь
 
Аватар для ASSA
 
Регистрация: 09.02.2008
Сообщений: 38
Сказал Спасибо: 1
Имеет 1 спасибку в 1 сообщении
ASSA
По умолчанию Народ есть мысли..?

Хочу вот попробовать убить РБ в 1 окно.
1- может пакетно увеличить скорость атаки или как бы атаковать много раз за 1-2 сек.
2- может для етого пакет юзеринфо или атаки брать???
__________________
Пишите в асю если чего. 446-693-955
ASSA вне форума   Ответить с цитированием
Старый 14.02.2008, 13:28   #245
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Цитата:
Сообщение от ASSA
Хочу вот попробовать убить РБ в 1 окно.1- может пакетно увеличить скорость атаки или как бы атаковать много раз за 1-2 сек.2- может для етого пакет юзеринфо или атаки брать???
1)Нет
2)Нет
QaK вне форума   Ответить с цитированием
Старый 14.02.2008, 13:53   #246
Новичок
 
Регистрация: 14.02.2008
Сообщений: 2
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
as7
По умолчанию Re: ДА БУДЕТ БОТ!

На основе скрипта автозаточки от NLObP
Попытался отредактировать скрипт под автокристаллизацию. Давно искал такой скрипт, но средствами Валкера он не реализуем в С6.
В природе его не существует (я потратив кучу времени лично не нашёл).
Код:
//Атоматизация кристаллизации предметов
//На полной основе "Автоматизация заточки предметов до необходимого уровня by NLObP"

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

    //Enjoy!

   //******************************************************************************
    const
      Name='ABC';  //заменить на имя своего чара
      Weapon=6579; // ItemID Arcana Mace  //что будем кристаллизовать
      MaxEnchLvl=2; //max уровень заточки предмета, который  не разрешаем ломать (типа защиты)
      max=100;    //max количество предметов в базе
    var
    //  WpnObjID:  array[1..maxwpn,1..maxwpn] of integer;    //Weapon ObjID
      WpnBase:  array[1..2,1..max] of integer;    //Weapon ObjID,lvl
      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:=1000; //время задержки
      Say('Для инициализации скрипта сделайте покупку (С6) или откройте инвентарь (С4)');
    end;
    //******************************************************************************
    procedure Free; //Вызывается при выключении скрипта
    begin
      WpnBase:=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, ww, j, ObjID, ItemID, lvl, ListCount: integer;
    begin
      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
            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; //для С6
      end;
      ColvoWpn:=ww-1;
      Say('>ColvoWpn='+IntToStr(ColvoWpn)+' CurEnchLvl='+IntToStr(CurEnchLvl));
    end;
    //******************************************************************************
    procedure UpdateItemBase; //пакет 27, Создает базу ObjectID по ItemID
    var
      i, ii, j, 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;
          end;
          2:case ItemID of
              weapon:
                for ii:=1 to max do
                  if WpnBase[1,ii]=ObjID then WpnBase[2,ii]:=lvl;
          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;
          end;
        end;
        //j:=j+2; //для С4
          j:=j+10; //для С6 //следующее смещение для действия с предметом 1-добавлен 2-изменен 3-удален
      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;
    //******************************************************************************
    procedure UseItem(ObjectID: integer);
    begin
      buf:=#$72;
      WriteD(ObjectID);
      WriteD(01);
      WriteD(00);
      WriteD(00);
      SendToServerEx(Name);
    end;
    //******************************************************************************
    procedure OnTimerHP(Sender: TObject);
    var
      wpn :integer;
    begin
        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(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.
Как это не странно, но скрипт работает.
Прошу мну не пинать, учитывая, что это первая программа в моей жизни (ну очень нужна была!).
Если автор исходника посчитает, что я как-то задел его профессиональные чувства - пусть удалит её!
as7 вне форума   Ответить с цитированием
Старый 15.02.2008, 11:39   #247
Новичок
 
Регистрация: 22.11.2007
Сообщений: 17
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Rubec
По умолчанию

Объясните для тупых для чего этот скрипт???

Код:
    const
       Name='Ник перса тестера;
       //первая координата квадрата
       ax=-88370;
       ay=142700;
       az=3640;
       //вторая координата квадрата
       bx=-87427;
       by=142700;
       bz=-3640;
       //третья координата квадрата
       cx=-87427;
       cy=141800;
       cz=-3640;
       //четвёртая координата квадрата
       dx=-88368;
       dy=141752;
       dz=-3640;
    var
       mx, my: real;
       MyID:integer;
       pl,pl1,pl2,pl3,p2,p21,p22,p23:integer;
       timer1 : TTimer;
    procedure Say(msg:string);
    begin
        buf:=hstr('4A 00 00 00 00');
        WriteD(2);
        WriteS(Name);
        WriteS(msg);
        SendToClientEx(Name);
    end;
    procedure Init; //Вызывается при включении скрипта
    begin
    // дык таймер но он выключен он нам не нужен в этом скрипте, но мало ли
        // timer1:=TTimer.Create(nil);
         //timer1.OnTimer:=@OnTimer1;
        // timer1.enabled:=false;//по начал не запускаем таймер, только по команде
         //timer1.interval:=2000;// 2 секунды - начальный интервал таймера
    end;
        procedure InitStats;
    begin
             MyID:=ReadD(18);
             Say('ID'+inttostr(MyID));
    end;
    procedure InitXYZ;
    begin
    mx:=ReadD(6);
    my:=ReadD(10);
    //нород если криво то помидорами не кидай те кто закодит для n угольника
    //тому респект и уважуха, особенно если квадрат будет с возможность мёртвыъ координат внутри, но ет мат задача не для моих мозгов
    //ет квадрат АБЦД
    pl:=Ploshad(ax,ay,bx,by,cx,cy);
    pl1:=Ploshad(mx,my,bx,by,cx,cy);
    pl2:=Ploshad(ax,ay,mx,my,cx,cy);
    pl3:=Ploshad(ax,ay,bx,by,mx,my);
    p2:=Ploshad(ax,ay,dx,dy,cx,cy);
    p21:=Ploshad(mx,my,dx,dy,cx,cy);
    p22:=Ploshad(ax,ay,mx,my,cx,cy);
    p23:=Ploshad(ax,ay,dx,dy,mx,my);
    //проверяем условие принадлежиности наших координат к квадрату АБЦД
    if (pl<pl1+pl2+pl3+50)and((pl>pl1+pl2+pl3-50))or (p2<p21+p22+p23+50)and((p2>p21+p22+p23-50)) then Say('Мы в квадрате!')
                             else  Say('МЫ НЕ в квадрете!')


    end;

    function Ploshad(ax,ay,bx,by,cx,cy:real):integer;
    var d1,d2,d3,per:real;
    //описываем по какой то там формуле лощадь треугольника
    begin
    d1:=sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by));   // 1-я сторона (длина)
    d2:=sqrt((cx-bx)*(cx-bx)+(cy-by)*(cy-by));   // 2-я сторона (длина)
    d3:=sqrt((ax-cx)*(ax-cx)+(ay-cy)*(ay-cy));   // 3-я сторона (длина)
    per:=(d1+d2+d3)/2;                           // полуппериметр
    Result:=Round(sqrt(per*(per-d1)*(per-d2)*(per-d3))); // считаем площадь
    end;
    procedure Free; //Вызывается при выключении скрипта
    begin
    //timer1.enabled:=false;
    //timer1.Free;
    end;

    //основная часть скрипта
    //вызывается при приходе каждого пакета если скрипт включен
    begin
        if pck='' then exit;    //убераем пусты пакеты
        //думаем о нашем ИД думаем...
        if FromServer and (ConnectName=Name) and (pck[1]=#$04)  then InitStats;
        // думаем о координатах своих
        if FromServer and (ConnectName=Name) and (pck[1]=#$01)and (ReadD(2)=myID) then   InitXYZ;
    end.
Rubec вне форума   Ответить с цитированием
Старый 15.02.2008, 11:55   #248
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Цитата:
Сообщение от Rubec
Объясните для тупых для чего этот скрипт???
Это скрипт для проверки находится ли свой перс в прямоугольнике, заданном координатами 4х точек.
QaK вне форума   Ответить с цитированием
Старый 15.02.2008, 17:04   #249
Пользователь
 
Аватар для ASSA
 
Регистрация: 09.02.2008
Сообщений: 38
Сказал Спасибо: 1
Имеет 1 спасибку в 1 сообщении
ASSA
По умолчанию Re:

Цитата:
Сообщение от lQaKl
Цитата:
Сообщение от ASSA
Хочу вот попробовать убить РБ в 1 окно.1- может пакетно увеличить скорость атаки или как бы атаковать много раз за 1-2 сек.2- может для етого пакет юзеринфо или атаки брать???
1)Нет
2)Нет

ДЫК ведь можно попробовать, как со СЛИПом(там задержку на повторное накладывание можно убирать)..
Лана я пробону, мож получится че-нить подобное :oops:
__________________
Пишите в асю если чего. 446-693-955
ASSA вне форума   Ответить с цитированием
Старый 16.02.2008, 12:36   #250
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

1 - бред ибо низя
2 - аналогично...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Ответ

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


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

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

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


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

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

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