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

Недавно начал разбиратся, нужен хелп

тут можно задать вопрос по скриптингу
Mirage
Novice
Novice
Posts: 90
Joined: 18.07.2009 19:41

Post by Mirage »

сори конечно но исключительно имхо
тайлов с деревьями всего 36. Их 1 раз переписываешь и организуешь поиск на местности.
ты как я понял собираешься делать чтото типо "идет и рубит направо и налево" это как бы усложнение а не упрощение. примерно как переработать миллиард вещей сравниваятип с 1 нужным тебе вместо того чтобы взять и найти просто 1 тип.

+ механика помоему не позволяет сделать рубку по -2+2. Для сравнения два скрипта на инжект

Code: Select all

sub Lumder()
var X, Y, MaxRange = 3
for Y = -MaxRange to MaxRange
for X = -MaxRange to MaxRange
   repeat
  uo.DeleteJournal()
    UO.WaitTargetTile(-1, UO.GetX()+X, UO.GetY()+Y, UO.GetZ())
      UO.UseType(0x0F43); <-- Топор
      repeat
         wait(100)
      until UO.InJournal("immune|nothing|You put")
   until UO.InJournal("immune|nothing|no logs")
   next
     next
end sub

sub Mining()
var X, Y, MaxRange = 3
for Y = -MaxRange to MaxRange
for X = -MaxRange to MaxRange
   repeat
  uo.DeleteJournal()
    UO.WaitTargetTile(-1, UO.GetX()+X, UO.GetY()+Y, UO.GetZ())
      UO.UseType(0x0F39); <-- лопата
      repeat
         wait(100)
      until UO.InJournal("nothing|You put")
   until UO.InJournal("nothing")
   next
     next
end sub
(фразы проверочные сокращены) Мининг работает ламбер нет если не указывать явно тайл дерева. Так что лучше делать по старинке по тайлам.
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

пыш.... я хотел по простому как у меня минер, 50 книг с 50 дефолтными рунами по скалам, летает копает, в аккруат у нас респавн 1 час он за час все облетает :roll:
Mirage
Novice
Novice
Posts: 90
Joined: 18.07.2009 19:41

Post by Mirage »

почему не промучатся пару часов не облететь несколько акров леса и не разметить скажем 30-50 деревьев на 10 рунках? 300-500 деревьев как раз хватит для цикла.
Last edited by Mirage on 01.11.2009 12:13, edited 1 time in total.
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Чего? чет нипонятно :))
Mirage
Novice
Novice
Posts: 90
Joined: 18.07.2009 19:41

Post by Mirage »

записываешь в файл 50 деревьев (тайл х у z ) в 10 точках рубки (10 рунок)
Получается 500 деревьев. Пока последнее срубишь как раз респ на первом поспеет.

ХЗ большинство народу так и рубит.
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

интересно откуда такая классовая ненависть к TargetToTile ?
еще раз вынужден предложить скрипт по сбору координат деревьев
Подчеркну, это самый простой вариант.
http://stealth.od.ua/forum/viewtopic.php?p=6011#6011
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Ага запустил его, отметил он 6 деревов и заглох...
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

1)отойди на 20-30 тайлов в сторону и попробуй еще раз (и не торопись его останавливать, он в некоторых местах "тормозит")
2)неплохо бы проверить типы деревьев , мб на твоем шарде есть отличия
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Я тут подумал, а нельзя сделать типа вот так...

TargetToXYZ(ReadStaticsXY);

эм....ну вобшем в таком духе? т.е чар портанулся сразу проверил че перед ним и рубит по возвращенному текущему тайлу?!
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

Можно конечно, только зачем?

Подобные скрипты работают так:
1)Получить координаты и тип тайла следующего дерева.
2)Переместится к дереву
3)Рубить пока не опустеет
4)Перейти к 1)

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

Code: Select all

List.SaveToFile('C:/StealthTrees.dat');
а все остальное это как раз обработка и анализ статики.
Если 1 чар то и хрен бы с ним, а если несколько...
Чар1 - забрал проц под анализ статики...
Чар5 - в эту сек должен был портнуться по рунке от ПК. Но из-за того что проц был занят скриптом Чара1, команды скрипта этого чара были обработаны на 2сек. позже со всеми вытекающими... да и зачем лишнюю нагрузку на проц плодить?

Да и с 1 чаром, надо от ПК ломится , а мы статику обрабатываем, некогда нам ...
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Ну с кажем так, нагрузки от стелса с 2мя чарами на проц АМД 6000+ не заметил :lol:

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

Поэтому и спросил, будет ли он рубить как я предложил выше, если написал неправильно процедуру, поправьте пожалст

ЗЫ ПК Нет рубаю в маласе
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

Не в нагрузке дело , а в последовательности....

Вырубил дерево-портнулся? Это какая-же низкая производительность-то будет?
Вообщем, просто лень парится с написанием как я понял...
При этом ты считаешь, что проще написать скрипт с динамической обработкой статики, что-ж ВПЕРЬОт!!! :P
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

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

Code: Select all

function ReadStaticsXY(X,Y: Word; WorldNum: Byte): TStaticCell; // Возвращает тип тайла с координатами и цветом, а так же количество слоев
TargetToXYZ(ReadStaticsXY) Хотел сделать, так но тоже потыкался потыкался и безрезультатно...

Code: Select all

a := ReadStaticsXY(TileX,TileY,WorldNum);
UseType(kr,$ffff);
wait(500);
targetToTile(a.Statics[0].Tile,TileX,TileY,GetZ(self));
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

прям уж так сразу и тыкать в..куда???

Code: Select all

targetToTile(a.Statics[0].Tile,TileX,TileY,GetZ(self));
а как насчет проверить что за статику ты поймал (ты думаешь массив типов тайлов treeTile: array [0 .. 34] of word; для массовки в том скрипте вкрутили)????
а как насчет подойти к пойманной статике???
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Зачем подходить когда руна прям в упор к дереву и т.е как бы кроме дерева статистики нема!?


Ну тайлы прописаны, загвоздка в, как слепить команду:

Code: Select all

TargetToTile(ReadStaticsXY(X,Y,WorldNum),GetZ(self));

Точнее не могу понять схему работы,
Вот мы прописали...
treeTile: array [0 .. 34] of word;
блабла бла

Code: Select all


ReadStaticsXY(X,Y,WorldNum);
LayersCount:=GetLayerCount(X,Y,WorldNum); 
или вот.

Code: Select all

var
    X0,Y0,Z0,Tile: Word;
    Tile0: TStaticCell;
    C,W0: Byte;
begin
  repeat
      X0:=GetX(Self);
      Y0:=GetY(Self);
      Z0:=GetZ(Self);
      W0:=WorldNum;
      Tile0:=ReadStaticsXY(X0,Y0,W0); 
Ну и куда потом координаты тайла девать? :?
Last edited by Sfairat on 02.11.2009 19:33, edited 2 times in total.
Post Reply