Yoko

All sides of Injection
It is currently 2026-01-25 18:12:03

All times are UTC+02:00




Post new topic  Reply to topic  [ 11 posts ] 
Author Message
PostPosted: 2006-10-25 19:23:52 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
в общем такая тема...

рассмотрим ситуацию...
бежит чар... с какой точностью будут сниматься с него координаты
Code:
uo.getx('enemy')
uo.gety('enemy')


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

и ещё... это уже из области совершенно глупых вопросов....

если мне нада вызвать процедуру или функцию :) я в этом собак не ловлю :)

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

Code:
sub main
......
get_enemy_coord('enemy')
.....
end sub



sub get_enemycoord('enemy')
.....
return x
return y
return dir
end sub


или я не прав?

_________________
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!
(с) "Святые из трущоб" перевод камрада Гоблина


Top
   
 Post subject:
PostPosted: 2006-10-25 20:10:30 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Почти...
Нельзя return'ить сразу несколько переменных (как только парсер доходит до ретурна, он сразу же прекращает выполнять процедуру => только первый return сработает.
1)
Мжно так:
Code:
sub main 
......
x=get_enemy_coord('enemy','x')
y=get_enemy_coord('enemy','y')
dir=get_enemy_coord('enemy','dir')
.....
end sub



sub get_enemycoord('enemy','coord')
.....
if coord=='x' then
return x
end if

if coord=='y' then
return y
end if

if coord=='dir' then
return dir
end if
 
end sub

2)
Но на само деле будет быстрее работать, если написать для каждой координаты свою процедуру, тоесть:
Code:
sub get_enemycoord_x('enemy')
...
end sub

sub get_enemycoord_y('enemy')
...
end sub

sub get_enemycoord_dir('enemy')
...
end sub

3)
Еще есть хороший вариант с глобалками, но он хорошь лишь тогда, когда тебе нужны все координаты сразу. В случае если, скажем, координату х ты хочешь узнавать чаще, чем dir, то тогда вариант с вычислением всех координат в одной процедуре нужно реализовывать так: не вычислять все 3 координаты сразу, а "по запросу" (хотя это тоже самое,Ч то и пункт 2, только впрофиль):
Code:
sub get_enemycoord('enemy','coord') 

if coord=='x' then
вычисляем Х
return x
end if

if coord=='y' then
вычисляем У
return y
end if

if coord=='dir' then
вычисляем dir
return dir
end if
 
end sub

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


Top
   
 Post subject:
PostPosted: 2006-10-25 20:52:04 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
а по первой части?
человек бежит его координаты меняются... успевает ли инжа схватывать это? или нет?

_________________
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!

(с) "Святые из трущоб" перевод камрада Гоблина


Top
   
 Post subject:
PostPosted: 2006-10-25 21:08:48 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Инжа успевает. Сам посмотри. Делавем вывод на экран координат чара с паузой 100.


Top
   
 Post subject:
PostPosted: 2006-10-26 00:37:55 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
Code:
sub autostab()
var dx,dy,dir
uo.deletejournal()
while not uo.injournal('initial base')
  dx  = uo.getx()-uo.getx('zertva')
  dy  = uo.gety()-uo.gety('zertva')
  dir = uo.getdir('zertva')
 if dir==uo.getdir() then
  if (dir==0 and dx==0 and dy==1) then
   stab()
  else
   if (dir==1 and dx==-1 and dy==1) then
    stab()
   else
    if (dir==2 and dx==-1 and dy==0) then
     stab()
    else
     if (dir==3 and dx==-1 and dy==-1) then   
      stab()
     else
      if (dir==4 and dx==0 and dy==-1) then
       stab()
      else
       if (dir==5 and dx==1 and dy==-1) then
        stab()
       else
        if (dir==6 and dx==1 and dy==0) then
    stab()
        else
         if (dir==7 and dx==1 and dy==1) then
     stab()
         endif
        endif
       endif
      endif
     endif
    endif
   endif
  endif
 endif
wait(100)
wend
end sub


последняя версия....
и всё одно и тоже - прекарсно действует против стоящего противника :)
но стоящего я и руками срежу без проблем... а если бегает - всё равно не срабатывает...

_________________
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!

(с) "Святые из трущоб" перевод камрада Гоблина


Top
   
 Post subject:
PostPosted: 2006-10-26 09:09:51 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Может ты неправильно подходишь к решению задачи? Попробуй вдумчивао объяснить, как можно подробнее, что ты хочешь реализавать.


Top
   
 Post subject:
PostPosted: 2006-10-26 16:53:52 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
Savage wrote:
Может ты неправильно подходишь к решению задачи? Попробуй вдумчивао объяснить, как можно подробнее, что ты хочешь реализавать.


попытаюсь в очередной раз...

есть такая фишка, абилити у класса вор. Находясь в статусе хайд+стелс, он может, находясь чётко за спиной у противника и смотря с ним в одну сторону, и имея в руках оружие класса кинжал - даггер, крисс и скининг найф, произнеся '.ab 1' и кликнув таргетом на противника -нанести ему оЦЦень солидный урон...

т.о. я пытаюсь написать макрос который будет проверять положение меня относительно врага помеченного как 'zertva' и применять эту абилку...

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

надеюсь доступно рассказал?

заранее спасибо

_________________
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!

(с) "Святые из трущоб" перевод камрада Гоблина


Top
   
 Post subject:
PostPosted: 2006-10-26 23:30:01 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
То есть ты уже занял позицию, смотришь в нужном направлении и ждешь когда тебя растопчут? Тогда неправильный у тя алгоритм. Вычисляешь координаты тайла перед тобой и как только они будут равны координатам жертвы, проверяешь его дирекшн и если все норм, то наносишь удар. Чем меньше будет вызовов, проверок и переходов тем больше скорость.паузы ставишь минимальные, такие чтоб комп токо не тормозил.


Top
   
 Post subject:
PostPosted: 2006-10-26 23:33:20 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
То есть если я тебя правильно понял, и ты не двигаешься а играешь в кемпер-страйк, то, весь громоздкий алгоритм вычесления координат тайла подходящего для удара выносишь за цикл а проверку делаешь сразу на три подходящих параметра, Х Y и Dir жертвы через AND, если прокатывает то удар.


Top
   
 Post subject:
PostPosted: 2006-10-27 00:01:03 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
Savage wrote:
То есть если я тебя правильно понял, и ты не двигаешься а играешь в кемпер-страйк, то, весь громоздкий алгоритм вычесления координат тайла подходящего для удара выносишь за цикл а проверку делаешь сразу на три подходящих параметра, Х Y и Dir жертвы через AND, если прокатывает то удар.


не совсем... я постоянно двигаюсь сам, т.к. приходиться занимать позицию постоянно... сразу не угадаешь где кто будет...

даже не так - я сам подхожу к человеку... но и он двигается...
допустим он бежал в одном направлении - развернулся и побежал назад... фсё что мне нужно повернуться... в общем движемся оба...

_________________
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!

(с) "Святые из трущоб" перевод камрада Гоблина


Top
   
 Post subject:
PostPosted: 2006-10-27 00:08:42 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Просил же подробно...
Ну тогда ты постоянно в цикле вычисляешь координаты тайла перед собой, если твои координаты или дирекшн изменились. Как токо координаты жертвы и дирекшн совпадают с местом казни и направлением твоих очей, удар.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 11 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: Bing [Bot] and 0 guests


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:  
cron
Powered by phpBB® Forum Software © phpBB Limited