Page 1 of 1

Скрипт off/on с кнопки,чтобы:

Posted: 2010-11-25 00:40:08
by BOSS manCCCP
У меня часто вышибает клиент при хелинге,все это из-за того что бывает несколько раз нажимаю с кнопку со скриптом сбивая текуший(зависат в скриптах) и начинает заного,когда 3-4 так зависнут одновременно стабильный краш...я бы хотел чтобы при повторном нажатии кнопки скрипта он вырубался(текущий) и заного он же и врубался,подскажите как это сделать,вот скрипт:

sub BestHeal()
UO.Print("BestHeal: ON")
uo.usetype("0x097B") #Ест рыбные котлеты
uo.usetype("0x097B") #Ест рыбные котлеты
uo.usetype("0x097B") #Ест рыбные котлеты
uo.usetype("0x097B") #Ест рыбные котлеты
uo.usetype("0x097B") #Ест рыбные котлеты
uo.usetype("0x097B") #Ест рыбные котлеты
UO.DeleteJournal()
UO.warmode(0)
If UO.Life<UO.STR Then
While UO.Life<>UO.STR
UO.DeleteJournal()
UO.BandageSelf()
Repeat
wait(300)
Until UO.InJournal("bloody|barely|need|put|reach|frozen")
Wend
UO.UseObject('Puxa')
uo.waittargetlast()
End if
wait(400)
UO.UseObject('Shield')
End If
UO.Print("BestHeal: Off")
UO.Exec('terminate BestHeal')
end sub

И так же все ли я правильно сделал в этом скрипте,правильно ли он написан,есть ли ошибки?

Re: Скрипт off/on с кнопки,чтобы:

Posted: 2010-11-25 08:03:08
by Mirage
1) у тебя там закрытый endif без начала - если бы правильно оформлял скрипт сам бы увидел где ошибка.
2) вместо дрюканья 5 раз еды без паузы лучше использовать выносную функцию

Code: Select all

Sub eat()
   REPEAT
      UO.DeleteJournal()
      LastTimer=UO.Timer()
      UO.findtype(havka,-1,'backpack'); прописать еду
      If UO.FindCount() > 0 Then
         UO.Useobject('finditem')
         wait(200)
      Else
         uo.print('кончилась еда' )
         return 0
      end if
   Until UO.InJournal("simply too full to eat|stuffed!|think|found|Вы ничего не можете") OR UO.Timer()>LastTimer+200
end sub

3) тавтология в скрипте - зачем закрывать закрытый скрипт? UO.Exec('terminate BestHeal')
4) так из косметики uo.waittargetlast() обычно перед использованием ставится. И если оружие при одевании не вызывает прицел то в принципе и не нужно.

Re: Скрипт off/on с кнопки,чтобы:

Posted: 2010-12-04 01:24:41
by admir
По поводу дубликатов скриптов:
1)
Самое простое делать терминейт UO.Exec('terminate BestHeal')

2)
Если нам надо чтоб 1 скрипт закончился прежде чем запустился второй, то я делал это так:

существует функция sub autostart()
котрая запускается по умолчанию при загрузке клиента через инжект.
В ней я обнулял глобальные переменные, далее будет понятно для чего, например:

Code: Select all

uo.setglobal('eat',0)


Далее в самом скрипте проверяем на глобальную переменную если она "включена", то скрипт не запускается , а елси "выключена", то запускаем скрипт и "включаем" переменную.

Code: Select all

sub BestHeal()
if uo.getglobal('eat') == 0 then
  uo.setglobal('eat',1)
  UO.Print("BestHeal: ON")
....
....
  uo.setglobal('eat',0)
end if



Скрипт не будет заупскатся повторно пока не завершится первый.

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

Re: Скрипт off/on с кнопки,чтобы:

Posted: 2010-12-13 13:03:59
by Blood Slayer
А я то все думал че этот скрипт перестает работать после краша ...

Code: Select all

sub Mana()
var Mana = Uo.Mana
Uo.SetGlobal('Cast','off')
   repeat
      wait(25)
   until Uo.Mana < Mana
Uo.SetGlobal('Cast','on')
end sub


Не знал что запоминает