Page 1 of 2
Hardпрокачка всех скилов
Posted: 2006-03-06 19:14:20
by Scripts Writer
Вот задался такой мыслёй, -мечтой идиота правда, но всё же.
Вопросы тут буду задавать если не против
1. skillval==1000 -объясните правильный синтаксис, будьте добры
Re: Hardпрокачка всех скилов
Posted: 2006-03-06 21:28:11
by Kynep
You Must Die wrote:Вот задался такой мыслёй, -мечтой идиота правда, но всё же.
Вопросы тут буду задавать если не против

1. skillval==1000 -объясните правильный синтаксис, будьте добры
Если я тебя правильно понял, ты хочешь проверять значение скила, вот например Магери:
Code: Select all
if uo.skillval("Magery",1) < 1010 Then
тут свой код
Проверяет значение магери, если меньше 101 то делает то что напишешь, значения надо ставить те которые показывает без кнопочки Show Real. И в конце добывлять ноль.
Posted: 2006-03-06 22:41:28
by Sanata
о я хотел узнать в чем фишка и зачем это нужно ?! например таминг real: 100% а так 102% .

Posted: 2006-03-06 22:58:42
by Kynep
Sanata wrote:о я хотел узнать в чем фишка и зачем это нужно ?! например таминг real: 100% а так 102% .

Фишка в том чтоб писать скрипты для прокачки на ночь. Если хочешь докачать до ГМа и чтоб зря не стоял не буровил, например магери, он тебе за час докачал а ты спишь. И он стоит и всю ночь кастует, реги тратит, а так поставил проверку и спи спокойно, когда докочает до нужного значения, то остановится.
Posted: 2006-03-07 00:00:46
by Grin
Sanata wrote:о я хотел узнать в чем фишка и зачем это нужно ?! например таминг real: 100% а так 102% .

Работает на ОСИ на других эмуляторах невидел.
Если присмотришься то увидишь что разница растет в месте стваими статами... Так вот на ОСИ есть бонус к склам в зависемости от статов...
ну а для лбителей качатся лишний повод порадоватся сначала у видить как скил стал 100;) потом как он стал больше 100;) а потом еще раз как стал 100 но уже реал;)) все для вас делают;)
PS Синтакис даной байды есть в хелпе...
Posted: 2006-03-07 03:31:26
by Destruction
Пару лет назад на доминарии нереальное значение скилов зависило от статов, от ловкости в любом случае точно.
Но правда, значения всё равно брались только реальные, я полагаю.
Posted: 2006-03-07 20:06:00
by Scripts Writer
как приклеять процедуру кушания? =)
Code: Select all
...
if uo.InJournal('You are hungry')
...
Весьма долго на мой взгляд, возможно можно присобачить после ВорлдСейва? Цикл следующий:
Code: Select all
repeat
Uo.WaitTargetObject(Item)
Uo.UseSkill('Item Identification')
repeat
Wait(100)
Until uo.InJournal('msg') or uo.InJournal('msg2')
until uo.SkillVal(Item Identification,'1') == 1000
Posted: 2006-03-07 21:42:05
by Scripts Writer
Code: Select all
############################################################
########################drw.ru##############################
############################################################
############################################################
# Если кто то играет на хорошем конекте #
# Или по локальной сети, то можно и постоять,покачаться =)#
# #
############################################################
############################################################
# #
# Указываем вещи для прокачки. #
# Указываем животное для Animal Lore #
# (Если у вас на шарде это не запрещено)На том же животном #
# качаем Evaluating Intell #
# Так же указываем еду на которой качать Taste Ident и то #
# что будем перекусывать. #
############################################################
sub bla()
Var msg='You estimate' # Удачное сообщение при использовании скила Item Ident
Var msg2='You cannot' #Неудачное сообщение при использовании скила Item Ident
Var msg3='it is' # Удачное сообщение при использовании скила Animal Lore
Var msg4='You cannot' #Неудачное сообщение при использовании скила Animal Lore
Var msg5='[' # Удачное сообщение при использовании скила Arms Lore
Var msg6='You cannot' #Неудачное сообщение при использовании скила Arms Lore
Var msg7='' # Удачное сообщение при использовании скила Evalution Intell
Var msg8='' #Неудачное сообщение при использовании скила Evalution Intell
Var msg9='looks' # Удачное сообщение при использовании скила Anatomy
Var msg10='You cannot' #Неудачное сообщение при использовании скила Anatomy
Var msg11='It tastes' # Удачное сообщение при использовании скила Taste Ident
Var msg12='You cannot' #Неудачное сообщение при использовании скила Taste Ident
var w=750
Uo.Print('Select an item')
Uo.exec('addobject Item')
while uo.targeting()
Wait(100)
Wend
Uo.Print('Select an animal')
Uo.exec('addobject animal')
while uo.targeting()
Wait(100)
Wend
Uo.Print('Select something to eat(For skill)')
Uo.exec('addobject taste')
while uo.targeting()
Wait(100)
Wend
Uo.Print('Select something to eat')
Uo.exec('addobject eda')
while uo.targeting()
Wait(100)
Wend
repeat
Uo.WaitTargetObject(Item)
Uo.UseSkill('Item Identification')
repeat
Wait(100)
CheckLag()
Until uo.InJournal('msg') or uo.InJournal('msg2')
if uo.InJournal('You are hungry') then
repeat
uo.findtype('food',-1,'backpack')
if uo.findcount() > 0 then
uo.UseObject('food')
wait(w)
until uo.InJournal('You are simply') or uo.findcount() == 0
else
endif
uo.DeleteJournal()
until uo.SkillVal('Item Identification') == 1000
repeat
uo.WaitTargetObject(animal)
uo.UseSkill('Animal Lore')
repeat
wait(100)
CheckLag()
Until uo.InJournal('msg3') or uo.InJournal('msg4')
if uo.InJournal('You are hungry') then
repeat
uo.findtype('food',-1,'backpack')
if uo.findcount() > 0 then
uo.UseObject('food')
wait(w)
until uo.InJournal('You are simply') or uo.findcount() == 0
else
endif
uo.DeleteJournal()
until uo.SkillVal('Animal Lore') == 1000
repeat
Uo.WaitTargetObject(Item)
Uo.UseSkill('Arms Lore')
repeat
Wait(100)
CheckLag()
Until uo.InJournal('msg5') or uo.InJournal('msg6')
if uo.InJournal('You are hungry') then
repeat
uo.findtype('food',-1,'backpack')
if uo.findcount() > 0 then
uo.UseObject('food')
wait(w)
until uo.InJournal('You are simply') or uo.findcount() == 0
else
endif
uo.DeleteJournal()
until uo.SkillVal('Arms Lore') == 1000
repeat
uo.WaitTargetObject(animal)
uo.UseSkill('Evaluating Intelligence')
repeat
wait(100)
CheckLag()
Until uo.InJournal('msg7') or uo.InJournal('msg8')
if uo.InJournal('You are hungry') then
repeat
uo.findtype('food',-1,'backpack')
if uo.findcount() > 0 then
uo.UseObject('food')
wait(w)
until uo.InJournal('You are simply') or uo.findcount() == 0
else
endif
uo.DeleteJournal()
until uo.SkillVal('Evaluating Intelligence') == 1000
repeat
Uo.WaitTargetObject(animal)
Uo.UseSkill('Anatomy')
repeat
Wait(100)
CheckLag()
Until uo.InJournal('msg9') or uo.InJournal('msg10')
if uo.InJournal('You are hungry') then
repeat
uo.findtype('food',-1,'backpack')
if uo.findcount() > 0 then
uo.UseObject('food')
wait(w)
until uo.InJournal('You are simply') or uo.findcount() == 0
else
endif
uo.DeleteJournal()
until uo.SkillVal('Anatomy') == 1000
repeat
uo.WaitTargetObject(taste)
uo.UseSkill('Taste Identification')
repeat
wait(100)
CheckLag()
Until uo.InJournal('msg11') or uo.InJournal('msg12')
if uo.InJournal('You are hungry') then
repeat
uo.findtype('food',-1,'backpack')
if uo.findcount() > 0 then
uo.UseObject('food')
wait(w)
until uo.InJournal('You are simply') or uo.findcount() == 0
else
endif
uo.DeleteJournal()
until uo.SkillVal('Taste Identification') == 1000
end sub
sub CheckLag()
if uo.injournal("World is saving now...") then
repeat
wait(50)
until uo.injournal("World save")
end if
uo.Click('backpack')
repeat
wait(50)
until uo.InJournal("backpack")
end sub
Posted: 2006-03-07 21:43:48
by Scripts Writer
вот накалякал. мож кому нуно )
Posted: 2006-03-08 00:06:47
by Edred
Вот мне интересно, а ты отступы (структуру) табуляциями от балды ставил? Совершенно не уловил системы. Обычно для удобства чтения отступами размечают тело циклов и условных операторов... У тебя - ничего подобного.
Posted: 2006-03-08 10:15:57
by Scripts Writer
Edred wrote:Вот мне интересно, а ты отступы (структуру) табуляциями от балды ставил? Совершенно не уловил системы. Обычно для удобства чтения отступами размечают тело циклов и условных операторов... У тебя - ничего подобного.
2 вопроса:
1.Как правильно разлиновывать на небольшом примере плз.
2. Как правильнее урезать процесс еды персонажем?
скрипт на то чтобы ел свернуть в отдельный и вставлять допустим:
или в
добавить?
Вопрос ко всем.
---
после ответа на вопрос приплюсую к общему скрипту спирит , тракинг, детект, хаидинг...
Posted: 2006-03-08 11:16:49
by Scripts Writer
не доработал, извиняюсь. просьба ответить на вопросы выше.
Posted: 2006-03-08 11:39:06
by Edred
Погляди мои уроки, там примеров достаточно. Обычно, программисты выделяют табуляцией внутреннее тело цикла или условного оператора вот так:
Code: Select all
if <условие> then
<тело оператора>
endif
Аналогично циклы (for, while, repeat). Для чего? Так гораздо легче читать скрипт, анализировать его структуру, находить ошибки, находить места для вставки дополнений и т.д. Также, в этих же целях, в скрипты обычно добавляют комментарии...

Posted: 2006-03-08 12:17:05
by Edred
Решил (по твоей просьбе в личке) сделать отступы тебе в скрипте, что ты запостил выше, и в процессе сразу наткнулся на ошибку. Если бы ты писал скрипт (или склеивал) с разметкой структуры табуляциями, ты бы ее тоже сразу увидел:
Code: Select all
sub bla()
Var msg='You estimate' # Удачное сообщение при использовании скила Item Ident
Var msg2='You cannot' #Неудачное сообщение при использовании скила Item Ident
Var msg3='it is' # Удачное сообщение при использовании скила Animal Lore
Var msg4='You cannot' #Неудачное сообщение при использовании скила Animal Lore
Var msg5='[' # Удачное сообщение при использовании скила Arms Lore
Var msg6='You cannot' #Неудачное сообщение при использовании скила Arms Lore
Var msg7='' # Удачное сообщение при использовании скила Evalution Intell
Var msg8='' #Неудачное сообщение при использовании скила Evalution Intell
Var msg9='looks' # Удачное сообщение при использовании скила Anatomy
Var msg10='You cannot' #Неудачное сообщение при использовании скила Anatomy
Var msg11='It tastes' # Удачное сообщение при использовании скила Taste Ident
Var msg12='You cannot' #Неудачное сообщение при использовании скила Taste Ident
var w=750
Uo.Print('Select an item')
Uo.exec('addobject Item')
while uo.targeting()
Wait(100)
Wend
Uo.Print('Select an animal')
Uo.exec('addobject animal')
while uo.targeting()
Wait(100)
Wend
Uo.Print('Select something to eat(For skill)')
Uo.exec('addobject taste')
while uo.targeting()
Wait(100)
Wend
Uo.Print('Select something to eat')
Uo.exec('addobject eda')
while uo.targeting()
Wait(100)
Wend
repeat
Uo.WaitTargetObject(Item)
Uo.UseSkill('Item Identification')
repeat
Wait(100)
CheckLag()
Until uo.InJournal('msg') or uo.InJournal('msg2')
if uo.InJournal('You are hungry') then
repeat
uo.findtype('food',-1,'backpack')
if uo.findcount() > 0 then
uo.UseObject('food')
wait(w)
until uo.InJournal('You are simply') or uo.findcount() == 0
else
endif
Вот тут в конце - у тебя закрывается цикл repeat, но if еще не закрыт. If закрывается за пределами repeat - это гарантированные глюки или падение инжи.
Posted: 2006-03-08 13:28:30
by Scripts Writer
я при тесте уже нашел достаточное кол-во ошибок. Сейчас корректирую, и спасиб тебе за корректировку )
а что касается еды? твоё мнение оставлять её в таком виде как сейчас или изменятьв отдельный скрипт? или както еще можно?
Posted: 2006-03-08 18:43:13
by Scripts Writer
Code: Select all
############################################################
########################drw.ru##############################
############################################################
############################################################
# Если кто то играет на хорошем конекте #
# Или по локальной сети, то можно и постоять,покачаться =)#
# #
############################################################
############################################################
# #
# Указываем вещи для прокачки. #
# Указываем животное для Animal Lore #
# (Если у вас на шарде это не запрещено)На том же животном #
# качаем Evaluating Intell) #
# Так же указываем еду на которой качать Taste Ident и что #
# что будем перекусывать. #
# added: #
# Hiding,Detect Hiding, Tracking, Spirit Speak, Stelth #
############################################################
; 8.03.06
; msg- msg12 - сообщения
;
; Формула задающая время между использованием скилов, следующая:
;
; if uo.InJournal(waiting) then
; forskill= forskill + 500
; end if
; v 1.0
; created & tested on
; Shard Dragon World by Goldberg[PaDoHkU]
;
#############################################################
sub eating()
var w = 750 # Задержка между кликами по еде, когда голодны
var food='0x09D1' # Тип еды которую кушаем
var i
if uo.InJournal('You are hungry') then
for i = 0 to 10
uo.findtype('food',-1,'backpack')
uo.UseObject('food')
wait(w)
i = i + 1
next
endif
uo.DeleteJournal()
end sub
sub bla()
Var msg='Its made' # Удачное сообщение при использовании скила Item Ident
Var msg2='You cannot' #Неудачное сообщение при использовании скила Item Ident
Var msg3='it is' # Удачное сообщение при использовании скила Animal Lore
Var msg4='You cannot' #Неудачное сообщение при использовании скила Animal Lore
Var msg5='Attack' # Удачное сообщение при использовании скила Arms Lore
Var msg6='You cannot' #Неудачное сообщение при использовании скила Arms Lore
Var msg7='Looks' # Удачное сообщение при использовании скила Evalution Intell
Var msg8='cannot say' #Неудачное сообщение при использовании скила Evalution Intell
Var msg9='You see: Horse' # Удачное сообщение при использовании скила Anatomy
Var msg10='You cannot' #Неудачное сообщение при использовании скила Anatomy
Var msg11='It tastes' # Удачное сообщение при использовании скила Taste Ident
Var msg12='substance.' #Неудачное сообщение при использовании скила Taste Ident
VAR fizzle = 'You fail your attempt' # Удачное сообщение при использовании скила Spirit Speak
VAR success = 'You establish a connection' #Неудачное сообщение при использовании скила Spirit Speak
Var waiting='You must wait' # Слишком быстро используем Skill
Var forskill=2000 # Время для использования скилов( генерируется автоматически )
VAR mod = UO.WarMode(), num # Don't touch
VAR trak = 3000 # Время нужное для использования скила Tracking
Uo.Print('Select an item')
Uo.exec('addobject Item')
while uo.targeting()
Wait(100)
Wend
Uo.Print('Select an animal')
Uo.exec('addobject animal')
while uo.targeting()
Wait(100)
Wend
Uo.Print('Select something to eat(For skill)')
Uo.exec('addobject taste')
while uo.targeting()
Wait(100)
Wend
Uo.Print('Select something to eat')
Uo.exec('addobject eda')
while uo.targeting()
Wait(100)
Wend
repeat
repeat
Uo.WaitTargetObject('Item')
Uo.UseSkill('Item Identification')
Wait(forskill)
if uo.InJournal(waiting) then
forskill = forskill + 500
end if
Until uo.InJournal(msg) or uo.InJournal(msg2)
CheckLag()
eating()
until uo.SkillVal('Item Identification') == 1000
repeat
uo.DeleteJournal()
uo.WaitTargetObject('animal')
uo.UseSkill('Animal Lore')
Wait(forskill)
repeat
if uo.InJournal(waiting) then
forskill = forskill + 500
end if
CheckLag()
Until uo.InJournal(msg3) or uo.InJournal(msg4)
CheckLag()
eating()
until uo.SkillVal('Animal Lore') == 1000
repeat
repeat
Uo.WaitTargetObject('Item')
Uo.UseSkill('Arms Lore')
Wait(forskill)
if uo.InJournal(waiting) then
forskill = forskill + 500
end if
Until uo.InJournal(msg5) or uo.InJournal(msg6)
CheckLag()
eating()
until uo.SkillVal('Arms Lore') == 1000
repeat
uo.WaitTargetObject('animal')
uo.UseSkill('Evaluating Intelligence')
Wait(forskill)
repeat
if uo.InJournal(waiting) then
forskill = forskill + 500
end if
CheckLag()
Until uo.InJournal(msg7) or uo.InJournal(msg8)
CheckLag()
eating()
until uo.SkillVal('Evaluating Intelligence') == 1000
repeat
uo.WaitTargetObject('animal')
uo.UseSkill('Anatomy')
Wait(forskill)
if uo.InJournal(waiting) then
forskill = forskill + 500
end if
CheckLag()
eating()
until uo.SkillVal('Anatomy') == 1000
repeat
uo.WaitTargetObject('taste')
uo.UseSkill('Taste Identification')
Wait(forskill)
if uo.InJournal(waiting) then
forskill = forskill + 500
end if
CheckLag()
eating()
until uo.SkillVal('Taste Identification') == 1000
repeat
UO.WarMode( 0 )
uo.DeleteJournal()
repeat
uo.DeleteJournal()
UO.UseSkill( 'Spirit Speak' )
repeat
wait(50)
until UO.InJournal('msg13') OR UO.InJournal('msg14')
CheckLag()
until UO.InJournal( success )
UO.WarMode( mod )
eating()
until uo.SkillVal('Spirit Speak') == 1000
repeat
uo.AutoMenu("Tracking","Players")
uo.UseSkill('Tracking')
wait(trak)
eating()
until uo.SkillVal('Tracking') == 1000
UO.DeleteJournal()
repeat
UO.UseSkill('Detect Hidden')
wait(forskill)
if uo.InJournal(waiting) then
forskill = forskill + 500
end if
wait(forskill)
eating()
until uo.SkillVal('Detect Hidden') == 1000
repeat
UO.UseSkill('Detect Hidden')
wait(forskill)
if uo.InJournal(waiting) then
forskill = forskill + 500
end if
wait(forskill)
eating()
until uo.SkillVal('Detect Hidden') == 1000
repeat
UO.UseSkill('Hiding')
wait(forskill)
if uo.InJournal(waiting) then
forskill = forskill + 500
end if
wait(forskill)
eating()
until uo.SkillVal('Hiding') == 1000
UO.DeleteJournal()
repeat
UO.UseSkill('Stealth')
wait(forskill)
if uo.InJournal(waiting) then
forskill = forskill + 500
end if
wait(forskill)
eating()
until uo.SkillVal('Stealth') == 1000
end sub
sub eating()
var w = 750
var food='0x09D1'
var i
if uo.InJournal('You are hungry') then
for i = 0 to 10
uo.findtype('food',-1,'backpack')
uo.UseObject('food')
wait(w)
i = i + 1
next
endif
uo.DeleteJournal()
end sub
sub CheckLag()
if uo.injournal("World is saving now...") then
repeat
wait(50)
until uo.injournal("World save")
end if
uo.Click('backpack')
repeat
wait(50)
until uo.InJournal("backpack")
end sub
Ну чтож, опубликовано. Жду критиков если удостоин ))
Posted: 2006-03-09 00:37:35
by Edred
Обрати внимание, у тебя получился длинющий скрипт с кучей повторений однотипных блоков. Гораздо стройней и логичней будет если ты уберешь все эти блоки и заменишь их просто вызовами подфункции, в которую параметрами будешь передавать то, что является отличием этих блоков друг от друга. Смотри, вот один из твоих блоков:
Code: Select all
repeat
UO.UseSkill('Detect Hidden')
wait(forskill)
if uo.InJournal(waiting) then
forskill = forskill + 500
end if
wait(forskill)
eating()
until uo.SkillVal('Detect Hidden') == 1000
Вбей в начало скрипта массив названий скиллов, типа:
Code: Select all
DIM Skills[10]
Skill[0] = 'Detect Hidden'
...
Вбей в начало определение переменных:
Далее, все эти блоки выкинь, а напиши маленький цикл for:
Code: Select all
for i=0 To 9
TmpStr = Skill[i]
UpOneSkill( TmpStr, forskill, waiting )
next
Ну и добавь в конец скрипта эту функцию:
Code: Select all
Sub UpOneSkill( s1, i1, s2 )
repeat
UO.UseSkill( s1 )
wait( i1 )
if uo.InJournal( s2 ) then
i1 = i1 + 500
end if
wait( i1 )
eating()
until uo.SkillVal( s1 ) == 1000
endsub
ЗЫ: Я просто переписал кусок твоего скрипта, не вдумываясь в логику самого скрипта. Хотя сразу вижу что ты не чистишь журнал перед использованием скилла, соответственно, проверка сообщения может легко ловить предыдущее сообщение, кроме того смущает меня это самое увеличение пауз, что-то тут нелогично. Сам посчитай, вот он у тебя первый раз подождал 2000 мс, потом попытался использовать скилл, снова подождал 2000 мс, потом определил что было сообщение о необходимости ждать (но зачем мы ждали 2 сек прежде чем это узнать?), далее переменная увеличилась на 500 мс, и мы тутже снова ждем 2500 мс. Переменная не обнуляется, поэтому в следующем исполнении цикла мы уже сразу ждем 2500 мс... Как ты думаешь, сколько у тебя будет ждать скрипт после 1000 циклов? Или 1000 ловли сообщений waiting? (1000*500 + 2000 = 8,3 мин). А после 10000 попыток?
Posted: 2006-03-09 00:43:40
by Edred
Я уж не говорю о том, что просто не знаю как у вас на шарде качаются все эти скиллы. У нас Детект хайда качается на расхайдивании другого чара - если ты просто запустишь такой скрипт у нас на шарде - будешь ждать прокачки год - вероятность того, что кто-то будет рядом хайдиться очень мала. Поэтому скрипт на прокачку этого скилла пишется на двух чаров - один хайдится, другой расхайдивает. Стелс качается в хождении, соответственно скрипт должен перемещать чара. И т.д.
Posted: 2006-03-09 07:08:53
by Scripts Writer
ЖжЖжЖёстко. но на мой век скрипта хватит, кому уже нуно будет, тот исправит

))
правда перед одним скилом и другим forskill надо сводить к 1500 . а делит журнала у меня в чек лаге находится(или в еде)
Posted: 2006-03-09 17:12:53
by Scripts Writer
в процессе 4 ый урок. к вечеру надеюсь закончить :-\