Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Прокачка Magery, тестировал на ДРВ

Only working scripts
Post Reply
Kynep
Neophyte
Neophyte
Posts: 40
Joined: 29.05.2008 6:41

Прокачка Magery, тестировал на ДРВ

Post by Kynep »

Настраиваем и запускаем. Вопросы оставляйте тут.
Удачи!

Файл my_func.inc необходимо скачать отсюда http://coop.myftp.org/files/UO/Stealth/my_func.inc и положить в папку Include.

Без него скрипт работать не будет!!!

Code: Select all

  ///////////////////////////////////////////////
 /////////////Прокачка Магери, ДРВ//////////////
///////////////////////////////////////////////
//©Kynep, 26.12.2011


program Magery;

{$Include 'my_func.inc'}

    //////////////////////
   //Основные настройки//
  //////////////////////

const
  Main_Sunduk = $4013B394;     // ID основного сундука с паком
  Pack_With_Regs = $4013B394;  // ID пака в сундуке, с регами, едой и браслетами

  IsSpirit = 1;                //Качаем Спирит спик, 1- да, 0 - нет

  IsRezist = 0;                //Если 1, то кастую на цель
  
  Target_ID = $00134F51;       //ID цели, если качаем резист, то указываем

  Target_type = $0190;         //Тип Цели человек

  Spell_Name = 'Magic Arrow';  //Название заклинания
  
  Min_mana = 9;                //Минимальное значение маны, после которого медитируем
                               //Рекомендуется ставить не меньше чем стоимость каста
                               //Стрелка стоит 10 маны. :)

  Min_regs_count = 10;         //Минимальное кол-во реагентов  

  food = $09BB;                 // Тип Еды

  Brass_type = $1086;          // Тип Браслета маны
  Brass_color = $0847;         // Цвет Браслета маны
  
  sk_val = 100;                // Максимальное значение скилла

  Grab_Count = 500;            //Сколько регов берем

    ////////////////////
   //Какие реги берем//
  ////////////////////
  //Тут нужно поставить 1, если нужно брать и 0 если не нужно

  grab_ns = 1;                //NighShade
  grab_gs = 0;                //Ginseng
  grab_gk = 0;                //Garlik
  grab_sa = 0;                //Sulfurous Ash
  grab_ss = 0;                //Spider Silk
  grab_bm = 0;                //Blood Moss
  grab_bp = 1;                //Black Pearl
  grab_mr = 0;                //Mandrake Root

  ///////////////////////////////////////////////
 /////////////Настройка окончена!!//////////////
///////////////////////////////////////////////

//Типы реагентов, шард ДРВ.
  bns = $0F88;    //NighShade
  bgs = $0F85;    //Ginseng
  bgk = $0F84;    //Garlik
  bsa = $0F8C;    //Sulfurous Ash
  bss = $0F8D;    //Spider Silk
  bbm = $0F7B;    //Blood Moss
  bbp = $0F7A;    //Black Pearl
  bmr = $0F86;    //Mandrake Root
 
//Названия регов
  nns = 'NighShade';
  ngs = 'Ginseng'; 
  ngk = 'Garlik'; 
  nsa = 'Sulfurous Ash';
  nss = 'Spider Silk';
  nbm = 'Blood Moss';
  nbp = 'Black Pearl';
  nmr = 'Mandrake Root';

    
var
  a: integer;
  bool_exit: boolean;
  Skill_Val: double;
  Regs: array [1..8] of word;
  Regs_to_Grab: array [1..8] of integer;
  Name_of_Reg: array [1..8] of string;
   

procedure init;

 begin
   Regs[1] := bns;
   Regs[2] := bgs;
   Regs[3] := bgk;
   Regs[4] := bsa;
   Regs[5] := bss;
   Regs[6] := bbm;
   Regs[7] := bbp;
   Regs[8] := bmr;
   
   Regs_to_Grab[1] := grab_ns;
   Regs_to_Grab[2] := grab_gs; 
   Regs_to_Grab[3] := grab_gk;
   Regs_to_Grab[4] := grab_sa;
   Regs_to_Grab[5] := grab_ss;   
   Regs_to_Grab[6] := grab_bm;
   Regs_to_Grab[7] := grab_bp;
   Regs_to_Grab[8] := grab_mr;
   
   Name_of_Reg[1] := nns; 
   Name_of_Reg[2] := ngs;  
   Name_of_Reg[3] := ngk;
   Name_of_Reg[4] := nsa;
   Name_of_Reg[5] := nss;
   Name_of_Reg[6] := nbm;
   Name_of_Reg[7] := nbp;
   Name_of_Reg[8] := nmr;
 end;


procedure Count_Regs;
//Процедура подсчет регов
//©Kynep
//

 var
   z, tmp_c, tmp_c2: integer;
   tmp_id: cardinal;

 begin
   AddToSystemJournal('*Подсчет реагентов*');
   tmp_c := 0;
   tmp_c2 := 0;
   for z := 1 to 8 do
     begin
       If Regs_to_Grab[z] <> 0 then
         begin
           tmp_id := FindType(Regs[z], Pack_With_Regs);
           if (tmp_id <> 0) AND (GetQuantity(tmp_id) > 20) then
             begin
               tmp_c := GetQuantity(tmp_id);
               wait(100);
               AddToSystemJournal('*В сундуке ' + inttostr(tmp_c) + ' ' + Name_of_Reg[z]);
               wait(100);
               tmp_id := FindType(Regs[z], backpack);
               if tmp_id <> 0 then
                 begin
                   tmp_c2 := GetQuantity(tmp_id);
                   wait(100);
                   AddToSystemJournal('*В рюкзаке ' + inttostr(tmp_c2) + ' ' + Name_of_Reg[z]);
                   wait(100);
                 end
               else
                 begin
                   AddToSystemJournal('--->!!!*В рюкзаке ' + Name_of_Reg[z] + ' не найден*!!!');
                 end
             end
           else
             begin
               AddToSystemJournal('--->!!!*В сундуке слишком мало' + Name_of_Reg[z]);
               AddToSystemJournal('--->!!!*ОСТАНОВИ СКРИПТ И ПОПОЛНИ*!!!');
             end
         end
     end;
 end;


procedure Check_Regs;
//Проверка и добор регов
//©Kynep
//
  var
   i: integer;
   item: cardinal;

 begin
   for i := 1 to 8 do
     begin
       If Regs_to_Grab[i] <> 0 then
         begin
           item := FindType(Regs[i], Backpack);
           if GetQuantity(item) < 10 then 
             begin           
               if Grab(Regs[i], Grab_Count, Pack_With_Regs, Min_regs_count) = true then
                 begin
                   AddToSystemJournal('*Добрал Реагент ' + Name_of_reg[i]);
                 end
               else
                 begin
                   AddToSystemJournal('--->!!!*Закончился реагент ' + Name_of_Reg[i] + '*!!!');
                   AddToSystemJournal('--->!!!*Скрипт Остановлен*!!!');
                   bool_exit := true;
                   exit;
                 end
             end           
         end;
     end;               
 end;
 
procedure Check_Brass;
//Одевание Браслета
//©Kynep
//
 var
  br: cardinal;

 begin
  br := ObjAtLayer(BraceLayer);  
  if  br <> 0 then
    begin
      AddToSystemJournal('*Браслет уже одет*'); 
    end
  else
    begin
     FindTypeEx(Brass_Type, Brass_color, Pack_With_Regs, false);
     If FindCount > 0 then
       begin
         CheckLag;
         MoveItem(FindItem, 1, backpack, 0,0,0);
         wait(700);      
         UseObject(FindItem);
         wait(500);
         AddToSystemJournal('*Одел браслет*');
       end
     else
       begin
         AddToSystemJournal('--->!!!*Браслеты закончились*!!!');
       end;            
    end
 end;


procedure Cast_on_Self;
//Каст на себя
//©Kynep
//
 var
   cur_mana, h: integer;
   targ: cardinal;
   name: string;

 begin
   ClearJournal;
   Count_Regs;
   if IsRezist = 1 then
     begin
       if Check_Target_ID(Target_type, Target_ID, 10) <> true then
         begin
           targ := Self;
           AddToSystemJournal('*Цель - я сам*');
         end
       else
         begin
           targ := Target_ID;
           name := GetName(targ);
           AddToSystemJournal('*Цель - чужак по имени: ' + name + '*');
         end;
       AddToSystemJournal('*Начинаю кастовать*');
     end
   else
     begin
       targ := Self;
       AddToSystemJournal('*Начинаю кастовать*');
     end;
   while Mana > Min_mana do
     begin 
       if (IsRezist = 1) AND (InJournal('Stop HP') <> -1) then 
         begin
           AddToSystemJournal('*Ожидаю куклу...*');
           ClearJournal;
           repeat
             wait(500);
             Check_World_Save;
           until (InJournal('Im ready') <> -1);
           ClearJournal;
           AddToSystemJournal('*Кукла готова, поехали*');
           UOSay('Lets Begin');
           wait(500);
         end;
       ClearJournal;
       CheckLag;
       WaitTargetObject(targ);
       Cast(Spell_Name);
       cur_mana := Mana;
       h := 0;
       repeat
         h := h + 1;
         wait(200);
         Check_World_Save;
       until (InJournal('Stop HP') <> -1) OR (InJournal('fizzle') <> -1) OR (InJournal('lack') <> -1) OR (Mana < cur_mana) OR (h > 10);
       If (Mana < cur_mana) AND (InJournal('fizzle') = -1) then
         begin
           AddToSystemJournal('*ЧПОК*');
         end;
       Check_Regs;
     end;
   AddToSystemJournal('*Каст окончен*');
 end;
 
procedure Medit;
//Медитация
//©Kynep
//

 begin
   if  IsWarMode(Self) then
     begin
       SetWarMode(false);
       wait(300);
     end;
   ClearJournal;
   AddToSystemJournal('*Медитируем*');
   while Mana < Int do
     begin
       ClearJournal;
       wait(100);
       CheckLag;
       Useskill('Meditation');
       repeat
         wait(200);
         Check_World_Save;
       until (InJournal('You are at')<>-1) OR (InJournal('You lose')<>-1) OR (GetMana(Self) = GetMaxMana(Self));
     end;
   if (IsRezist = 1) AND (InJournal('Stop HP') <> -1) then 
         begin
           AddToSystemJournal('*Ожидаю куклу...*');
           ClearJournal;
           repeat
             wait(500);
             Check_World_Save;
           until (InJournal('Im ready') <> -1);
           ClearJournal;
           AddToSystemJournal('*Кукла готова, поехали*');
           UOSay('Lets Begin');
           wait(500);
         end;
   wait(1500);
   AddToSystemJournal('*Медитация закончена*');
   if IsSpirit = 1 then
     begin
       AddToSystemJournal('*Спирит Спик*');
       UseSkill('Spirit Speak');
       wait(3000);
     end;
 end;
 
Begin
//Основной скрипт
//©Kynep
//
 ClearJournal;
 AddToSystemJournal('*Скрипт Магери запущен*');
 Check_Connect;
 init;
 CheckLag;
 UseObject(backpack);
 wait(500);
 UseObject(Main_Sunduk);
 wait(500);
 UseObject(Pack_With_Regs);
 AddToSystemJournal('*Открыл сундуки*');
 wait(100)
 AddToSystemJournal('*Еда, браслет*');
 Check_Food(food, Pack_With_Regs);
 Check_Brass;
 ClearJournal;
 AddToSystemJournal('*Подготовка окончена, поехали!*');
 wait(100);

 Skill_Val := sk_val;
 a := 0;
 bool_exit := false;
 
 while not dead do
   begin
     repeat
       Check_Connect;
       If GetSkillValue('Magery') <> Skill_Val then
         begin
           a := a + 1;
           if a = 100 then
             begin
               Check_Food(food, Pack_With_Regs);
               a := 0;
             end; 
           Check_Regs;
           If bool_exit <> true then
             begin
               if  IsWarMode(Self) then
               begin
                 SetWarMode(false);
                 wait(300);
               end;
               Cast_on_Self;
               wait(200);
               Medit;      
             end
           else
             begin           
               exit;
             end;           
         end
       else
         begin
           bool_exit := true;
         end;
     until  (bool_exit = true);
     AddToSystemJournal('--->!!!*Скилл докачан*!!!');
     exit;
   end;
   AddToSystemJournal('--->!!!*Убили гады*!!!');
End.
Last edited by Kynep on 17.01.2012 8:27, edited 4 times in total.
Scripts Writer
Novice
Novice
Posts: 130
Joined: 06.05.2008 18:03

Re: Прокачка Magery, тестировал на ДРВ

Post by Scripts Writer »

Неплохо, жаль нельзя задавать касты и значения скила, с которого начинать их кастовать
Проще научить человека ловить рыбу, чем постоянно ею его кормить. (с) Destruction
Kynep
Neophyte
Neophyte
Posts: 40
Joined: 29.05.2008 6:41

Re: Прокачка Magery, тестировал на ДРВ

Post by Kynep »

Имя каста записано в константах, насчет значения скилла - а к чему? На стрелке все растет просто прекрасно. 5-6 дней, с 50 до ГМ качается. :lol:

Это лишь вершина айсберга, первый скрипт написанный под Стелс за последние 3 года.
Их уже около 15 штук, но все пока не буду выкладывать, как прокачаюсь, тогда выложу. :roll:
Есть почти все крафты, нет только Боукрафт и Карпенти, но это временно, просто не дошел еще до них, щас боевуху докачиваю на своем спарринге.
Scripts Writer
Novice
Novice
Posts: 130
Joined: 06.05.2008 18:03

Re: Прокачка Magery, тестировал на ДРВ

Post by Scripts Writer »

Я у тебя в аське в игноре чтоли, или ты там не появляешься?
Проще научить человека ловить рыбу, чем постоянно ею его кормить. (с) Destruction
Squman
Posts: 6
Joined: 05.06.2011 9:39

Re: Прокачка Magery, тестировал на ДРВ

Post by Squman »

Шикарно работает! Спасибо. Ждём новых скриптов :)
Kynep
Neophyte
Neophyte
Posts: 40
Joined: 29.05.2008 6:41

Re: Прокачка Magery, тестировал на ДРВ

Post by Kynep »

Scripts Writer wrote:Я у тебя в аське в игноре чтоли, или ты там не появляешься?
Днем там всегда, вечером иногда забываю включить... :roll:
Напомни номерок в личку, я помню ты менял его.

Squman wrote:Шикарно работает! Спасибо. Ждём новых скриптов :)
Не за что!
keks
Posts: 6
Joined: 30.06.2008 4:04

Re: Прокачка Magery, тестировал на ДРВ

Post by keks »

спасибо за скрипт! отлично постарался!!!
Delmar
Posts: 9
Joined: 22.11.2011 22:04

Re: Прокачка Magery, тестировал на ДРВ

Post by Delmar »

Молодец.
Спасибо.
camypau
Posts: 9
Joined: 20.09.2010 14:48

Re: Прокачка Magery, тестировал на ДРВ

Post by camypau »

Супер скрипт, работает на оффе. СПАСИБО. В Указатель скриптов на прокачку
нужно добавить
SkullCAT
Neophyte
Neophyte
Posts: 32
Joined: 28.10.2012 17:17

Re: Прокачка Magery, тестировал на ДРВ

Post by SkullCAT »

Kynep wrote:Настраиваем и запускаем. Вопросы оставляйте тут.
Удачи!
Народ, кто пользуется скриптом - сохранились ли у Вас инклюды автора? можете сбросить?
Спасибо!
Post Reply