Прошу написать пару простеньких и полезных скриптов

Anything and all.

Moderators: Murderator+, Murderator

1a2a3a4a5a6a
Posts: 173
Joined: 2006-02-10 13:26:37

Прошу написать пару простеньких и полезных скриптов

Post by 1a2a3a4a5a6a »

1. Телепортация по стоуну на дуель арену.
2. Продажа всех мешков одного типа на Sell Stone.
Вот, собственно, и все. Думаю, что скрипты не сложные.

P.S. Если у кого есть учебники по написанию скриптов, то дайте линки, пожалуйста.
Заранее спасибо!
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Re: Прошу написать пару простеньких и полезных скриптов

Post by Kynep »

1a2a3a4a5a6a wrote:1. Телепортация по стоуну на дуель арену.
2. Продажа всех мешков одного типа на Sell Stone.
Вот, собственно, и все. Думаю, что скрипты не сложные.

P.S. Если у кого есть учебники по написанию скриптов, то дайте линки, пожалуйста.
Заранее спасибо!

Телепорт:

Code: Select all

sub teled()
UO.UseObject('ID Телестоуна')
wait(1500)
UO.LClick(0,0) #Тут поставь координаты кнопки на дуель арену
end sub
Продажа:

Code: Select all

sub prodam()
VAR k, i, meshok= тип мешка

UO.FindType(meshok)
k = UO.FindCount(meshok)
if k > 0 then
FOR i = 0 to k
UO.WaitTargetType('meshok')
wait(500)
UO.UseObject('ID Селл Стоуна')
wait(500)
UO.LClick(0,0) #Координаты кнопки подтверждения
wait(500)
next
endif
end sub
САМ НЕ ТЕСТИЛ!!!! ПИСАЛ НА РАБОТЕ!!!
Last edited by Kynep on 2006-03-31 17:54:53, edited 1 time in total.
1a2a3a4a5a6a
Posts: 173
Joined: 2006-02-10 13:26:37

Post by 1a2a3a4a5a6a »

Сейчас протестирую. И не надо писать красными большими буквами с большим кол-вом воскл. знаков. :D
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

1a2a3a4a5a6a wrote:Сейчас протестирую. И не надо писать красными большими буквами с большим кол-вом воскл. знаков. :D
Исправил строку:

Code: Select all

UO.WaitTargetType('meshok')
Кавычки забыл :(
*ушел домой, буду в ~21-00 по Москве*
1a2a3a4a5a6a
Posts: 173
Joined: 2006-02-10 13:26:37

Post by 1a2a3a4a5a6a »

Телепортация по стоуну работает.
А с продажей я долго мучался и только сейчас увидел, что ты сделал ошибку. Сейчас буду опять дерзать.
1a2a3a4a5a6a
Posts: 173
Joined: 2006-02-10 13:26:37

Post by 1a2a3a4a5a6a »

По скрипту на продажу:
Пишет, что нет такого предмента у меня в бекпапке.
И ты ввел переменную k для проверки кол-ва предметов. Но после того, как селлстоуном "продаешь" мешок он остается. Мне кажется, что это не верное решение. Но тебе лучше знать.
1a2a3a4a5a6a
Posts: 173
Joined: 2006-02-10 13:26:37

Post by 1a2a3a4a5a6a »

Cooper, куда пропал?
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

1a2a3a4a5a6a wrote:Cooper, куда пропал?
я тут. У меня инет упал, тока вошел ща потестю

Вот телепорт проверил, вроде работает:

Code: Select all

sub teled() 
UO.UseObject(0x400BC158') #ID Камня телепорта(в Брите)
wait(3000) 
UO.LClick(405,276) #Координаты клика
end sub 
Вот продажа, протестил, работает:

Code: Select all

sub prodam() 
VAR ser, k, i, meshok='0x0E76' #тип мешка

UO.FindType(meshok) 
k = UO.FindCount(meshok)
while k > 0
UO.FindType(meshok)
ser = UO.GetSerial('finditem')
UO.WaitTargetObject(ser) 
wait(1000) 
UO.UseObject('0x4023D402') 
wait(2000) 
UO.LClick(190,135) #Координаты клика
wait(3000)
UO.Drop(1,0,0,0,ser)
wait(1000)
UO.FindType(meshok)
wait(500)
k = UO.FindCount(meshok)
wend 
end sub 
Пустые мешки бросает
Last edited by Kynep on 2006-03-31 22:01:02, edited 2 times in total.
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

Все протестил, работает пользуй
1a2a3a4a5a6a
Posts: 173
Joined: 2006-02-10 13:26:37

Post by 1a2a3a4a5a6a »

Телепорт у мя и так работал, а на продажу я посмотрю. Только выкидывание мешков мне не надо было, уберу.
А вообще, огромное спасибо!
Кстати, сложно ли реализовать самую простую ходилку до координат x, y?
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

1a2a3a4a5a6a wrote:Телепорт у мя и так работал, а на продажу я посмотрю. Только выкидывание мешков мне не надо было, уберу.
А вообще, огромное спасибо!
Кстати, сложно ли реализовать самую простую ходилку до координат x, y?
Если не уберешь выкидывание, то скрипт заклинит, можно дописать подбор после продажи, вот ходилка:

(С) ВЕТЕРАН

Code: Select all

sub GotoXY(x,y) 
var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0 
for i=1 to 60 
myX=uo.getX(); 
myY=uo.getY(); 
if LastX==myX and LastY==myY then 
halt=halt+1 
else 
halt=0 
end if 
if halt>=10 then 
if uo.GetDir()==1 then 
for z=0 to 8 
uo.Press(40) 
next 
end if 
if uo.GetDir()==3 then 
for z=0 to 8 
uo.Press(37) 
next 
end if 
if uo.GetDir()==5 then 
for z=0 to 8 
uo.Press(38) 
next 
end if 
if uo.GetDir()==7 then 
for z=0 to 8 
uo.Press(39) 
next 
end if 
halt=15 
end if 
if Numb(x-myX)<=1 and Numb(y-myY)<=2 then 
return 1 
end if 
if x<=myX then 
if y<=myY then 
for z=0 to 3 
uo.Press(38) 
next 
else 
for z=0 to 3 
uo.Press(37) 
next 
end if 
else 
if y<=myY then 
for z=0 to 3 
uo.Press(39) 
next 
else 
for z=0 to 3 
uo.Press(40) 
next 
end if 
end if 
lastX=myX 
lastY=myY 
wait(200) 
next 
return 0 
end sub 

sub Numb(num) 
if num>=0 then 
return num 
else 
return num*(-1) 
end if 
end sub 
admir
Posts: 528
Joined: 2005-01-13 07:20:54

Post by admir »

меню из столба надежнее делать через uo.recall('ID','nomer')
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

admir wrote:меню из столба надежнее делать через uo.recall('ID','nomer')
Ну ка сделай красиво )) :P
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

Cooper wrote:Если не уберешь выкидывание, то скрипт заклинит, можно дописать подбор после продажи,
а просто игнорить мешки? :roll:
Cooper wrote:вот ходилка:

(С) ВЕТЕРАН
а он ходилки писал :shock:

ЗЫ admir прав.

да и прыжок по стоуну лучше через поиск по типу + uo.recall('finditem','nomer').
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

Sfagnum wrote:
Cooper wrote:Если не уберешь выкидывание, то скрипт заклинит, можно дописать подбор после продажи,
а просто игнорить мешки? :roll:
Cooper wrote:вот ходилка:

(С) ВЕТЕРАН
а он ходилки писал :shock:

ЗЫ admir прав.

да и прыжок по стоуну лучше через поиск по типу + uo.recall('finditem','nomer').
ХЗ, про игнор не подумал :( , а остальное в ЛС
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

Cooper wrote:ХЗ, про игнор не подумал :(
8)
Cooper wrote:а остальное в ЛС
кому? мне? неее мне не надо :)
SESTRA
Posts: 223
Joined: 2006-02-21 09:31:41
Contact:

Post by SESTRA »

А как узнавать ккардинаты клика ?)по сталбу )
например 421 321 как их узнать вот написаны ани в скрипте а откуда их взяли?)
А Я че Я не че !
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

SESTRA wrote:А как узнавать ккардинаты клика ?)по сталбу )
например 421 321 как их узнать вот написаны ани в скрипте а откуда их взяли?)
Открой встроенный редактор скриптов и посмотри на верхнюю строку...
1a2a3a4a5a6a
Posts: 173
Joined: 2006-02-10 13:26:37

Post by 1a2a3a4a5a6a »

SESTRA wrote:А как узнавать ккардинаты клика ?)по сталбу )
например 421 321 как их узнать вот написаны ани в скрипте а откуда их взяли?)
Uopilot, прога такая есть еще.
1a2a3a4a5a6a
Posts: 173
Joined: 2006-02-10 13:26:37

Post by 1a2a3a4a5a6a »

Cooper wrote: (С) ВЕТЕРАН

Code: Select all

sub GotoXY(x,y) 
var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0 
for i=1 to 60 
myX=uo.getX(); 
myY=uo.getY(); 
if LastX==myX and LastY==myY then 
halt=halt+1 
else 
halt=0 
end if 
if halt>=10 then 
if uo.GetDir()==1 then 
for z=0 to 8 
uo.Press(40) 
next 
end if 
if uo.GetDir()==3 then 
for z=0 to 8 
uo.Press(37) 
next 
end if 
if uo.GetDir()==5 then 
for z=0 to 8 
uo.Press(38) 
next 
end if 
if uo.GetDir()==7 then 
for z=0 to 8 
uo.Press(39) 
next 
end if 
halt=15 
end if 
if Numb(x-myX)<=1 and Numb(y-myY)<=2 then 
return 1 
end if 
if x<=myX then 
if y<=myY then 
for z=0 to 3 
uo.Press(38) 
next 
else 
for z=0 to 3 
uo.Press(37) 
next 
end if 
else 
if y<=myY then 
for z=0 to 3 
uo.Press(39) 
next 
else 
for z=0 to 3 
uo.Press(40) 
next 
end if 
end if 
lastX=myX 
lastY=myY 
wait(200) 
next 
return 0 
end sub 

sub Numb(num) 
if num>=0 then 
return num 
else 
return num*(-1) 
end if 
end sub 
Не очень я понял, как работает эта ходилка. А в какую координату она пойдет? И у мя выдавалась ошибка. Что-то дополнительно нужно ставить к ней?
Post Reply