Page 1 of 1

Вопрос по NewMoveXY

Posted: 02.01.2017 11:16
by Procosha
Привет всем!

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

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

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

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

Code: Select all

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


б) если персонажа поставили в паралайз, во время перебегания с точки А в точку Б. Скрипт цыклится на NewMoveXY и стоит... Начинает бежать только если я пропишу ресенд. Подскажите как бороться.

Re: Вопрос по NewMoveXY

Posted: 02.01.2017 11:28
by drabadan
Procosha wrote:Привет всем!

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

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

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

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

Code: Select all

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


б) если персонажа поставили в паралайз, во время перебегания с точки А в точку Б. Скрипт цыклится на NewMoveXY и стоит... Начинает бежать только если я пропишу ресенд. Подскажите как бороться.
очень ненадежный алгоритм, при котором количество условий близится к n в степени бесконечность. Такие задачи решить не возможно. Обезопась чара от паралайза или предупреди это, ClearBadLocationsList; следует использовать перед NewMoveXY.

Re: Вопрос по NewMoveXY

Posted: 02.01.2017 12:27
by Procosha
Спасибо за ответ!

Я не знаю как NewMoveXY работает, но мне кажется что НЕВОЗМОЖНОГО нету.
Просто, не пришло время для решения задачи или же возможностей посчитать нету.
Буду костылями обходить и ждать.

Re: Вопрос по NewMoveXY

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

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

Code: Select all

While NewMoveXY(FirstX,FirstY,True,0,True) = false do begin
	ClearBadLocationList;
	Wait(5000);// секунды примерно на переход
end;

Re: Вопрос по NewMoveXY

Posted: 02.01.2017 21:47
by Vizit0r
Procosha wrote: б) если персонажа поставили в паралайз, во время перебегания с точки А в точку Б. Скрипт цыклится на NewMoveXY и стоит... Начинает бежать только если я пропишу ресенд. Подскажите как бороться.
проверка
function Paralyzed : Boolean
не работает?

Re: Вопрос по NewMoveXY

Posted: 04.01.2017 16:10
by grundick
Если проверки на парализ нету или она не работает, ходилка и будет циклиться. Она пытается сделать шаг, после трёх неудачных попыток тайл заноситься в бедлист. И так до тех пор, пока не проверятся все тайлы вокруг чара.В итоге все они будут в бедлисте... Скриптом это неисправить :(

Re: Вопрос по NewMoveXY

Posted: 04.01.2017 16:33
by nah nah
если в журнал попадает запись о том, что чар находится под парализом, а также о том, что парализ спал (необязательно), то нужно сделать свою проверку на парализ, и её же потом вызывать из ходилки (где-то тут CFA выкладывал ходилку с коллбэком)