Yoko
http://forum.yoko.com.ua/

Глючит скрипт, немного
http://forum.yoko.com.ua/viewtopic.php?f=3&t=7505
Page 1 of 1

Author:  Sanch [ 2006-04-26 07:18:05 ]
Post subject:  Глючит скрипт, немного

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

Code:
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:
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:
    ...
    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:
        ...
        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')
          ...


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

Author:  Edred [ 2006-04-26 09:40:37 ]
Post subject:  Re: Глючит скрипт, немного

Sanch wrote:
Code:
    if uo.injournal('GM', 'Admin', 'Seer', 'Counselor', 'Developer') then



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

http://yoko.netroof.net/help/help.php?l ... =InJournal

Author:  Sanch [ 2006-04-26 09:45:18 ]
Post subject: 

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

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

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

Author:  Edred [ 2006-04-26 09:56:26 ]
Post subject: 

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


Только учти, такое работает только на "новых" длл инжекта. Я свои скрипты, например, стараюсь привязывать к 312.19 - там подобная конструкция работать не будет.

Author:  Sanch [ 2006-04-26 10:03:05 ]
Post subject: 

Ясно, заменю на бональные инжорналы, Edred, сори что так напрямую спрашиваю, ты как то писал про свои синхронизации 5 одновременно работающих скриптов, мож подкинешь че нить дельное, тк толку от моей ровно столько сколько в ее отсутствии, даже хуже. Один скрипт крутится постоянно и ищет каждые пол секи чаров, другой при выкапывании руды проверяет элема, поиски идут на разных дистанциях, реально сделать чтобы при их одновременной работе, они не глючили? Еще был бы оч признателен, если бы ответил по первому посту что то, я просто 2 одинаковых поика разных типов обьектов заменил на массав из 2ух обьектов с поиском и скрипт перестал кого либо находить.

Author:  Destruction [ 2006-04-26 10:25:16 ]
Post subject: 

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

Попробуй то, что тама.. Оно должно нормально это обрабатывать, специально для тебя модифицировал, хотя еще не тестил.

Author:  Sanch [ 2006-04-26 11:27:23 ]
Post subject: 

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

Code:
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:, зарание благодарю за хелп назойливому чайнику.

Author:  Destruction [ 2006-04-26 12:16:04 ]
Post subject: 

Да просто вместо uo.findtype() запускаешь FindType(), а параметры пишешь как в exec("findtype "+параметры), а примерчик там валяется.

Author:  Sanch [ 2006-04-27 10:20:27 ]
Post subject: 

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

По поводу не работающего поиска, действительно, стоило убрать непрально использованый инжорнал, как все заработало.

Author:  Edred [ 2006-04-27 14:30:19 ]
Post subject: 

У меня в моих скриптах поиск осуществляется на одной дистанции, максимальной, а потом при необходимости проверяется UO.GetDistance()

Author:  Sanch [ 2006-04-27 15:58:17 ]
Post subject: 

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

Author:  Edred [ 2006-04-28 00:02:53 ]
Post subject: 

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


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

Author:  Sanch [ 2006-04-28 16:58:23 ]
Post subject: 

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


Так как синхронизацию поиска придется делавть всеравно, можно просто задавать нужную дистанцию, не проверяя ее каждый раз, а синхронизацию в свою очередь придется делать всеравно, тк мои скрипты устроены так что при одновременном появлении другого игрока и элема действия скрипта предугадать сложно, тк действия в отношении элема идут по finditem'у, когда скрипт находит элема, он его сиреал через finditem в глобалку запихивает, для работы скрипта на его убийство уже непосредственно с сиреалом элема, тк он вызывает себе подобных имеющих такой же type.

Author:  Edred [ 2006-04-28 22:25:12 ]
Post subject: 

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

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/