Мой первый скрипт - на музыку :)

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Tergos
Posts: 52
Joined: 2005-06-12 09:14:09
Location: Moscow, Russia
Contact:

Мой первый скрипт - на музыку :)

Post by Tergos »

Что скажете по общему стилю написания? Где можно было сделать лучше и как?

Code: Select all

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
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Пообщему стилю?;) если бы этот скрипт работал то было бы наверно ничего;)
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()?
Tergos
Posts: 52
Joined: 2005-06-12 09:14:09
Location: Moscow, Russia
Contact:

Post by Tergos »

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()?

т.е. опять же он нормально воспримет такое условие. Не был уверен в этом.
В целом - Вери Биг Сенкс за разъяснения.
casper46
Posts: 35
Joined: 2005-04-12 15:13:53
Location: From RuO
Contact:

Post by casper46 »

Пацаны завик так парится на счет какогото мусикалшипа на те скриптик сразу качается антисентемент музыка и ПИСмайкинг

Code: Select all

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]
Tergos
Posts: 52
Joined: 2005-06-12 09:14:09
Location: Moscow, Russia
Contact:

Post by Tergos »

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

Вот что получилось после плейтеста:

Code: Select all

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
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

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


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

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


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

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


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

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


Опять же, на работоспособность не влияет.
Tergos
Posts: 52
Joined: 2005-06-12 09:14:09
Location: Moscow, Russia
Contact:

Post by Tergos »

Дллька новая, посему работает и с '|'. А насчет того. что не ошибки - меня это и интересовало. оптимизация кода :)
-=SweD=-
Posts: 36
Joined: 2005-04-07 09:40:49

Post by -=SweD=- »

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

Code: Select all

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: Select all

UO.LDblClick(357,164)
UO.LClick(616,459)
Вот Это зачем например ?
[ещё раз увижу такую дебильную подпись - забаню. Администрация.]
Boris
Posts: 24
Joined: 2005-06-18 15:55:25

Post by Boris »

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

Code: Select all

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

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