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

Возможно ли ?

тут можно задать вопрос по скриптингу
Post Reply
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Возможно ли ?

Post by Venom »

Всем привет !
Возникла некоторая проблемка, помогите разрешить :

Суть :
Лучник атакует цель, которая стоит за преградой(стеной), но в радиусе поражения.
Если после атаки, спустя 1,5 секунды мы не нанесли урон, ищем новую цель и атакуем её.

Проблема :
Если за преградой находится более одной цели, то лучник захватывает атаку на одну из них и при условии:
if (InJournalBetweenTimes('System: Вы нанесли', starttime, Now) = 0)
then ignore(victim);
атаку на следующего !!!не перебрасывает.

Code: Select all

 .....    
   if FindType(Pers[m], Ground) <> 0 then  
     begin
          If isDead(self) then exit;
           arbalet;
            while FindType(Pers[m], Ground) <> 0 do 
              begin
victim :=finditem;
attack(victim);
wait(1500);
if (InJournalBetweenTimes('System: Вы нанесли', starttime, Now) = 0) then ignore(victim);
.....
ЗЫ.
Две цели стоят за стенкой. Стрелок берет атаку на одну из целей. В это время вторая цель может выйти из за стенки и убить стрелка либо подойти к нему и не быть атакованной.
Last edited by Venom on 25.02.2011 16:33, edited 1 time in total.
bugger
Novice
Novice
Posts: 86
Joined: 02.02.2011 11:21

Post by bugger »

Возможно из-за параметра starttime у тебя такой глюк. Не уверен правда.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

так и не понял проблему
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Post by MuDaCk »

Vizit0r wrote:так и не понял проблему
Проблема в том, что даже после игнора предмета, атака остаётся на первую цель.
My name is Игорёшка Image
Пишу скрипты за едуImage
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Post by Venom »

Поправил первый пост
bugger
Novice
Novice
Posts: 86
Joined: 02.02.2011 11:21

Post by bugger »

Делай проверку на дистанцию до цели.
И атакуй ближайшего.
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Post by Venom »

bugger wrote:Делай проверку на дистанцию до цели.
И атакуй ближайшего.

Code: Select all

FindDistance := 12; 
FindVertical := 40;
указано.
через getdistance делать пробовал.
bugger
Novice
Novice
Posts: 86
Joined: 02.02.2011 11:21

Post by bugger »

Объясню суть.
Чтобы не случалось такой фигни, тебе надо чтобы каждую секунду делалась проверка на моба возле себя.
Как?
Сейчас вижу следующую идею:
Моб респится через каждые х секунд.

Ты приходишь на локу, запускается скрипт.

Поиск всех мобов заданного типа на локации, причем добавлять ид каждого в Tstrings. Добавляем так: добавил-> проигнорировал.

И дальше делаем так:
Ищем нового моба - по идее если они не в игнор листе, значит новый моб.
Дальше проходим по нашему листу тстрингс(возможно придется сбросить игнор, а потом заново добавить), и смотрим нет ли кого у кого дистанция меньше критической(2 допустим). Если таких нет, то атакуем последнюю цель, если её убили удаляем из тстрингса(в принципе удаление можно сделать на этапе просмотра дистанции). Ну и дальше твои рутины.

Стоит помнить, что тут нет потоков, так что желательно исключать бесконечных циклов или долгих циклов вроде while true if isdead break;. Посмотри у меня в теме скрипты есть фишинг скрипт с таймером для хп.
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Post by MuDaCk »

bugger wrote:Объясню суть.
Чтобы не случалось такой фигни, тебе надо чтобы каждую секунду делалась проверка на моба возле себя.
Как?
Сейчас вижу следующую идею:
Моб респится через каждые х секунд.

Ты приходишь на локу, запускается скрипт.

Поиск всех мобов заданного типа на локации, причем добавлять ид каждого в Tstrings. Добавляем так: добавил-> проигнорировал.

И дальше делаем так:
Ищем нового моба - по идее если они не в игнор листе, значит новый моб.
Дальше проходим по нашему листу тстрингс(возможно придется сбросить игнор, а потом заново добавить), и смотрим нет ли кого у кого дистанция меньше критической(2 допустим). Если таких нет, то атакуем последнюю цель, если её убили удаляем из тстрингса(в принципе удаление можно сделать на этапе просмотра дистанции). Ну и дальше твои рутины.

Стоит помнить, что тут нет потоков, так что желательно исключать бесконечных циклов или долгих циклов вроде while true if isdead break;. Посмотри у меня в теме скрипты есть фишинг скрипт с таймером для хп.
Лично Я нифига не понял... :oops:
My name is Игорёшка Image
Пишу скрипты за едуImage
bugger
Novice
Novice
Posts: 86
Joined: 02.02.2011 11:21

Post by bugger »

Чуть попозже распишу :)
Post Reply