Косяк автолута

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Role
Posts: 18
Joined: 2006-03-10 17:37:35

Косяк автолута

Post by Role »

Ну в общем я написал простенький автолут, чтобы ручками не таскать шмотьё, а он стабильно раз в пару часов берёт и глючит. Глюк - он начинает лутить свой бэкпэк (не знаю почему так происходить, но заканчивается это обычно плачевно). Это всё предыстория - собственно вопрос - как узнать serial бэкпэка, и меняется ли он при смерти/рессуре?

PS - И ещё вопросик - serial bankbox'а тоже мне бы не помешал, уже для других целей =)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Re: Косяк автолута

Post by Edred »

Role wrote:Ну в общем я написал простенький автолут, чтобы ручками не таскать шмотьё, а он стабильно раз в пару часов берёт и глючит. Глюк - он начинает лутить свой бэкпэк (не знаю почему так происходить, но заканчивается это обычно плачевно). Это всё предыстория - собственно вопрос - как узнать serial бэкпэка, и меняется ли он при смерти/рессуре?


1. Происходит это из-за лагов - надо использовать чеклаг и проверку последнего открытого контейнера.

1. В чем проблема узнать сериал бекпака? ,info и прицелом на него. Да и не нужно это, инжект и так знает что такое бекпак чара. Для этого есть системная переменная backpack.

3. Не меняется. Может быть изменяется (наверняка) при сбросе пака, но это и не важно.
Role
Posts: 18
Joined: 2006-03-10 17:37:35

Post by Role »

Чеклаг? Поподробней, пожалуйста. А для проверки контейнера я и спрашивал сериал. Спасибо. Ещё бы про банкбокс услышать (может для него тоже системная переменная есть?) =)

Upd. "variable undifened - backpack", говорит он мне.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

1. CheckLag() - ищи на форуме, функция, которую используют практически все.

2. UO.GetSerial( 'backpack' ) - системную переменную (предопределенный объект) надо всегда использовать в кавычках. Почитай урок 2 или 3, точно счас не помню. Уроки прилеплены в этом же разделе.

3. У банковского бокса тоже есть сериал, если ты еще об этом не догадался :wink: Чтобы его получить, придется использовать указатель на последний открытый контейнер (ну и тот же гетсериал, естественно).

4. Вообще-то тебе в Уроки и сюда: http://yoko.netroof.net/help/index.php?lang=rus
Role
Posts: 18
Joined: 2006-03-10 17:37:35

Post by Role »

1) поищу =)
2) Спасибо, это работает =)
3) Про банк тоже понял. Сойдёт =)
4) Уроки читал, за ссылку на фак тоже спасибо =)
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

если ты уже открывал банк то его можно выдернуть из лееров
Role
Posts: 18
Joined: 2006-03-10 17:37:35

Post by Role »

Собсно, проверки серийников не помогли, а на какой стадии может происходить лаг, ведущий к таким последствиям я даже не подозреваю (так что куда ентот чеклаг приткнуть - 0 догадок), вот собственно скрипт. Помогите люди добрые, подскажите, что не так =)

Code: Select all

sub autoloot_all()
var wheregood = '0x60B438AD' # прописать серийник сумки для хороших вещей, пока туда лутится только золото,
#потом уже наберу целый список того, что лутать в первую очередь.
var where = '0x60B13A10' # прописать серийник сумки для остального
var lastlootedcorpse = uo.getserial('lastcorpse')
var corpse = uo.getserial('lastcorpse')
var backpack = uo.getserial('backpack')
while uo.life>0
   corpse = uo.getserial('lastcorpse')
   if corpse==backpack then
      corpse=lastlootedcorpse
   endif
   if corpse<>lastlootedcorpse then
   wait(500)
      uo.moveitem(corpse+'.0x0eed',0,wheregood)
      wait(500)
      while uo.getserial(corpse+'.-1')<>'0x00000000'
         uo.moveitem(corpse+'.-1',0,where)
         wait(500)
      wend
      uo.print("Looted!")
      repeat
      cut(corpse) #этот кусок режет труп, с помощью моей ф-ии cut. Вряд ли дело в ней, роэтому класть не буду
      until uo.injournal("Success")
      lastlootedcorpse=corpse
   endif
   wait(200)
wend
end sub
Kolsz
Posts: 3
Joined: 2006-03-26 16:36:54
Contact:

Post by Kolsz »

Good topic! Very useful :):)
God bless America!
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Гмм, с банком Edred придумал какое-то извращение.

,info на любую вещь непосредственно в банке, там будет c=0xYYYYYYY, где Y - произвольные цифры, вот это и есть серийник банка.
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

Destruction wrote:Гмм, с банком Edred придумал какое-то извращение.

,info на любую вещь непосредственно в банке, там будет c=0xYYYYYYY, где Y - произвольные цифры, вот это и есть серийник банка.
влом проверять... поэтому вопрос...

и что он не меняется? :roll:
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Sfagnum wrote:
Destruction wrote:Гмм, с банком Edred придумал какое-то извращение.

,info на любую вещь непосредственно в банке, там будет c=0xYYYYYYY, где Y - произвольные цифры, вот это и есть серийник банка.
влом проверять... поэтому вопрос...

и что он не меняется? :roll:

Всегда гамал на сфере, там за игроком закрепляется контейнерчик, под названием банк :-)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Destruction wrote:Всегда гамал на сфере, там за игроком закрепляется контейнерчик, под названием банк :-)


И никаких гарантий, что админ сервака в какой-нибудь момент не запустит какую-нибудь утилиту чистки сериалов, после чего у твоего банка будет новый сериал. Гораздо надежнее в скрипт вставить команду bank и из указателя последнего открытого контейнера программно считать сериал. Так что это не извращение, а удобство. К тому же один скрипт может использоваться десятком чаров, что, каждый раз править сериал банка? Вот это как раз уже извращение.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Edred wrote:
Destruction wrote:Всегда гамал на сфере, там за игроком закрепляется контейнерчик, под названием банк :-)


И никаких гарантий, что админ сервака в какой-нибудь момент не запустит какую-нибудь утилиту чистки сериалов, после чего у твоего банка будет новый сериал. Гораздо надежнее в скрипт вставить команду bank и из указателя последнего открытого контейнера программно считать сериал. Так что это не извращение, а удобство. К тому же один скрипт может использоваться десятком чаров, что, каждый раз править сериал банка? Вот это как раз уже извращение.

Ну для нечитерных скриптов - твоё решение вполне нормуль :wink:
Post Reply