Page 1 of 1
Вар пак.
Posted: 2012-12-18 05:46:59
by Incorrect User
Не нашел подобного, нужно чтобы скрипт:
1. Просил указать сумку в бекпаке которая будет являться варпаком.
2. Проверял наличие/количество в указанной сумке нужных ресурсов по порядку, и при необходимости если количество превышает нужное убирал лишнее в ящик с ресурсами а того что нехватает или отсутсвует добирал из ящика.
3. По возможности чтобы он раскладывал все по нужным местам мешка.
Re: Вар пак.
Posted: 2012-12-18 06:29:27
by Incorrect User
Наверное плохая идея? Я не могу понять как будет определяться количество вещей в контейнере на земле(точнее стоит ящик и в нем мешок), и как определять количество вещей только в сумке которая в паке а не в бекпаке включительно. Если с этим ничего не выйдет можно тогда сделать просто предварительно накидав на пол ресов чтобы соберал сколько нужно в мешок, например 10 паков собрать и когда нужно будет пополнить вар пак просто брать новый а из старого все выгружать в общую кучу.
Re: Вар пак.
Posted: 2012-12-18 07:06:33
by Mirage
Ищем тип реагента кровавый мох
если нашли смотрим контейнер в котором он лежит. Если контейнер не равен указанной сумке игнорим.
в противном случае считаем количество.
Двигаем реагент и получаем краш
Технически сделать возможно. Практически - геморойно.
Re: Вар пак.
Posted: 2012-12-18 07:12:27
by Incorrect User
А краш от чего?
Re: Вар пак.
Posted: 2012-12-18 11:07:46
by ZeroDX
А зачем искать в паке? Если мешок указывается прицелом, то в можно только в нём и ковыряться.
Кстати насчёт бага. если сделать игнор резет, а потом двигать - краш?
Re: Вар пак.
Posted: 2012-12-18 12:10:50
by Nmy
Можно переделать
этоОбычно в пвп делал так - добирал ресы, делал релог. если не креш от мовеитем то долго его ждать не придётся
Re: Вар пак.
Posted: 2012-12-18 13:01:36
by Mirage
хм...
Хороший вопрос.
Смотри 2 скрипта:
В паке сундук который мышкой перемещается.
Code: Select all
sub main()
VAR object = '0x40C9E2D2'
uo.ignore(object) ; тут игнорируем объект по ID
uo.findtype('0x09AA','-1','backpack')
if uo.findcount() then
uo.moveitem('finditem','0','backpack')
else
uo.print('Нет предмета')
endif
end sub
sub reset()
UO.IgnoreReset()
end sub
При запуске main - пишет что предмета нет и не двигает. НО мышкой перемещается сундучек и клиент не падает. Запускаем reset() и коментируем строку с игнором - main() двигает сундук по паку.
НО!!!
Code: Select all
sub main()
VAR object = '0x40C9E2D2'
uo.ignore(object)
UO.IgnoreReset()
uo.findtype('0x09AA','-1','backpack')
if uo.findcount() then
uo.moveitem('finditem','0','backpack')
else
uo.print('Нет предмета')
endif
end sub
Вот такая конструкция 100% смертельна для клиента. Сундучок не двигается. При перемещении мышкой 100% падение.
Ушел учить матчасть...
PS у меня добор был вот так организован (я не пвп игрок я добирал только реги)
Code: Select all
sub dobor_regs()
var n, x, y = 50, z, timemove
var BEKBag = '0x40FAAB3F'
var REGBag = '0x40FA9EA6'
Dim r[8]
r[1] = '0x0F88'
r[2] = '0x0F86'
r[3] = '0x0F8D'
r[4] = '0x0F8C'
r[5] = '0x0F84'
r[6] = '0x0F85'
r[7] = '0x0F7B'
r[8] = '0x0F7A'
uo.useobject(BEKBag)
wait(300)
uo.useobject(REGBag)
wait(300)
For n = 1 To 8
UO.FindType( r[n] , -1 ,'my')
x = UO.GetQuantity('finditem')
if x>y then
z = x - y
UO.FindType( r[n] , -1 ,'my')
timemove=UO.Timer()
while UO.ContainerOf( UO.GetSerial('finditem') )==BEKBag && timemove+20>UO.Timer()
UO.MoveItem( 'finditem', str(z) , REGBag)
wait(300)
wend
endif
if x<y then
z = y - x
UO.FindType( r[n] , -1 ,REGBag)
timemove=UO.Timer()
while UO.ContainerOf( UO.GetSerial('finditem') )==REGBag && timemove+20>UO.Timer()
UO.MoveItem( 'finditem', str(z) , BEKBag)
wait(300)
wend
endif
next
end sub
Re: Вар пак.
Posted: 2012-12-18 14:24:21
by ZeroDX
то есть можно смело забить на баг, если сразу резетить? игнорить надо... как ещё посчитать 2 стака однотипных предметов в контейнере на земле?
Re: Вар пак.
Posted: 2012-12-18 14:36:44
by Juicy Fruit
Через uo.forget(obj) и чтоб восстановить предметы в памяти на земле – uo.resend(), в контейнере – юзануть контейнер.
Re: Вар пак.
Posted: 2012-12-18 15:25:41
by ZeroDX
Проблемм никаких не было я их придумал. скрипт рабочий
Code: Select all
sub warpack()
var i, type, need_count, move_count, from, where, string
dim array[20]
array[1] = "0x0F7A 025" ;bp
array[2] = "0x0F7B 025" ;bm
array[3] = "0x0F84 055" ;ga
array[4] = "0x0F85 025" ;gs
array[5] = "0x0F86 055" ;mr
array[6] = "0x0F88 045" ;ns
array[7] = "0x0F8C 055" ;ss
array[8] = "0x0F8D 025" ;sa
array[9] = "0x1F49 010" ;scroll greater heal
array[10] = "0x1F44 010" ;scroll wall of stone
array[11] = "0x1F42 010" ;scroll teleport
array[12] = "0x1F50 010" ;scroll reflection
array[13] = "0x1F4A 010" ;scroll lighting
array[14] = "0x1F52 010" ;scroll paralyze
array[15] = "0x1F5F 010" ;scroll flame strike
array[16] = "0x1F68 010" ;scroll summon air elemental
array[17] = "0x0F09 005" ;total mana refresh
array[18] = "0x0F08 005" ;invisibility
array[19] = "0x0F0C 005" ;greater heal
array[20] = "0x0E21 150" ;bandages
if uo.targeting() then
uo.canceltarget()
end if
uo.addobject("war_pack")
uo.print("war pack")
while uo.targeting()
wait(100)
wend
uo.addobject("res_cont")
uo.print("resource container")
while uo.targeting()
wait(100)
wend
for i = 1 to 20
uo.textprint("iteration " + str(i))
string = array[i]
type = left(string, 6)
need_count = val(right(string, 3))
repeat
move_count = need_count - getcount(type, -1, "war_pack")
if move_count <> 0 then
if move_count > 0 then
from = uo.getserial("res_cont")
where = uo.getserial("war_pack")
end if
if move_count < 0 then
from = uo.getserial("war_pack")
where = uo.getserial("res_cont")
end if
uo.findtype(type, -1, from)
if move_count > 0 and not uo.findcount() then
uo.print("zhopa31400! " + str(i))
move_count = 0
else
uo.moveitem("finditem", abs(move_count), where)
wait(1000)
end if
end if
until move_count == 0
next
uo.print("Done!")
end sub
sub abs(val)
if val < 0 then
return -val
else
return val
end if
end sub
sub getcount(type, color, container)
var count = 0
repeat
uo.findtype(type, color, container)
if uo.findcount() then
count = count + uo.getquantity("finditem")
uo.ignore("finditem")
end if
until not uo.findcount()
uo.ignorereset()
return count
end sub
Re: Вар пак.
Posted: 2012-12-18 15:55:19
by Nmy
Вот такая конструкция 100% смертельна для клиента. Сундучок не двигается. При перемещении мышкой 100% падение.
Ушел учить матчасть...
что то, где то не успевает.
между строк надо прописать wait(200) и проверить
Re: Вар пак.
Posted: 2012-12-18 17:20:58
by Mirage
с секундой тестил - борода.
Обновление.
На рабочем Core E6600 с 8 гегами памяти инжект с дефолтным клиентом 2.0.3 вылетает стабильно.
Дома core i7 с 8 гегами памяти и клиентом с пониженной нагрузкой работает без крашей вышеприведенный скрипт без пауз. Мистика и провокация. В общем чтобы не падало прикручивайте ядра и пилите клиент...