Yoko

All sides of Injection
It is currently 2025-11-23 13:12:33

All times are UTC+02:00




Post new topic  Reply to topic  [ 17 posts ] 
Author Message
PostPosted: 2004-10-24 11:26:13 
Offline

Joined: 2004-09-12 23:20:49
Posts: 9
В скрипте на ламбер (Lumberjacking / Рубка деревьев v7.3 Full) имеется такая функция, выводится в окошке текст когда человек выложил логи и указывается время. Как написать текст понятно, а вот как вывести текущее время, что-то не разобрался, помогите? Как это сделать? Напишите скрипт (для примера) который выводит время?
Заранее спасибо!


Top
   
 Post subject:
PostPosted: 2004-10-24 11:46:07 
Offline
Expert!
User avatar

Joined: 2004-04-04 21:40:09
Posts: 1007
http://yoko.netroof.net/help/index.php? ... &item=Time


Top
   
PostPosted: 2004-10-24 12:17:47 
Offline
Junior Expert

Joined: 2004-09-18 15:12:06
Posts: 138
shaman52 wrote:
В скрипте на ламбер (Lumberjacking / Рубка деревьев v7.3 Full) имеется такая функция, выводится в окошке текст когда человек выложил логи и указывается время. Как написать текст понятно, а вот как вывести текущее время, что-то не разобрался, помогите? Как это сделать? Напишите скрипт (для примера) который выводит время?
Заранее спасибо!

А вот как в скрипте написано, так и выводить.


Top
   
 Post subject:
PostPosted: 2004-10-24 12:38:40 
Offline

Joined: 2004-09-12 23:20:49
Posts: 9
Синтакс: number uo.Time()
Возвращает число вида HHMMSS, где SS - секунда, MM - минута, YY - час.

Как это понимать? что такое number?
Ну напишите скрипт, вставив который можно вывести то что нужно?

если вставить это:
var Time,Space
Time=Time()
Space=' '
uo.TextOpen()
uo.TextPrint("Выкладываем логи - " +Space +Time)
то выдаёт ошибку.


Top
   
 Post subject:
PostPosted: 2004-10-24 12:49:08 
Offline
Expert!
User avatar

Joined: 2004-04-04 21:40:09
Posts: 1007
shaman52 wrote:
что такое number?


Это 8-и байтное с плавающей точкой в диапазоне 5.0 x 10^–324 .. 1.7 x 10^308 :)


Top
   
 Post subject:
PostPosted: 2004-10-24 13:26:25 
Offline

Joined: 2004-09-12 23:20:49
Posts: 9
Мне это ничего не говорит.
Ну пожалуйста, напишите скрипт на выведение времени в окно text?


Top
   
 Post subject:
PostPosted: 2004-10-24 13:35:33 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
shaman52 wrote:
Синтакс: number uo.Time()
Возвращает число вида HHMMSS, где SS - секунда, MM - минута, YY - час.

Как это понимать? что такое number?


В данном случае (и в аналогичных) показывает, что описываемая функция (UO.Time) вернет число. То есть если в скрипте написать:

Code:
VAR i
i = UO.Time()


То i - это число.


Top
   
 Post subject:
PostPosted: 2004-10-24 16:04:03 
Offline
Expert!
User avatar

Joined: 2004-04-04 21:40:09
Posts: 1007
Специально для тебя отвлекся от зафлуживания форумов и написал пример.

Code:
sub main()
 
  ; Открытие текстового окна
  UO.TextOpen()
 
  ; Зачистка текстового окна
  UO.TextClear()
 
  ; Вывод текста в текстовое окно
  UO.TextPrint("Пример работы с временем")
 
  ; Вызов функции определения времени и вывод результата ее работы в текстовое окно
  UO.TextPrint(SAFECALL PrintTime())
 
end sub

sub PrintTime() 

  ; Определение текущего времени
  Var CurrentTime = UO.Time()
 
  ; Определение часов
  Var Hr  = Mid(STR(CurrentTime),0,2)
 
  ; Определение минут
  Var MIN = Mid(STR(CurrentTime),2,2)
 
  ; Определение секунд
  Var SEC = Mid(STR(CurrentTime),4,2)
 
  ; Возврат результата в общепринятом формате времени
  Return (HR+':'+MIN+':'+SEC)
 
end sub   


Top
   
 Post subject:
PostPosted: 2004-10-24 16:15:39 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
AGRS wrote:
Code:
  ; Определение часов
  Var Hr  = Mid(STR(CurrentTime),0,2)
 
  ; Определение минут
  Var MIN = Mid(STR(CurrentTime),2,2)
 
  ; Определение секунд
  Var SEC = Mid(STR(CurrentTime),4,2)
 
  ; Возврат результата в общепринятом формате времени
  Return (HR+':'+MIN+':'+SEC)


Запусти этот скриптец после полуночи и ты получишь совсем неожиданный результат :) Я в свое время развлекался. При нуле часов час - одна цифра, минуты до 10 - одна цифра. То есть 0 часов 5 минут 10 секунд - это '0510'... :)


Top
   
 Post subject:
PostPosted: 2004-10-24 16:17:54 
Offline
Expert!
User avatar

Joined: 2004-04-04 21:40:09
Posts: 1007
Edred wrote:
Запусти этот скриптец после полуночи и ты получишь совсем неожиданный результат :) Я в свое время развлекался. При нуле часов час - одна цифра, минуты до 10 - одна цифра. То есть 0 часов 5 минут 10 секунд - это '0510'... :)


Критика принята. Ща пофиксим. %)


Top
   
 Post subject:
PostPosted: 2004-10-24 16:19:14 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Вот, выдрал из своего мининга:

Code:
Sub ConvertTime( tim )
   VAR sek, nosek, chas, min, newtim
   ; 1. Шесть знаков: 193121 = 19.31.21
   ; 2. Четыре знака: 1009 = 00.10.09
   ; 3. Пять знаков: 10850 = 01.08.50
   If len( tim ) == 6 Then
      sek = right( tim, 2 )
      nosek = left( tim, len( tim ) - 2 )
      chas = left( nosek, len( nosek ) - 2 )
      min = right( nosek, len( nosek ) - 2 )
      newtim = chas + '.' + min + '.' + sek
      return newtim
   Endif
   If len( tim ) == 5 Then
      sek = right( tim, 2 )
      nosek = left( tim, 3 )
      chas = '0' + left( nosek, 1 )
      min = right( nosek, 2 )
      newtim = chas + '.' + min + '.' + sek
      return newtim
   Endif
   If len( tim ) == 4 Then
      sek = right( tim, 2 )
      chas = '00'
      min = left( tim, 2 )
      newtim = chas + '.' + min + '.' + sek
      return newtim
   Endif
   return tim
endsub


Наврал в предыдущем посте. 0 часов вообще не показывается. И вообще, в комментариях в скрипте приведены варианты времени.


Top
   
 Post subject:
PostPosted: 2004-10-24 16:45:06 
Offline
Expert!
User avatar

Joined: 2004-04-04 21:40:09
Posts: 1007
Edred wrote:
Вот, выдрал из своего мининга:


Тоже не катит. Нужен полный перебор. Есть даже варинт 3 (3 секунды после полуночи :lol:)

Вот так работает:

Code:
sub main()
 
  ; Открытие текстового окна
  UO.TextOpen()
 
  ; Зачистка текстового окна
  UO.TextClear()
 
  ; Вывод текста в текстовое окно
  UO.TextPrint("Пример работы с временем")
 
  ; Вызов функции определения времени и вывод результата ее работы в текстовое окно
  UO.TextPrint(SAFECALL PrintTime())
 
end sub

sub PrintTime() 
  Var HR  = ''
  Var MIN = ''
  Var SEC = ''
 
  ; Определение текущего времени
  Var CurrentTime = UO.Time()
 
  If CurrentTime>99999 Then
    ; Определение часов
    HR  = Mid(STR(CurrentTime),0,2)
    ; Определение минут
    MIN = Mid(STR(CurrentTime),2,2) 
    ; Определение секунд
    SEC = Mid(STR(CurrentTime),4,2)
  Else
    If CurrentTime > 9999 Then
      ; Определение часов
      HR  = '0'+Mid(STR(CurrentTime),0,1)
      ; Определение минут
      MIN = Mid(STR(CurrentTime),1,2) 
      ; Определение секунд
      SEC = Mid(STR(CurrentTime),3,2)
    Else
      If CurrentTime > 999 Then
        ; Определение часов
        HR  = '00'
        ; Определение минут
        MIN = Mid(STR(CurrentTime),0,2) 
        ; Определение секунд
        SEC = Mid(STR(CurrentTime),2,2)
      Else
        If CurrentTime > 99 Then
          ; Определение часов
          HR  = '00'
          ; Определение минут
          MIN = '0'+Mid(STR(CurrentTime),0,1) 
          ; Определение секунд
          SEC = Mid(STR(CurrentTime),1,2)
        Else
          If CurrentTime > 9  Then
            ; Определение часов
            HR  = '00'
            ; Определение минут
            MIN = '00' 
            ; Определение секунд
            SEC = STR(CurrentTime)
          Else
            ; Определение часов
            HR  = '00'
            ; Определение минут
            MIN = '00' 
            ; Определение секунд
            SEC = '0'+STR(CurrentTime)         
          EndIf
        EndIf
      EndIf
    EndIf
  EndIf

  ; Возврат результата в общепринятом формате времени
  UO.TextPrint(STR(CurrentTime ))
  Return (HR+':'+MIN+':'+SEC)
 
end sub   


Top
   
 Post subject:
PostPosted: 2004-10-24 17:34:41 
Offline

Joined: 2004-09-12 23:20:49
Posts: 9
А теперь скажите почему этот скрипт не работает? Что я не так делаю?
И покажите как надо?
Да, и всё же в скрипте на ламбер это как то проще реалезовано.

sub main()
#BETEP™#
var mx, my, mz, i, j, jor, ser, noto
Uo.exec("set norbcheck 1"); для рекола
uo.exec("set norbcalc 1"); тоже

uo.print('!!Viberi Lopatu!! ')
uo.exec('addobject Shovel')
while uo.targeting()
wait(100)
wend

uo.print('!!Viberi Runebook!! ')
uo.exec('addobject Runebook')
while uo.targeting()
wait(100)
wend

na4alo:
mx = UO.GetX("self")
my = UO.GetY("self")
mz = UO.GetZ("self")
UO.DeleteJournal()
for i = mx-4 to mx+4
for j = my -4 to my+4
while not UO.Hidden()
UO.Warmode("0")
uo.print("Hiding...")
UO.UseSkill("Hiding")
wait(4000)
wend
UO.Print("Kopaem v koordinatah: "+str(mx-i)+" "+str(my-j))
while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("Copper Ore") and not UO.InJournal("Dull Copper Ore") and not UO.InJournal("Old Copper Ore") and not UO.InJournal("Rusty Ore") and not UO.InJournal("Iron Ore") and not UO.InJournal("far away") and not UO.InJournal("in rock")
UO.DeleteJournal()
if uo.waiting() then
uo.canceltarget()
endif
UO.Waittargettile("1341", str(i), str(j), str(mz))
UO.Useobject("Shovel")
while not UO.InJournal("You put") and not UO.InJournal("heavy") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock")
wait (500)
if uo.injournal("heavy") or uo.dead() then
pwav()
Pause()
endif
for jor = 0 to 9
ser = uo.journalserial(jor)
noto = uo.getnotoriety(ser)
if noto <> 1 and noto <> 0 and not uo.injournal("elemental") then
if uo.waiting() then
uo.canceltarget()
endif
Save()
pwavw()
realtime()
uo.TextOpen()
uo.TextPrint("Вроде ушли, ждем пока уйдёт ПК "+HR+":"+MIN+":"+SEC)
wait(180000) ; время в секундах при ожидании пока уйдет ПК
loot()
wait(3000)
goto reccal
endif
next
wend
if uo.weight > 250 then ; Максимальный вес при котором домой с рудой
goto end
endif
wend
UO.DeleteJournal()
next
next
goto na4alo
end:
if uo.waiting() then
uo.canceltarget()
endif
uo.exec("recall Runebook 21") ; домой ( в рунбуке слот 1 )
wait(15000)
loot()
wait(3000)
reccal:
uo.deletejournal()
if uo.waiting() then
uo.canceltarget()
endif
uo.exec("recall Runebook 94") ; в шахту ( в рунбуке слот 8 )
mx = UO.GetX("self")
my = UO.GetY("self")
wait(15000)
if not UO.GetX("self") <> mx and not UO.GetY("self") <> my then
goto reccal
endif
goto na4alo
end sub

sub loot() ; перекладка руды в сундук
realtime()
uo.TextOpen()
uo.TextPrint("Выкладываем оры в сундук "+HR+":"+MIN+":"+SEC)
if uo.waiting() then
uo.canceltarget()
endif
VAR a,Exit
VAR UnloadCont='0x401f219d' ; АЙДИ сундука для руды
DIM Ore[5]
Ore[0]=0x19B9 ; 4 and more ore
Ore[1]=0x19B7 ; 1 ore
Ore[2]=0x19BA ; 2 ore
Ore[3]=0x19B8 ; 3 ore
UO.SetReceivingContainer(UnloadCont)
wait(500)
For a=0 to 3
Exit=0
repeat
UO.FindType(Ore[a])
if UO.GetQuantity('finditem')>0 then
UO.Grab('0','finditem')
wait(1500)
Else
Exit=1
endif
until Exit==1
Next
UO.UnSetReceivingContainer()
end sub

sub Save() ; Реколл от ПК при их появлении (в паке рунка в безопасное место и реги)
realtime()
uo.TextOpen()
uo.TextPrint("Нас атаковали, смываемся "+HR+":"+MIN+":"+SEC)
var mx, my
reccal:
uo.deletejournal()
if uo.waiting() then
uo.canceltarget()
endif
mx = UO.GetX("self")
my = UO.GetY("self")
UO.DeleteJournal()
UO.FindType('0x1F14',-1,'my')
wait(200)
UO.Cast('Recall','finditem')
wait(4000)
if not UO.GetX("self") <> mx and not UO.GetY("self") <> my then
goto reccal
endif
end sub

sub pwav() ; звук при выкапывании ЭЛЕМЕНТАЛА
uo.playwav("C:\Games\UO\inject\alarm.wav")
endsub

sub pwavw(); звук при появлении ПК
uo.playwav("C:\Games\UO\inject\alarm.wav")
endsub

sub Pause() ; Пауза скрипта если выкопали Элема (продолжить сказав GO )
UO.DeleteJournal()
REPEAT
WAIT(3000)
UO.Print("!!!Skript na pauze, napishi GO!!!!")
UNTIL UO.InJournal('GO')
UO.Print("!!!Skript prodoljen!!!!")
endif
end sub

sub realtime()
Var HR = ''
Var MIN = ''
Var SEC = ''

; Определение текущего времени
Var CurrentTime = UO.Time()

If CurrentTime>99999 Then
; Определение часов
HR = Mid(STR(CurrentTime),0,2)
; Определение минут
MIN = Mid(STR(CurrentTime),2,2)
; Определение секунд
SEC = Mid(STR(CurrentTime),4,2)
Else
If CurrentTime > 9999 Then
; Определение часов
HR = '0'+Mid(STR(CurrentTime),0,1)
; Определение минут
MIN = Mid(STR(CurrentTime),1,2)
; Определение секунд
SEC = Mid(STR(CurrentTime),3,2)
Else
If CurrentTime > 999 Then
; Определение часов
HR = '00'
; Определение минут
MIN = Mid(STR(CurrentTime),0,2)
; Определение секунд
SEC = Mid(STR(CurrentTime),2,2)
Else
If CurrentTime > 99 Then
; Определение часов
HR = '00'
; Определение минут
MIN = '0'+Mid(STR(CurrentTime),0,1)
; Определение секунд
SEC = Mid(STR(CurrentTime),1,2)
Else
If CurrentTime > 9 Then
; Определение часов
HR = '00'
; Определение минут
MIN = '00'
; Определение секунд
SEC = STR(CurrentTime)
Else
; Определение часов
HR = '00'
; Определение минут
MIN = '00'
; Определение секунд
SEC = '0'+STR(CurrentTime)
EndIf
EndIf
EndIf
EndIf
EndIf

end sub


Top
   
 Post subject:
PostPosted: 2004-10-24 18:04:56 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
shaman52 wrote:
Да, и всё же в скрипте на ламбер это как то проще реалезовано.


Мда? Проще? Сравни, вот оно, выдранное из запощенного тобой скрипта (и пости скрипты кодом, если хочешь чтобы тебе кто-то чего-то отвечал):

Code:
sub realtime()
 Var HR  = ''
  Var MIN = ''
  Var SEC = ''
 
  ; Определение текущего времени
  Var CurrentTime = UO.Time()
 
  If CurrentTime>99999 Then
    ; Определение часов
    HR  = Mid(STR(CurrentTime),0,2)
    ; Определение минут
    MIN = Mid(STR(CurrentTime),2,2) 
    ; Определение секунд
    SEC = Mid(STR(CurrentTime),4,2)
  Else
    If CurrentTime > 9999 Then
      ; Определение часов
      HR  = '0'+Mid(STR(CurrentTime),0,1)
      ; Определение минут
      MIN = Mid(STR(CurrentTime),1,2) 
      ; Определение секунд
      SEC = Mid(STR(CurrentTime),3,2)
    Else
      If CurrentTime > 999 Then
        ; Определение часов
        HR  = '00'
        ; Определение минут
        MIN = Mid(STR(CurrentTime),0,2) 
        ; Определение секунд
        SEC = Mid(STR(CurrentTime),2,2)
      Else
        If CurrentTime > 99 Then
          ; Определение часов
          HR  = '00'
          ; Определение минут
          MIN = '0'+Mid(STR(CurrentTime),0,1) 
          ; Определение секунд
          SEC = Mid(STR(CurrentTime),1,2)
        Else
          If CurrentTime > 9  Then
            ; Определение часов
            HR  = '00'
            ; Определение минут
            MIN = '00' 
            ; Определение секунд
            SEC = STR(CurrentTime)
          Else
            ; Определение часов
            HR  = '00'
            ; Определение минут
            MIN = '00' 
            ; Определение секунд
            SEC = '0'+STR(CurrentTime)         
          EndIf
        EndIf
      EndIf
    EndIf
  EndIf

end sub


Top
   
 Post subject:
PostPosted: 2004-10-24 18:28:31 
Offline

Joined: 2004-09-12 23:20:49
Posts: 9
Для начала спрошу как постить кодом?
Ну и пока в обычнов виде шлю:

sub Time()
var hh,mm,ss,hms,t=str(uo.Time())
if len(t)<=2 then
hh="0"
mm="0"
ss=t
endif
if len(t)==3 then
hh="0"
mm=left(t,len(t)-2)
ss=right(t,len(t)-1)
endif
if len(t)==4 then
hh="0"
mm=left(t,len(t)-2)
ss=right(t,len(t)-2)
endif
if len(t)==5 then
hh=left(t,len(t)-4)
hms=left(t,len(t)-2)
mm=right(hms,len(hms)-1)
ss=right(t,len(t)-3)
endif
if len(t)==6 then
hh=left(t,len(t)-4)
hms=left(t,len(t)-2)
mm=right(hms,len(hms)-2)
ss=right(t,len(t)-4)
endif
return hh+":"+mm+":"+ss
end sub

Вот он, который из ламбера, так что он вроде поменьше, но я понял что и как только после того, как вы тут отпостились, ОГРОМНОЕ ВАМ СПАСИБО!!!


Top
   
 Post subject:
PostPosted: 2004-10-24 18:41:41 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Когда ты пишешь пост, у тебя слева есть кнопочка bbcode. Нажми ее и все внимательно прочитай.


Top
   
 Post subject:
PostPosted: 2004-10-24 22:37:15 
Offline
Junior Expert

Joined: 2004-09-18 15:12:06
Posts: 138
А вот как ЭТО делаю я :)
Code:
sub GetTime()
  var curTime
  var hour
  var minute
  var second
  var timeStr = ""

  curTime = UO.Time()
  hour = INT(curTime/10000)
  minute = INT(curTime/100) - hour * 100
  second = curTime - hour * 10000 - minute * 100

  timeStr = str(hour) + ":"

  if minute < 10 then
    timeStr = timeStr + "0" + str(minute) + ":"
  else
    timeStr = timeStr + str(minute) + ":"
  endif

  if second < 10 then
    timeStr = timeStr + "0" + str(second)
  else
    timeStr = timeStr + str(second)
  endif

  return timeStr
end sub


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 17 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited