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

Щипалка овечек

тут можно задать вопрос по скриптингу
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Щипалка овечек

Post by messir »

Всем доброго дня!

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

В общем дело такое:
Несколько чаров стоят на одном и том же тайле. В радиусе 2х тайлов от них есть овечки (более 200 штук), которые так же стоят все на одном и том же тайле.
Механика: поиск овечки с шерстью, даблклик на дагер в сумке и таргет на найденную овечку на земле. И так до тех пор пока в сумке не будет 150 комков шерсти (с одной овечки 3 компа шерсти).
Далее переработка шерсти в комочки ниток. Даблклик по шерсти в сумке и таргет на колесо (Spining Wheel) в сумке. [тут бывает глюк иногда и это колесо зависает с другим типом. Исправление - один раз так же использовать на нее комок шерсти].
Далее переработка ниток в рулоны ткани. Даблклик по ниткам в сумке и таргет на Loom возле чара на земле.
Ну и дальше проверка на вес. Если вес больше 20к, то сбрасываем под ноги рулоны ткани.

Вот скрипт стелсовый который слепил из чужих других. Уверне что вы увидите там много ужасного и недопустимого. Сразу сори, но не могу я понять паскаль((

Code: Select all

Program ovechki;
{$Include 'all.inc'}
VAR t : Integer;
Begin
while true do
  begin
  IgnoreReset;
  while not connected do
    begin
    AddToSystemJournal('Нет конекта');
    wait(1000);
    end;
  while connected do
  
    begin  
      wait(10000)
      uosay('.pray'); 
      t:= 0;
      repeat
        FindType($00CF,ground);
        if (findcount > 0) then
        begin
          WaitTargetObject(finditem);
          UseObject(FindType($0F51,Backpack));
          wait(100);
          t:= t + 1;
        end;
        if targetpresent then
        begin
          targettoobject(self);
        end;
      Until (findcount<1) or (count($0DF8)>5) or (t > 200);

      repeat
        FindType($0DF8,Backpack);
        if (findcount > 0) then
        begin
          if (count($1016)>0) then
          begin
            WaitTargetObject(FindType($1016,Backpack));
            UseObject(finditem);
            t:= 0;
            ClearJournal;
            uosay('Нашел порченное колесо. Исправляем.');
            repeat
              wait(100);
              t:= t + 1;
            Until (injournal('create')<>-1) or (t > 200);
            if targetpresent then
            begin
              targettoobject(self);
            end;
          end;
          WaitTargetObject(FindType($1015,Backpack));
          UseObject(FindType($0DF8,Backpack));
          t:= 0;
          ClearJournal;
          repeat
            wait(100);
            t:= t + 1;
          Until (injournal('create')<>-1) or (t > 200);
          if targetpresent then
          begin
            targettoobject(self);
          end;
        end;
      Until (findcount<1);

      repeat
        if (count($0E1F) > 4) then
        begin
          WaitTargetObject(FindType($105F,ground));
          UseObject(FindType($0E1F,Backpack));
          t:= 0;
          ClearJournal;
          repeat
            wait(100);
            t:= t + 1;
          Until (injournal('cloth')<>-1) or (t > 200);
          if targetpresent then
          begin
            targettoobject(self);
          end;
        end;
      Until (count($0E1F) < 4);

      if (weight > 20000) then
      begin
        Findtype($0F95,Backpack);
        MoveItem(finditem,findquantity,ground,0,0,0);
        wait(1000);
      end;
      
    end;
  end;
end.
Могу рабочий скрипт на инжекте дать по принципу которого переписывал на стелс.
Сразу отвечу почему не остаюсь на инжекте. Там не удается реализовать реконнектор, так как зачастую серверные скрипты шарда зависают и получается шляпа. Ну и ресурс компа клиентами кушать нет возможности.

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

З.Ы. Почему тут спойла нет?(
NoSilence
Novice
Novice
Posts: 94
Joined: 02.01.2010 13:55

Post by NoSilence »

а вот при втором круге цикла зависает, потом начинает реконнектиться
Как бы нету в коде функций конекта и дисконекта. Мб за как-то флуд кикает?
///
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Post by messir »

По журналу никакого флуда нет. По коду тоже не должно быть.
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Post by messir »

Разобрался в общем. Моя ошибка была в том, что я импользовал repeat - Until, а надо было While do

Единственное в чем не разобрался и что не нравится - это трассировка всех овечек в журнале. Причем в игре, к примеру, все овечки одной секундой отображаются в журнале, а в стелсе пролистывает по 10-15 овечек в секунду, что соответственно не дает работе скрипту пока не пропишет всех овечек, которых, повторюсь, более 200 штук. Это лечится как-то?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

не понял я совсем, какой именно кусок кода у тебя листает по 10-15 овец в секунду
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Post by messir »

Да причем тут код... это вообще не скрипт. Сам стелс после того как коннектится начинает трассировать овечек и в журнале получается такая вот лабуда....

Code: Select all

[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:09] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:10] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:11] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:12] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
[8:36:13] You see: a sheep
И вот пока эта лабуда тянется некоторое время скрипт ничего не может сделать.
Mirage
Novice
Novice
Posts: 90
Joined: 18.07.2009 19:41

Post by Mirage »

Ты не пробовал приконектиться простым клиентом и посмотреть что в журнале будет? Одно и тоже. Это игровое определение окружающих НПС.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

сколько айтемов в видимом радиусе?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Mirage
Novice
Novice
Posts: 90
Joined: 18.07.2009 19:41

Re: Щипалка овечек

Post by Mirage »

messir wrote: В радиусе 2х тайлов от них есть овечки (более 200 штук), которые так же стоят все на одном и том же тайле.
еще бы не задумывалось :lol:
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

2 тайла - это куда меньше видимого радиуса (обычно 18 клеток, на нек. старых серверах до 20 бывает поднято)
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Post by messir »

Дык... в клиенте все овечки появляются в журнале за секунду... в фурнале такой же флуд 'You see: a sheep'... но он моментальный... клиент же не виснет на 10-20 секунд пока все овечки поочередно не пропишуться в журнале...
Обратите внимание в логе на время...
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

я второй раз задаю вопрос - сколько айтемов в видимом радиусе?

если больше чем 500-1к, то это обьяснимо.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Post by messir »

я думаю не более тех цифр что ты написал. Ну или может быть в пределе. Там по сути пустой дом с забором, 8 сундуков и Лум...
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

значит это не проблема кешера.
хотя, может быть все же...
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Post by messir »

просто странно,... в клиенте в журнал все овцы вписываются одним махом, а тут кусками только... странно
Post Reply