Yoko

All sides of Injection
It is currently 2025-12-25 06:53:18

All times are UTC+02:00




Post new topic  Reply to topic  [ 33 posts ]  Go to page Previous 1 2
Author Message
 Post subject:
PostPosted: 2006-09-27 20:41:13 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Не выдумывайте велосипед ;) существует огромное кол-во хороших (быстрых) алгоритмов для нахождения пути, причём многие из них можно найти в исходниках для различных языков программирования (прежде всего С++). Если уж взялись за идею, так воплотите её не "как получиться", а как "следует" ;). Помню, я даже заморачивался с этой темой и даже нашел какой-то алгоритм, причём с кодом на перле ;), но далее не пошло из-за того, что не хватает уошных команд и базы тайлов.
---------------
Это был "Поиск в ширину". На мой взгляд, самый лучший вариант, для нашего случая.

_________________
DerMeister сейчас на нейрале!


Top
   
 Post subject:
PostPosted: 2006-09-28 11:02:59 
Offline
User avatar

Joined: 2005-04-23 20:18:57
Posts: 362
Может я чего-то не понимаю, но как встроенная в клиент догонялка безовсяких доп. прог обходит препятствия?

_________________
Dragon World. [since 2004]


Top
   
 Post subject:
PostPosted: 2006-09-28 14:13:34 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
CONDOMchick wrote:
Может я чего-то не понимаю, но как встроенная в клиент догонялка безовсяких доп. прог обходит препятствия?


это называется pathfind. В самом клиенте реализован алгоритм (см. выше, я писал об этом). Его можно использовать из ИзиУО и Пинжекта, там сделан вызов клиентского pathfind-а.

_________________
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...


Top
   
 Post subject:
PostPosted: 2006-09-28 14:18:08 
Offline
User avatar

Joined: 2005-04-23 20:18:57
Posts: 362
Edred wrote:
CONDOMchick wrote:
Может я чего-то не понимаю, но как встроенная в клиент догонялка безовсяких доп. прог обходит препятствия?


это называется pathfind. В самом клиенте реализован алгоритм (см. выше, я писал об этом). Его можно использовать из ИзиУО и Пинжекта, там сделан вызов клиентского pathfind-а.


При отключенном в опцяих петфайнде, клиентская догонялка работает...

_________________
Dragon World. [since 2004]


Top
   
 Post subject:
PostPosted: 2006-09-28 15:17:21 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
ХЗ. Вообще, в пинжекте просто эмулируется двойное нажатие мышкой. Пчфайнд и срабатывает, но не надежно. Чтобы было надежнее, надо использовать trace... Вот он то и вызывает функцию поиска пути из клиента. Чего не понятного то?

_________________
DerMeister сейчас на нейрале!


Top
   
 Post subject:
PostPosted: 2006-09-28 18:06:51 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
CONDOMchick wrote:
При отключенном в опцяих петфайнде, клиентская догонялка работает...


А при чем здесь это? Ты мозги компу тоже из менюшки игры включаешь/выключаешь? Опция pathfind и алгоритм pathfind в клиенте - это разные вещи. Первая - всего-навсего команда клиенту при дабл клике правой кнопкой мыши использовать этот патчфинд для прохождения к указанной точке. Отключение, уверяю тебя, сам патчфинд не отключит, отключит только его задействование по дабл клику правой кнопкой мыши.

_________________
Ни один скрипт не работает? Пора обновить Инжект...

Все работает, но хочется большего? Пора переходить на стелс...


Top
   
 Post subject:
PostPosted: 2006-09-28 19:10:45 
Offline
User avatar

Joined: 2005-04-23 20:18:57
Posts: 362
Edred wrote:
CONDOMchick wrote:
При отключенном в опцяих петфайнде, клиентская догонялка работает...


А при чем здесь это? Ты мозги компу тоже из менюшки игры включаешь/выключаешь? Опция pathfind и алгоритм pathfind в клиенте - это разные вещи. Первая - всего-навсего команда клиенту при дабл клике правой кнопкой мыши использовать этот патчфинд для прохождения к указанной точке. Отключение, уверяю тебя, сам патчфинд не отключит, отключит только его задействование по дабл клику правой кнопкой мыши.


Ладно.
Но зачем ДЕЛАТЬ то, что уже сделано до вас?
Ведь существуют программы работающие непосредственно с самим клиентом...

_________________
Dragon World. [since 2004]


Top
   
 Post subject:
PostPosted: 2006-09-28 21:16:45 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Хмм, сомневаюсь, что они с инжектом дружат. И еще: хочешь помоч - не мешай ;)

_________________
DerMeister сейчас на нейрале!


Top
   
 Post subject:
PostPosted: 2006-09-29 05:52:28 
Offline
User avatar

Joined: 2005-04-23 20:18:57
Posts: 362
DerMeister =) wrote:
Хмм, сомневаюсь, что они с инжектом дружат. И еще: хочешь помоч - не мешай ;)


Ладно - я то не мешаю, но ты видать тоже не сильно помогаешь)
лучше воспользуйся ссылкой www.google.ru
Удачи.

_________________
Dragon World. [since 2004]


Top
   
 Post subject:
PostPosted: 2006-09-29 10:17:45 
Offline

Joined: 2005-06-12 22:12:15
Posts: 247
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;)


Top
   
 Post subject:
PostPosted: 2006-09-29 22:48:18 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
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;)

Я форум не читаю, но насколько мне известно - никто полностью его не реализовывал, а просто запускалась функция из клиента.

Разве не за этим Grin так усердно капался в клиенте ? Даже мне показал, где оно там лежит :-)

Другое дело, что вы могли вырвать дизассемблерный код и воткнуть в любое место своей программы, но это не реализация, а притыривание, очень даже эффективное - чтобы каждый раз не прописывать адрес в клиенте.


Last edited by Destruction on 2006-09-29 22:53:50, edited 1 time in total.

Top
   
 Post subject:
PostPosted: 2006-09-29 22:53:09 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Кто там просил маркировку тайлов ?

У меня оно в моей личной библиотечке лежит :-) Запускаем, не забыв указать файл.

Биндим на любую клавишу "mfgi resend", и когда отходим далеко и возвращаемся - жамкаем клавишу.

Когда надоест бродить - пишем "BREAK FNC", не напишите - не запишет в файл.

Собственно мне надо было немного - 2000 тайлов разметить, под конец лаги стали вылезать, небольшие, так, что на слабых машинах особо не порезвишся :-)
Code:
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:
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


Top
   
 Post subject:
PostPosted: 2007-08-29 10:38:35 
Offline
User avatar

Joined: 2006-11-02 11:57:11
Posts: 95
Ну так получилось? кротчайший путь)


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 33 posts ]  Go to page Previous 1 2

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited