Yoko
http://forum.yoko.com.ua/

Мой первый скрипт - на музыку :)
http://forum.yoko.com.ua/viewtopic.php?f=20&t=4227
Page 1 of 1

Author:  Tergos [ 2005-06-14 14:15:18 ]
Post subject:  Мой первый скрипт - на музыку :)

Что скажете по общему стилю написания? Где можно было сделать лучше и как?
Code:
sub Music()
DIM[5]
instrument[0]='' ;Лютня
instrument[1]='' ;Арфа      Не помню их типы :)
instrument[2]='' ;Бубен 
instrument[3]='' ;Барабан

Var i=0
Var instrumentest=0, instrumentcurrent

Hide()
While instrumentest==0 and i<4
  UO.FindType('instrument[i]')
  if UO.FindCount >=1 then
    instrumentest=1
    instrumentcurrent=instrument[i]
  endif
  i=i+1
wend

if instrumentest==1 then
  UO.Sayu(',warmode 0') ; На всякий случай
  repeat
    UO.Useobject('instrumentcurrent')
    wait(100)
    UO.Sayu(',warmode 1')
    wait(100)                   
    UO.Sayu(',warmode 0')
  until UO.Dead() or UO.SkillVal('Musicianship')==1000
endif                                               
endsub

Sub Hide()
While not UO.Hidden()==1
  UO.UseSkill('Hiding')
  UO.DeleteJournal()
  repeat
    wait(100)
  until UO.InJournal('have hidden') or ('hide here')
  wait(100)
wend
endsub

Author:  Grin [ 2005-06-14 15:19:47 ]
Post subject: 

Пообщему стилю?;) если бы этот скрипт работал то было бы наверно ничего;)
UO.FindType('instrument[i]') - фантастика
UO.Sayu(',warmode 1') - класс
until UO.InJournal('have hidden') or ('hide here') - фантастика
While not UO.Hidden()==1 - не рационально
UO.Useobject('instrumentcurrent') - из области фантастики;)
Как думаешь сколько ошибок тебе сразу выдаст парсер?;)
в общем тепер ьпо пунктам....
UO.FindType('instrument[i]')
ну и что тут? а тут унас зарание созданый тип объекта в вкладке ObjectType или просто строчка не понятного содержания а нам нужен элемент массива... по этому нах кавычки

UO.Useobject('instrumentcurrent')
тоже самое, утебя переменая instrumentcurrent объявлина поэтому выдергивай ее содержимое нах кавычки

UO.Sayu(',warmode 1')
uo.warmode(1)

until UO.InJournal('have hidden') or ('hide here')
вот обрати внимание на вторую часть ('hide here') как ты это понимаешь? Самое страное что я понимаю эо просто как выражение...
ясно дело что ты там хотел написчать UO.InJournal('hide here')
Но это уже не модно и все уже пишут UO.InJournal('have hidden|hide here')

While not UO.Hidden()==1
зачем писат ьтакую логику? не проще просто While not UO.Hidden()?

Author:  Tergos [ 2005-06-14 15:36:18 ]
Post subject: 

Grin wrote:
UO.FindType('instrument[i]')
ну и что тут? а тут унас зарание созданый тип объекта в вкладке ObjectType или просто строчка не понятного содержания а нам нужен элемент массива... по этому нах кавычки

Не знал что он нормально всопримет просто имя переменной.

Grin wrote:
UO.Sayu(',warmode 1')
uo.warmode(1)

хмм. т.е. команды вызываемые через запятую можно использовать в скрипте напрямую. Гуд.
Grin wrote:
until UO.InJournal('have hidden') or ('hide here')
вот обрати внимание на вторую часть ('hide here') как ты это понимаешь? Самое страное что я понимаю эо просто как выражение...
ясно дело что ты там хотел написчать UO.InJournal('hide here')
Но это уже не модно и все уже пишут UO.InJournal('have hidden|hide here')

Нигде не видел пометки что такое выражение воспринимается нормально. Вот за это биг сенкс. Ну и разумеется имелось в виду UO.InJournal('hide here')

Grin wrote:
While not UO.Hidden()==1
зачем писать такую логику? не проще просто While not UO.Hidden()?

т.е. опять же он нормально воспримет такое условие. Не был уверен в этом.
В целом - Вери Биг Сенкс за разъяснения.

Author:  casper46 [ 2005-06-14 15:48:44 ]
Post subject: 

Пацаны завик так парится на счет какогото мусикалшипа на те скриптик сразу качается антисентемент музыка и ПИСмайкинг
Code:
Var Animal1='0x003856CD'

sub Peacemaking()
var i=0
while uo.skillval('Peacemaking',1)<1000

i=i+1
if i==50 then
uo.usetype('0x097B')
wait(1000)
i=0
end if

cheklag()
uo.useskill('Peacemaking')
wait(3000)
wend
uo.closeuo()
end sub

sub Enticement()
var i=0
while uo.skillval('Enticement',1)<1000

i=i+1
if i==50 then
uo.usetype('0x097B')
wait(1000)
i=0
end if

cheklag()
uo.useskill('Enticement',Animal1)
wait(2500)
wend
uo.closeuo()
end sub

sub cheklag()
uo.deletejournal()
uo.click('backpack')
repeat
wait(10)
until uo.InJournal("backpack")
end sub

sub Reconnector()
var ReconnectTime, RFlag
ReconnectTime = '0'
RFlag = 1
Repeat
While (UO.ObjAtLayer('Bpack') == '')
if RFlag Then
ReconnectTime = MakeTime()
RFlag = 0
endif
Wait(20000) # WorldSave Protection
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.LDblClick(357,164)
UO.LClick(616,459)
Wait(3000)
WEnd
Wait(3000)
if (RFlag == 0) and (ReconnectTime <> '0') Then
UO.TextOpen()
UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
RFlag = 1
ReconnectTime = '0'
endif
Until false
end sub

sub MakeTime()
VAR D, T, Ret, i
Ret = STR(UO.Time())
T = ""
For i = 0 To Len(Ret)
T = Ret[Len(Ret)-i] + T
If (I == 2) OR (I == 4) Then
T = ":" + T
EndIf
Next
Ret = STR(UO.Date())
D = ""
For i = 0 To Len(Ret)
D = Ret[Len(Ret)-i] + D
If (I == 2) OR (I == 4) Then
D = "." + D
EndIf
Next
Ret = T + " @ " + D
RETURN Ret
end sub

Писал не я но скрипт овигеный короче до ГМа качается за 36часов!!! 8) 8)

[Убью ну вставляйте теги читать невозможно. I'm]

Author:  Tergos [ 2005-06-15 07:04:59 ]
Post subject: 

Я не люблю пользоваться чужими готовыми кодами. Как справочником - да, а для дела - сам напишу.

Вот что получилось после плейтеста:
Code:
sub Music()
DIM instrument[5]
instrument[0]='0x0EB3'
instrument[1]='0x0EB2'
instrument[2]='0x0E9D'
instrument[3]='0x0E9C'

Var i=0
Var instrumentest=0, instrumentcurrent

While instrumentest==0 and i<4
  UO.FindType(instrument[i])
  if UO.FindCount() >=1 then
    instrumentest=1
    instrumentcurrent=instrument[i]
  endif
  i=i+1
wend

if instrumentest==1 then
  UO.warmode(0)
  repeat
    UO.Usetype(instrumentcurrent)
    wait(500)
    UO.warmode(1)
    wait(100)
    UO.warmode(0)
    wait(100)
  until UO.Dead() or UO.SkillVal('Musicianship')==1000
endif
endsub

Author:  Edred [ 2005-06-15 14:28:01 ]
Post subject: 

Grin wrote:
UO.Useobject('instrumentcurrent')
тоже самое, утебя переменая instrumentcurrent объявлина поэтому выдергивай ее содержимое нах кавычки


Кавычки здесь конечно стоят зря, но на настоящую ошибку ты сам внимание не обратил. Дело в том, что instrumentcurrent - это тип объекта, поэтому правильно надо было UO.Usetype(instrumentcurrent)

Quote:
UO.Sayu(',warmode 1')
uo.warmode(1)


Оба написания работоспособны, на скорость не влияет. Здесь никакой ошибки нету.

Quote:
Но это уже не модно и все уже пишут UO.InJournal('have hidden|hide here')


Первый раз слышу про такую моду. Прежде чем советовать - поинтересовался бы у человека, может он на старой длл-ке сидит. Я вот например сижу на 312.19 и большинству советую того же. Так что на фиг такую моду.

Quote:
While not UO.Hidden()==1
зачем писат ьтакую логику? не проще просто While not UO.Hidden()?


Опять же, на работоспособность не влияет.

Author:  Tergos [ 2005-06-15 15:44:39 ]
Post subject: 

Дллька новая, посему работает и с '|'. А насчет того. что не ошибки - меня это и интересовало. оптимизация кода :)

Author:  -=SweD=- [ 2005-06-25 12:18:59 ]
Post subject: 

casper46 wrote:
Пацаны завик так парится на счет какогото мусикалшипа на те скриптик сразу качается антисентемент музыка и ПИСмайкинг
Code:
Var Animal1='0x003856CD'

sub Peacemaking()
var i=0
while uo.skillval('Peacemaking',1)<1000

i=i+1
if i==50 then
uo.usetype('0x097B')
wait(1000)
i=0
end if

cheklag()
uo.useskill('Peacemaking')
wait(3000)
wend
uo.closeuo()
end sub

sub Enticement()
var i=0
while uo.skillval('Enticement',1)<1000

i=i+1
if i==50 then
uo.usetype('0x097B')
wait(1000)
i=0
end if

cheklag()
uo.useskill('Enticement',Animal1)
wait(2500)
wend
uo.closeuo()
end sub

sub cheklag()
uo.deletejournal()
uo.click('backpack')
repeat
wait(10)
until uo.InJournal("backpack")
end sub

sub Reconnector()
var ReconnectTime, RFlag
ReconnectTime = '0'
RFlag = 1
Repeat
While (UO.ObjAtLayer('Bpack') == '')
if RFlag Then
ReconnectTime = MakeTime()
RFlag = 0
endif
Wait(20000) # WorldSave Protection
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.LDblClick(357,164)
UO.LClick(616,459)
Wait(3000)
WEnd
Wait(3000)
if (RFlag == 0) and (ReconnectTime <> '0') Then
UO.TextOpen()
UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
RFlag = 1
ReconnectTime = '0'
endif
Until false
end sub

sub MakeTime()
VAR D, T, Ret, i
Ret = STR(UO.Time())
T = ""
For i = 0 To Len(Ret)
T = Ret[Len(Ret)-i] + T
If (I == 2) OR (I == 4) Then
T = ":" + T
EndIf
Next
Ret = STR(UO.Date())
D = ""
For i = 0 To Len(Ret)
D = Ret[Len(Ret)-i] + D
If (I == 2) OR (I == 4) Then
D = "." + D
EndIf
Next
Ret = T + " @ " + D
RETURN Ret
end sub
Ну и как мне разобраться в твоём скрипте?
Code:
UO.LDblClick(357,164)
UO.LClick(616,459)
Вот Это зачем например ?

Author:  Boris [ 2005-06-25 13:36:23 ]
Post subject: 

еще массив задан неверно

Code:
DIM[4] 
instrument[0]='' ;
instrument[1]='' ;
instrument[2]='' ;
instrument[3]='' ;

так надо, у тебя всего 4 эллемента а не 5

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/