Re: Майнер бот. Эволюция от примитивного (замкнутая вермишель) до умного.v2.41
Mdsanta Перечитай это сообщение - раз 30 наверно редактировал :whistle:
Собственно вопрос был лишь по конкретному моменту:
Если
_Check("Chk10km",$FreeLockPosition)
вызывается с опущенным вторым параметром (потому что конструкция позволяет)
Неа. $FreeLockPosition не опущенный второй параметр. В данном случае в качестве параметра $Object2 используется переменная $FreeLockPosition, нужная для работы внутри конкретной ветки, которая в моей функции указывается в $Object1.В переменной $FreeLockPosition хранится номер ближайшего незалоченного астера,начиная сверху в овервью. т.е. в данном случае этот номер означает ту позицию, куда кликнет мышь для проверки дальности незалоченного астероида(чтобы потом его залочить, если ближе 10км).
В $Object2 необязательно должен быть текст. тут может быть и обычная числовая переменная или число.
И если указать так:
То функция вычислит координаты третьей позиции в овервью, кликнет и начнет проверять ближе дальше 10 км выбранный объект.
Теперь я точно понял твой вопрос Как ты уже заметил $Object2 это параметр, которому я присваиваю по дефолту текст ="No". Кажется, присваивание дефолтного значения нужно для того, чтобы можно было запустить любую часть контейнера _Check, не используя каждый раз при обращении к функции второй параметр $Object2(кажется он обязателен). т.е. я вместо того чтобы каждый раз при обращении к контейнеру прописывать _Check("CheckSpace", тут любая переменная), я просто с самого создания контейнера присваиваю дефолтное значение $Object2="No" и это дает мне возможность теперь просто написать _Check("CheckSpace") и он будет автоматом использовать в $Object2 дефолтное текстовое значение "No", которое роли не играет вообще никакой, просто такова специфика - если есть второй параметр, то автоиту нужно, чтобы он был определен при обращении к функции, даже если он не используется внутри данной ветки контейнера. Если же я решаю использовать конкретную переменную, то я ее и пишу.
Если же использовать выделенную тобой фукнцию без 2го параметра, то он автоматом использует дефолтное значение для него.
Он сам подставит 2й параметр и воспримет это как
То как ты заметил произойдет фигня. конечно он не поймет как вычислять куда ему тыкать мышей для проверки, потому вместо необходимого для вычисления числа там будет текстовое значение. Во всем контейнере _Check, только в этой части на проверку 10км обязательна для использования $Object2 числовая переменная. Параметры $Object2 и $Object1 используются только при обращении к функции, поэтому объявлять их не нужно. Их значения в момент обращения могут быть такими какими ты хочешь. Если ты указал $Object2 дефолтное значение текстом, то при обращении ты легко можешь поставить числовую или другую текстовую переменную и дефолтное значение просто не будет использоваться. вот и все.
Подсказали, что в данном случае значение $Object2 будеть равно нулю.
Нет. Ты не так понял. Бельф про другое писал. Значение $Object2 будет либо тем, которое указываешь ты при обращении к функции, либо дефолтным. у меня по дефолту текст="No"
Зы. Кстати странно что мало людей задают вопросы. Вот человек задал вопросы и стимул отвечать и может что дописать к боту усилился. Я свой код после 2 лет отсутвия в еве вкуривал часа 2 чтобы разобраться полностью и проставить все пиксельсечи заного.+ я когда понимал что конкретный кусок делает, добавлял описания. так что в новой выложенной версии будет гораздо больше пояснений. пиксельсечи все расписал точно.
Пишите все у кого есть вопросы, а также те, кому есть что добавить - Когда я вижу, что это интересно другим, то стимул модифицировать, улучшать и выкладывать в открытый доступ усиливается...