Некоторые мои скрипты (кладу для соседнего раздела)

Anything and all.

Moderators: Murderator+, Murderator

Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Некоторые мои скрипты (кладу для соседнего раздела)

Post by Edred »

Code: Select all

#####################################################################
; Training of Mining, ver 1.03, (c) Edred
sub Smelt()
VAR Ruda1 = '0x19B9'            ; Тип руды
VAR Ruda2 = '0x19B8'            ; Тип руды - 3 шт.
VAR Ruda3 = '0x19BA'            ; Тип руды - 2 шт.
VAR Ruda4 = '0x19B7'            ; Тип руды - 1 шт.
VAR Ing1 = '0x1BEF'               ; Тип ингов металлов
VAR Ing2 = '0x1BF2'               ; Тип ингов строймата
VAR MaxVes = 500               ; Максимальный вес пака
repeat   
   UO.Findtype( Ruda1, -1, 1 )      ; Ищем руду на земле
   If UO.Findcount() == 0 Then
      UO.Findtype( Ruda2, -1, 1 )
      If UO.Findcount() == 0 Then
         UO.Findtype( Ruda3, -1, 1 )
         If UO.Findcount() == 0 Then
            UO.Findtype( Ruda4, -1, 1 )
            If UO.Findcount() == 0 Then
               UO.Print( "No more ore for smelt..." )
               Return
            Endif
         Endif
      Endif
   Endif
   UO.Exec( "moveitem finditem 1" )   ; Тащим 1 в пак
   Wait( 1000 )
   UO.Useobject( 'finditem' )      ; переплавляем
   Wait( 1000 )
   If UO.Weight > MaxVes Then
      ; Максимальный вес пака превышен - разгружаемся
      UO.Findtype( Ing1, -1, -1 )
      If UO.Findcount() > 0 Then
         UO.Drophere( 'finditem' )
         Wait( 1000 )
      Endif
      UO.Findtype( Ing2, -1, -1 )
      If UO.Findcount() > 0 Then
         UO.Drophere( 'finditem' )
         Wait( 1000 )
      Endif
   Endif
until NOT Uo.CountGround( Ruda1 ) AND NOT UO.CountGround( Ruda2 ) AND NOT UO.CountGround( Ruda3 ) AND NOT UO.CountGround( Ruda4 )
UO.Print( "No more ore for smelt..." )
endsub


Code: Select all

#####################################################################
; Teiloring. v.1.03b (c) Edred
;
sub teiloring()
   VAR Sunduk1 = '0x4017439B'       ; Сериал сундука с пустыми мешками
   VAR Sunduk2 = '0x4000F46C'       ; Сериал пустого сундука
   VAR Meshok = '0x0E76'          ; Тип мешка
   VAR Shkur = '0x1067'          ; Тип шкур
   VAR Vosk = '0x1423'          ; Тип воска
   VAR Kit = '0x0F9D'          ; Тип инструмента тейлора
   VAR Map = '0x14EB'          ; Тип карты
   VAR Kolvo = 200          ; Брать шкур и воска
   VAR MeshSer, j, ShkurSer, k
   VAR Med = '0x09EC'         ; Тип меда
   While TRUE
      UO.FindType( Shkur, -1, 1 )    ; Ищем шкуры на полу
      If UO.FindCount() == 0 Then
         UO.Print("Leathers not found, script terminated")
         return
      Endif
      UO.Grab( Str( Kolvo ), 'finditem' )    ; Кладем логи в пак
      wait( 2000 )
      UO.FindType( Vosk, -1, 1 )       ; Ищем и берем воск
      If UO.FindCount() == 0 Then
         UO.Print("Beeswaxs not found, script terminated")
         return
      Endif
      UO.Grab( Str( Kolvo ), 'finditem' )
      wait( 2000 )
      UO.FindType( Meshok, -1, Sunduk1 )    ; Ищем мешок в сундуке 1
      MeshSer = UO.GetSerial( 'finditem' )
      UO.Grab( '1', 'finditem' )       ; Кладем его в бэкпак
      wait( 2000 )
      UO.MoveItem( MeshSer, 0, Sunduk2 )
      wait( 2000 )
      While UO.Count( Shkur ) > 1
         ; Пока в паке есть шкуры
         UO.Print('Ostalos ' + Str( UO.Count( Shkur ) ) + ' shkur' )
         UO.FindType( Shkur, -1, 'backpack' )
         ShkurSer = UO.GetSerial( 'finditem' )
         UO.CancelMenu()
         UO.DeleteJournal()
         UO.WaitMenu ("Leather", "Blank's", "Blank's", "blank map" )
         UO.WaitTargetObject( ShkurSer )
         UO.UseType( Kit )
         k = 0
         while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 )
            k = k + 1
            wait(500)
         wend
         ; Wait( 14000 )
         ; Скрафтили карту
         ; Сразу переложим ее в мешок
         if UO.Count( Map ) > 0 then
            UO.FindType( Map, -1, 'backpack' )
            UO.MoveItem( 'finditem', 0, MeshSer )
            wait( 2000 )
            UO.Print( 'Karta perelozhena' )
         end if
      Wend
   Wend
end sub


Code: Select all

#####################################################################
; Tinker. v.1.00b (c) Edred
;
; Чар берет из сундука инготы, крафтит из них бутылки
; и складывает эти бутылки в этот же сундук.
; Если инги закончились - выход.
;
sub tinker()
   VAR Sunduk = '0x4042B1A1'       ; Сериал сундука
   VAR Ingi = '0x1BEF'          ; Тип ингов
   VAR Instrum = '0x1EBC'          ; Тип инструмента тинкера
   VAR Bottle = '0x0F0E'          ; Тип бутылки
   VAR Kolvo = 200          ; Брать ингов
   VAR k = 0
   While TRUE
      UO.FindType( Ingi, -1, Sunduk )   ; Ищем инги в сундуке
      If UO.FindCount() == 0 Then
         UO.Print("Iron Ingots not found, script terminated")
         return
      Endif
      UO.Grab( Str( Kolvo ), 'finditem' )
      wait( 2000 )
      While UO.Count( Ingi ) > 0
         ; Пока в паке есть инги
         UO.Print('Ostalos ' + Str( UO.Count( Ingi ) ) + ' ingots' )
         UO.DeleteJournal()
         UO.CancelMenu()
         UO.WaitMenu ('Tinkering', 'Tools', 'Tools', 'empty bottle' )
         UO.UseType( Instrum )
         k = 0
         while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 )
            k = k + 1
            wait(500)
         wend
         if UO.Count( Bottle ) > 0 then
            UO.FindType( Bottle, -1, -1 )
            UO.MoveItem( 'finditem', 0, Sunduk )
            wait( 1000 )
            UO.Print( 'Bottle moved' )
         end if
      Wend
   Wend
end sub


Code: Select all

#####################################################################
; Carpentry. v.1.12b (c) Edred
;
; Чар берет из сундука 1 пустой мешок, кладет этот мешок в сундук 2,
; берет с пола логи, крафтит из них удочки и складывает эти удочки
; в этот мешок в сундуке 2. Если логи на полу или пустые мешки
; кончились - выход
;
sub carpentry()
   VAR Sunduk1 = '0x4017439B'       ; Сериал сундука с пустыми мешками
   VAR Sunduk2 = '0x4000F46C'       ; Сериал пустого сундука
   VAR Meshok = '0x0E76'          ; Тип мешка
   VAR Logi = '0x1BDD'          ; Тип логов
   VAR Rubanok = '0x1031'          ; Тип инструмента карпентера
   VAR Udochka = '0xDBF'          ; Тип удочки
   VAR Kolvo = 460          ; Брать логов (2 лога = 1 удочка)
   VAR MeshSer, j, k
   While TRUE
      UO.FindType( Logi, -1, 1 )       ; Ищем логи на полу
      UO.Grab( Str( Kolvo ), 'finditem' )    ; Кладем логи в пак
      wait( 2000 )
      If UO.FindCount() == 0 Then
         UO.Print("Logs not found, script terminated")
         return
      Endif
      UO.FindType( Meshok, -1, Sunduk1 )       ; Ищем мешок в сундуке 1
      MeshSer = UO.GetSerial( 'finditem' )
      UO.Grab( '1', 'finditem' )          ; Кладем его в бэкпак
      wait( 2000 )
      UO.MoveItem( MeshSer, 0, Sunduk2 )
      wait( 2000 )
      While UO.Count( Logi ) > 0
         ; Пока в паке есть логи
         UO.Print('Ostalos ' + Str( UO.Count( Logi ) ) + ' logov' )
         UO.DeleteJournal()
         UO.CancelMenu()
         UO.WaitMenu ('Carpentry', 'Weapons & Tools', 'Weapons & Tools', 'fishing' )
         UO.UseType( Rubanok )
         k = 0
         while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 )
            k = k + 1
            wait(500)
         wend
         ; Wait( 14000 )
         ; Скрафтили удочку
         ; Сразу переложим ее в мешок
         if UO.Count( Udochka ) > 0 then
            UO.FindType( Udochka, -1, 'backpack' )
            UO.MoveItem( 'finditem', 0, MeshSer )
            wait( 2000 )
            UO.Print( 'Udochka perelozhena' )
         end if
      Wend
   Wend
end sub
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

отправил запрос на дооформление и допись описи
Lord Ruslan Nightmare
Expert!
Posts: 359
Joined: 2004-04-25 11:11:07
Contact:

Post by Lord Ruslan Nightmare »

В скрипте на смелт есть пара маленьких недочетов
1) на сфере извествен баг - при большом весе кучи из неё не получается взять 1 предмет (2 - легко, но 1 - сервер не позволяет )
2) на некоторых шардах, если скилл настолько маленький, что много руды сгорает, то скилл не будет расти, т.к. 1 единица руды, при очень низком скилле, будет сгорать всегда (а на физзлах скилл опять же может не расти)
3) на некоторых шардах инготы имеют несколько типов и различаются по цветам (например, на моём - все доп. руды имеют тип как у айрона и уникальный цвет, а коппер и голд имеют цвет ноль, но зато обладают уникальными типами)
4) на некоторых шардах нельзя плавить определенный вид руды, если у тебя слишком мало скилла для неё. Я что-то не увидел в скрипте никаких if uo.skillval
5) опасно кидаться под ноги. Например, на нашем нарде на 1 тайле не может лежать больше 32 айтемов.
6) также на некоторых шардах при кидании под ноги вещи кладутся друг на друга (даже если они одного типа) и получается такой столбик из инготов. Я уже не помню, что с ним становится, когда он перерастает определенный предел - но лучше не искушать судьбу.
7) wait(1000) - это универсально, но не актуально. Лучше сделать удостоверение переноса через uo.containerof() с защитой от фастлута и таймаутом.
8) На некоторых шардах нужно после использования руды тыкнуть появившемся таргетом на фордж.

В общем, скрипт явно шардозависимый...Да оно и понятно - слишком частная вещь, в отличие от, например, майнинга или ламберджакинга.
Без труда не выловишь и рыбку из пруда,
А без пруда не выловишь её и с трудом...
Bloodmoon
Posts: 128
Joined: 2004-06-23 08:55:32

Post by Bloodmoon »

У меня вопросик:"А скрипт на карпентри-это на какие вещи?т.е. какие вещи он делает?"
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Lord Ruslan Nightmare wrote:В скрипте на смелт есть пара маленьких недочетов


Это не недочеты, а естественная шардозависимость :) Ты же сам дальше об этом написал... Все мои скрипты написаны для шарда Цитадель. Я играю только на нем.

1) на сфере извествен баг - при большом весе кучи из неё не получается взять 1 предмет (2 - легко, но 1 - сервер не позволяет )


На Ците все скиллы переписаны, такой глюк не наблюдается.

2) на некоторых шардах, если скилл настолько маленький, что много руды сгорает, то скилл не будет расти, т.к. 1 единица руды, при очень низком скилле, будет сгорать всегда (а на физзлах скилл опять же может не расти)


На физлах тоже не растет. На какой руде качать - у игрока подразумеваются в голове мозги, а не опилки.

3) на некоторых шардах инготы имеют несколько типов и различаются по цветам (например, на моём - все доп. руды имеют тип как у айрона и уникальный цвет, а коппер и голд имеют цвет ноль, но зато обладают уникальными типами)


На Ците все руды имеют один тип, разные цвета. Включая строймат.

4) на некоторых шардах нельзя плавить определенный вид руды, если у тебя слишком мало скилла для неё. Я что-то не увидел в скрипте никаких if uo.skillval


Смотри комментарий насчет опилок

5) опасно кидаться под ноги. Например, на нашем нарде на 1 тайле не может лежать больше 32 айтемов.


На Ците около 20 (счас точно не помню) видов руды, качаются, естественно, на 7-8 младших. При сбрасывании ингов под ноги они прекрасно суммируются с уже лежащими. Ограничение на тайл тоже есть, но оно никогда не достигается на этом скрипте.

6) также на некоторых шардах при кидании под ноги вещи кладутся друг на друга (даже если они одного типа) и получается такой столбик из инготов. Я уже не помню, что с ним становится, когда он перерастает определенный предел - но лучше не искушать судьбу.
7) wait(1000) - это универсально, но не актуально. Лучше сделать удостоверение переноса через uo.containerof() с защитой от фастлута и таймаутом.


Первый раз слышу про такое :shock:

8) На некоторых шардах нужно после использования руды тыкнуть появившемся таргетом на фордж.


У нас - нет. Кирка в руках и стоим рядом с форжой.

В общем, скрипт явно шардозависимый...Да оно и понятно - слишком частная вещь, в отличие от, например, майнинга или ламберджакинга.


Естественно. И понятное дело - каждый под свой шард такие скрипты правит сам. У меня и в мыслях не было написать шардонезависимый скрипт.
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

конечно идеальный скрипт шардонезависим, не требует повторной настройки и работает в любой ситуации.

что же на деле это означает? автор должен был поиграть на куче шардов, как минимум на сфере, поле, рануо; должен обладать знанием всех основных приёмов скриптописания; вставить дохера проверок на ситуации встречающихся на разных шардах (сейв ворлды, одноитемные перемещения, атаки мюрдасов, приходы гмов и бог весть что ещё).

дожитаться когда люди начнут постить такие скрипты я не собираюсь, и сам пишу такие крайне редко.
есть ведь три вида людей :)
люди с мозгами - он либо напишет сам, либо настроит себе готовый
люди с пустыми мозгами - попыхтят над хелпом, посмотрят предоставленые несколько скриптов и мозги свои наконец заполнят :)
люди с опилками - пусть поят пивом тех у кого есть мозги, и получат готовый скрипт
Macks
Site Admin
Posts: 11
Joined: 2004-04-03 17:06:33

Post by Macks »

Lord Ruslan Nightmare wrote:В скрипте на смелт есть пара маленьких недочетов

В общем, скрипт явно шардозависимый...Да оно и понятно - слишком частная вещь, в отличие от, например, майнинга или ламберджакинга.


А Вы бы не могли откоректировать этот скрипт с учетом Ваших замечаний?
Macks
Site Admin
Posts: 11
Joined: 2004-04-03 17:06:33

Post by Macks »

Edred wrote:
5) опасно кидаться под ноги. Например, на нашем нарде на 1 тайле не может лежать больше 32 айтемов.


На Ците около 20 (счас точно не помню) видов руды, качаются, естественно, на 7-8 младших. При сбрасывании ингов под ноги они прекрасно суммируются с уже лежащими. Ограничение на тайл тоже есть, но оно никогда не достигается на этом скрипте.


Может я не прав, но не проще ли кидать инготы в контейнер к другим инготам?
Lord Ruslan Nightmare
Expert!
Posts: 359
Joined: 2004-04-25 11:11:07
Contact:

Post by Lord Ruslan Nightmare »

Чужие скрипты не правлю (почти), только свои пишу...Просто я как раз сейчас прокачиваю БСа - поэтому тема насчет автопереплавки руды мне столь близка.
Без труда не выловишь и рыбку из пруда,
А без пруда не выловишь её и с трудом...
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Macks wrote:
Edred wrote:
5) опасно кидаться под ноги. Например, на нашем нарде на 1 тайле не может лежать больше 32 айтемов.


На Ците около 20 (счас точно не помню) видов руды, качаются, естественно, на 7-8 младших. При сбрасывании ингов под ноги они прекрасно суммируются с уже лежащими. Ограничение на тайл тоже есть, но оно никогда не достигается на этом скрипте.


Может я не прав, но не проще ли кидать инготы в контейнер к другим инготам?


Я, естественно, писал этот скрипт под себя. Точнее, под прокачку мининга у мультичара. Меня вполне устраивал вариант сброса под ноги. Контейнер - его еще надо было бы притащить к форже, прилочить, записать сериал, а когда дать этот скрипт кому-то еще - не забыть объяснить про замену сериала - зачем? Простота - залог успеха (естественно, если не в ущерб качеству). В моем скрипте никаких настроек не требуется (за исключением ситуаций с переделанными типами руд на шардах, ну и прочей экзотикой).

И еще, повторяю: если вы положили рядом с чаром для прокачки кучку вышки, а мининга у чара кот наплакал - не пишите мне жалоб, это - к доктору.
BETEPAH
Expert!
Posts: 838
Joined: 2004-05-31 09:31:51
Contact:

Post by BETEPAH »

ДЛЯ Edred !!!
Посмотри как я сделал.....попробуй переделать ...скрипт просто потребует меньше настроек и ньюбам будет легче (не надо будет вписывать свои айдишники)
http://yoko.netroof.net/forum/viewtopic.php?t=647

Просто множество предметов можно просто указать перед началом скрипта и не надо парится с ,info
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

BETEPAH wrote:ДЛЯ Edred !!!
Посмотри как я сделал.....попробуй переделать ...


Ты внимательно мои посты читал? ПИСАЛОСЬ ПОД СЕБЯ. Я не пишу скриптов на заказ. Я всего лишь гарантирую, что при соблюдении определенных условий этот скрипт работает. Если кого-то интересует переделать мой скрипт - флаг в руки.
BETEPAH
Expert!
Posts: 838
Joined: 2004-05-31 09:31:51
Contact:

Post by BETEPAH »

Мдя......я не глухой и не слепой ,а вот ты видимо да .....прочти сам мой топ повнимательнее Я просто предложил переделать ("и ньюбам будет легче")
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

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

Post by Edred »

BETEPAH wrote:Мдя......я не глухой и не слепой ,а вот ты видимо да .....прочти сам мой топ повнимательнее Я просто предложил переделать ("и ньюбам будет легче")


Дык про это же я и пишу... Ньюбам будет легче. Мне - сложнее. Потому как, например, тинкер я себе еще не докачал, счас когда хочу покачать - подхожу к сундуку где айрон лежит, даю run на тинкер и в трей клиента, а если переделать на прицелы - каждый раз придется по одним и тем же сундукам, айрону, тинкертулзу, бутылкам щелкать. Зачем? Гораздо проще, мне кажется, один раз выяснить сериалы и типы (если они на шарде не такие как везде) и занести в скрипт, чем каждый раз выцеливать. Это же скрипты на прокачку, причем на прокачку крафтов. Не знаю как у вас на шарде - а Цитадель славится своей сверхдолгой прокачкой...
BETEPAH
Expert!
Posts: 838
Joined: 2004-05-31 09:31:51
Contact:

Post by BETEPAH »

Прошу прощения за нездерженость.
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

Edred wrote:
BETEPAH wrote:Мдя......я не глухой и не слепой ,а вот ты видимо да .....прочти сам мой топ повнимательнее Я просто предложил переделать ("и ньюбам будет легче")


Дык про это же я и пишу... Ньюбам будет легче. Мне - сложнее. Потому как, например, тинкер я себе еще не докачал, счас когда хочу покачать - подхожу к сундуку где айрон лежит, даю run на тинкер и в трей клиента, а если переделать на прицелы - каждый раз придется по одним и тем же сундукам, айрону, тинкертулзу, бутылкам щелкать. Зачем? Гораздо проще, мне кажется, один раз выяснить сериалы и типы (если они на шарде не такие как везде) и занести в скрипт, чем каждый раз выцеливать. Это же скрипты на прокачку, причем на прокачку крафтов. Не знаю как у вас на шарде - а Цитадель славится своей сверхдолгой прокачкой...


Напоминаю, что главной особенностью выкладываемых скриптов должно быть удобство первого запуска скрипта, чтобы человек увидел как он работает. Если человек ещё и чтото понимает он сам зафиксирует сериалы.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Прокачка пойзона (травим мед)

Заявку счас скину Йоко в личные.

Code: Select all

sub poison()
; v. 1.02 (c) Edred
; Положите рядом с чаром на пол побольше меду и lesser poison,
; поставьте рядом сундук, занесите его сериал в переменную
; Sunduk (туда будут сбрасываться пустые бутылки и отравленный мед)
; Если что-то не берет - значит положили далеко от чара,
; поправьте цифру в команде set finddistance
;
   VAR Sunduk = '0x404331B7'
   VAR Med = '0x09EC'
   VAR LesPois = '0x0F0A'
   VAR EmpBot = '0x0F0E'
   VAR MedSer, k
   UO.Exec('set finddistance 2')
   While TRUE
      UO.FindType( Med, -1, 1 )
      If UO.FindCount() == 0 Then
         UO.Print("Jars not found, script terminated")
         return
      Endif
      UO.Grab( '1', 'finditem' )
      wait( 2000 )
      UO.FindType( LesPois, -1, 1 )
      If UO.FindCount() == 0 Then
         UO.Print("Bottle of Poison not found, script terminated")
         return
      Endif
      UO.Grab( '1', 'finditem' )
      wait( 2000 )
      UO.DeleteJournal()
      UO.WaitTargetType( Med )
      UO.UseObject( 'finditem' )
      k = 0
      while NOT UO.InJournal('You apply lesser poison') AND NOT UO.InJournal('You fail to apply lesser poison') AND ( k < 30 )
         k = k + 1
         wait(500)
      wend
      UO.Print( 'meda v pake ' + str( UO.Count( Med ) ) )
      if UO.Count( Med ) > 0 then
         UO.FindType( Med, -1, 'backpack' )
         UO.MoveItem( 'finditem', 0, Sunduk )
         wait( 2000 )
         UO.Print( 'Jar dropped' )
      end if
      if UO.Count( EmpBot ) > 0 then
         UO.FindType( EmpBot, -1, 'backpack' )
         UO.MoveItem( 'finditem', 0, Sunduk )
         wait( 2000 )
         UO.Print( 'Empty bottle dropped' )
      end if
   Wend
end sub
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

значит так, я терпел но теперь но похоже пора требовать - каждый скрипт для раздела Scritps! в отдельный топик! и адрес отдельного топика указывать в заявке. Смысл ссылки в том чтобы пользователь задавал вопросы по скрипту в отведённом ему топике а не в создании винигрета!
AvantriX
Posts: 35
Joined: 2004-04-25 23:23:27

Post by AvantriX »

хмм....юзал карпентри берет мешок крафтит заполняет мешок, А потом уже не берет мешок и не перекладывает.....во второй сундук....баг или так и должно быть?
Post Reply