Что нового

Random варп на белты.

McSkull

Знающий
Сообщения
66
Репутация
6
Есть вот такая функция.
Код:
Func Mainloop()
Sleep(1000)
Belt1()
Sleep(1000)
Belt2()
Sleep(1000)
Belt3()
Sleep(1000)
Belt4()
MainLoop()
EndFunc


Как я понимаю рандомный запуск можно сделать так
Код:
Func Mainloop()
Belt...() ;вот сюда подставлять число от 1 до 4 
Sleep(1000)
MainLoop()
EndFunc

Но как это правильно написать я не знаю... :(

Помогите люди добрые... :-[
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
Call("Belt" & Random(1, 4, 1))



Добавлено:
Сообщение автоматически объединено:

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


Добавлено:
Сообщение автоматически объединено:

Лучше сделать это так:

Код:
Func Mainloop()
      While 1
            Call("Belt" & Random(1, 4, 1))
            Sleep(1000)
      WEnd
EndFunc
 

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
Кстати, не очень хорошая идея запускать рекурсивно вот так функцию, в какой то момент (примерно на 5100-ом вызове) будет достигнут придел рекурсий и скрипт завершит свою работу с фатальной ошибкой.
Если не секрет - что означает запускать рекурсивно? и предел рекурсий?
(В этом разделе просто в основном не программисты а любители Eve-online)
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Код:
Local $Belt[2] = [1,34]
Global $CurBelt = 0

#cs
если хочешь прыгнуть на пос пишешь 
Warp("POS")
Спот
Warp("SPOT")
если в белт:
Warp("Belt", Число)
От минимального до максимального
Warp("Belt", "Random")
В рандомный белт от минимального до максимального
Warp("Belt", "Next")
В следующий белт относительно текущего (не конает если бот не летал еще ни в один белт
Warp("Belt", "Prev")
В предидущий белт относительно текущего (не конает если бот не летал еще ни в один белт
в целом конерктно по белтам 4 команды
Если ты только что был в максимально белте и заюзал "варп белт некст" то бот варпанется в минимальный белт и кур белт станет = мин белту
если ты был в мин белте и попытался прыгнуть в прив белт бот варпанется в макс белт и кур белт станет = макс белту
#ce


;использование: Сам разберешься.
; @error = 1 Если была попытка варпануться в следующий или предидущий белт не побывав при этом ни в одном белте
; @error = 2 Если была попытка варпануться в белт используя не существующее условие $Case2 = "кокая-то х..."
; @error = 3 Если была попытка исползовать функцию Warp используя не существующее условие $Case1 = "кокая-то х..."

Func Warp($Case1, $Case2=0)
	Select
		Case $Case1 = "Belt"
			Select
				Case $Case2 = "Random"
					$CurBelt = Random($Belt[0], $Belt[1], 1)
				Case $Case2 = "Next"
					If $CurBelt > 0 Then
						$CurBelt = $CurBelt + 1
						If $CurBelt > $Belt[1] Then $CurBelt = $Belt[0]
					Else
						SetError(1)
					EndIf
				Case $Case2 = "Prev"
					If $CurBelt > 0 Then
						$CurBelt = $CurBelt - 1
						If $CurBelt < $Belt[0] Then $CurBelt = $Belt[1]
						Else
						SetError(1)
					EndIf
				Case $Case2 >= $Belt[0] And $Case2 <= $Belt[1]
					$CurBelt = $Case2
				Case $Case1 = "BACK"
					OpenMenu(1, $CurBelt, 1)
				Case Else
					SetError(2)
			EndSelect
			OpenMenu(1, $CurBelt, 1) ;Варпаем в белт	
		Case $Case1 = "POS"
			OpenMenu(6,1)
		Case $Case1 = "SPOT"
			OpenMenu(7,1)
		Case Else
			SetError(3)
	EndSelect
EndFunc
 
Автор
M

McSkull

Знающий
Сообщения
66
Репутация
6
Немного Офтоп от темы...

Но такой вопрос.
Мне нужно сделать выполнение определенных If-ов до того момента пока не получится определенный результат либо пройдет к примеру 20 минут...
Как это реализовать?

Код:
Func Test()
$var = 0
$var2 = 0
Do
if .......... then ; выполняются действия
...................
if test2() = 1 Then
$var2 = 1
EndIf
Select
    Case $var2 = 1 ; в результате $var2 стало = 1
        $var = 1
    Case не знаю, что написать ; прошло 20 минут
        $var = 1
EndSelect 
Until $var = 1
EndFunc

Func test2()
    If ....... Then 
        Return 1 
    Else
        Return 0 
    EndIf
EndFunc


P.S.
Конструкцию
Select
Case
Еще не использовал и не знаю правильно ли я понял принцип её работы...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
воспользуйся таймерами.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
DJ_Tommy [?]
что означает запускать рекурсивно
Это когда функция запускает саму себя.

McSkull [?]
Немного Офтоп от темы
То что ты признаёшь что это оффтоп, ещё не придаёт данному действию лигитимности, даже наоборот, это говорит о том что ты знаешь что так нельзя, и всё ровно делаешь :wacko: .

Лень создать новую тему?
 
Верх