


---------------
Это был "Поиск в ширину". На мой взгляд, самый лучший вариант, для нашего случая.
Moderators: Murderator+, Murderator
Edred wrote:CONDOMchick wrote:Может я чего-то не понимаю, но как встроенная в клиент догонялка безовсяких доп. прог обходит препятствия?
это называется pathfind. В самом клиенте реализован алгоритм (см. выше, я писал об этом). Его можно использовать из ИзиУО и Пинжекта, там сделан вызов клиентского pathfind-а.
CONDOMchick wrote:При отключенном в опцяих петфайнде, клиентская догонялка работает...
Edred wrote:CONDOMchick wrote:При отключенном в опцяих петфайнде, клиентская догонялка работает...
А при чем здесь это? Ты мозги компу тоже из менюшки игры включаешь/выключаешь? Опция pathfind и алгоритм pathfind в клиенте - это разные вещи. Первая - всего-навсего команда клиенту при дабл клике правой кнопкой мыши использовать этот патчфинд для прохождения к указанной точке. Отключение, уверяю тебя, сам патчфинд не отключит, отключит только его задействование по дабл клику правой кнопкой мыши.
DerMeister =) wrote:Хмм, сомневаюсь, что они с инжектом дружат. И еще: хочешь помоч - не мешай
DerMeister =) wrote:ХЗ. Вообще, в пинжекте просто эмулируется двойное нажатие мышкой. Пчфайнд и срабатывает, но не надежно. Чтобы было надежнее, надо использовать trace... Вот он то и вызывает функцию поиска пути из клиента. Чего не понятного то?
dmitrykit wrote:DerMeister =) wrote:ХЗ. Вообще, в пинжекте просто эмулируется двойное нажатие мышкой. Пчфайнд и срабатывает, но не надежно. Чтобы было надежнее, надо использовать trace... Вот он то и вызывает функцию поиска пути из клиента. Чего не понятного то?
zabluzdajesha, tam polnostju realizovann mehanizm pathfinda, s vozmoznostju vytaschit' cherez trace tile, i uznat' prohodimost' i prochije prochije... nevnimateljno vidimo chitajesh forum;)
Code: Select all
sub Des.Mark_Possible_Tiles()
var x = uo.getX();
var y = uo.getY();
var file = "tiles.dat"
var f = file(file);
f.create()
f.open()
deljournal("BREAK FNC")
while true
if uo.getGlobal(str(uo.getX())+":"+str(uo.getY())) == "N/A" then
uo.mfgi("add","2760",str(uo.getX()),str(uo.getY()),str(uo.getZ()+2),"5555")
x = uo.getX();
y = uo.getY();
uo.setGlobal(str(x)+":"+str(y),"true")
f.writeln(str(x)+" "+str(y))
else
wait(10)
endif
if uo.injournal("BREAK FNC") then
f.close()
return
endif
wend
endsub
Code: Select all
Sub isPossibleTile_init(file)
file = file(file)
file.open()
var x, y
while not file.eof()
x = safe call file.readnumber()
y = safe call file.readnumber()
uo.setglobal(str(x)+":"+str(y),"1")
wend
uo.setGlobal("isPossibleTile_init", "1")
endsub
sub isPossibleTile(x, y)
if NOT uo.getGlobal("isPossibleTile_init") == "1" then
isPossibleTile_init("tiles.dat") ; имя файла с тайлами, должно лежать в папке с Injection, если указан не абсалютный путь.
endif
if uo.getGlobal(str(x)+":"+str(y))=="1" then
return 1
endif
return 0
endsub
sub main()
if isPossibleTile(5500, 1800) then
;// по тайлу можно ходить
else
;// по тайлу нельзя ходить
endif
endsub