Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot в Ultima Online _ Мининг рандом

Автор: Ronald 23.2.2015, 18:53

Добрый вечер всем!
Суть вопроса вот в чём как сделать чтобы чар капал x3 на y3 рандомно?

Кидаю кусочек скрипта))

for #x -3 3 1
for #y -3 3 1
set lasttargetx charposx +#x
set lasttargety charposy +#y
set lasttargetkind 3
:repeat
send F12 400


Заранее благодарен! rolleyes.gif

Автор: DarkMaster 23.2.2015, 22:22

В текущем виде никак. Надо переписывать всю функцию и уходить от этих двух for'ов. Наверное самым правильным вариантом будет создание списка всех возможных сочетаний координат, копирование этого списка во второй массив, перемешивание второго массива меняя местами элементы. Вот во время смены мест элементов можно будет использовать рандом, а задав большое количество итераций можно добиться очень высокой уникальности. Хотя в данном случае скорее не уникальности, а равномерности распределения вероятности.

Автор: cirus 23.2.2015, 23:56

Цитата
В текущем виде никак. Надо переписывать всю функцию и уходить от этих двух for'ов. Наверное самым правильным вариантом будет создание списка всех возможных сочетаний координат, копирование этого списка во второй массив, перемешивание второго массива меняя местами элементы. Вот во время смены мест элементов можно будет использовать рандом, а задав большое количество итераций можно добиться очень высокой уникальности. Хотя в данном случае скорее не уникальности, а равномерности распределения вероятности.

Или во второй массив записывать те координаты, которые уже использовались, а новые координаты сравнивать были они или нет.

Автор: DarkMaster 24.2.2015, 0:03

Цитата
Или во второй массив записывать те координаты, которые уже использовались, а новые координаты сравнивать были они или нет.

Когда останется 1 элемент - будешь прокручивать варианты очень долго.

Автор: cirus 24.2.2015, 14:36

Цитата
Когда останется 1 элемент - будешь прокручивать варианты очень долго.

Попробовал, согласен, вариант с перемешиванием быстрее и проще.

Автор: Ronald 24.2.2015, 17:22

Спасибо за ответы)))буду пробывать колдовать ,хоть и не очень понял))) tongue.gif

Дабы не создавать еще тему подскажите еще вопросик какие команды использывать ,сделать надо так чтобы чар реагировал на вес,допустим чар застопорился на тайле и он постоял допустим видит что вес не поменялся и пошёл на след тайл копать))незнаю уловили что хочю сказать)

Заранее благодарен!

Автор: DarkMaster 24.2.2015, 17:42

проверяйте зарезервированную переменную wght.

Автор: Ronald 24.2.2015, 18:23

Цитата(DarkMaster @ 24.2.2015, 18:42) *

проверяйте зарезервированную переменную wght.


у меня есть переменная ну она реагирует когда чар докапал по весу ,а надо чтобы при каждой откопке тайла реагировал,если капает,то задержка 70 стоит,а если тупит,то ждёт допустим 8000 если не поменялся вес то переходит на стелдующий тайл

вот собстно скрипт,помогите подправить п-жста

set $s1 Тут не осталось руды.
set $s2
set $s3
set $s4
set $s5
set $s6
set $s7
set $s8
set $s9
set $s10
for #x -3 3 1
for #y -3 3 1
set lasttargetx charposx +#x
set lasttargety charposy +#y
set lasttargetkind 3
:repeat
send F12 400
set timer
while_not (lastmsg = $s1) or (lastmsg = $s2) or (lastmsg = $s3) or (lastmsg = $s4) or (lastmsg = $s5) or (lastmsg = $s10) or (lastmsg = $s5) or (lastmsg = $s6) or (lastmsg = $s11) or (lastmsg = $s12) or (timer > 2000)
while_not (lastmsg = $s7) or (lastmsg = $s9) or (lastmsg = $s16) or (timer > 70000)
end_while
end_while
if wght >= 700
repeat 5
alarm
end_repeat
pause_script
end_if
goto repeat
end_while
end_for
end_for
set #walk random (5)
if #walk = 0
repeat 5
send PageUp 200
end_repeat
end_if
if #walk = 1
repeat 5
send PageDown 200
end_repeat
end_if
if #walk = 2
repeat 5
send Home 200
end_repeat
end_if
if #walk = 3
repeat 5
send End 200
end_repeat
end_if
if #walk = 4
repeat 5
send Up 200
end_repeat
end_if
if #walk = 5
repeat 5
send Down 200
end_repeat
end_if
if #walk = 6
repeat 5
send Left 200
end_repeat
end_if
if #walk = 7
repeat 5
send Right 200
end_repeat
end_if

Автор: Ronald 24.2.2015, 22:55

Проблему решил.Тему можно закрыть.Спасибо!

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)