Народ, заранее извините нубаса в програмировании)
Вопрос такого рода. Имеется "почти" готовый бот. Он очень длинный и выкладывать его полностью не имеет смысла. Опишу суть проблеммы,постараюсь доступным языком.
Значит есть меню в котором из выпадающего меню (COMBO), выбирается переменная. По этой переменной выбираются куски когда откуда стартует основное тело. Ну это все описано во многих темах, все стандартно.
НО. В процессе выполнения программы появляются обстоятельства когда нужно сделать определенное действие. Это действие описано отдельно функцией (блок кода в визуальном редакторе). В результате работы этой функции меняются игровое окружение, в следствии чего возврат из функции в то же место уже не подходит. Я не могу сделать так чтоб возврат из функции происходил в ту точку которая задана параметрами COMBO. Пишет ошибку что отсутствует метка GOTO, хотя я не задавал команду GOTO.
Другими словами. Во время выполнения основного скрипта происходит опрашивание некоторых условий на экране с помощью этой функции. Если парамтры нормальные, функция возвращается в то место откуда вызвана и это не ломает работу и все норм. Но когда функция находит ,грубо говоря ошибку, и выполняется действие запланированное в функиции, то по возвращению в то место откуда она была вызвана уже не актуально. Требуется начать работу скрипта занаво с той точки откуда заданы параметры COMBO.
А у меня получается либо ошибка, либо открывается опять меню с выбором (COMBO)
Если кто может помочь хоть каким то советом, сильно не ругайтесь)) . Составил ооочень длинный скрипт, а вот эту проблему решить не могу. Готов показать и обьяснить все в скайпе.
1. 10970 - 20 Апреля, 2020 - 04:49:57 - перейти к сообщению
2. Zireael - 20 Апреля, 2020 - 05:02:39 - перейти к сообщению
Цитата:
Пишет ошибку что отсутствует метка GOTO
Возможно пропущена } или ;
Цитата:
в следствии чего возврат из функции в то же место уже не подходит.
goto global перейдёт к любой метке в скрипте.
3. 10970 - 20 Апреля, 2020 - 05:06:35 - перейти к сообщению
Zireael пишет:
Цитата:
Пишет ошибку что отсутствует метка GOTO
Возможно пропущена } или ;
Цитата:
в следствии чего возврат из функции в то же место уже не подходит.
goto global перейдёт к любой метке в скрипте.
да, я пока не сталкивался с этой командой, потому что не было причин. Но я тоже думал именно об этом. К сожалению не знаком с синтаксисом и вообще особо с програмированием)) попробуем. Направите на нужное место где прочитать?
(Добавление)
Zireael пишет:
Цитата:
Пишет ошибку что отсутствует метка GOTO
Возможно пропущена } или ;
Цитата:
в следствии чего возврат из функции в то же место уже не подходит.
goto global перейдёт к любой метке в скрипте.
Кстати когда я пробовал разные переходы, иногда у меня просто открывалось опять меню начала скрипта. А мне это не нужно, мне нужен переход на ту метку которая УЖЕ обьявлена в COMBO. Глобал гото это победит?)))
4. Zireael - 20 Апреля, 2020 - 05:15:59 - перейти к сообщению
5. 10970 - 20 Апреля, 2020 - 05:19:35 - перейти к сообщению
Zireael пишет:
Сработает ли команда goto global (COMBO_0); ?
Или как то по другому это? Просто нужно чтоб переход был в ту метку которая указана заранее в меню (COMBO_0)
(Добавление)
10970 пишет:
Zireael пишет:
Сработает ли команда goto global (COMBO_0); ?
Или как то по другому это? Просто нужно чтоб переход был в ту метку которая указана заранее в меню (COMBO_0)
просто метки уже созданы параметром COMBO_0, там есть 3 списка которым присвоены точки входа в скрипт a:; b:; c:;
и вот реализовать нужно чтоб фукция возвращалась на тут точку которая задана в том меню))
я не знаю как еще обьяснить без самого кода. Да и словарный запас не позволяет в виду не знания програмирования((
6. Zireael - 20 Апреля, 2020 - 05:43:05 - перейти к сообщению
Цитата:
параметром COMBO_0
Проверить значение переменной и сделать переход к нужной метке.
Цитата:
if (COMBO_0 == 0)goto global a;
if (COMBO_0 == 1)goto global b;
if (COMBO_0 == 2)goto global c;
if (COMBO_0 == 1)goto global b;
if (COMBO_0 == 2)goto global c;
7. 10970 - 20 Апреля, 2020 - 05:45:52 - перейти к сообщению
Zireael пишет:
Цитата:
параметром COMBO_0
Проверить значение переменной и сделать переход к нужной метке.
Цитата:
if (COMBO_0 == 0)goto global a;
if (COMBO_0 == 1)goto global b;
if (COMBO_0 == 2)goto global c;
if (COMBO_0 == 1)goto global b;
if (COMBO_0 == 2)goto global c;
ок, спасибо, буду пробовать. Вечером отпишусь о результатах)
8. 10970 - 22 Апреля, 2020 - 02:48:08 - перейти к сообщению
Доброго времени.
Ваша помощь помогла запустить скрипт так как у меня было задумано)) Спасибо.
Возникла другая проблема которую я не могу решить самостоятельно.
Вообще за 3 месяца использования данной программы, накопились текущие вопросы). Типо того какого размера скрипт (в мб) кибор будет НОРМАЛЬНО обрабатывать, хотя бы примерно.
Второе, каким способом можно оптимизировать скрипт, желательно автоматически.
И третье кибор в памяти занимает УЖЕ 1,5гб места когда я кручу свой скрипт.
Иногда при работе скрипта возникает табличка, Out of memory, при моих 8гб оперативы это странно. Пробовал увелить место под процессы средствами кибор (в настройках). Но добился лишь долго запуска самого кибора.Я выяснил что иногда такая табличка возникает при ошибке например поиска зоны поиска (когда не правильно указаны переменные). Но в чем проблема щас чтото не могу разобраться.
Так как я не силен в програмировании, и не разбираюсь в операторах даже на 50%, мне будет проблематично сделать часть кода подгружаемыми файлами, хотя это было бы не плохо. Просто СЛИШКОМ длинным как мне кажется он получается.
Подскажите в чем может быть проблема с этой ошибкой плиз..
Ваша помощь помогла запустить скрипт так как у меня было задумано)) Спасибо.
Возникла другая проблема которую я не могу решить самостоятельно.
Вообще за 3 месяца использования данной программы, накопились текущие вопросы). Типо того какого размера скрипт (в мб) кибор будет НОРМАЛЬНО обрабатывать, хотя бы примерно.
Второе, каким способом можно оптимизировать скрипт, желательно автоматически.
И третье кибор в памяти занимает УЖЕ 1,5гб места когда я кручу свой скрипт.
Иногда при работе скрипта возникает табличка, Out of memory, при моих 8гб оперативы это странно. Пробовал увелить место под процессы средствами кибор (в настройках). Но добился лишь долго запуска самого кибора.Я выяснил что иногда такая табличка возникает при ошибке например поиска зоны поиска (когда не правильно указаны переменные). Но в чем проблема щас чтото не могу разобраться.
Так как я не силен в програмировании, и не разбираюсь в операторах даже на 50%, мне будет проблематично сделать часть кода подгружаемыми файлами, хотя это было бы не плохо. Просто СЛИШКОМ длинным как мне кажется он получается.
Подскажите в чем может быть проблема с этой ошибкой плиз..
9. Nikanr - 22 Апреля, 2020 - 03:08:36 - перейти к сообщению
Единственный пока-что выход - оптимизация кода вручную. По поводу out of memory, надо смотреть код через отладчик, так ничего сказать невозможно
10. 10970 - 22 Апреля, 2020 - 03:48:46 - перейти к сообщению
[quote=Nikanr]Единственный пока-что выход - оптимизация кода вручную. По поводу out of memory, надо смотреть код через отладчик, так ничего сказать невозможно[/quote]
ок, вручную. А как?)) что такое оптимизация вообще?
Удаление пустых строк, или что? Как вообще уменьшить код по размеру?)
сорри за тупые вопросы) я только учусь..
(Добавление)
[quote=Nikanr]Единственный пока-что выход - оптимизация кода вручную. По поводу out of memory, надо смотреть код через отладчик, так ничего сказать невозможно[/quote
Точно! через отладчик можно, проблема в том что после вывода этой ошибки, кибор виснет, и помогает только полная перезагрузка кибора через альт ктрл делит]
ок, вручную. А как?)) что такое оптимизация вообще?
Удаление пустых строк, или что? Как вообще уменьшить код по размеру?)
сорри за тупые вопросы) я только учусь..
(Добавление)
[quote=Nikanr]Единственный пока-что выход - оптимизация кода вручную. По поводу out of memory, надо смотреть код через отладчик, так ничего сказать невозможно[/quote
Точно! через отладчик можно, проблема в том что после вывода этой ошибки, кибор виснет, и помогает только полная перезагрузка кибора через альт ктрл делит]