нужен совет знатоков по поводу написания скрипта .

Ask for help

Moderators: Murderator+, Murderator

Post Reply
admir
Posts: 528
Joined: 2005-01-13 07:20:54

нужен совет знатоков по поводу написания скрипта .

Post by admir »

значит есть скрипт в котором 1 раз включая - врубаеца цикл , повтороное вызывание скрипта вызывает else условие в ктоором вызываються параметры которые определяються в цикле скрипта .
грамотный скрипт или подскажете другие идеи ?
Имено сама идея в том что крутиться цикл скрипта, вызываетьяс дубль скрипта,но уже идет условия else , я так понимаю что передавать не глобальные параметры в новый дублированный скрипт не получиться , есть еще 1 задумка - при вызове else условия глобал параметр меняеться и в теле цикла поставить условие на этот глобал параметр для вывода параметров на экран, тогда будут вызываться параметры в томже цикле и не нужно будет глобал использовать .

Code: Select all

sub say_fury()
   UO.DeleteJournal()
   var fury,max,total
   If UO.GetGlobal('furyScriptCheck')<>'on' Then
      UO.SetGlobal('furyScriptCheck','on')
      repeat
      if (UO.InJournal("fury pts") or UO.InJournal("Max fury!") or UO.InJournal("Total:")) Then
                  if (UO.InJournal("Max fury!") or UO.InJournal("Total:")) Then
            if UO.InJournal("Max fury!") Then
               total =uo.journal(UO.inJournal("Max fury!")-1)
               UO.SetGlobal('TotalFuryCheck',total)
            endif
            if UO.InJournal("Total:") Then
               total =uo.journal(UO.inJournal("Total:")-1)
               UO.SetGlobal('TotalFuryCheck',total)
            endif   
         endif
         checklag()
         UO.DeleteJournal()
      endif
      Wait(150)
      until false
   else
      uo.fontcolor("0x0035")
      #UO.msg(uo.GetGlobal('FuryCheck')+'   '+ uo.GetGlobal('TotalFuryCheck'))
      UO.msg(uo.GetGlobal('TotalFuryCheck'))
      checklag()
      UO.DeleteJournal()
      #AdmiR(2005)
   endif   
end sub
PCGamer
Posts: 125
Joined: 2005-08-12 03:04:00

Post by PCGamer »

В чём проблема то? Как циклить скрипты? Я делаю основную функцию, которая проверяет через глобальную переменную не запущена ли ещё одна такая функция. И вторая функция, которая вырубает первую функцию, изменяя глобатьную переменную.
I NEED HELP at viewtopic.php?t=4903
admir
Posts: 528
Joined: 2005-01-13 07:20:54

Post by admir »

ты не понял мне не нужно вырубать скрипт .

идея в том что запустив первый раз скрипт у тебя сохраняються некие параметры ,при этом этот скрипт работает параметры постояно обновляються .
при повторном запуске скрипта(нажатие на туже кнопочку) мне нужно вывести эти параметры на экран , вот прально ли я это все помыслил или может есть другие способы это реализовать?
PCGamer
Posts: 125
Joined: 2005-08-12 03:04:00

Post by PCGamer »

Если параметров много или там массивы какие -нибудь будут, то становится целесообразно параметры в файл сохранять.

ЗЫ: Конкретный ответ можно дать только на конкретный вопрос :D Если не секрет, то зачем тебе это? И где ты это потом будешь использовать?
I NEED HELP at viewtopic.php?t=4903
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

А смысл???
Делаешь так...
Утебя есть основной скрипт по обновлению переменых(Скрипт 1).
Дальше унас есть скрипт (Скрипт 2) который за пускает этот скрипт. Так по чему бы теперь в Скрипте 2 не проверить а не запушен ли скрипт Скрипт 1? если запущен тогда выводим твои глобальные переменые...
в Скрипт 2 все сводится к ифу на проверку furyScriptCheck
дальше если офф то запускаем... если он то вы водим TotalFuryCheck
и FuryCheck ( толкьо вот в скрипте заполнение последне переменной не предусмотренно;) )
admir
Posts: 528
Joined: 2005-01-13 07:20:54

Post by admir »

PCGamer - для себя , может я какихто тонкостей не знаю , поэтому и спрашиваю , ну и другие идеи если будут интересные всегда полезно .

Grin, как проверить запущен ли скрипт нормально ? через глобал параметр типа furyScriptCheck как ты казал если 0 то запустить 1 скрипт в котором меняем параметр с 0 на 1 так ?
только может возникнуть ситуация такая , скрипт можно выключить руками в закладке скриптс , а глобал параметр не измениться , и последущий раз сскрипт1 не запуститься . приеться перегружать клиент .
Titanium
Posts: 73
Joined: 2004-10-20 22:46:03
Location: Moscow
Contact:

Post by Titanium »

admir wrote:Grin, как проверить запущен ли скрипт нормально ? через глобал параметр типа furyScriptCheck как ты казал если 0 то запустить 1 скрипт в котором меняем параметр с 0 на 1 так ?
только может возникнуть ситуация такая , скрипт можно выключить руками в закладке скриптс , а глобал параметр не измениться , и последущий раз сскрипт1 не запуститься . приеться перегружать клиент .


Ну можно тогда в furyScriptCheck хранить не 1 или 0, а допустим текущее время. И соответственно обновлять его в цикле. А при проверке если расхождение furyScriptCheck с текущим временем составит какую-то величину (> периода обновления), то значит скрипт не запущен.
I'm Titanium [Dragon] from Nova UO Shard
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

хех не думал даже что вы так далеко зайдете...
делаете просто грубо говоря тацмаут...
Функция которая должна проверятся должна проврерять какуюто глобальную переменую назовем ее запрос...
Как только функция у видала что в глобаьное перемной поевилось ее имя она должна от ветить проверяющей функции ответом по другой глобальной перемоенной... успеть она должна за определенный период времени
admir
Posts: 528
Joined: 2005-01-13 07:20:54

Post by admir »

грин объяснил спасибо ) спс я тоже думал что нада таймером туда фигачить , щас придумаю .
а нет примера ни у кого?
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

;) не будем изобретать велосипед и посмотрим на то что уже есть;)
Унас есть такая замечательное особенность окошек как меж оконые сообщения...
Так вот никто никогда не говори окнам что кним пришло сообщение если конечно не вызвали фугнкцию обратотки всообщений... просто окно потупому пытается из очереди извлечь для нее сообщение...
Вот так что есть нас... унас будет 2 функции одна постит запрос
а другая проверяет нет ли запроса... и если есть то обрабатывает чистит за прос и оправляет ответ...
сделаем запрос с синхронизацией;) тоесть наш запрос будет ждать какоето время и после этого как оно пройдет будет смореть результат если он не пришел то сичитаем что функция дед;)

Sub SendQuery(TimeOut, Name)
UO.SetGlobal('MsgQeury', Name)
UO.SetGlobal('MsgNotify', 0)
wait(TimeOut)
Return UO.GetGlobal('MsgNotify')
End Sub

Sub SendNotify(Name)
If UO.GetGlobal('MsgQeury') == Name then
UO.SetGlobal('MsgQeury', '')
UO.SetGlobal('MsgNotify', 1)
End If
End Sub

Собственно и все...
Проблема теперь толкьо в том что бы скрипт проверял пришло ли кнему чего нибудь по чаще то есть в каждом цикле должна быть проверка на сообщение
admir
Posts: 528
Joined: 2005-01-13 07:20:54

Post by admir »

вот написал как я понял что нада сделать чтоб скрипт проверял работает ли цикл или нет :


Code: Select all

sub querty()
var n
uo.setglobal('querty_check','1') # чтоб проверка не запускалась еще раз
uo.setglobal('script_check','1') # - то на что будет реагировать цикл
wait(5000) #даем время 5 секунд на генерацию ответа .
if (uo.getglobal('script_check') == '1') then # если ответа не былo то
uo.setglobal('furyScriptCheck','off')   #врубаем цикл скрипта
end if
uo.setglobal('querty_check','0')
end sub


соответственно с теле цикла поставить вот такую проверку
if uo.getglobal('script_check') == '1' then
uo.setglobal('script_check','0')
end if


норм? а
Грин твое не совсем все понял в скрипте но по тексту у меня врод так же .кстати может можно сделать универсальный таймер тоесть чтоб каждый раз не писать новый с новыми глобальными параметрами а допустим - чтоб таймер сам ловил название которое ему передавал скрипт и проверял его .
правда проблема еще в том что у меня таймер может врубиться только 1 раз , 2 таймера одновременно не смогут .
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Правельно уловил;)
Можешь пойти дальше и заделать небольшой мезанизм по обмегну между функциями...
Смысл будет в том что будет функция которая будет ставить в очередь таймеры на запросы...
У этой функции будет свой локальный внутрений масив... и через глобальные реперменные она будет обращатся ...
Главное добится синхроности что бы не было пере песи наших основных переменных;) в общем если долго мучится можно за варганить полноценый межскиптовый диалог;))
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

я вот не врубаюсь, а зачем через setglobal мутить то?
ИМХО вполне можно просто через переменную глобальную сиё делать.
Post Reply