Перейти к содержанию
LineaAge II Forum L2Corvet

Скрипт на качь в ХСе


Охотник

Рекомендуемые сообщения

Учусь писать скрипты для адрика, этой мой первый примитивный скрипт строго не судите))

Писал для нового сервера х1 хф

Спойлер

var
obj: TL2NPC;
obj2: TL2Effect;
Enemy: TL2Live;

const
Bypass_Home = '_bbshome'; //открываем альтб
Bypass_Buff1 = '_bbsbuffer'; //открываем баффера
Bypass_Buff2 = '_bbsbufferbypass_giveBuffSet figher 0 0'; //Бафаемся на воина
Bypass_Buff3 = '_bbsbufferbypass_heal 0 0 0'; //Регеним ХП
Bypass_port1 = '_bbsteleport'; //открываем телепорт
Bypass_port2 = '_bbsteleport;page;cities/goddard'; //Выбираем локацию годдарта
Bypass_port3 = '_bbsteleport;teleport; 144337 -102384 -3512 0'; //Портуемся в ХС
  
begin
while 1<>2 do begin
delay(150);
Engine.BypassToServer(Bypass_Home);
delay(1000);
Engine.BypassToServer(Bypass_Buff1);
delay(1000);
Engine.BypassToServer(Bypass_Buff2);
delay(1000);
Engine.BypassToServer(Bypass_Buff3);
delay(1000);
Engine.BypassToServer(Bypass_Home);
delay(1000);
Engine.BypassToServer(Bypass_port1);
delay(1000);
Engine.BypassToServer(Bypass_port2);
delay(1000);
Engine.BypassToServer(Bypass_port3);
delay(10000);
Engine.MoveTo(144328, -103080, -3536);
delay(100);
Engine.MoveTo(143848, -103832, -3584);
delay(100);
Engine.MoveTo(143432, -104248, -3584);
delay(1000);
Engine.FaceControl(0,true);
while not user.dead do
delay(10000);  
Engine.FaceControl(0,false);
delay(random(3000));
Engine.gohome;
delay(60000);
end;
end.

 

Ссылка на комментарий
Поделиться на другие сайты

я вот тоже хочу научится путем метода "тыка" муторно и не очень понятно,брал готовые скипты пытался вырезать нужное но что то не очень выходит

есть инструкции к написанию скриптов для чайников?

щя пытаюсь написать скрипт кача с 1 по 40 лвл но проблема в том что если умер чар он начинает весь скрипт сначала

Ссылка на комментарий
Поделиться на другие сайты

19 часов назад, жук сказал:

щя пытаюсь написать скрипт кача с 1 по 40 лвл но проблема в том что если умер чар он начинает весь скрипт сначала

 

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

т.е. первые строки цикла скрипта = это те самые проверки

 

если чар труп - ресаешь в город

если чар без баффа - улетаешь в город на анстаке

если чар в ТИ и он меньше 10 уровня - портаешься на первый  спот

если чар в ТИ и он больше 10 уровня - портаешься в второй город (глудин)

если чар в глудине и он меньше 20 уровня - портаешься на второй спот 

если чар в глудине и он больше 20 уровня - портаешься в дион 

 

ну и чтобы код не начал выполнять все подряд  - вначале цикла создаешь флажок  "действие выполнено" и внутри каждого действия  ставишь этот флаг

 

что-то такое 

Спойлер


var
  Done, isStartZone, isTI, isGludin, isDion, isOren : boolean ;
  Do_Soe_ON_Level:cardinal;
begin

 

 

Engine.LoadConfig('WLC_SOLO');
 Do_Soe_ON_Level:=User.Level+1;

 
while true do
begin

 Done:=false;
 isStartZone:=checkStartZone;
 isTI:=checkTI;
 isGludin:=checkGludin;
 isDion:=checkDion;
 isOren:=checkOren;
  

if not Done and (User.Level>=21) and (isSecondSpot) then
begin
 Engine.FaceControl(0, false);
 unstuck;
 Delay(15000);
end;

 

if (not Done) and (User.Level>=1) and (User.Level<21) and (isGludin) then
begin
 Print('4');
 Do_Soe_ON_Level:=21;
 Gludin_BackToSpot;   // back to spot windmill hill
 Done:=true;
end;

 

if (not Done) and (User.Level>=21) and (isGludin) then
begin
 Print('5 Gludin, Move to Dion');
 Do_Soe_ON_Level:=30;
 Gludin_MoveToDion;   // move from Gludin to Dion
 UpdateGear21;
 Done:=true;
end;

 

функции проверки городов это что-то такое

 

function checkGludin:boolean;
begin
   Result:=  user.inrange(-81787, 150780, -3104, 4900) ;
end;


function checkGludio:boolean;
begin
   Result:=  user.inrange(-14424, 123720, -3104 , 3900) ;
end;

 


function checkDion:boolean;
begin
   Result:= user.inrange(16856, 144648, -2992, 4900) ;
end;
 

 

 

 

Изменено пользователем iNoj
Ссылка на комментарий
Поделиться на другие сайты

для совсем упоротых можно даже заранее снарядить чара шмотом  и при порте из младшего города  в старший одевать более крутой шмот


 

Спойлер

procedure UpdateGear41;
var
c_weapon1,c_weapon2, gloves, upper_armor, lower_armor :cardinal; 
   item: TL2Item;
equipped:boolean;


begin

c_weapon1:=6313; // homu  : acuman
c_weapon2:=206; // demon staff
gloves:=2454; // karmian gloves
upper_armor:=439; // karmian tunic
lower_armor:=471; // karmian stockings

     if  ( inventory.user.byid(c_weapon1, item)) then
      begin
       if  (not item.Equipped) then
         begin 
          Engine.UseItem(c_weapon1); 
          Delay(1350);
        end;
      end;      

     if  ( inventory.user.byid(c_weapon2, item)) then
      begin
       if  (not item.Equipped) then
         begin 
          Engine.UseItem(c_weapon2); 
          Delay(1350);
        end;
      end;      

     if  ( inventory.user.byid(gloves, item)) then
      begin
       if  (not item.Equipped) then
         begin 
          Engine.UseItem(gloves); 
          Delay(1350);
        end;
      end;      

     if  ( inventory.user.byid(upper_armor, item)) then
      begin
       if  (not item.Equipped) then
         begin 
          Engine.UseItem(upper_armor); 
          Delay(1350);
        end;
      end;

     if  ( inventory.user.byid(lower_armor, item)) then
      begin
       if  (not item.Equipped) then
         begin 
          Engine.UseItem(lower_armor); 
          Delay(1350);
        end;
      end;  
     
end;
 


 

Изменено пользователем iNoj
Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...
В 15.09.2021 в 18:49, Охотник сказал:

Учусь писать скрипты для адрика, этой мой первый примитивный скрипт строго не судите))

Писал для нового сервера х1 хф

  Скрыть контент

Bypass_Home = '_bbshome'; //открываем альтб
Bypass_Buff1 = '_bbsbuffer'; //открываем баффера

...

Bypass_port1 = '_bbsteleport'; //открываем телепорт
Bypass_port2 = '_bbsteleport;page;cities/goddard'; //Выбираем локацию годдарта

 

 

Это вот вообще лишнее. Без этого всё работает.

 

Не ставь байпасы в константы. Смысл особого нет. После возвращения в город и перед тем как станет можно отправить байпас на баф максимум проходит 18 секунд, 60 сек ждать - лишнее. Если завис клиент то 60 сек не спасут. Между Байпасами делай задержку 500 миллисекунд. Между MoveTo задержка не нужна, хватает того что скрипт движок даст.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...