очередной глупый вопрос...

Ask for help

Moderators: Murderator+, Murderator

Post Reply
comatoza
Posts: 76
Joined: 2006-09-10 01:09:20
Location: Russia>>SPb>>Kolpino
Contact:

очередной глупый вопрос...

Post by comatoza »

в общем такая тема...

рассмотрим ситуацию...
бежит чар... с какой точностью будут сниматься с него координаты

Code: Select all

uo.getx('enemy')
uo.gety('enemy')


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

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

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

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

Code: Select all

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



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


или я не прав?
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!
(с) "Святые из трущоб" перевод камрада Гоблина
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Почти...
Нельзя return'ить сразу несколько переменных (как только парсер доходит до ретурна, он сразу же прекращает выполнять процедуру => только первый return сработает.
1)
Мжно так:

Code: Select all

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: Select all

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: Select all

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 сейчас на нейрале!
comatoza
Posts: 76
Joined: 2006-09-10 01:09:20
Location: Russia>>SPb>>Kolpino
Contact:

Post by comatoza »

а по первой части?
человек бежит его координаты меняются... успевает ли инжа схватывать это? или нет?
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!
(с) "Святые из трущоб" перевод камрада Гоблина
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Инжа успевает. Сам посмотри. Делавем вывод на экран координат чара с паузой 100.
comatoza
Posts: 76
Joined: 2006-09-10 01:09:20
Location: Russia>>SPb>>Kolpino
Contact:

Post by comatoza »

Code: Select all

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


последняя версия....
и всё одно и тоже - прекарсно действует против стоящего противника :)
но стоящего я и руками срежу без проблем... а если бегает - всё равно не срабатывает...
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!
(с) "Святые из трущоб" перевод камрада Гоблина
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

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

Post by comatoza »

Savage wrote:Может ты неправильно подходишь к решению задачи? Попробуй вдумчивао объяснить, как можно подробнее, что ты хочешь реализавать.


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

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

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

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

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

заранее спасибо
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!
(с) "Святые из трущоб" перевод камрада Гоблина
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

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

Post by Savage »

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

Post by comatoza »

Savage wrote:То есть если я тебя правильно понял, и ты не двигаешься а играешь в кемпер-страйк, то, весь громоздкий алгоритм вычесления координат тайла подходящего для удара выносишь за цикл а проверку делаешь сразу на три подходящих параметра, Х Y и Dir жертвы через AND, если прокатывает то удар.


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

даже не так - я сам подхожу к человеку... но и он двигается...
допустим он бежал в одном направлении - развернулся и побежал назад... фсё что мне нужно повернуться... в общем движемся оба...
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!
(с) "Святые из трущоб" перевод камрада Гоблина
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Просил же подробно...
Ну тогда ты постоянно в цикле вычисляешь координаты тайла перед собой, если твои координаты или дирекшн изменились. Как токо координаты жертвы и дирекшн совпадают с местом казни и направлением твоих очей, удар.
Post Reply