Правильная обработка условий в макросе. Нужна помощь.

Дополнения к OpenKore, расширяющиее её функциональность, называются плагинами.

Модератор: 4epT

dvdc
Бывалый
Сообщения: 556
Зарегистрирован: Вс ноя 05, 2006 1:43 pm
Контактная информация:

Правильная обработка условий в макросе. Нужна помощь.

Сообщение dvdc »

Столкнулся с интересной ситуацией.

Код: Выделить всё

macro iffail {
   if ($status == 1) goto statusone
   if ($status == 2) goto statustwo
   goto nostatus

  :nostatus
  log Respawn and get status
  call getstatus
  goto end
  
  :statusone
  log Respawn and continue
  call statusone
  goto end

  :statustwo
  log Respawn and finish
  call statustwo
  goto end

  :end
  log A???
}
при автоматическом триггере переключает на этот макрос. дальше творятся чудеса. если статуса нет - бот включает запуск макроса nostatus, в котором ему предназначается пойти туда-то и сделать то-то. НО(!) бот игнорирует абсолютно всё, делает Calculate до того места где должен быть npc (не вставая с места), естественно почему-то туда не идёт, мало того, пытается с ним общаться телепатически )))))))))))))))
чем меня смешит.
в nostatus в конце макроса переменной status присваивается значение 1, и бот автоматически переключается на макрос-обработку iffail, где "выполняет" указания согласно обозначенной переменной.

впечатление такое, что обработка условий вообще не работает, а если и работает то настолько некорректно, насколько это вообще возможно.
подскажите пожалуйста, кто знает? в описании макросов нигде нет подробной информации о таких случаях :(
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Не знаю как в макросе. но через doCommand можно почти всё.
dvdc
Бывалый
Сообщения: 556
Зарегистрирован: Вс ноя 05, 2006 1:43 pm
Контактная информация:

Сообщение dvdc »

понял :) спасибо, иду разбираться...

p.s. гаццкие ГМы ввели дикий квест с монстрами в городах мидгарда... ну достало уже просто - у всех тестовых ботов поочерёдно срабатывает сигнализация, и лишь только храбрые единицы бото-пехоты доходят до квестовых npc )))))))))))))))
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

dvdc
Дык. Видим моба в городе, жмём на винг.
dvdc
Бывалый
Сообщения: 556
Зарегистрирован: Вс ноя 05, 2006 1:43 pm
Контактная информация:

Сообщение dvdc »

Непонятным для себя образом снова решил проблему контроля поведения персонажа. А еще я всё-таки сделал работу с внешними переменными! И эта схема работает!!! Ура!
Теперь, при прохождении квеста на вора весь квест делится на несколько условных частей - контрольных точек. На каждой контрольной точке отмечается специальная пометка, которая говорит боту в случае дисконнекта или смерти о том, с какого эпизода снова начать прохождение квеста.
Схему построил на "автомакро-макро", и никаких IF'ов... но, тему эту закрывать не очень хочется, потому что весь макрос (а он еще больше будет, уже три файла задействовано :) на "автомакро-макро" не построить.
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

$status == 1 в условии это зачем? $status = 1 так не катит?
от РО до шестой палаты - один шаг...
dvdc
Бывалый
Сообщения: 556
Зарегистрирован: Вс ноя 05, 2006 1:43 pm
Контактная информация:

Сообщение dvdc »

нет, одно равно - присваивание...
эмм... так всегда было вроде )

я проблему решил уже ) в другом месте где-то писал ))) длинный такой пост )))
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

хмм... насколько я представляю языки прогаммирования, в условии ничего не присваивается, а проверяется на истина/ложь/или... что касается переменной, её можно проверить в отладке или как log $status
от РО до шестой палаты - один шаг...
dvdc
Бывалый
Сообщения: 556
Зарегистрирован: Вс ноя 05, 2006 1:43 pm
Контактная информация:

Сообщение dvdc »

нет.
== соответствие
= присваивание
!= несоответствие
остальные символы типа > < >= и <= - соответственно школьной программе :)

примерно так себе представляют логику разработчики логики языков программирования )
с обработкой условий в макросе не через автомакро я еще поиграюсь, ибо это страсть как интересно ))
Ответить