Yoko

All sides of Injection
It is currently 2025-10-22 16:07:13

All times are UTC+02:00




Post new topic  Reply to topic  [ 41 posts ]  Go to page 1 2 3 Next
Author Message
PostPosted: 2006-05-01 04:50:01 
Offline
User avatar

Joined: 2006-04-06 17:16:54
Posts: 95
Location: Khab
Чар кастует вокруг себя стенки огня, как бы определить есть ли стена огня в тех тайлах куда оно колдовалось, дабы не колдовать постоянно эти стенки вокруг себя и не тратить реги :). я пишу свои перый скрипт и делаю маленький шаг в программировании вообще :). Так что не шлите меня по ссылкам. Заранее благодарю


Last edited by Rijo on 2006-05-02 13:03:55, edited 1 time in total.

Top
   
 Post subject:
PostPosted: 2006-05-01 06:05:19 
Offline

Joined: 2005-04-19 18:00:29
Posts: 2259
Location: Московская область
тут поищи


Top
   
 Post subject:
PostPosted: 2006-05-01 07:56:19 
Offline
User avatar

Joined: 2006-04-06 17:16:54
Posts: 95
Location: Khab
Появилась новая проблемка. В уроках ничего нужного не нашел или просто не заметил. Как найти в журнале то что я вижу что кто то погиб. uo.InJournal() не помогает.. или я не так делаю. Я пишу UO.InJournal('you see:')


Top
   
 Post subject:
PostPosted: 2006-05-01 07:58:39 
Offline

Joined: 2005-04-19 18:00:29
Posts: 2259
Location: Московская область
если не ошибаюсь , в журнале отписывается
Code:
Body( items)


Top
   
 Post subject:
PostPosted: 2006-05-01 07:59:33 
Offline
User avatar

Joined: 2006-04-06 17:16:54
Posts: 95
Location: Khab
Я хочу вот этот код запихать, чтобы он врубался когда находился труп. Может в коде можно что тосделать, чтобы он по кругу проверял новые трупы на нужные вещи.
Code:
sub Loot2()
VAR i
DIM Loot[20]

Loot[0]=0x1089 ;
Loot[1]=0x1F0A ;
Loot[2]=0x1F07 ; 
Loot[3]=0x1F06 ;
Loot[4]=0x1F09 ;
Loot[5]=0x108A ;
Loot[6]=0x0EED ;
Loot[7]=0x1086 ;
Loot[8]=0x1087 ;
Loot[9]=0x1F08 ;
Loot[10]=0x1088 ;
   
UO.UseObject('lastcorpse')

   if UO.GetQuantity('lastcorpse') then
      UO.SetArm('temp')
      UO.WaitTargetObject('lastcorpse')
      UO.UseType('0x000') ;dagger
      wait(500)
      UO.Arm('temp')
      wait(500)
   endif
   
   UO.SetReceivingContainer('0x40099AA2') ; loot store bag

   For i=0 to 10
      UO.FindType(Loot[i],-1,'ground')
      if UO.GetQuantity('finditem') then
         UO.Grab(STR(0),'finditem')
         wait(1000)
      endif

      if UO.GetQuantity('lastcorpse') then
         UO.FindType(Loot[i],-1,'lastcorpse')
         if UO.GetQuantity('finditem') then
            if Loot[i]==0x1078 then
               UO.WaitTargetObject('finditem')
               UO.UseType('0x0F9E')
            else
               UO.Grab(STR(0),'finditem')
            endif             
            wait(1000)
         endif
      endif
   next

   UO.UnSetReceivingContainer()
else
  wait(1000)
endif
end sub


Top
   
 Post subject:
PostPosted: 2006-05-01 08:02:05 
Offline

Joined: 2005-04-19 18:00:29
Posts: 2259
Location: Московская область
ну так зацыкли его ввиде:

Code:
whle not uo.Dead()
  while not uo.InJournal('Body')
    wait(500)
  wend
  . . .


это к примеру, а так-сам продумай и отредактируй. Или же опиши точнее,что и как.

п.с. Loot[20] = это ты замудрил конешно


могу пример привести :
Code:
var tryp
var body
var color
uo.Set('finddistance','5')
while not uo.Dead()
  if uo.InJournal('Body') then
    uo.FindType(body,color,'ground')
    tryp=uo.GetSerial('finditem')
    Loot()
    uo.Ignore(tryp)
  else
    wait(500)
  end if
wend
uo.IgnoreReset()


ищет,как нашел-забивает в переменную труп, и запускает скрипт лута, затем игнорит труп, чтобы в следующий раз не видеть его =\ -эт грубый пример


Top
   
 Post subject:
PostPosted: 2006-05-01 12:13:49 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Rijo wrote:
UO.InJournal('you see:')


"You see" - чисто клиентовская фишка, в журнале инжекта эта надпись не появляется.


Top
   
 Post subject:
PostPosted: 2006-05-01 13:56:51 
Offline
User avatar

Joined: 2006-04-06 17:16:54
Posts: 95
Location: Khab
Ну скрипт у меня запахал, вроде бы даже без ошибок. Но проверку на труп, после которой бы начинался лут я не придумал, наверно моск еще мыслит не в том направлении :). Если кто сможет предложить что нибудь интересное, я посмотрю ;).
Моя проверка через инжектовский журнал, когда проверяется надпись "Body of" почему то не хочет пахать :(
И вот только что заметил после продолжительного теста, что проверка на количество огня тоже не пашет :(
while not UO.FindType(0x398C ,-1,'ground') > 6 - это может быть похоже на правду, где 0x398C-тип одного тайла стены огня


Top
   
 Post subject:
PostPosted: 2006-05-01 14:11:15 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Финдтайп возвращает указатель на объект, чтобы исследовать количество найденных итемов надо потом юзануть UO.FindCount()

По поводу боди и трупов, попробуй ввести ,set injectecho 1 и ,saveconfig так же у трупов разных мастей один тип 0x2006, можно делать поиск по нему и потом применять некоторую логику. То есть если труп уже был найден, игнорить его или нечто подобное.


Top
   
 Post subject:
PostPosted: 2006-05-01 15:46:02 
Offline
User avatar

Joined: 2006-04-06 17:16:54
Posts: 95
Location: Khab
ну вот он собсно скрипт, не забудьте что первый мной написанный, хотя много что просто стырино у других, копирайты не ставил потому что не знаю кто их написал :). Добваьте пожалуста проверок. Коменты как токовые не ставил, думаю там все понятно, для тех кто может мне помочь :). Переменные добваил, но не использовал, потом сриптик маленький на АнтиПк добавлю. Скрипт для очень узкой функциональности
Code:
var PKMagArr = "In Por Ylem"
var PKTeleport = "Rel Por"
var PKParaliz = "An Ex Por"
var PKpf = "In Ex Grav"
var PKPoison = "In Nox"
var Apk = 0
var RecallHome = 0
var Chest='0x401AE9BA'
var fire = 1
var tryp = '0x2006'
var color
var WaitTime = 5000
#################################################################
sub DetectForLoot()
while not uo.Dead()
Loot()
wait(500)
wend
end sub
#################################################################
sub ForFire()
while not uo.Dead()
 if uo.mana < uo.int then
  Medit()
 wait(500)
 else
  DetectFire()
 wait(500)
 endif
wend
wait(500)
end sub
#################################################################
sub DetectFire()
uo.Set('finddistance','0')
UO.FindType(0x398C ,-1,'ground')
if UO.FindCount() < 6 then
FireAround()
wait(500)
endif
wait(500)
end sub
#################################################################
sub FireAround()
uo.waittargettile("400",str(uo.getx("self")),str(uo.gety("self")+1),str(uo.getz("self")-20))
uo.cast("Fire Field")
wait(WaitTime)
uo.waittargettile("400",str(uo.getx("self")),str(uo.gety("self")-1),str(uo.getz("self")-20))
uo.cast("Fire Field")
wait(WaitTime)
uo.waittargettile("400",str(uo.getx("self")-1),str(uo.gety("self")),str(uo.getz("self")-20))
uo.cast("Fire Field")
wait(WaitTime)
uo.waittargettile("400",str(uo.getx("self")+1),str(uo.gety("self")),str(uo.getz("self")-20))
uo.cast("Fire Field")
wait(WaitTime)
uo.waittargettile("400",str(uo.getx("self")),str(uo.gety("self")),str(uo.getz("self")-20))
uo.cast("Fire Field")
wait(WaitTime)
wait(500)
end sub
#################################################################
sub Medit()
UO.DeleteJournal()
wait(1000)
UO.Useskill('Meditation')
Repeat
wait(100)
until UO.InJournal("You are") OR UO.InJournal("Ìåäèòàöèÿ")
wait(500)
end sub
#################################################################
sub Loot()
VAR i
DIM Loot[10]


Loot[0]=0x1089 ;
Loot[1]=0x1F0A ;
Loot[2]=0x1F07 ; 
Loot[3]=0x1F06 ;
Loot[4]=0x1F09 ;
Loot[5]=0x108A ;
Loot[6]=0x0EED ;
Loot[7]=0x1086 ;
Loot[8]=0x1087 ;
Loot[9]=0x1F08 ;
Loot[10]=0x1088 ;
   
UO.UseObject('lastcorpse')

   if UO.GetQuantity('lastcorpse') then
      UO.WaitTargetObject('lastcorpse')
      UO.UseType('0x000') ;dagger
      wait(500)
    endif
   
   UO.SetReceivingContainer('0x40099AA2') ; loot store bag

   For i=0 to 10
      UO.FindType(Loot[i],-1,'ground')
      if UO.GetQuantity('finditem') then
         UO.Grab(STR(0),'finditem')
         wait(1000)
      endif

      if UO.GetQuantity('lastcorpse') then
         UO.FindType(Loot[i],-1,'lastcorpse')
         if UO.GetQuantity('finditem') then
            if Loot[i]==0x1078 then
               UO.WaitTargetObject('finditem')
               UO.UseType('0x0F9E')
            else
               UO.Grab(STR(0),'finditem')
            endif             
            wait(1000)
         endif
      endif
   next

   UO.UnSetReceivingContainer()

wait(500)
end sub

Если подскажите способ скриптования полегче, то буду рад впитать в себя информацию


Top
   
 Post subject:
PostPosted: 2006-05-01 15:57:27 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Это точно работает?
Дело в том что ты объявляешь массив из 10 элементов а используешь 11. Должна быть ошибка выхода за границы массива, что ведет к довольно неожиданным результатам :)

Если ты подробно объяснищь чего хочешь достичь в своем скрипте, то возможно тут объяснят как это сделать правильно, красиво и коротко :)

Более того, а впроцессе формулировки вопроса ты сам построешь линейный алгоритм решения своей задачи ;)


Top
   
 Post subject:
PostPosted: 2006-05-01 16:50:05 
Offline
User avatar

Joined: 2006-04-06 17:16:54
Posts: 95
Location: Khab
Ты говоришь про масси функции лута? Хм, кстати да. А я думаю, че то он у меня поттупливает. Скрпит в общем кое как да работает. Массив я щас исправлю. А принцип действия скрипта таков. Я стою на крыше здания и кидаю стену огня сковзь пол крыши на пол который находится под крышей. НПСники видя меня начинают бежать на меня и атачить, и тем самым попадают в мой огонь. После того как они умерают я их лучу и все :).
Огноь я пускаю вокруг себя, но на координата Z ниже своих на 20.
Вот меня интересует такие вопросы:
1.Как бы поточнее сделать проверку на то что вокруг меня огня хватает. Я использую такой способ, не очень точный и вообще на мой взгляд ничего не делающий :) :
UO.FindType(0x398C ,-1,'ground')
if UO.FindCount() < 6 then
2.Как запускать лут трупа с появления строки в журнале. И как бы сделать так чтобы он не оставлял на трупах ничего нужного, псейчас, когда падают сразу 2 нпс он лутит только с одного


Top
   
 Post subject:
PostPosted: 2006-05-01 17:12:36 
Offline
Expert!
User avatar

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

2. Тебе нужно лутить в цикле с последующим игнором полутанного трупа.


Top
   
 Post subject:
PostPosted: 2006-05-01 17:16:25 
Offline
User avatar

Joined: 2006-04-06 17:16:54
Posts: 95
Location: Khab
Savage wrote:
1. С проверкой на огонь париться не стоит, кастуешь стену, засекаешь время как первый из 7 сполохов огня погас значит пора ставить новую. Потом проверяешь свое время на простеньком скрипте который кастует стенку, ждет, кастует снова.

2. Тебе нужно лутить в цикле с последующим игнором полутанного трупа.

Ну вот с игнором я немного не допонял, хотя в принципе сильно не разбарался, потому что щас ночь у меня и мозг уже спит. Может приведешь пример, тока с поясняловом. Заранее благодарю ;)


Top
   
 Post subject:
PostPosted: 2006-05-01 17:22:14 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Code:
VAR Exit=0
UO.IgnoreReset()
While Exit<>1
UO.FindType(Trup, -1,'ground')
If Uo.FindCount() Then
Loot()
Else
Exit=1
Endif
UO.IgnoreItem('finditem')
Wend


Top
   
 Post subject:
PostPosted: 2006-05-02 00:25:24 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Почему же у тебя через сообщение 'Body of' не работает? Вот простой и надежный скрипт, я когда играл и зоннерил, постоянно его в фон запускал:

Code:
#####################################################################
; BackgroundZonner. v.1.02b (c) Edred
;
; Ожидание сообщения 'Body of' и автоматический лут последнего трупа.
;
sub BackgroundZonner()
   VAR msg1 = 'Body of'
   VAR flag = 1
   If UO.Targeting() Then
      UO.CancelTarget()
   Endif
   DeleteJournal( msg1 )
   While NOT UO.Dead()
      If UO.InJournal( msg1 ) Then
         DeleteJournal( msg1 )
         AutoLoot()
      Else
         wait(300)
      Endif
   Wend
endsub


Top
   
 Post subject:
PostPosted: 2006-05-02 00:43:35 
Offline
User avatar

Joined: 2006-04-06 17:16:54
Posts: 95
Location: Khab
Ну видно пальцы еще не выпрямились чтобы нормально скрипты писать ;). Нада у You Must Die спросить где можно скачать ruki.exe. Я думаю это хорошая программка по выпрямлению пальцев рук ;)


Last edited by Rijo on 2006-05-02 02:09:10, edited 1 time in total.

Top
   
 Post subject:
PostPosted: 2006-05-02 01:53:54 
Offline
User avatar

Joined: 2006-04-06 17:16:54
Posts: 95
Location: Khab
Savage wrote:
Это точно работает?
Дело в том что ты объявляешь массив из 10 элементов а используешь 11. Должна быть ошибка выхода за границы массива, что ведет к довольно неожиданным результатам :)

Если ты подробно объяснищь чего хочешь достичь в своем скрипте, то возможно тут объяснят как это сделать правильно, красиво и коротко :)

Более того, а впроцессе формулировки вопроса ты сам построешь линейный алгоритм решения своей задачи ;)

Немного не понял. Где я использую 11 элементов массива? Я объявил от 0 до 10, вот и использую... Наверно я чего то недопонял тебя или не доразгялядел в скрипте :)


Top
   
 Post subject:
PostPosted: 2006-05-02 02:28:30 
Offline
User avatar

Joined: 2006-04-06 17:16:54
Posts: 95
Location: Khab
Проверка на огонь работает у меня подобным образом
Code:
#################################################################
sub DetectFire()
uo.Set('finddistance','1')
UO.FindType(0x398C ,-1,'ground')
if UO.FindCount() < 9 then
  FireAround()
  wait(500)
else
  wait(10000)
endif
wait(500)
end sub

Проверяется каждые 10 секнуд, есть ли вокруг меня 9 тейлов огня


Top
   
 Post subject:
PostPosted: 2006-05-02 07:52:35 
Offline

Joined: 2005-04-19 18:00:29
Posts: 2259
Location: Московская область
DIM loot[10]

это хорошо, но посчитай пальцем )

0.1.2.3...10 = 11 элементов, а ты задал тока 10.


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

All times are UTC+02:00


Who is online

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