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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 29.01.2010, 12:08   #1
Новичок
 
Аватар для spiritofsands
 
Регистрация: 04.10.2009
Сообщений: 27
Сказал Спасибо: 14
Имеет 12 спасибок в 10 сообщенях
spiritofsands пока неопределено
По умолчанию Управление другим чаром из 1 окна

Наконец-то закончил скрипт для Interlude. Он повторяет действия чара во втором окне.
Мain - главный чар, slave - второе окно. Чары должны быть одинаковыми (т.е. иметь одинаковые скиллы).
Основные возможности:
- slave принимает пати от main;
- slave бежит за main;
- slave выделяет того, кого выделил main;
- slave снимает таргет синхронно с main;
- slave юзает скиллы, используемые main;
- slave использует "/unstuck" синхронно с main по команде "-u".
Команды пишутся в общий чат. Планируется будущая доработка скрипта.
Оставляйте свои комментарии/предложения.
Вложения
Тип файла: txt assist-interlude.txt (2.5 Кб, 101 просмотров)
spiritofsands вне форума   Ответить с цитированием
За это сообщение spiritofsands нажился спасибкой от:
Старый 29.01.2010, 12:13   #2
Новичок
 
Аватар для spiritofsands
 
Регистрация: 04.10.2009
Сообщений: 27
Сказал Спасибо: 14
Имеет 12 спасибок в 10 сообщенях
spiritofsands пока неопределено
По умолчанию В довесок

Скрипт меняющий команду "/gmlist" на "-gmlist". Писал для себя, т.к. не хотелось каждый раз запускать впф к ИГ боту. Так проще.
Вложения
Тип файла: txt antigmlist-interlude.txt (603 байт, 43 просмотров)
spiritofsands вне форума   Ответить с цитированием
За это сообщение spiritofsands нажился спасибкой от:
Старый 30.01.2010, 05:43   #3
Новичок
 
Аватар для spiritofsands
 
Регистрация: 04.10.2009
Сообщений: 27
Сказал Спасибо: 14
Имеет 12 спасибок в 10 сообщенях
spiritofsands пока неопределено
По умолчанию

Доработал скрипт, но осталась одна проблема: иногда чар со 2 окна использует скилл на гл. персонажа вместо его таргета. Как можно это исправить?
Вложения
Тип файла: txt assist-interlude.txt (3.0 Кб, 38 просмотров)
spiritofsands вне форума   Ответить с цитированием
За это сообщение spiritofsands нажился спасибкой от:
Старый 30.01.2010, 21:48   #4
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,222
Сказал Спасибо: 4
Имеет 227 спасибок в 180 сообщенях
SeregaZ пока неопределено
По умолчанию

а ты поставь доп проверку на таргет.
иф ид таргет = ид мой таргет, то юзать скил
елсе асист мне
SeregaZ вне форума   Ответить с цитированием
Старый 30.01.2010, 22:51   #5
Новичок
 
Аватар для spiritofsands
 
Регистрация: 04.10.2009
Сообщений: 27
Сказал Спасибо: 14
Имеет 12 спасибок в 10 сообщенях
spiritofsands пока неопределено
По умолчанию

Так эта проверка есть, но иногда бот бьет мейна. Приведу скрипт тут:
Код:
//                  Управление вторым окном                                 
//                                         by spiritofsands                 
//                                                                          
const
        namemain='Lockhorn';        // ник главного чара
        nameslave='Ikhanna';       // ник второго окна
var
        ToX, ToY, ToZ, OrigX, OrigY, OrigZ, i, mid, q, p, tid, tx, ty, tz, tick,
        partyID1, pID1x, pID1y, pID1z, ctid, atk : integer;
        d:string;
procedure Init; //Вызывается при включении скрипта
 begin
 send2msg('target self');
 q:=2;
 end;
procedure Free; //Вызывается при выключении скрипта
 begin
 end;
procedure Send2Msg(Msg:string);
 begin
 buf:=#$4A;
 WriteD(0);
 WriteD(10);
 WriteS('');
 WriteS(Msg);
 SendToClientEx(namemain);
 end;
 begin 
 if (pck[1]=#$04) and (connectname=namemain) and (q=2) then
  begin
  i:=2;  
  mid:=readd(i);
  pck:='';
  send2msg('id');
  q:=0;
  end;
 if fromserver and (connectname=nameslave) then
  case pck[1] of
  #$39: // party
   begin
   i:=2;
   send2msg('party request');
   if (reads(i))=namemain then
    begin
    send2msg('join '+namemain+'s party');
    buf:=#$2A#$01#$00#$00#$00;
    SendToServerEX(Nameslave); 
    end;
   end;
  #$A7: // partymember 1 id and pos
   begin
   i:=2;
   p:=readd(i);
   partyID1:=readd(i);
   pID1x:=readd(i);
   pID1y:=readd(i);
   pID1z:=readd(i);
   buf:=#$04;
   writed(partyID1);
   writed(pID1x);
   writed(pID1y);
   writed(pID1z);
   buf:= buf + hstr('00');
   SendToServerEX(Nameslave);
   end;
  #$29:
   begin
   if atk=1 then          // atk if target<>main
    begin
    i:=2;
    p:=readd(i);
    ctid:=readd(i);
    if (ctid<>partyid1) then
     begin
     buf:=d;
     sendtoserverEx(nameslave);
     atk:=0;
     end;
    end;
   end;
  end;
 if fromclient and (connectname=namemain) then    // from main client
  case pck[1] of
  #$04:   // target
   begin
   i:=2;  
   tid:=readd(i);
   tx:=readd(i);
   ty:=readd(i);
   tz:=readd(i);
   buf:=#$04;
   writemask('ddddc', [Tid, Tx, Ty, tz, 0]);
   sendtoserverEx(nameslave); 
   //Send2Msg('on target');
   end;
  #$21:  // npc dialog
   begin
   buf:=pck;
   sendtoserverEx(nameslave); 
   //Send2Msg('dialog proceed');
   end;
  #$37:  // cancel target
   begin
   buf:=pck;
   sendtoserverEx(nameslave); 
   //Send2Msg('target canceled');
   end;
  #$2F:  // use skill
   begin 
   d:=pck;
   buf:=#$04;                                     //
   writemask('ddddc', [Tid, Tx, Ty, tz, 0]);      //   assist
   sendtoserverEx(nameslave);                     //
   atk:=1; 
   //Send2Msg('skill used');
   end;
  #$38:  // -u = /unstuck all
   begin
   i:=2;
   if reads(i)='-u' then 
    begin
    pck:='';
    buf:=#$AA#$34#$00#$00#$00;
    sendtoserverEx(namemain);
    sendtoserverEx(nameslave);
    end;
   end;
  #$A7:
   begin
   buf:=pck;
   sendtoserverEx(nameslave);
   end;
  end;
 end.
Нужный фрагмент подчеркнут.
spiritofsands вне форума   Ответить с цитированием
Старый 01.02.2010, 01:59   #6
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,222
Сказал Спасибо: 4
Имеет 227 спасибок в 180 сообщенях
SeregaZ пока неопределено
По умолчанию

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

второй вариант:
можно еще попробовать убрать "нажатый ctrl" при использовании скила. моба он будет бить полюбому, в пвп - если противник флагнут, то тоже атаковать можно без ctrl. проблема возникнет если ты первый флагаешься - бот не будет бить до тех пор, пока таргет наконец не флагнется. и самое главное будучи в пати - он без ctrl не будет стрелять в мейна, даже если взял его по ошибке в таргет.
SeregaZ вне форума   Ответить с цитированием
Старый 03.02.2010, 02:11   #7
Новичок
 
Аватар для spiritofsands
 
Регистрация: 04.10.2009
Сообщений: 27
Сказал Спасибо: 14
Имеет 12 спасибок в 10 сообщенях
spiritofsands пока неопределено
По умолчанию

Цитата:
Сообщение от SeregaZ Посмотреть сообщение
не... чото у тебя не так. у меня четкое равно, а утебя больше-меньше. исправь по моей задумке и попробуй.
Больше-меньше это неравно. Т.Е. юзать если таргет не главный чар. Ctrl убирать не буду. Прийдется изменить систему движения за главным чаром, чтоб бот его не брал в таргет.

Добавлено через 5 часов 58 минут
Подправил систему следования за главным персонажем, добавлена константа растояния. Теперь бот не выделяет его => нет глюка с атакой мастера.
Код:
//                  Управление вторым окном                                 
//                                         by spiritofsands                 
//                                                                          
const
        namemain='Lockhorn';        // ник главного чара
        nameslave='Ikhanna';       // ник второго окна
        len=50;                        // расстояние между персонажами
var
        ToX, ToY, ToZ, OrigX, OrigY, OrigZ, i, mid, q, p, tid, tx, ty, tz, tick,
        partyID1, pID1x, pID1y, pID1z, ctid, atk : integer;
        d:string;
procedure Init; //Вызывается при включении скрипта
 begin
 send2msg('target self');
 q:=2;
 end;
 
procedure Free; //Вызывается при выключении скрипта
 begin
 end;
 
procedure Send2Msg(Msg:string);
 begin
 buf:=#$4A;
 WriteD(0);
 WriteD(10);
 WriteS('');
 WriteS(Msg);
 SendToClientEx(namemain);
 end;
 
 begin 
 if (pck[1]=#$04) and (connectname=namemain) and (q=2) then
  begin
  i:=2;  
  mid:=readd(i);
  pck:='';
  send2msg('id');
  q:=0;
  end;
  
 if fromserver and (connectname=nameslave) then
  case pck[1] of
  #$39: // party
   begin
   i:=2;
   send2msg('party request');
   if (reads(i))=namemain then
    begin
    send2msg('join '+namemain+'s party');
    buf:=#$2A#$01#$00#$00#$00;
    SendToServerEX(Nameslave); 
    end;
   end;
  {#$A7: // partymember 1 id and pos
   begin
   i:=2;
   p:=readd(i);
   partyID1:=readd(i);
   pID1x:=readd(i);
   pID1y:=readd(i);
   pID1z:=readd(i);
   buf:=#$04;
   writed(partyID1);
   writed(pID1x);
   writed(pID1y);
   writed(pID1z);
   buf:= buf + hstr('00');
   SendToServerEX(Nameslave);
   end;}
  end;
 if fromclient and (connectname=namemain) then    // from main client
  case pck[1] of
  #$04:   // target
   begin
   i:=2;  
   tid:=readd(i);
   tx:=readd(i);
   ty:=readd(i);
   tz:=readd(i);
   buf:=#$04;
   writemask('ddddc', [Tid, Tx, Ty, tz, 0]);
   sendtoserverEx(nameslave); 
   //Send2Msg('on target');
   end;
  #$21:  // npc dialog
   begin
   buf:=pck;
   sendtoserverEx(nameslave); 
   //Send2Msg('dialog proceed');
   end;
  #$37:  // cancel target
   begin
   buf:=pck;
   sendtoserverEx(nameslave); 
   //Send2Msg('target canceled');
   end;
  #$2F:  // use skill
   begin 
   buf:=pck;
   sendtoserverEx(nameslave); 
   //Send2Msg('skill used');
   end;
  #$38:  // -u = /unstuck all
   begin
   i:=2;
   if reads(i)='-u' then 
    begin
    pck:='';
    buf:=#$AA#$34#$00#$00#$00;
    sendtoserverEx(namemain);
    sendtoserverEx(nameslave);
    end;
   end;
  #$01: //go to
  begin
  i:=2;
  tox:=readd(i);
  toy:=readd(i);
  toz:=readd(i);
  origx:=readd(i);
  origy:=readd(i);
  origz:=readd(i);
  buf:=#$01;
  writed(tox-len);
  writed(toy-((len*toy) div (tox)));
  writed(toz-((len*toz) div (tox)));
  writed(origx);
  writed(origy);
  writed(origz);
  writed(1);
  sendtoserverEx(nameslave); 
  end;
  #$A7:
   begin
   buf:=pck;
   sendtoserverEx(nameslave);
   end; 
  end;
 end.
Добавлено через 51 минуту
Появилась новая проблема - бот ходит только с одной координатной стороны главного чара. Как можно усовершенствовать скрипт, чтобы бот ходил сзади/сбоку чара?

Последний раз редактировалось spiritofsands, 03.02.2010 в 02:11. Причина: Добавлено сообщение
spiritofsands вне форума   Ответить с цитированием
За это сообщение spiritofsands нажился спасибкой от:
Старый 03.02.2010, 15:24   #8
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,222
Сказал Спасибо: 4
Имеет 227 спасибок в 180 сообщенях
SeregaZ пока неопределено
По умолчанию

рандом +- 100, к примеру, к текущим координатам мастера по х и у.
SeregaZ вне форума   Ответить с цитированием
За это сообщение SeregaZ нажился спасибкой от:
Старый 04.02.2010, 15:51   #9
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 32
Сказал Спасибо: 0
Имеет 14 спасибок в 12 сообщенях
sinles пока неопределено
По умолчанию

MyX, MyY, MyZ - мои координаты
TX, TY, TZ - координаты цели за которой следовать

coof := -70/sqrt((MyX-TX)^2+(MyY-TY)^2+(MyZ-TZ)^2);
rx := round(TX + coof*(MyX-TX));
ry := round(TY + coof*(MyY-TY));
rz := round(TZ + coof*(MyZ-TZ));

rx, ry, rz - координаты четко сзади цели на некотором удалении от нее.

*round - округление.
sinles вне форума   Ответить с цитированием
За это сообщение sinles нажился спасибкой от:
Старый 04.02.2010, 17:35   #10
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,222
Сказал Спасибо: 4
Имеет 227 спасибок в 180 сообщенях
SeregaZ пока неопределено
По умолчанию

кстати чтоб совсем уж не отличить - сделай начало движения по таймеру. к примеру через 1 секунду после начала движения мастера. а то одновременное начало движения ну совсем уж картину палит. а если с паузой - то типа "человек, увидел, что сопати двинулся - то двинулся следом."
SeregaZ вне форума   Ответить с цитированием
За это сообщение SeregaZ нажился спасибкой от:
Ответ

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


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

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

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


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

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

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