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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 14.10.2007, 16:51   #31
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re:

Цитата:
Сообщение от HooleeCheeter
сложно ли модифицировать скрипт, чтобы он точил всего 2 веши блессед заточками. допустим поочереди варяца до 13 , 1ая ломается , и точится только она, пока не станет опять 13, и потом опять поочереди?
Скрипт так и задуман. Точатся все предметы начиная с минималоного уровня до самого максимума. Пусть есть 1, 5 и 13 уровня. Точится с 1 до 5, потом два предмета до 13, а затем три с 13 уровня. В конце всегда остается хотябы один предмет.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 14.10.2007, 17:46   #32
Пользователь
 
Аватар для HooleeCheeter
 
Регистрация: 10.10.2007
Сообщений: 29
Сказал Спасибо: 14
Имеет 0 спасибок в 0 сообщенях
HooleeCheeter
По умолчанию

похоже я нашёл в чем дело ...
Цитата:
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;
там нужно поставить "<=", сейчас поднимут сервак проверю.

Добавлено спустя 20 минут 40 секунд:
Re: ДА БУДЕТ БОТ!
именно в это и было дело )
HooleeCheeter вне форума   Ответить с цитированием
Старый 15.10.2007, 16:14   #33
Новичок
 
Регистрация: 05.10.2007
Адрес: Украина
Сообщений: 19
Сказал Спасибо: 0
Имеет 23 спасибок в 13 сообщенях
DeVolf пока неопределено
По умолчанию

Код:
//Автоматизация заточки предметов до необходимого уровня 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='DeVolf';
      Scroll=959; // ItemID  Scroll Enchant Weapon (Grade S)
      Weapon=6579; // ItemID Arcana Mace
      MaxEnchLvl=10; //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
      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;
      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; //следующее смещение для действия с предметом 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;
    //******************************************************************************
    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.
усе подставил всеравно говорить что кончились скролы
DeVolf вне форума   Ответить с цитированием
Старый 16.10.2007, 02:06   #34
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re:

Для серверов Интерлюдии, необходимо поправить скрипт в двух метсах, из-за отличий пакетов.
Код:
//Автоматизация заточки предметов до необходимого уровня by NLObP
[skipped]
    //******************************************************************************
    procedure CreateItemBase; //пакет 1B, Создает базу ObjectID по ItemID
[skipped]
//        j:=j+2;
        j:=j+10; //заменить на это
[skipped]
    end;
    //******************************************************************************
    procedure UpdateItemBase; //пакет 27, Создает базу ObjectID по ItemID
[skipped]
//        j:=j+2; //следующее смещение для действия с предметом 1-добавлен 2-изменен 3-удален
        j:=j+10; //заменить на это
[skipped]
    end;
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 16.10.2007, 17:18   #35
Новичок
 
Регистрация: 05.10.2007
Адрес: Украина
Сообщений: 19
Сказал Спасибо: 0
Имеет 23 спасибок в 13 сообщенях
DeVolf пока неопределено
По умолчанию

не помогло( :(
DeVolf вне форума   Ответить с цитированием
Старый 18.10.2007, 06:04   #36
Рыцарь
 
Аватар для VORON
 
Регистрация: 06.08.2007
Сообщений: 209
Сказал Спасибо: 6
Имеет 67 спасибок в 34 сообщенях
VORON пока неопределено
По умолчанию

Цитата:
Сообщение от Agat
Скоро писать буду объяснительную.
Ворон ответь плз на вопрос:
в скрипте на качь ботом локомотив есть строка
//MyID:string; //мой ИД
наде ее править? если да, то примерный вид исправленной строки.
Спс за ответ
зачем ее править?

Добавлено спустя 11 минут 8 секунд:
Цитата:
Сообщение от xkor
может сделать каждый скрипт в отдельной теме и все эти темы в новый подфорум положить?, а то первый пост какойто очень большой получается...
да.. наверно так и стоит сделать без шуток... отя я люблю шутитьь но..
при етом в каждом топике будет отдельный скрипт обсуждаться..
тем расплодится- милиоон
и каждая из етих топов просто тупо расплодится
начнутся новые темы...
и старенькие темы со скриптами уедутв в низ ( на вторую или 3-б страницу)
я и ты ето контролировать не можем
единственное что мы можем ето прикрепить тему
но ты хочеш читать там ггде 20 тем прикреплено?
а когда товарищи из топа КУСКИ КОДОВ тоже начнут темы- плодить?
что произойдет?
КОЛАПС!
ТЕРМОЯДЕРНАЯ РЕАКЦИЯ!
__________________
Цитата:
Сообщение от pybukon
прежде чета попросить я немнога раскажу чтоб вы понили как мне плоха
Цитата:
Сообщение от Byrger
А как сделать мой скрипт бесконечным?
Цитата:
Сообщение от XKOR
.. каждый день ионизированной ногой протирает больную)
Цитата:
Сообщение от PsyR
Вылоджите пожалуйста скрипт на рыбалку желательно что бы сам в ВХ клал адаптированый под шоки и так же скрипт на ТТ рец, тоже с диалогами
VORON вне форума   Ответить с цитированием
Старый 18.10.2007, 13:05   #37
Новичок
 
Регистрация: 18.10.2007
Адрес: Москва
Сообщений: 22
Сказал Спасибо: 0
Имеет 8 спасибок в 2 сообщенях
Юля
По умолчанию

кому интересно, вот примитивные сурсы на delphi для примитивного бота ловли рыбы в in-game режиме; полезно если на вашем сервере (как на моем бывшем) идет шифрование трафика и такие веши как l2phx бесполезны. пример для ознакомления, полного бота все же не буду выкладывать, кому надо сами доделают, но и этого вполне достаточно для ловли под контролем или для ознакомления.

суть проста, программа перехватывает обработку пакетов рыбалки в engine.dll (приведенные в ней адреса валидны только для клиента С4) и на основе ее "кликает" по панели где расположены значки для ловли рыбки. или просто показывает, что нужно нажать вам, если вы не в автоматическом режиме. да, эта версия не проверяет ID, так что ловите в одиночестве только :)

ссылка: http://dump.ru/files/n/n3863714963/

p.s. если увижу в подполках (читворда или лолчита) это от вашего имени, не сносить кому-то головы, поверте мне :)
Юля вне форума   Ответить с цитированием
Старый 19.10.2007, 07:00   #38
Рыцарь
 
Аватар для dmitry501
 
Регистрация: 01.10.2007
Сообщений: 293
Сказал Спасибо: 42
Имеет 50 спасибок в 37 сообщенях
dmitry501 пока неопределено
По умолчанию Re:

Цитата:
Сообщение от Юля
кому интересно, вот примитивные сурсы на delphi для примитивного бота ловли рыбы в in-game режиме; полезно если на вашем сервере (как на моем бывшем) идет шифрование трафика и такие веши как l2phx бесполезны. пример для ознакомления, полного бота все же не буду выкладывать, кому надо сами доделают, но и этого вполне достаточно для ловли под контролем или для ознакомления.

суть проста, программа перехватывает обработку пакетов рыбалки в engine.dll (приведенные в ней адреса валидны только для клиента С4) и на основе ее "кликает" по панели где расположены значки для ловли рыбки. или просто показывает, что нужно нажать вам, если вы не в автоматическом режиме. да, эта версия не проверяет ID, так что ловите в одиночестве только :)

ссылка: http://dump.ru/files/n/n3863714963/

p.s. если увижу в подполках (читворда или лолчита) это от вашего имени, не сносить кому-то головы, поверте мне :)
Спасибо большое :) А можно еще красивые компонентики TWinXPButton, TL2Button?
А еще лучше конечно же поиметь бы информпацию по клиенту, используемым точкам входам и пр. Я конечно понимаю, что это большая ценность, но вдруг? Вот для сервера С4 например ссылка: http://dll.misie.org/functions.txt
__________________
Цитата:
Сообщение от Stas
...Ну на хрена ты меня посылаешь гууглить или искать 140 страниц описанных где-то комманд, если я уже в сотый раз объясняю, что хочу облегчить труд многим, я же эти доводы подробно описал...
dmitry501 вне форума   Ответить с цитированием
Старый 19.10.2007, 15:12   #39
Новичок
 
Регистрация: 18.10.2007
Адрес: Москва
Сообщений: 22
Сказал Спасибо: 0
Имеет 8 спасибок в 2 сообщенях
Юля
По умолчанию

Цитата:
Сообщение от dmitry501
Спасибо большое А можно еще красивые компонентики TWinXPButton, TL2Button?
[attachment=0:83bce]L2Controls.rar[/attachment:83bce]

Цитата:
Сообщение от dmitry501
А еще лучше конечно же поиметь бы информпацию по клиенту, используемым точкам входам и пр.
У меня ничего подобного нет, все просто самостоятельно ишется с помошью SoftICE и OllyDbg
Юля вне форума   Ответить с цитированием
Старый 19.10.2007, 18:47   #40
Гость
 
Сообщений: n/a
По умолчанию

Юля, а для чего нужно к процессу атачиться при посылке нажатия клавиш?
  Ответить с цитированием
Ответ

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


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

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

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


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

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

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