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

Вопрос по NewMoveXY

тут можно задать вопрос по скриптингу
Post Reply
Procosha
Neophyte
Neophyte
Posts: 30
Joined: 10.09.2009 21:04
Location: AoP
Contact:

Вопрос по NewMoveXY

Post by Procosha »

Привет всем!

и так, попробую максимально кратко изложить проблемы:

а) чар стоит в точке А и тамит животное. Животное, не может подойти к персонажу из-за препятствий (деревья, кусты и т.п.)
Как только у животного Дистанция становится 0 или 1 (при таминге, животное прыгает на персонажа).
Чар перебегает на координату Б.
*** бывает такое, что чар не может сдвинуться с места, мне кажется это из-за того, что первая координата через которую он пробует бежать устанавливается как Бэд. Т.е. Не уверен точно, но мне кажется что животное, в этот момент, встало на эту координату и скрипт не может пробежать через нее. Как чистить эти бед координаты?

Я использую ClearBadLocationList; не знаю или оно правильно работает... но все же... Подскажите как лучше.

Пример строки:

Code: Select all

NewMoveXY(FirstX, FirstY, false, 0, true); 
ClearBadLocationList;


б) если персонажа поставили в паралайз, во время перебегания с точки А в точку Б. Скрипт цыклится на NewMoveXY и стоит... Начинает бежать только если я пропишу ресенд. Подскажите как бороться.
*ули - гули!
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Вопрос по NewMoveXY

Post by drabadan »

Procosha wrote:Привет всем!

и так, попробую максимально кратко изложить проблемы:

а) чар стоит в точке А и тамит животное. Животное, не может подойти к персонажу из-за препятствий (деревья, кусты и т.п.)
Как только у животного Дистанция становится 0 или 1 (при таминге, животное прыгает на персонажа).
Чар перебегает на координату Б.
*** бывает такое, что чар не может сдвинуться с места, мне кажется это из-за того, что первая координата через которую он пробует бежать устанавливается как Бэд. Т.е. Не уверен точно, но мне кажется что животное, в этот момент, встало на эту координату и скрипт не может пробежать через нее. Как чистить эти бед координаты?

Я использую ClearBadLocationList; не знаю или оно правильно работает... но все же... Подскажите как лучше.

Пример строки:

Code: Select all

NewMoveXY(FirstX, FirstY, false, 0, true); 
ClearBadLocationList;


б) если персонажа поставили в паралайз, во время перебегания с точки А в точку Б. Скрипт цыклится на NewMoveXY и стоит... Начинает бежать только если я пропишу ресенд. Подскажите как бороться.
очень ненадежный алгоритм, при котором количество условий близится к n в степени бесконечность. Такие задачи решить не возможно. Обезопась чара от паралайза или предупреди это, ClearBadLocationsList; следует использовать перед NewMoveXY.
Procosha
Neophyte
Neophyte
Posts: 30
Joined: 10.09.2009 21:04
Location: AoP
Contact:

Re: Вопрос по NewMoveXY

Post by Procosha »

Спасибо за ответ!

Я не знаю как NewMoveXY работает, но мне кажется что НЕВОЗМОЖНОГО нету.
Просто, не пришло время для решения задачи или же возможностей посчитать нету.
Буду костылями обходить и ждать.
*ули - гули!
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Вопрос по NewMoveXY

Post by GeeZeR »

Procosha wrote:Не уверен точно, но мне кажется что животное, в этот момент, встало на эту координату и скрипт не может пробежать через нее. Как чистить эти бед координаты?
Добавь в начало скрипта
MoveThroughNPC := 0; // позволяет пробегать сквозь все нпс, чужих чаров и т.д.

и на всяк случай перед каждым переходом на новую точку команду:
ClearBadLocationList;
Можно такой цикл намутить на каждое перемещение:

Code: Select all

While NewMoveXY(FirstX,FirstY,True,0,True) = false do begin
	ClearBadLocationList;
	Wait(5000);// секунды примерно на переход
end;
Stealth 8.10.2 | Клиент: 7.0.13.4
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Вопрос по NewMoveXY

Post by Vizit0r »

Procosha wrote: б) если персонажа поставили в паралайз, во время перебегания с точки А в точку Б. Скрипт цыклится на NewMoveXY и стоит... Начинает бежать только если я пропишу ресенд. Подскажите как бороться.
проверка
function Paralyzed : Boolean
не работает?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Re: Вопрос по NewMoveXY

Post by grundick »

Если проверки на парализ нету или она не работает, ходилка и будет циклиться. Она пытается сделать шаг, после трёх неудачных попыток тайл заноситься в бедлист. И так до тех пор, пока не проверятся все тайлы вокруг чара.В итоге все они будут в бедлисте... Скриптом это неисправить :(
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Вопрос по NewMoveXY

Post by nah nah »

если в журнал попадает запись о том, что чар находится под парализом, а также о том, что парализ спал (необязательно), то нужно сделать свою проверку на парализ, и её же потом вызывать из ходилки (где-то тут CFA выкладывал ходилку с коллбэком)
Post Reply