Author Topic: Проблема с загрузкой сценария  (Read 3988 times)

0 Members and 1 Guest are viewing this topic.

8888mi

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Проблема с загрузкой сценария
« on: February 22, 2017, 12:49:12 AM »
День добрый. Нужна помощь.
пишу такой скрипт:
надо чтобы из текущего сценария, вызывались по порядку другие сценарии, отрабатывались, и потом основной сценарий закончился. У меня же при выполнении первого LOAD - я не вижу того, что должно выполниться (какбы что то выполняется), а потом выскакивает диалог с ошибкой: "Ошибка интерпритации строки: Halt. Прервать выполнение сценария ?" Если говорю, что нет, то выполняется первый LOAD, я вижу его действия, потом опять такой же диалог с ошибкой. Если не прерываю, опять выполняется ПЕРВЫЙ LOAD, не второй... Если же при выпадающей ошибке я говорю, что прервать выполнение сценария, то он прерывается. А в кликере иконка горит на паузе, и не отрубается стопом.

Code: (clickermann) [Select]
/ перемещаемся на 49-13
MOVE(1117,1031)
lclick(1117,1031)
wait(2)
// выбор города старта миссии - открытие списка владений
MOVE(949,207)
lclick(949,207)
wait(2)
// выбор из списка городов нужного города
MOVE(841,225)
lclick(841,225)
wait(2)
//
//

//
//-----------> "захват рабов" из координат 49-13
//
// "захват рабов" из координат 49-13-3
LOAD("slaves/49-13-3.cms")
//
// "захват рабов" из координат 49-13-55
LOAD("slaves/49-13-55.cms")
//
//-----------> F I N I S H —--------->
//
halt

и собственно вызываемый (загружаемый) файл-сценарий (49-13-3.cms):

Code: (clickermann) [Select]
// "захват рабов" из координат 49-13
//
//
// перемещаемся на 49-13
MOVE(1117,1031)
lclick(1117,1031)
wait(2)
//
// "захват рабов" из координат 49-13, город 49-13-3
//
// выбор города 49-13-3
MOVE(685,241)
lclick(685,241)
wait(2)
// нажатие иконки "атака"
MOVE(710,216)
lclick(710,216)
wait(2)
// перемещение на выбор вида атаки "захват рабов"
MOVE(846,289)
lclick(846,289)
wait(2)
// перемещение на выбор армии "носилки"
MOVE(691,856)
// выбор количества армии для атаки (5 раз по Х)
$N = 0
while($N < 5)
LCLICK(691,856)
inc($N)
end_cyc
wait(2)
// перемещение на выбор армии "лекари"
MOVE(1149,857)
// выбор количества армии для атаки (5 раз по Х)
$L = 0
while($L < 5)
LCLICK(1149,857)
inc($L)
end_cyc
wait(2)
// перемещение на кнопку "Начать миссию"
MOVE(956,668)
lclick(956,668)
wait(2)
// окончание "захват рабов" из координат 49-13, город 49-13-3
halt

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Проблема с загрузкой сценария
« Reply #1 on: February 22, 2017, 09:35:03 AM »
Всё из-за того, что ты не понимаешь что такое LOAD. Это не подпрограмма, а ты пытаешься использовать его как подпрограмму.
[spoiler]По команде LOAD загружался полностью новый скрипт. Старый безвозвратно удаляется из памяти в месте со всеми переменными и выполняться дальше не может. Никакой "второй" или третий LOAD подряд никогда не сработает.[/spoiler]

Про LOAD лучше забудь, он был нужен давно до введения другого функционала. Тем более, что с версии 4.12 команда убрана.

Пиши в подпрограммы SUB. Подпрограммы вызывай. Если прямо йж очень нужно, можно тело подпрограмм вынести в отдельный файл и загружать в начале скрипта по #include().  Хотя чего тут делить, 70 строк кода с оформлением.
« Last Edit: February 22, 2017, 09:38:03 AM by Vint »


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Проблема с загрузкой сценария
« Reply #2 on: February 22, 2017, 12:46:15 PM »
Зачем дробить проект на кучу файлов? Проще от этого не станет.

Для отсчета больше подходит цикл FOR, кроме того имя переменной менять не нужно.
Code: (clickermann) [Select]
$N = 0
while($N < 5)
   LCLICK(691,856)
   inc($N)
end_cyc

$L = 0
while($L < 5)
   LCLICK(1149,857)
   inc($L)
end_cyc

Code: (clickermann) [Select]
// перемещаемся на 49-13
MOVE(1117,1031)
lclick(1117,1031)
wait(2)
// выбор города старта миссии - открытие списка владений
MOVE(949,207)
lclick(949,207)
wait(2)
// выбор из списка городов нужного города
MOVE(841,225)
lclick(841,225)
wait(2)
//
//

//
//-----------> "захват рабов" из координат 49-13
//
// "захват рабов" из координат 49-13-3
// "захват рабов" из координат 49-13
//
//
// перемещаемся на 49-13
MOVE(1117,1031)
lclick(1117,1031)
wait(2)
//
// "захват рабов" из координат 49-13, город 49-13-3
//
// выбор города 49-13-3
MOVE(685,241)
lclick(685,241)
wait(2)
// нажатие иконки "атака"
MOVE(710,216)
lclick(710,216)
wait(2)
// перемещение на выбор вида атаки "захват рабов"
MOVE(846,289)
lclick(846,289)
wait(2)
// перемещение на выбор армии "носилки"
MOVE(691,856)
// выбор количества армии для атаки (5 раз по Х)
FOR($a=0,$a<5)
   LCLICK(691,856)
   WAITMS(50)
END_CYC
wait(2)
// перемещение на выбор армии "лекари"
MOVE(1149,857)
// выбор количества армии для атаки (5 раз по Х)
FOR($a=0,$a<5)
   LCLICK(1149,857)
   WAITMS(50)
END_CYC
wait(2)
// перемещение на кнопку "Начать миссию"
MOVE(956,668)
lclick(956,668)
wait(2)
// окончание "захват рабов" из координат 49-13, город 49-13-3
// halt

//
// "захват рабов" из координат 49-13-55
// LOAD("slaves/49-13-55.cms")
//
//-----------> F I N I S H —--------->
//
halt

8888mi

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Проблема с загрузкой сценария
« Reply #3 on: February 22, 2017, 01:46:28 PM »
Зачем дробить проект на кучу файлов? Проще от этого не станет.

Как минимум - удобнее при просмотре и работе с основной программой.
Проще подключить или удалить ненужный (неиспользуемый) блок.
А когда у меня больше 1000 строк кода будет , выискивать ненужный кусок гораздо сложнее.

8888mi

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Проблема с загрузкой сценария
« Reply #4 on: February 22, 2017, 01:49:23 PM »
Всё из-за того, что ты не понимаешь что такое LOAD. Это не подпрограмма, а ты пытаешься использовать его как подпрограмму.
[spoiler]По команде LOAD загружался полностью новый скрипт. Старый безвозвратно удаляется из памяти в месте со всеми переменными и выполняться дальше не может. Никакой "второй" или третий LOAD подряд никогда не сработает.[/spoiler]

Про LOAD лучше забудь, он был нужен давно до введения другого функционала. Тем более, что с версии 4.12 команда убрана.

Пиши в подпрограммы SUB. Подпрограммы вызывай. Если прямо йж очень нужно, можно тело подпрограмм вынести в отдельный файл и загружать в начале скрипта по #include().  Хотя чего тут делить, 70 строк кода с оформлением.

У меня таких подпрограмм больше сотни.
Если я буду использовать, например, #include(), выполнения кода оттуда будет происходить сразу после загрузки, вначале основного скрипта ?

8888mi

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Проблема с загрузкой сценария
« Reply #5 on: February 22, 2017, 03:42:26 PM »

Если я буду использовать, например, #include(), выполнения кода оттуда будет происходить сразу после загрузки, вначале основного скрипта ?
Нет. Вы путаете загрузку кода в скрипт и выполнение кода, оно идёт обычным порядком.

Ага, тогда для особо тупых плиз. КАК мне в момент выполнения основного кода вставлять куски кода из вне ?

8888mi

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Проблема с загрузкой сценария
« Reply #6 on: February 22, 2017, 04:40:22 PM »
куски кода загружаются только при старте скрипта, загрузка кода в ходе работы скрипта программой не поддерживается.
Мне кажется это разумным - коней на переправе не меняют.
Выполнять или не выполнять  загруженные при старте куски кода можно в любое удобное для вас время или по совпадении условий.

Так никто коней не меняет. Просто добавляем в упряжку, если надо.
Я правильно понимаю, что если я вначале скрипта напишу #include("filename.cms"), то смогу выполнить в ОПРЕДЕЛЕННЫЙ момент закруженный код ?
Если да, то как сделать вызов этого кода в нужный момент ?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Проблема с загрузкой сценария
« Reply #7 on: February 22, 2017, 07:53:50 PM »
У меня таких подпрограмм больше сотни.
Если я буду использовать, например, #include(), выполнения кода оттуда будет происходить сразу после загрузки, вначале основного скрипта ?

Выполнение идет там где написан этот #include

Например в "1.cms" находится строка LOGWRITE ("1") а в "2.cms" находится строка LOGWRITE ("2")

Пишем третий скрипт "3.cms", и в нем пишем строки
Code: (clickermann) [Select]
#include "1.cms"
#include "2.cms"
HALT

В результате после загрузки этого скрипта "3.cms", в памяти кликера, еще до запуска, будет собран скрипт
Code: (clickermann) [Select]
LOGWRITE ("1")
LOGWRITE ("2")
HALT



« Last Edit: February 22, 2017, 08:02:06 PM by Oraven »