Yoko

All sides of Injection
It is currently 2026-01-24 00:40:44

All times are UTC+02:00




Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next
Author Message
PostPosted: 2006-09-14 19:14:44 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
Здравствуйте, многоуважаемые...

начну с начала... играю в данное время на шарде Destiny of Middle-Earth
а ноги у моей проблемки растут оттуда, что для того чтобы использовать одну из абилок класса вор необходимо находиться строго за спиной у оппонента и смотреть с ним в одном направлении...

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

Описание: GetDistance •
Синтакс: number uo.GetDistance([object])
Тема: Команды скриптов Ключевые слова: uoscript, objhandling


--------------------------------------------------------------------------------

Возвращает параметр обьекта object (по умолчанию - персонажа игрока) - расстояние до обьекта, которое вычисляется как минимальное из расстояний по осям X и Y.


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

подскажите - как это сделать иначе?

есть у меня ышо версия с проверкой координат и направления взгляда...
но это 8 на (4(координаты чара и жертвы)+2(куда смотрит чар и жертва)) 48 проверок в секунду.... думаю будет лагать нереально....

ах да.... собственно примерно так выглядит то, что я наваял

Code:
sub navodka()
 var dist, dir, myDir, i
 uo.addobject('my', '0x01380a8a')
 dist=uo.getdistance('zertva')
 dir=uo.getdir('zertva')
 mydir=uo.getDir('my')
 uo.getx('my')
 uo.gety('my')
 while  str(dist)<>1 AND str(dir)<>str(mydir)
  dist=uo.GetDistance('zertva')
  dir=uo.getdir('zertva')
  mydir=uo.getDir('my')
  wait(1)
 wend
 uo.waittargetobject('zertva')
 uo.msg('.ab 1')
end sub

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

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


Top
   
 Post subject:
PostPosted: 2006-09-14 19:40:48 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Нифгига не понял что именно ты хочешь.

Quote:
подскажите - как это сделать иначе?

Что именно "иначе"?
ЗЫ: Это просто убило:
while str(dist)<>1 AND str(dir)<>str(mydir)

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


Top
   
 Post subject:
PostPosted: 2006-09-14 19:49:26 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
DerMeister =) wrote:
Нифгига не понял что именно ты хочешь.

Quote:
подскажите - как это сделать иначе?

Что именно "иначе"?
ЗЫ: Это просто убило:
while str(dist)<>1 AND str(dir)<>str(mydir)


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

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

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


Top
   
 Post subject:
PostPosted: 2006-09-14 19:55:13 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Это гдеж у тебя числа то?
Если x - число, то str(x) - строка, а ты её пытаешься с числом 1 сравнить... У тебя условие (str(dist)<>1) выполняется всегда так как строка ВСЕГДА НЕравна числу (кроме нулевой строки и числа 0) :lol: ;)

Теперь насчёт твоего вопроса - всё очень просто, надо тока всять и написать по новой, а то то что у тебя это галиматья (без обид ;) ).
Будет время, раскину мозгами.

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


Top
   
 Post subject:
PostPosted: 2006-09-14 20:06:37 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
спасибо что объяснил :)
а то я думаю чего это он просто dir yне выводит по print а str(dir) выводит :)
а насчёт галиматьи... это первое что мне пришлось писать после возвращения к УО :)
кстати до миддлы играл на рессе был там такой вор nuDoBKa :)
ЗЫ програмистом не являюсь и никогда им себя не считал :)
но вот поломать голову люблю... и эта задачка засадила меня часов на 6 :)
будет возможность помоги :)
как я уже говорил - заранее спасибо :)

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

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


Top
   
 Post subject:
PostPosted: 2006-09-14 21:14:49 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Нужно маленькое уточнение - За спиной понятно, а вот количество возможных положений чё то не понятно... Вобщем, сколько возможных различных положений "за спиной"... ? наверно я плохо обьяснил... блин... говорила мама - читай книги. =_)

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


Top
   
 Post subject:
PostPosted: 2006-09-14 22:43:10 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
чётко за спиной....
т.е. тока так

я->ж->

<-ж<-я

ну и те же вариации вверх вниз и диагональные...

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

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


Top
   
 Post subject:
PostPosted: 2006-09-14 23:06:47 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
comatoza wrote:
чётко за спиной....
т.е. тока так

я->ж->

<-ж<-я

ну и те же вариации вверх вниз и диагональные...

Вот решение для диагональной "вариации" (взаимное расположение - на одной оси):

Code:
Скрипт не рабочий!
sub main()
var en
uo.addobject('en') #добавляем врага
  while uo.targeting()
  wait(250)
  wend
while uo.getdir('en')<>uo.getdir() || (uo.getx('en')-uo.getx()<>getorient('x') && uo.gety('en')-uo.gety()<>getorient('y'))
#условие ожидания
wait(200) #Если не будет лагов, то можно и поменьше сделать
wend
uo.waittargetobject('en')
uo.msg('.ab 1')
end sub

sub getorient(axis)
#(c)Der, getorient() beta
var orient=999 #так надо
if axis=='x' then
  if uo.getdir()==9 then
  orient=-1
  endif
  if uo.getdir()==1 then
  orient=1
  endif
end if
if axis=='y' then
  if uo.getdir()==7 then
  orient=-1
  endif
  if uo.getdir()==3 then
  orient=1
  endif
end if
return orient
endsub


Вот что у меня получилось... я не тестил... Если не запустится или будет некорректно работать, то отпишись об этом (как можно подробнее).

ЗЫ: На "вариацию" "всех сторон света" нужно немножко переделать условие и процедуру getorient Но это уже завтра, счас я хочу спать. Вобщем, жду результатов теста.

-----------------------------------------------
Потестил, поговорил с умными людми... Понял, что это работать не может. =_(

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


Last edited by DerMeister =) on 2006-09-16 14:46:01, edited 2 times in total.

Top
   
 Post subject:
PostPosted: 2006-09-14 23:44:30 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
работает....
задержка великовата.... но это исправимо :)

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

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


Top
   
 Post subject:
PostPosted: 2006-09-16 12:23:15 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
ох ужас;)
уроки геометрии прошли даром?;) расчитать клетко за спиной подойти на нее...
дистанци проверить просто главное чтобы х и у лежали в пределах [0,1]
единстеное замечание только что GetDir и AddDir работают по разным направления


Top
   
 Post subject:
PostPosted: 2006-09-16 12:31:25 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Grin wrote:
ох ужас;)
уроки геометрии прошли даром?;) расчитать клетко за спиной подойти на нее...
дистанци проверить просто главное чтобы х и у лежали в пределах [0,1]
единстеное замечание только что GetDir и AddDir работают по разным направления


Можно по подробней про по каждому пункту... Особенно по последнему ;)

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


Top
   
 Post subject:
PostPosted: 2006-09-16 14:48:54 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
comatoza wrote:
работает....
задержка великовата.... но это исправимо :)



Это работать не может. УЖоС ,а не скрипт...

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


Top
   
 Post subject:
PostPosted: 2006-09-16 16:10:33 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
DerMeister =) wrote:
comatoza wrote:
работает....
задержка великовата.... но это исправимо :)



Это работать не может. УЖоС ,а не скрипт...


ужас не ужас... а кой что упростил в той версии в которой я тупо перебирал через if все варианты возможные :)

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

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


Top
   
 Post subject:
PostPosted: 2006-09-16 16:14:54 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Твоя задача реализуется очень просто. Если тебе интересно, то я, вернувшись с дачи, напишу "как надо". Еще, тебе может помочь Grin. Если оч. срочно, то к нему.

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


Top
   
 Post subject:
PostPosted: 2006-09-16 16:29:05 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
Grin wrote:
ох ужас;)
уроки геометрии прошли даром?;) расчитать клетко за спиной подойти на нее...
дистанци проверить просто главное чтобы х и у лежали в пределах [0,1]
единстеное замечание только что GetDir и AddDir работают по разным направления

если я верно понял говорится о следующем....
должно выполняться условие:
((абсолютное значение от (координата Х жертвы минус координат Х чара) = 1 и абсолютное значение от (координата У жертвы минус координата У чара) = 0) или (абсолютное значение от (координата Х жертвы минус координат Х чара) = 0 и абсолютное значение от (координата У жертвы минус координата У чара) = 1)) И (направление взглядов совпадает)


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

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

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


Top
   
 Post subject:
PostPosted: 2006-09-16 17:12:25 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
кстати :)
дальнейшая работа моего извращённого мозга подсказала ышо один тактический ход :)
но! для него мне требуется осуществить прицел в определённые координаты... и если Х,У,Z я вытащить смогу... то как вытащить tilenum? ф смысле не оставнавливаясь и вынимая его из текстового окна :)
т.е. допустим так:

Code:
uo.infotile(x,y,z)
tilenu
uo.waittargettile(tilenum, x,y,z)

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

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


Top
   
 Post subject:
PostPosted: 2006-09-16 17:24:00 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
Казалось бы что все что тебе нужно так это infotile
а дальше вот такой скриптик
uo.infotile()
while uo.targeting()
wait(100)
wend
Но так завелось, что это работать небудет;)
Но можно сделать другое змечание info как не страно также заполняет lasttile;)
поэтому делаем такое..
uo.info()
while uo.targeting()
wait(100)
wend
tilenum=uo.LastTile(0)
и тд
читай инфу про uo.LastTile


Top
   
 Post subject:
PostPosted: 2006-09-16 17:51:58 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
а ларчик просто открывался :)
пасибки :)

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

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


Top
   
 Post subject:
PostPosted: 2006-09-28 19:54:50 
Offline

Joined: 2006-09-10 01:09:20
Posts: 76
Location: Russia>>SPb>>Kolpino
Code:
sub navodka()
 var i, X, Y
 x=abs(uo.getx()-uo.getx('zertva'))
 y=abs(uo.gety()-uo.gety('zertva'))
 while not (x < 2 AND y < 2 AND uo.getdir()==uo.getdir('zertva'))
  wait(10)
 wend
 uo.waittargetobject('zertva')
 uo.msg('.ab 1')
end sub

получается вот такая бодяга, тока abs он не знает... а как иначе модуль взять?

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

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


Top
   
 Post subject:
PostPosted: 2006-09-28 21:13:57 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
А чё, самому слабо процедуру написать?
Code:
sub abs(x)
    if (x < 0) then
        x = -x
    end if
    return x
end sub

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


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

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 2 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