Перейти к содержимому

Фотография
- - - - -

Скрипт на прокачку

код

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1
wesker

wesker
  • 24
    0
    Все круто
    • Lvl 16
    • Пользователь
Писал под скрайд х30 Суть скрипта прокачка с 1-72 работает на войнах но криво, еще очень сырой, помогите пожалуйста советом что можно переделать чтобы не было так много END  я так понимаю я что то неправильно делаю,  учусь только
1. Проблема что запускаю с 1 лвл персонажа и если в середине прокачки допустим я скрипт полностью останавливаю, то после запуска он не продолжает и даже не запускается, что можно с этим сделать
2. Как правильно написать цикл   выполнять допустим кач с 1лвл по 10 но при этом чтобы перс проверялся на смерть и на баф . Баф и проверка на смерть вынесены в отдельные процедуры
3. Помогите с проблемой:  допустим персонаж  апает 33 лвл и когда он отключает интерфейс по скрипту  и ждет 25с после чего должен сделать тп в другую зону, но в это время на него неожидано может съагрится моб он его убивает и  начинает в этой же зоне бить мобов так и не сделав тп в другую
4. Буду рад любому совету
 
uses SysUtils, Classes;
var obj: TL2NPC; obj21: TL2Effect;
 var buff: TL2Buff;
  var Figth_Flag:boolean;
Item: TL2Item;
Npc: TL2NPC;
 
//-----------------------------------------
// проверка на смерть
//-----------------------------------------
function CheckDeath: Boolean;//Проверка на смерть
begin
  Result:=false;
    if User.Dead then //умерли
    begin
        Print('Мы умерли');//печатаем в лог
        Delay(3000);//ждать реса
        if User.Dead then 
        begin
           Result:=true;
          Engine.FaceControl(0,false);//выключаем бота
          Engine.GoHome;//встаем в город
          Delay(10000);//отдыхаем
       end;
    end;
end;
//-----------------------------------------
//проверка на бафф
//-----------------------------------------
function rebuff: Boolean;
var buff: TL2Buff;
begin 
  if (not User.Buffs.ByID(1062, buff)) then begin
Result:=true;
   Print('отсутствует бафф. Бафаемся...');
      Delay(5000);
      Engine.FaceControl(0,false);
      Delay(1000);
Engine.BypassToServer('_bbshome', True) ;
  Delay(1000);                     
Engine.BypassToServer('bbsbuffer buff_index;1:index', True) ;
  Delay(1000);                     
Engine.BypassToServer('bbsbuffer group_buff;fighter_scheme:index', True) ;
  Delay(1000);                     
  end;
     end;
 
 
 //-----------------------------------------
//процедура кач 11-33 лвл
//-----------------------------------------
procedure TPlv11;
   begin
Engine.BypassToServer('_bbshome');
Delay(1000);
Engine.BypassToServer('_cbbsteleport;');
Delay(1000);
Engine.BypassToServer('_cbbsteleport:exp;');
Delay(1000);
Engine.BypassToServer('_cbbsgotoxyz:index:22680:145320:-3344:5000;');
   Delay(10000);
   end;
  //-----------------------------------------
//процедура кач 33-50 лвл
//-----------------------------------------
procedure TPlv33;
   begin
Engine.BypassToServer('_bbshome');
Delay(1000);
Engine.BypassToServer('_cbbsteleport;');
Delay(1000);
Engine.BypassToServer('_cbbsteleport:exp;');
Delay(1000);
Engine.BypassToServer('_cbbsgotoxyz:index:115521:192232:-3488:5000;');
   Delay(10000);
  end;
//-----------------------------------------
//процедура кач 50-62 лвл
//-----------------------------------------
procedure TPlv50;
   begin
Engine.BypassToServer('_bbshome');
Delay(1000);
Engine.BypassToServer('_cbbsteleport;');
Delay(1000);
Engine.BypassToServer('_cbbsteleport:exp;');
Delay(1000);
Engine.BypassToServer('_cbbsgotoxyz:index:186696:-18024:-1416:5000;');
   Delay(10000);
  end;  
//-----------------------------------------
//процедура кач 62-72 лвл
//-----------------------------------------
procedure TPlv62;
   begin
Engine.BypassToServer('_bbshome');
Delay(1000);
Engine.BypassToServer('_cbbsteleport;');
Delay(1000);
Engine.BypassToServer('_cbbsteleport:exp;');
Delay(1000);
Engine.BypassToServer('_cbbsgotoxyz:index:69555:-50172:3280:5000;');
   Delay(10000);
  end;  
//------------------------------------
// Основное тело СКРИПТА
begin  
while (User.Level>=1) and (User.Level<10) do begin // проверка лвл
           if User.Dead then CheckDeath;
           if (not User.Buffs.ByID(1062, buff)) then rebuff;
     delay(2000);
     Engine.FaceControl(0,true);
      if (User.Level>=10) then
      begin
             Print('Останавливаемся, Мы достигли 10 лвл ');
             Engine.FaceControl(0,false);
           delay(25000);
        TPlv11;
while (User.Level>=10) and (User.Level<33)  do begin
           if User.Dead then CheckDeath; 
           if (not User.Buffs.ByID(1062, buff)) then rebuff;
           delay(2000);
           Engine.FaceControl(0,true);
            if (User.Level>=33) then
     begin
       Print('Остfнавливаемся, Мы достигли 33 лвл');
      Engine.FaceControl(0,false);
      delay(25000);
     TPlv33;
while (User.Level>=33) and (User.Level<50)  do begin
      if User.Dead then CheckDeath;
      if (not User.Buffs.ByID(1062, buff)) then rebuff;
     delay(2000);
     Engine.FaceControl(0,true);
      if (User.Level>=50) then
    begin
      Print('Останавливаемся, Мы достигли 50 лвл');
      Engine.FaceControl(0,false);
     delay(25000);
     TPlv50;
while (User.Level>=50) and (User.Level<62)  do begin
      if User.Dead then CheckDeath;
      if (not User.Buffs.ByID(1062, buff)) then rebuff;
     delay(2000);
     Engine.FaceControl(0,true);
      if (User.Level>=62) then
    begin
     Print('Останавливаемся, Мы достигли 62 лвл');
      Engine.FaceControl(0,false);
  delay(25000);
     TPlv62;
while (User.Level>=62) and (User.Level<72)  do begin
           if User.Dead then CheckDeath;
         if (not User.Buffs.ByID(1062, buff)) then rebuff;
          delay(2000);
            Engine.FaceControl(0,true);
          if (User.Level>=72) then
       begin
         Print('Останавливаемся, Мы достигли 72 лвл');
      Engine.FaceControl(0,false);
  delay(17000);
      end;  
 end;
end;
end;  
  end;
  end;
  end;
  end;
  end;
  end;
  end.

  • 0

#2
ScythLab

ScythLab
procedure GoToSpot();
begin
  Engine.FaceControl(0, false);
  Delay(25000);
 
  Print('Идем в зону кача');
  if (User.Level > 62) then
    TPlv62();
  else if (User.Level > 50) then
    TPlv50();
  else if (User.Level > 32) then
    TPlv33();
  else if (User.Level > 10) then
    TPlv11();
  else
    TPStartVillage();
 
  Engine.FaceControl(0, true);
end;
 
//------------------------------------
// Основное тело СКРИПТА
begin
  while (User.Level < 72) do
  begin
   Delay(2000);
    if (User.Dead) then
      CheckDeath();
    if (not User.Buffs.ByID(1062, buff)) then
      Rebuff();
    if (User не в зоне каче) then
     GoToSpot();
  end;
 
  Engine.FaceControl(0, false);
  Print('Кач окончен');
end.
 
Код писался в блокноте, так что нужно тестировать.
Также необходимы следующие доработки:
 - дописать функцию TPStartVillage по аналогии с другими TPlvXXX.
 - в конце каждой функции TP... нужно загружать зону кача
 - написать корректное условие проверки, что перс находится внутри зоны.

  • 1

Хобби: разработка непубличного бота для Lineage


#3
heyboo

heyboo
  • 5
    0
    Не выбрано
    • Lvl 3
    • Пользователь
ухухух это скриптописание)не проще плагин фармер настроить под каждую локация за 3минуты и раз в какоето время менять локацию?)
  • 0

#4
ScythLab

ScythLab

раз в какоето время менять локацию?
вручную?
  • 0

Хобби: разработка непубличного бота для Lineage


#5
wesker

wesker
  • 24
    0
    Все круто
    • Lvl 16
    • Пользователь

ScythLab, Спасибо большое! А еще подскажи пожалуйста  как вставлять такой код как у тебя написан, чтобы он был читаемым, я делаю  у себя на компе через Notepad++ там все гуд но когда копирую сюда форматирование теряется,
и чем отличается procedure GoToSpot(); от

                                procedure GoToSpot;

Что дают скобки?

Извиняюсь за возможно тупые вопросы)

 

ухухух это скриптописание)не проще плагин фармер настроить под каждую локация за 3минуты и раз в какоето время менять локацию?)

Не проще, т.к хочется научится писать скрипты под свои задумки и не зависеть от готового решения)


Сообщение отредактировал wesker: 02 Май 2020 - 13:12

  • 0

#6
ScythLab

ScythLab

wesker, классический тег code, либо если через форму отправки, то кнопочка "<>" с подсказкой "Код"


  • 0

Хобби: разработка непубличного бота для Lineage




Темы с аналогичным тегами наработки, код

Количество пользователей, читающих эту тему: 2

0 пользователей, 0 гостей, 0 анонимных


    Bing (2)
Rawr.pro - Сделано с для игроков.