Глючит скрипт, немного

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Глючит скрипт, немного

Post by Sanch »

Было раньше так:

Code: Select all

sub CheckingPlayers()
uo.setglobal('find', '0')
uo.ignore('self', 'on')
while uo.life > 0
while val(uo.getglobal('find')) == 1
wait(50)
wend
  uo.setglobal('find', '1')
  wait(200)
  uo.set('finddistance', '14')
  uo.findtype('0x0190', '-1', '1') #тип игрока мужского пола# 
  wait(200)
  uo.setglobal('find', '0')
  if uo.findcount() > 0 then
    uo.usetype('0x0F08')
    wait(100)
    uo.exec('terminate Obkopka')
    wait(500)
    uo.exec('exec Teleportation')
    wait(500)
    return
  else
    wait(1000)
  endif
while val(uo.getglobal('find')) == 1
wait(50)
wend
  uo.setglobal('find', '1')
  wait(200)
  uo.set('finddistance', '14')
  uo.findtype('0x0191', '-1', '1') #тип игрока женского пола# 
  wait(200)
  uo.setglobal('find', '0')
  if uo.findcount() > 0 then
    uo.usetype('0x0F08')
    wait(100)
    uo.exec('terminate Obkopka')
    wait(500)
    uo.exec('exec Teleportation')
    wait(500)
    return
  else
    wait(1000)
  endif
wend
end sub


И все работало, решил упростить и сделал так:

Code: Select all

sub CheckingPlayers()
VAR a, b
uo.ignore('self', 'on')
DIM Chars[2]
Chars[0] = '0x0190' #тип игрока мужского пола#
Chars[1] = '0x0191' #тип игрока женского пола#
while not uo.dead()
  for a = 0 to 1
    if uo.injournal('GM|Admin|Seer|Counselor|Developer') then
      uo.usetype('0x0F08')
      wait(200)
      uo.closeuo()
    else
      wait(50)
    endif
    b = 0
    repeat
      wait(100)
      b = b + 1
    until val(uo.getglobal('find')) == 0 or b > 15
    uo.setglobal('find', '1')
    wait(200)
    uo.set('finddistance', '15')
    uo.findtype(Chars[a], '-1', '1') 
    if uo.findcount() > 0 then
      uo.setglobal('find', '0')
      uo.usetype('0x0F08')
      wait(200)
      uo.exec('terminate Obkopka')
      uo.exec('terminate ChengePlace')
      uo.exec('exec Teleportation')
      return
    else
      uo.setglobal('find', '0')
      wait(500)
    endif
  next
wend
end sub

Теперь он никого не находит, но поиск производит.

Есть еще проблема с синхронизацией поиска:

в первом скрипте

Code: Select all

    ...
    b = 0
    repeat
      wait(100)
      b = b + 1
    until val(uo.getglobal('find')) == 0 or b > 15
    uo.setglobal('find', '1')
    wait(200)
    uo.set('finddistance', '15')
    uo.findtype(Chars[a], '-1', '1') 
    if uo.findcount() > 0 then
      uo.setglobal('find', '0')
      ...


во втором скрипте

Code: Select all

        ...
        e = 0
        repeat
          wait(50)
          e = e + 1
        until val(uo.getglobal('find')) == 0 or e > 30       
        uo.setglobal('find', '1')
        wait(200)
        uo.set('finddistance', '5')
        uo.findtype('0x000E', '-1', '1') #тип элементаля#
        if uo.findcount() > 0 then
          uo.setglobal('find', '0')
          ...


Временами при одновременной работе скриптов, инжект выдает ошибку пассера, что вызвано одновременным заданием дистанции поиска в обоих скриптах, до того как я ввел синхронизацию поиск обьектов производился не всегда на предусмотренных скриптом дистанциях, зарание благодарю за хелп.
Last edited by Sanch on 2006-04-26 09:58:34, edited 1 time in total.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Re: Глючит скрипт, немного

Post by Edred »

Sanch wrote:

Code: Select all

    if uo.injournal('GM', 'Admin', 'Seer', 'Counselor', 'Developer') then



Это-то что за конструкция? Новое слово в синтаксисе команды UO.InJournal?

http://yoko.netroof.net/help/help.php?l ... =InJournal
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

хмммм :? , да нет, в каком то топике видел как проверку с тучей инжоурналов предложили заменить так, ну и подумал что так можно, значит нельзя?

Все нашел, постил ты, просто я обшибся:

If UO.InJournal("Персонал|Персонал сервера!|EP:|...") Then
Last edited by Sanch on 2006-04-26 09:59:17, edited 1 time in total.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Sanch wrote:
If UO.InJournal("Персонал|Персонал сервера!|EP:|...") Then


Только учти, такое работает только на "новых" длл инжекта. Я свои скрипты, например, стараюсь привязывать к 312.19 - там подобная конструкция работать не будет.
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Ясно, заменю на бональные инжорналы, Edred, сори что так напрямую спрашиваю, ты как то писал про свои синхронизации 5 одновременно работающих скриптов, мож подкинешь че нить дельное, тк толку от моей ровно столько сколько в ее отсутствии, даже хуже. Один скрипт крутится постоянно и ищет каждые пол секи чаров, другой при выкапывании руды проверяет элема, поиски идут на разных дистанциях, реально сделать чтобы при их одновременной работе, они не глючили? Еще был бы оч признателен, если бы ответил по первому посту что то, я просто 2 одинаковых поика разных типов обьектов заменил на массав из 2ух обьектов с поиском и скрипт перестал кого либо находить.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Sanch wrote:Ясно, заменю на бональные инжорналы, Edred, сори что так напрямую спрашиваю, ты как то писал про свои синхронизации 5 одновременно работающих скриптов, мож подкинешь че нить дельное, тк толку от моей ровно столько сколько в ее отсутствии, даже хуже. Один скрипт крутится постоянно и ищет каждые пол секи чаров, другой при выкапывании руды проверяет элема, поиски идут на разных дистанциях, реально сделать чтобы при их одновременной работе, они не глючили? Еще был бы оч признателен, если бы ответил по первому посту что то, я просто 2 одинаковых поика разных типов обьектов заменил на массав из 2ух обьектов с поиском и скрипт перестал кого либо находить.
https://yoko.uokit.com/viewtopic.php?p=40604#40604

Попробуй то, что тама.. Оно должно нормально это обрабатывать, специально для тебя модифицировал, хотя еще не тестил.
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Destruction, премного благодарен, но проблема в том что я не програмист, мой уровень скриптописания\понимая на уровне досканально изученных уроков + небольшое самостоятельное повышение квалификации методом тыка, из тех скриптов что в топике, не понял ровным счетом ничего, за исключением того, что там используется то что применил я, только в более извращенной(профессиональной) форме, ты не мог бы на примерчике 2ух небольших скриптиков на поиск работающих одновременно показать как сие работает и немного пояснить как это получается, был бы оч признателен, тк сам не догоняю.

Code: Select all

sub start()
uo.exec('exec finding1')
uo.exec('exec finding2')
end sub

sub finding1()
while not uo.dead()
  uo.set('finddistance', '5')
  uo.findtype('0x0001', '-1', '1')
  if uo.findcount() > 0 then
    ...
  else
    ...
  endif
wend
end sub

sub finding2()
while not uo.dead()
  uo.set('finddistance', '10')
  uo.findtype('0x0002', '-1', '1')
  if uo.findcount() > 0 then
    ...
  else
    ...
  endif
wend
end sub


Желательно на примере вот этих скриптов :roll:, зарание благодарю за хелп назойливому чайнику.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Да просто вместо uo.findtype() запускаешь FindType(), а параметры пишешь как в exec("findtype "+параметры), а примерчик там валяется.
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Синхронизацию сделал, свою, новую, вроде пашет, спасибо...

По поводу не работающего поиска, действительно, стоило убрать непрально использованый инжорнал, как все заработало.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

У меня в моих скриптах поиск осуществляется на одной дистанции, максимальной, а потом при необходимости проверяется UO.GetDistance()
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

я об этом думал, но решил что это не избавит меня от проблем
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Sanch wrote:я об этом думал, но решил что это не избавит меня от проблем


Логику такого решения в студию.
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Логику такого решения в студию.


Так как синхронизацию поиска придется делавть всеравно, можно просто задавать нужную дистанцию, не проверяя ее каждый раз, а синхронизацию в свою очередь придется делать всеравно, тк мои скрипты устроены так что при одновременном появлении другого игрока и элема действия скрипта предугадать сложно, тк действия в отношении элема идут по finditem'у, когда скрипт находит элема, он его сиреал через finditem в глобалку запихивает, для работы скрипта на его убийство уже непосредственно с сиреалом элема, тк он вызывает себе подобных имеющих такой же type.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

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