Запуск двух ф-ций из одной, как? |
Запуск двух ф-ций из одной, как? |
Сообщений: 113 Рег. 19.02.2015 |
18 мая 2015 10:59
Сообщение #1
|
Есть 2 зацикленные функции: sub Func1() repeat wait(1000) until UO.Dead() endsub ;----------------------------- sub Func2() repeat wait(1000) until UO.Dead() endsub Как их запустить из другой, что бы запустились обе? В итоге что бы получилось, по смыслу такое (этот вариант не рабочий). ; sub Func3() Func1() Func2() endsub |
|
|
|
18 мая 2015 11:21
Сообщение #2
|
|
sub doublefunc() uo.exec Func1() uo.exec Func2() end sub вроде так |
|
|
|
Сообщений: 3319 Рег. 19.11.2013 |
18 мая 2015 14:59
Сообщение #3
|
Первый вариант работать будет только не явно. Не получится грохнуть отдельную функцию. Если нужно чтобы 1 командой запускалось несколько процедур и их отдельно контролировать то делается двойной exec sub f1() repeat wait(1000) until UO.Dead() endsub ;----------------------------- sub f2() repeat wait(1000) until UO.Dead() endsub sub func3() uo.exec('exec f1') uo.exec('exec f2') endsub в данном примере регистр не важен. F1 f1 exec F1 - пофигу. |
|
|
|
Сообщений: 792 Рег. 27.06.2011 |
19 мая 2015 04:36
Сообщение #4
|
нада учитывать состояние запущеных или нет функций - кто то очень мудро вешает флаги - как вариант |
|
|
|
Сообщений: 3319 Рег. 19.11.2013 |
19 мая 2015 08:26
Сообщение #5
|
а про это я на yoko уже рассказывал и показывал :) |
|
|
|
19 мая 2015 19:53
Сообщение #6
|
|
Можно обойтись без флагов, например: if not UO.FunRunning('f1') then UO.Exec('exec f1') end if |
|
|
|
Сообщений: 1043 Рег. 18.06.2011 |
19 мая 2015 22:23
Сообщение #7
|
Лучше while тк if модет подвести и закрть не все скрипты ;) |
|
|
|
Сообщений: 3319 Рег. 19.11.2013 |
19 мая 2015 22:37
Сообщение #8
|
были прецеденты |
|
|
|
Сообщений: 113 Рег. 19.02.2015 |
22 мая 2015 23:11
Сообщение #9
|
Zombie, Можно обойтись без флагов, например: if not UO.FunRunning('f1') then UO.Exec('exec f1') end if После добавления строки: if not UO.FunRunning('RazgruzkaHome') and not UO.FunRunning('RazgruzkaBank') then клиент/инжект ОЧЕНЬ часто стал крашится... Sub AutoLoot() repeat if not UO.FunRunning('RazgruzkaHome') and not UO.FunRunning('RazgruzkaBank') then UO.Set('finddistance',1) UO.FindType('0x2006', '-1', '1'); Ищем на земле труп if uo.FindCount() > 0 and UO.GetDistance("finditem")<=1 then Loot2() endif endif until UO.Dead() end sub |
|
|
|
Сообщений: 3319 Рег. 19.11.2013 |
22 мая 2015 23:16
Сообщение #10
|
добавь после последнего endif паузу wait(100) не совсем понятны эти ухищрения |
|
|
|
Сообщений: 113 Рег. 19.02.2015 |
23 мая 2015 01:58
Сообщение #11
|
Mirage,не помогает. даже wait(400)вылетает. С одним UO.FunRunning более менее нормально. |
|
|
|
Сообщений: 3319 Рег. 19.11.2013 |
23 мая 2015 08:57
Сообщение #12
|
100 вполне достаточно - это чтобы цикл не крутился если труп не найдет без пауз вообще. Sub AutoLoot() var body ='0x2006' var LootDist = 1 repeat if not UO.FunRunning('RazgruzkaHome|RazgruzkaBank') then uo.findtype(body, -1, 'ground', LootDist) if uo.FindCount() and UO.GetDistance("finditem")<=LootDist then Loot2() endif endif wait(100) until UO.Dead() end sub Попробуй вот так. Не фигово бы еще функцию лута увидеть - может у тебя там тоже ад какой то. И я надеюсь ты это все на последнем 15 инжекте юзаешь? Иначе я бы не советовал вообще исеользовать новые функции. Они приводят ровно к тому результату про который ты написал. И мне все еще не понятно чем вызвано ограничение на лут при условии запущеных разгрузках. Как часто у тебя на базе горы трупов валяются что отвлечет чара от складирования вещей? |
|
|
|
Сообщений: 113 Рег. 19.02.2015 |
23 мая 2015 13:53
Сообщение #13
|
Mirage, Не фигово бы еще функцию лута увидеть - может у тебя там тоже ад какой то. И я надеюсь ты это все на последнем 15 инжекте юзаешь? Инжа15. Скрипт на лут простейший: UO.Set( 'finddistance', '2' ) UO.FindType('0x2006', '-1', '1'); if uo.FindCount() > 0 and UO.GetDistance("finditem")<=2 then UO.DeleteJournal("You can't see|You can't reach|cancelled|You carve|You skin") UO.SetReceivingContainer('LootBag') wait(100) Tryp = UO.GetSerial("finditem") uo.WaitTargetObject(Tryp); wait(100) UO.UseType('0x13F6'); Butcher Knife repeat wait(100) count=count+1 until UO.InJournal("You carve|You skin") or count==10 uo.UseObject(Tryp) wait(700) if NOT UO.InJournal("You can't see") and NOT UO.InJournal("You can't reach") and NOT UO.InJournal("cancelled") then UO.Set('finddistance','2') Repeat UO.FindType("-1","-1",Tryp) UO.Grab("0","finditem"); wait(tWaitGrabLoot) Until UO.FindCount() == 0 if UO.FindCount()==0 then uo.ignore(Tryp); UO.Charprint('self', '68', " +") end if end if Mirage, И мне все еще не понятно чем вызвано ограничение на лут при условии запущеных разгрузках. Как часто у тебя на базе горы трупов валяются что отвлечет чара от складирования вещей? дело не в трупах на базе. Просто при запущеном автолуте, разгрузка тупит, иполовину вещей не выгружает. |
|
|
|
Сообщений: 3319 Рег. 19.11.2013 |
23 мая 2015 14:19
Сообщение #14
|
В начале разгрузки отключи автолут а в конце запусти. И переделай на новые функции. UO.Set( 'finddistance', '2' ) UO.FindType('0x2006', '-1', '1'); = UO.FindType('0x2006', '-1', '1',2); надежнее. Ps проверь тот скрипт что я отредактировал крашит или нет? |
|
|
|
Сообщений: 113 Рег. 19.02.2015 |
23 мая 2015 17:15
Сообщение #15
|
if not UO.FunRunning('RazgruzkaHome|RazgruzkaBank') then не работает вообще а if not UO.FunRunning('RazgruzkaHome') and not UO.FunRunning('RazgruzkaBank') then if not UO.FunRunning('RazgruzkaHome') then работают проверено 1111 Sub AutoLoot() repeat if not UO.FunRunning('RazgruzkaHome|RazgruzkaBank') then UO.Set('finddistance',1) UO.FindType('0x2006', '-1', '1'); if uo.FindCount() > 0 and UO.GetDistance("finditem")<=1 then Loot2() endif wait(200) uo.print("1111");<<<<<<<---------------------------------------- endif until UO.Dead() end sub |
|
|
|
Сообщений: 113 Рег. 19.02.2015 |
23 мая 2015 17:31
Сообщение #16
|
Еще 1 вопрос не по теме: как закрыть сундук/труп/сумку... (просто закрытие контейнера со скрипта) |
|
|
|
Сообщений: 3319 Рег. 19.11.2013 |
23 мая 2015 18:11
Сообщение #17
|
Цитата: Mirage добавь после последнего endif паузу wait(100) закрыть либо правой кнопкой либо отойти |
|
|
|
Сообщений: 113 Рег. 19.02.2015 |
23 мая 2015 21:16
Сообщение #18
|
Лучше UO.FunRunning вообще не использовать. Пробовал и после последнего endif . крашит всеравно закрыть либо правой кнопкой либо отойти просто закрыть скриптом никак? |
|
|
|
Сейчас: 25 ноября 2024 02:54 |