Page 1 of 1
Вопрос про окошко Text и как туда добавить текущее время
Posted: 2004-10-24 11:26:13
by shaman52
В скрипте на ламбер (Lumberjacking / Рубка деревьев v7.3 Full) имеется такая функция, выводится в окошке текст когда человек выложил логи и указывается время. Как написать текст понятно, а вот как вывести текущее время, что-то не разобрался, помогите? Как это сделать? Напишите скрипт (для примера) который выводит время?
Заранее спасибо!
Posted: 2004-10-24 11:46:07
by AGRS
Re: Вопрос про окошко Text и как туда добавить текущее время
Posted: 2004-10-24 12:17:47
by AlexeyVorotnikov
shaman52 wrote:В скрипте на ламбер (Lumberjacking / Рубка деревьев v7.3 Full) имеется такая функция, выводится в окошке текст когда человек выложил логи и указывается время. Как написать текст понятно, а вот как вывести текущее время, что-то не разобрался, помогите? Как это сделать? Напишите скрипт (для примера) который выводит время?
Заранее спасибо!
А вот как в скрипте написано, так и выводить.
Posted: 2004-10-24 12:38:40
by shaman52
Синтакс: number uo.Time()
Возвращает число вида HHMMSS, где SS - секунда, MM - минута, YY - час.
Как это понимать? что такое number?
Ну напишите скрипт, вставив который можно вывести то что нужно?
если вставить это:
var Time,Space
Time=Time()
Space=' '
uo.TextOpen()
uo.TextPrint("Выкладываем логи - " +Space +Time)
то выдаёт ошибку.
Posted: 2004-10-24 12:49:08
by AGRS
shaman52 wrote:что такое number?
Это 8-и байтное с плавающей точкой в диапазоне 5.0 x 10^–324 .. 1.7 x 10^308 :)
Posted: 2004-10-24 13:26:25
by shaman52
Мне это ничего не говорит.
Ну пожалуйста, напишите скрипт на выведение времени в окно text?
Posted: 2004-10-24 13:35:33
by Edred
shaman52 wrote:Синтакс: number uo.Time()
Возвращает число вида HHMMSS, где SS - секунда, MM - минута, YY - час.
Как это понимать? что такое number?
В данном случае (и в аналогичных) показывает, что описываемая функция (UO.Time) вернет число. То есть если в скрипте написать:
То i - это число.
Posted: 2004-10-24 16:04:03
by AGRS
Специально для тебя отвлекся от зафлуживания форумов и написал пример.
Code: Select all
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
Posted: 2004-10-24 16:15:39
by Edred
AGRS wrote:Code: Select all
; Определение часов
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'...

Posted: 2004-10-24 16:17:54
by AGRS
Edred wrote:Запусти этот скриптец после полуночи и ты получишь совсем неожиданный результат

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

Критика принята. Ща пофиксим. %)
Posted: 2004-10-24 16:19:14
by Edred
Вот, выдрал из своего мининга:
Code: Select all
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 часов вообще не показывается. И вообще, в комментариях в скрипте приведены варианты времени.
Posted: 2004-10-24 16:45:06
by AGRS
Edred wrote:Вот, выдрал из своего мининга:
Тоже не катит. Нужен полный перебор. Есть даже варинт 3 (3 секунды после полуночи

)
Вот так работает:
Code: Select all
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
Posted: 2004-10-24 17:34:41
by shaman52
А теперь скажите почему этот скрипт не работает? Что я не так делаю?
И покажите как надо?
Да, и всё же в скрипте на ламбер это как то проще реалезовано.
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
Posted: 2004-10-24 18:04:56
by Edred
shaman52 wrote:Да, и всё же в скрипте на ламбер это как то проще реалезовано.
Мда? Проще? Сравни, вот оно, выдранное из запощенного тобой скрипта (и пости скрипты кодом, если хочешь чтобы тебе кто-то чего-то отвечал):
Code: Select all
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
Posted: 2004-10-24 18:28:31
by shaman52
Для начала спрошу как постить кодом?
Ну и пока в обычнов виде шлю:
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
Вот он, который из ламбера, так что он вроде поменьше, но я понял что и как только после того, как вы тут отпостились, ОГРОМНОЕ ВАМ СПАСИБО!!!
Posted: 2004-10-24 18:41:41
by Edred
Когда ты пишешь пост, у тебя слева есть кнопочка bbcode. Нажми ее и все внимательно прочитай.
Posted: 2004-10-24 22:37:15
by AlexeyVorotnikov
А вот как ЭТО делаю я
Code: Select all
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