Page 1 of 1

Два связанных потока

Posted: 2011-07-01 15:46:59
by Tiger1989
Есть процедура проверки на пк, которая работает непрерывно, а есть вторая процедура с массивом рун по которым чар летит и выполняет различные действия по порядку, ну дык вот смысл в том чтобы, при обнаружении пк, происходил terminate первой процедуры, и чар летал в безопасное место либо, на след руну по массиву, как это лучше реализовать? с глоб переменным опасно, так как при одновременном обращении к одной и той же переменной может возникнуть конфликт.

Re: Два связанных потока

Posted: 2011-07-01 17:37:41
by Mirage

Code: Select all

dim runa[3]
runa[0]=''
runa[1]=''
runa[2]=''
for runa = 0 to 2
   перелет на runa[i]
   копаем
      если проверка на ПК = 1 ;  нашли
             перелетаем на runa[i+1]
      конец если

без глобалок.
Вместо runa[i+1] можно вписать runa home и прождав там например 10 минут вернутся на runa[i]

Re: Два связанных потока

Posted: 2011-07-02 14:41:53
by Tiger1989
Да вариант не плохой, но тут проверка будет происходит с перерывами а мне надо непрерывно для моментальной реакции

Re: Два связанных потока

Posted: 2011-07-02 23:56:41
by Mirage
моментально ты никак не сделаешь. Дерево рубится 6 секунд. Если рекольнутся в процессе рубки схлопочешь краш рано или поздно.
Опять же чуть подкорректировав мой вариант - прописываешь ID рун в 2 скриптах либо во внешней процедуре (в уроках про это есть толи в 1 толи во 2) и делаешь в проверке на пк чтото типо
если нашли ПК тогда
сверяем координаты чара
если х=123 у = 123
то прыгаем на руну 2
если х=312 у=321
прыгаем на руну 3

х и у координаты сторон большого квадрата в котором происходит добыча. Квадрат может быть очень большим.

Зато без глобалок ;)

ЗЫ имхо проще с глобалками сделать :)

Re: Два связанных потока

Posted: 2011-07-04 10:39:02
by Tiger1989
Проще да, но что надежнее вопрос посущественнее.
Смысл в том чтобы чар прерывал любое действия и начал выполнять рекол, тогда будет польза от скрипта =)

Re: Два связанных потока

Posted: 2011-07-07 17:07:14
by Tiger1989
Покажи пожалуйста, такой вариант, мой вариант который я тут пробую мне не нравиться с глоб переменными

Re: Два связанных потока

Posted: 2011-07-08 08:20:40
by Mirage

Code: Select all

if uo.GetY()>=1449 and uo.GetY()<=1455 then
   UO.Print('Идем направо')
   walker(5896, 1455,0)
else
   if uo.GetY()>=1457 and uo.GetY()<=1463 then
      UO.Print('Идем налево')
      walker(5896, 1457,0)
   endif
endif

Ну как то так. Я примерно так тамил и убивал овец в двух спаренных загонах.