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

Атака монстра)

тут можно задать вопрос по скриптингу
Nasty Nay
Neophyte
Neophyte
Posts: 27
Joined: 02.07.2008 19:07

Атака монстра)

Post by Nasty Nay »

Поделитесь простеньким скриптиком)) что бы чар просто стоял на месте и атачил монстра с определенным типом)
-=JoKeR=-
Novice
Novice
Posts: 153
Joined: 10.02.2008 11:19
Location: [Forest Wars] Ode$$a

Post by -=JoKeR=- »

Пора бы уже такие скрипты самому(самой) писать...

Code: Select all

Program killer;
var
    monster : cardinal;
const
    Monstr := $0000; // Тип монстра

Begin
  repeat
    begin
      FindType(Monstr,ground);
      If FindCount > 0 then
        begin
          monster := FindItem;
          AddToSystemJournal('-= Монстр найден, атакую =-');
          Attack(monster);
          wait(5000);
          end
      Else
        begin
          AddToSystemJournal('-= Монстр не найден =-');
          wait(5000);
        end;
    end;
  until Dead;
End.
но вообще описанных тобою условий не хватает для написания нормального скрипта, ведь нужно же атаковать до определённого момента(условия)...
Если то... Если это...
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

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

Переезжаем в Help.
Nasty Nay
Neophyte
Neophyte
Posts: 27
Joined: 02.07.2008 19:07

Post by Nasty Nay »

Простите пожалусто)
вот в ижекте я чуточку понимаю а вот тут ваще ничего не понимаю)
proZak
Novice
Novice
Posts: 78
Joined: 28.02.2008 0:08
Location: [Age of Power]
Contact:

Post by proZak »

есть место шото типа шахты де респица твари с которых мне нужен лут
Вопрос:
как написать правильно шоб танк бежал в упор к монстру и убивал ево после чево лутил (нада шоб доганял тварь потомушо када мало хп тварь начинает тикать ).
Есле у ковото будет желание помоч в написании скрипта стучите в аську или оставляите свои контакты .
[Ultima and Dota]-pro... Gamer
Alexej
Novice
Novice
Posts: 79
Joined: 06.06.2008 11:55
Contact:

Post by Alexej »

это процедура охоты на быков и коров:

Code: Select all

procedure CowBojs;
var ic,ox,oy,o,w : integer;
    CowBull: array [1..4] of word;
    Corpse,Piles,Meat,Resourse,Dagger,Scission,trup,p : Word;
    Weapon,Shield : word;
    aTime : TDateTime;

begin // 0

CowBull[1]:=$00D8;// 216 cow black 8
CowBull[2]:=$00E7;// 231 cow brown
CowBull[3]:=$00E8;// 232 bull black 10*4(5)kg
CowBull[4]:=$00E9;// 233 bull brown

Corpse:=$2006;// 8198 Corpse cow or bull
Piles:=$1079;// 4217 Pile of Hides
Resourse:=$1081;// 4225 Cut Leather
Dagger:=$0F52; //  cliloc# 0x6962 = What do you want to use this item on?	1010018
Scission:=$0F9F; // Scission 3999
Weapon:=$26BC; // Scepter 9916
Shield:=$1BC4; // Shield 7108
Meat:=$09F1; // Cut Raw Ribs 2545

    if isWarMode(Self) = true Then SetWarMode(false);
    addtosystemjournal('cowbojs');
    CheckSave;
    UseObject(BackPack);
    wait(2000);
    
    ignorereset;

    Addtosystemjournal('Weapon '+IntToStr(GetType(ObjAtLayer(RhandLayer))));
    Addtosystemjournal('Shield '+IntToStr(GetType(ObjAtLayer(LhandLayer))));
    While GetType(ObjAtLayer(RhandLayer)) <> Weapon Do 
    begin
      unequip(RhandLayer);
      CheckSave;
      wait(500);
      if GetType(ObjAtLayer(RhandLayer)) = 0 then 
      begin 
        equipt(RhandLayer,Weapon);
        CheckSave;
      end;
    end;
    While GetType(ObjAtLayer(LhandLayer)) <> Shield Do 
    begin
      unequip(LhandLayer);
      CheckSave;
      wait(500);
      if GetType(ObjAtLayer(LhandLayer)) = 0 then 
      begin 
        equipt(LhandLayer,Shield);
        CheckSave;
      end;
    end;

    FindDistance := 10;
    For ic:=1 To 4 Do
    begin
      FindType(CowBull[ic],ground);
    
      Addtosystemjournal(IntToStr(FindCount));
      ox := 0;
      oy := 0;
      While (FindCount > 0) Do 
      begin // 1
        Addtosystemjournal('Где же Мясо??? '+IntToStr(FindCount));
        FindDistance := 1;
        While (FindDistance <= 10) do
        begin // 2
          FindType(CowBull[ic],ground);
          If (FindCount > 0) Then Addtosystemjournal('Мияссо '+IntToStr(FindCount));
          wait(100);
          o := FindItem;
          CheckSave;
        
          If o > 0 Then 
          begin // 3
            w := Weight;
            wait(1000);
            Addtosystemjournal('Мияссо 1 '+IntToStr(o)+' | x '+IntToStr(ox)+' | y '+IntToStr(oy)+' | d '+IntToStr(GetDistance(o)));
//            Addtosystemjournal('Овца 1 type '+IntToStr(GetType(o)));

            While (GetDistance(o) >= 0) and (w = Weight) Do
            begin // 4
              ox := GetX(o);
              oy := GetY(o);

              GotoXY2(ox,oy,1,true);
              wait(500);
              
                If (GetDistance(o) <= 2) Then
                begin // 5
                  CheckSave;
                  repeat
                    If TargetPresent Then CancelTarget;
                    Addtosystemjournal('o '+IntToStr(o));
                    Addtosystemjournal('ot '+IntToStr(GetType(o)));

                     Attack(o);
                     wait(500);
                     Addtosystemjournal('oo '+IntToStr(o));
                     Addtosystemjournal('oot '+IntToStr(GetType(o)));
                  until (GetType(o) = 0) or (GetDistance(o) > 2);
                    ignore(o);
                  CheckSave;
                  repeat
                    FindDistance := 2;

                    trup:=FindType(Corpse,Ground);
                    Addtosystemjournal('trup '+IntToStr(trup));

                    If TargetPresent Then CancelTarget;
                    UseObject(FindType(Dagger,BackPack));
//                    UseType(Dagger,$FFFF);
                    Addtosystemjournal('dagger '+IntToStr(FindType(Dagger,BackPack)));
                    Addtosystemjournal('daggert '+IntToStr(GetType(FindType(Dagger,BackPack))));
                    WaitForTarget(3000);
                    If TargetPresent Then 
                    begin
                      
                      TargetToObject(FindType(Corpse,Ground));
                      Addtosystemjournal('fi '+IntToStr(FindType(Corpse,Ground)));
                      Addtosystemjournal('fit '+IntToStr(GetType(FindType(Corpse,Ground))));
                    end;

                    UseObject(FindItem);
                    wait(1500);
//                    UOSay('.opencorpse');
                    FindTypeEx(Piles,$FFFF,p,True);
                    Addtosystemjournal('p '+IntToStr(FindItem));
                    Addtosystemjournal('pt '+IntToStr(GetType(FindItem)));
//                    Addtosystemjournal('Piles '+IntToStr(Piles));
                    Grab(FindItem,0);
                 until (w < Weight) or (trup <= 0) or (GetType(FindItem) = 0);
                   wait(1000);
                   w := Weight;
                   wait(1000);
                   CheckSave;
                 repeat
                   wait(1000);
                   FindTypeEx(Meat,$FFFF,p,True);
                   Grab(FindItem,0);
                 until (w < Weight) or (trup <= 0) or (GetType(FindItem) = 0);
                    ignore(trup);
                 CheckSave;
                 While (Weight >= 310) Do
                 begin
                   UseObject(BackPack);
                   wait(1500);
                   If TargetPresent Then CancelTarget;
                   UseObject(FindType(Scission,BackPack));
                   WaitTargetType(Piles);
                   wait(500);
                 end;

                end; // 5

            end; // 4

            FindDistance := 0;
            o := 0;
          end; // 3

          FindDistance := FindDistance + 1;
          wait(500);
        end; // 2
      wait(1000);
      FindType(CowBull[ic],ground);
      end; // 1

    end; // For
    CheckSave;
    While (count(Piles) > 0) Do
    begin
      UseObject(BackPack);
      wait(1500);
      If TargetPresent Then CancelTarget;
      UseObject(FindType(Scission,BackPack));
      WaitTargetType(Piles);
      wait(1000);
      if isWarMode(Self) = true Then SetWarMode(false);
    end;
end; // 0
вообщем находит, догоняет, убивает,режет, собирает шкуры и миясо
времени все разжовывать нету, дерзай
proZak
Novice
Novice
Posts: 78
Joined: 28.02.2008 0:08
Location: [Age of Power]
Contact:

Post by proZak »

много непонятного в процедуре мнебы скриптик какоито де ета процедура задействована яб проанализировал шо к чему - а то допустим как он будет бегать без (без ходилки) и тд. :?:
[Ultima and Dota]-pro... Gamer
Acronym
Novice
Novice
Posts: 114
Joined: 10.05.2005 18:42
Location: Odessa, NDW
Contact:

Post by Acronym »

proZak wrote:много непонятного в процедуре мнебы скриптик какоито де ета процедура задействована яб проанализировал шо к чему - а то допустим как он будет бегать без (без ходилки) и тд. :?:
Вызов ходилки в процедуре есть, так что ходить должен
GotoXY2(ox,oy,1,true);
Судя по параметрам она более менее стандартная.

Прикрутить процедуру к скрипту - пару минут работы.
aka Trickster [YGG]
current version: 1.0 [RC3]
Nasty Nay
Neophyte
Neophyte
Posts: 27
Joined: 02.07.2008 19:07

Post by Nasty Nay »

-=JoKeR=- wrote:Пора бы уже такие скрипты самому(самой) писать...

Code: Select all

Program killer;
var
    monster : cardinal;
const
    Monstr := $0000; // Тип монстра

Begin
  repeat
    begin
      FindType(Monstr,ground);
      If FindCount > 0 then
        begin
          monster := FindItem;
          AddToSystemJournal('-= Монстр найден, атакую =-');
          Attack(monster);
          wait(5000);
          end
      Else
        begin
          AddToSystemJournal('-= Монстр не найден =-');
          wait(5000);
        end;
    end;
  until Dead;
End.
но вообще описанных тобою условий не хватает для написания нормального скрипта, ведь нужно же атаковать до определённого момента(условия)...
Если то... Если это...

Compiler: [Error] (монстер.txt at 5:12): is ('=') expected




:(
Nasty Nay
Neophyte
Neophyte
Posts: 27
Joined: 02.07.2008 19:07

Post by Nasty Nay »

помогите не работает(((
v26RuS
Novice
Novice
Posts: 61
Joined: 18.05.2008 16:07
Location: DRW
Contact:

Post by v26RuS »

Code: Select all

Program killer; 
const 
    Monstr = $0000; // Тип монстра 

Begin 
  repeat 
    begin 
      FindType(Monstr,ground); 
      If FindCount > 0 then 
        begin 
          monster := FindItem; 
          AddToSystemJournal('-= Монстр найден, атакую =-'); 
          Attack(monster); 
          wait(5000); 
          end 
      Else 
        begin 
          AddToSystemJournal('-= Монстр не найден =-'); 
          wait(5000); 
        end; 
    end; 
  until Dead; 
End.
Невозможное возможнО!
Nasty Nay
Neophyte
Neophyte
Posts: 27
Joined: 02.07.2008 19:07

Post by Nasty Nay »

да тоже самое не работает выдает следующее
Compiler: [Error] (монстер.txt at 5:12): is ('=') expected
v26RuS
Novice
Novice
Posts: 61
Joined: 18.05.2008 16:07
Location: DRW
Contact:

Post by v26RuS »

Извеняюсь недоглядел

Code: Select all

Program killer; 
var monster : Cardinal;
const 
    Monstr = $0000; // Тип монстра 

Begin 
  repeat 
    begin 
      FindType(Monstr,ground); 
      If FindCount > 0 then 
        begin 
          monster := FindItem; 
          AddToSystemJournal('-= Монстр найден, атакую =-'); 
          Attack(monster); 
          wait(5000); 
          end 
      Else 
        begin 
          AddToSystemJournal('-= Монстр не найден =-'); 
          wait(5000); 
        end; 
    end; 
  until Dead; 
End.
Невозможное возможнО!
Nasty Nay
Neophyte
Neophyte
Posts: 27
Joined: 02.07.2008 19:07

Post by Nasty Nay »

СЕНКС
Alexej
Novice
Novice
Posts: 79
Joined: 06.06.2008 11:55
Contact:

Post by Alexej »

ходилка задействована стандартная
GotoXY2(ox,oy,1,true); а на GotoXY(ox,oy,1,true); потому что в скрипте две одинаковые ходилки, первая в стелз режиме, вторая без
а все остальные типы и параметры вынесены в начало процедуры
в паке должены быть ножницы и даггер, а так же щит и оружие (последние можно выбрать свои типы и подставить)

а весь скрипт, это минер, довольно громадный, да и накручено там всего, так что наврятли будет желание перепахивать весь скрипт целиком.... а эта процедура всего лишь вызывается по таймеру (респа тварей) и вней все кроме ходилки включено (вроде бы)

писалось все давно, уже сам не помню, хотел как то подправить, дык вообще перестало работать... откуда берется переменная "р"- сам счаз понять немогу... но в журнал все правильно пишет...
если есть желание - разбирайтеся...
Post Reply