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

Жесткий скриптинг Раздел для обсуждения готовых и тестируемых скриптов
Внимание! В разделе введена жесткая модерация, темы и сообщения публикуются только после проверки модераторами

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

Цитата:
Сообщение от skymanrus
я возможно попытаюсь внедрить в него алгоритм ASTAR который занимается тем что строит пути т.е. можно будет указать боту идти в гиран из орена пешком и он сам построит путь а если встретит препятствия то внесёт их в базу данных и обойдёт
Подробнее про этот алгоритм можно?

Цитата:
Сообщение от skymanrus
возможности:
... если уперается в дерево или камень то пытается её обойти,
как ты это делаешь и насколько надежно обходит препятствия?

PS:
Подбор предметов: мне кажется надежнее создавать массив выпавших вещей и потом по его данным поднимать.
Вот такие процедуры я применял.
Код:
var
  ItemBase:   array[1..4,1..max] of integer;  // описатель предметов

//******************************************************************************
procedure ReqGetItem;
begin
  if itm=0 then begin
    timer1.enabled:=true; //включаем отсчет времени
    needbackup:=false;
    exit;
  end;
  timer1.enabled:=false; //выключаем отсчет времени
  //перебираем базу
  for i:=1 to max do begin
    //если нашли
    if (ItemBase[1,i]<>0) then begin  //ObjectID
      say('ReqGetItem');
      //даем команду подобрать вещь
      buf:=#$04;
      WriteD(ItemBase[1,i]);
      WriteD(ItemBase[2,i]);
      WriteD(ItemBase[3,i]);
      WriteD(ItemBase[4,i]);
      WriteH(00);
      SendToServerEx(Name);
    end;
  end;
end;

в основном цикле
  //****************************************************************************
  //DropItem - выпала вещь
  if FromServer and (ConnectName=Name) and (pck[1]=#$0C) then begin
    //чужие вещи не берем
    if (Attacker=ReadD(2)) then begin
      timer1.enabled:=false; //выключаем бота
      AddMob:=true;
      //перебираем базу
      for i:=1 to max do begin
        //если нашли, то корректируем его координаты на новые
        if (ItemBase[1,i]=ReadD(6)) then begin  //ObjectID
          ItemBase[2,i]:=ReadD(14); //x
          ItemBase[3,i]:=ReadD(18); //y
          ItemBase[4,i]:=ReadD(22); //z
          AddMob:=false;
          inc(itm);
          NeedBackup:=true;
          say('Корректируем данные по предмету');
        end;
      end;
      //иначе, перебираем базу, ищем свободную ячейку в ней и добавляем
      for i:=1 to max do begin
        if (ItemBase[1,i]=0) then begin
          //запоминаем в свободную ячейку
          ItemBase[1,i]:=ReadD(6); //ObjectID
          ItemBase[2,i]:=ReadD(14); //x
          ItemBase[3,i]:=ReadD(18); //y
          ItemBase[4,i]:=ReadD(22); //z
          inc(itm);
          NeedBackup:=true;
          say('Добавили данные по предмету');
          break;
        end;
      end;
    end;
    say('ColvoItm='+inttostr(itm));
  end;

  //****************************************************************************
  //To Do: Сделать проверку на расстояние
  //SpawnItem - валяется вещь
  if FromServer and (ConnectName=Name) and (pck[1]=#$0B) then begin
    timer1.enabled:=false; //выключаем бота
    AddMob:=true;
    //перебираем базу
    for i:=1 to max do begin
        //если нашли, то корректируем его координаты на новые
      if (ItemBase[1,i]=ReadD(2)) then begin  //ObjectID
        ItemBase[2,i]:=ReadD(10); //x
        ItemBase[3,i]:=ReadD(14); //y
        ItemBase[4,i]:=ReadD(18); //z
        AddMob:=false;
        inc(itm);
        NeedBackup:=true;
        say('Корректируем данные по предмету');
      end;
      //иначе, перебираем базу, ищем свободную ячейку в ней и добавляем
      for i:=1 to max do begin
        if (ItemBase[1,i]=0) and AddMob then begin
          //запоминаем в свободную ячейку
          ItemBase[1,i]:=ReadD(2); //ObjectID
          ItemBase[2,i]:=ReadD(10); //x
          ItemBase[3,i]:=ReadD(14); //y
          ItemBase[4,i]:=ReadD(18); //z
          inc(itm);
          NeedBackup:=true;
          say('Добавили данные по предмету');
          break;
        end;
      end;
    end;
    say('ColvoItm='+inttostr(itm));
  end;

  //****************************************************************************
  //ToDO добавить проверки про невозможность поднятия предмета
  //каждые две сек подбираем предмет
  if Wait(time1,2) and NeedBackup and (underAttack=false) then ReqGetItem;
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
 

  CoderX :: Forums > Lineage II > L2PacketHack > Жесткий скриптинг



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

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


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

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

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