Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Поскольку люди создают миллион тем с заголовком «Не работает мунлоадер» было решено создать эту тему.
Тут я разберу основные проблемы и как их убрать.
Что надо для работы мунлоадера?
Для работы мунлоадера нужен лишь аси лоадер, не более. А вот у большинства скриптов есть зависимость от библиотек которые требуют наличия SAMPFUNCS. Либо же содержат функции которые требуют наличия SAMPFUNCS. SAMPFUNCS это дополнение к библиотеке CLEO 4, соответственно нам еще и клео надо.
Где же все его взять?
Cleo — https://cleo.li/ru
SAMPFUNCS(R1) — https://www.blast.hk/threads/17/
SAMPFUNCS(R3) — https://www.blast.hk/threads/65247/
Moonloader — https://www.blast.hk/threads/13305/
1.Отсутствие какой-либо библиотеки.
Ошибка выглядит следующим образом.
(error) *НАЗВАНИЕ ФАЙЛА*.lua: ...*НАЗВАНИЕ СБОРКИ*moonloader*НАЗВАНИЕ ФАЙЛА*.lua:*НОМЕР СТРОКИ С ОШИБКОЙ*: module '*НАЗВАНИЕ БИБЛИОТЕКИ*' not found: no field package.preload['*НАЗВАНИЕ БИБЛИОТЕКИ*']
no file '*ПУТЬ К СБОРКЕ**НАЗВАНИЕ СБОРКИ*moonloaderlib*НАЗВАНИЕ БИБЛИОТЕКИ*.lua'
no file '*ПУТЬ К СБОРКЕ**НАЗВАНИЕ СБОРКИ*moonloaderlib*НАЗВАНИЕ БИБЛИОТЕКИ*init.lua'
no file '*ПУТЬ К СБОРКЕ**НАЗВАНИЕ СБОРКИ*moonloader*НАЗВАНИЕ БИБЛИОТЕКИ*.lua'
no file '*ПУТЬ К СБОРКЕ**НАЗВАНИЕ СБОРКИ*moonloader*НАЗВАНИЕ БИБЛИОТЕКИ*init.lua'
no file '.*НАЗВАНИЕ БИБЛИОТЕКИ*.lua'
no file '*ПУТЬ К СБОРКЕ**НАЗВАНИЕ СБОРКИ*moonloaderlib*НАЗВАНИЕ БИБЛИОТЕКИ*.luac'
no file '*ПУТЬ К СБОРКЕ**НАЗВАНИЕ СБОРКИ*moonloaderlib*НАЗВАНИЕ БИБЛИОТЕКИ*init.luac'
no file '*ПУТЬ К СБОРКЕ**НАЗВАНИЕ СБОРКИ*moonloader*НАЗВАНИЕ БИБЛИОТЕКИ*.luac'
no file '*ПУТЬ К СБОРКЕ**НАЗВАНИЕ СБОРКИ*moonloader*НАЗВАНИЕ БИБЛИОТЕКИ*init.luac'
no file '.*НАЗВАНИЕ БИБЛИОТЕКИ*.luac'
no file '*ПУТЬ К СБОРКЕ**НАЗВАНИЕ СБОРКИ*moonloaderlib*НАЗВАНИЕ БИБЛИОТЕКИ*.dll'
stack traceback:
[C]: in function 'require'
...HACKmoonloader*НАЗВАНИЕ СКРИПТА*:*НОМЕР СТРОКИ С ОШИБКОЙ*: in main chunk
(error) *НАЗВАНИЕ СКРИПТА*.lua: Script died due to an error. (*код который не надо*)
Если вы видите строку
module '*НАЗВАНИЕ БИБЛИОТЕКИ*' not found:
то это однозначно говорит вам что у вас нету определенной библиотеки. Рассмотрим реальный пример который я взял из темы чела ниже.
(error) bypasser_2.lua: ...sEmilDesktopGTA BY SAMPHACKmoonloaderbypasser_2.lua:2: module 'neatjson' not found: no field package.preload['neatjson']
no file 'C:UsersEmilDesktopGTA BY SAMPHACKmoonloaderlibneatjson.lua'
no file 'C:UsersEmilDesktopGTA BY SAMPHACKmoonloaderlibneatjsoninit.lua'
no file 'C:UsersEmilDesktopGTA BY SAMPHACKmoonloaderneatjson.lua'
no file 'C:UsersEmilDesktopGTA BY SAMPHACKmoonloaderneatjsoninit.lua'
no file '.neatjson.lua'
no file 'C:UsersEmilDesktopGTA BY SAMPHACKmoonloaderlibneatjson.luac'
no file 'C:UsersEmilDesktopGTA BY SAMPHACKmoonloaderlibneatjsoninit.luac'
no file 'C:UsersEmilDesktopGTA BY SAMPHACKmoonloaderneatjson.luac'
no file 'C:UsersEmilDesktopGTA BY SAMPHACKmoonloaderneatjsoninit.luac'
no file '.neatjson.luac'
no file 'C:UsersEmilDesktopGTA BY SAMPHACKmoonloaderlibneatjson.dll'
stack traceback:
[C]: in function 'require'
...sEmilDesktopGTA BY SAMPHACKmoonloaderbypasser_2.lua:2: in main chunk
(error) bypasser_2.lua: Script died due to an error. (0F5F60BC)
Тут нам мунлоадер даёт понять что он не может найти библиотеку neatjson.lua, а это значит что её нету.
Как решить? Скачать и установить её в папку lib.
2. Несовместимый байт-код
Рассмотрим следующую проблему. Вы посмотрели свой лог по первом пункте и ничего такого там не обнаружили. Это может быть не состыковка версий. Посмотрим как это выглядит.
(error) *НАЗВАНИЕ ФАЙЛА*.lua: *ПУТЬ К СБОРКЕ**НАЗВАНИЕ СБОРКИ*moonloader*НАЗВАНИЕ ФАЙЛА*.lua: cannot load incompatible bytecode
(error) *НАЗВАНИЕ ФАЙЛА*.lua: Script died due to an error. (*код который не над*)
Если у вас есть мозг либо вы не спали на уроках английского в школе, то вы уже поймете в чем проблема. Но я все же объясню. Мы видим строку
cannot load incompatible bytecode
Что же это значит? А то, что мунлоадер не может загрузить несовместимый байт-код. Что это я такое сморозил? Все просто. Ваш скрипт скомпилирован под другую версию мунлоадера. Пример: автор скомпилировал скрипт под 025 мунлоадер, на то время актуальный, но вот вышел 026 и все его используют, но скрипт уже на нем работать не будет, так как не та версия.
Как решить? У вас есть 2 варианта.
- Написать автору скрипта, чтобы он скомпилировал скрипт под новую версию муна.
- Конвертировать самому. https://www.blast.hk/threads/35380/ вам в помощь.
3. Отсутствие SAMPFUNCS
Такое тоже бывает, это может быть из-за отсутствия SAMPFUNCS. То есть библиотека просит сф, а его нету.
Ошибка выглядит следующим образом:
(error) *НАЗВАНИЕ СКРИПТА*: ... *ПУТЬ К БИБЛИОТЕКЕ*: *БИБЛИОТЕКА* requires SAMPFUNCS
stack traceback:
[C]: in function 'assert'
... *ПУТЬ К БИБЛИОТЕКЕ*: in main chunk
[C]: in function 'require'
...*ПУТЬ К БИБЛИОТЕКЕ* : in main chunk
[C]: in function 'require'
*ПУТЬ К СБОРКЕ**НАЗВАНИЕ СКРИПТА*.lua: in function *ПУТЬ К СБОРКЕ**НАЗВАНИЕ СКРИПТА*.lua:>
Рассмотрим на примере. Попытаемся загрузить samp.events без SAMPFUNCS.
(error) Admin Tools: ... Andreas MultiPlayermoonloaderlibsampeventscore.lua:23: samp.events requires SAMPFUNCS
stack traceback:
[C]: in function 'assert'
... Andreas MultiPlayermoonloaderlibsampeventscore.lua:23: in main chunk
[C]: in function 'require'
...A San Andreas MultiPlayermoonloaderlibsampevents.lua:8: in main chunk
[C]: in function 'require'
E:GTA San Andreas MultiPlayermoonloaderAdmin Tools.luac: in function <E:GTA San Andreas MultiPlayermoonloaderAdmin Tools.luac:0>
Если вставить в переводчик строку samp.events requires SAMPFUNCS будет все понятно.
Как решить? Установить SAMPFUNCS и Cleo из ссылок в начале темы
4. Ошибка Moon ImGui
Может возникнуть ошибка и с Moon ImGui. Возникает она когда версия мунлоадера ниже 026. Рассмотрим её вид:
(error) *ПУТЬ К БИБЛИОТЕКЕ*:*СРОКА С ОШИБКОЙ*: Moon ImGui requires MoonLoader v.026 or greater.
stack traceback:
[C]: in function 'assert'
*ПУТЬ К БИБЛИОТЕКЕ*:*СБОРКА С ОШИБКОЙ* : in main chunk
[C]: in function 'require'
...*ПУТЬ К СБОРКЕ*moonloader*НАЗВАНИЕ СКРИПТА*.lua: in function <...*ПУТЬ К СБОРКЕ*moonloader*НАЗВАНИЕ СКРИПТА*.lua:0>
Посмотрим на пример:
(error) X:GamesARIZONA GAMESbinArizonamoonloaderlibimgui.lua:4: Moon ImGui requires MoonLoader v.026 or greater.
stack traceback:
[C]: in function 'assert'
X:GamesARIZONA GAMESbinArizonamoonloaderlibimgui.lua:4: in main chunk
[C]: in function 'require'
...amesARIZONA GAMESbinArizonamoonloaderMHManager.luac: in function <...amesARIZONA GAMESbinArizonamoonloaderMHManager.luac:0>
Тут moonloader говорит нам что Moon ImGui требует MoonLoader v.026 или выше.
Как решить? Установить moonloader 026/027 из ссылки в начале теме.
5. Отсутствие шрифта
Может возникнуть ошибка с загрузкой шрифта, например для имгуи. Она возникает если у вас в системе нету данного шрифта. Рассмотрим ошибку
*НАЗВАНИЕ СКРИПТА*: *ПУТЬ К ФАЙЛУ**ФАЙЛ*.lua:*НОМЕР СТРОКИ*: WTF: Font "*ПУТЬ К ШРИФТУ**НАЗВАНИЕ ШРИФТА*.ttf" doesn't exist
stack traceback:
[C]: in function 'assert'
*НАЗВАНИЕ СКРИПТА*: *ПУТЬ К ФАЙЛУ**ФАЙЛ*.lua:*НОМЕР СТРОКИ*: in function '*ФУНКЦИЯ*'
*НАЗВАНИЕ СКРИПТА*: *ПУТЬ К ФАЙЛУ**ФАЙЛ*.lua:*НОМЕР СТРОКИ*: in function *НАЗВАНИЕ СКРИПТА*: *ПУТЬ К ФАЙЛУ**ФАЙЛ*.lua:*НОМЕР СТРОКИ*
Посмотрим на пример:
Moon ImGui Example: D:Гусиная Сборкаmoonloaderlibimgui.lua:1344: WTF: Font "C:WindowsFontstrebucbd.ttf" doesn't exist
stack traceback:
[C]: in function 'assert'
D:Гусиная Сборкаmoonloaderlibimgui.lua:1344: in function 'load_default_font'
D:Гусиная Сборкаmoonloaderlibimgui.lua:1370: in function <D:Гусиная Сборкаmoonloaderlibimgui.lua:1367>
Как решить? Установить недостающий шрифт в C:WindowsFonts
p.s: Если я что-то забыл — напишите добавлю
Главная » Пользователи » s_mike@rambler.ru
Форум:
Дата создания:
…
Тема:
Сообщение:
Страницы:
1
2
След.
|
s_mike@rambler.ru
Сообщений: 1519 |
# 10.08.2022 15:36:13 В документации на Квик написано, что если указать метке цену и время, то там она и выставиться. щас! как водится, врут. Достаточно включить в терминале режим показа графиков в локальном времени и все, приехали. в лучшем случае метка показывается не там где надо, в худшем не показывается вообще. Зависит от смешения локального времени от Москвы. дедушку лечить бессмысленно. Дедушку дохлый, ему на кладбище. Да и доктора, судя по чехарде фамилий, временные гастарбайтеры. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 09.07.2022 10:02:00 > t=setmetatable({},{ __div = function(x,y) print(x,y) end}) Это работает > t=setmetatable({},{ __bshl = function(x,y) print(x,y) end}) метод __bshl не видится почему то www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 06.07.2022 12:48:20 Все таки есть проблемы в славном королевстве. Есть библиотека для 5.3. Работает на ура. И в квике и в standalone Пересобрал ее на 5.4. Работают все три десятка ее функций (и в квике и в standalone) без каких либо проблем, кроме одной. Она работает в standalone, но напрочь отказывется работать в квике. Выкинул из нее все лишнее, оставил минимум для теста
вызов из луа: И если в standalone мы получаем два сообщения OK, hello world и nil в качестве возврата, то в квике мы сразу получаем loadbuffer error и дальше, конечно мусор. Может, кто то пальцем сможет указать направление в пустыне? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
||
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 19.05.2022 00:41:03 решил пересобрать библиотеку с 5.3 на 5.4 Функция в dll: static int b4s_xxx(lua_State *L) lua_pushnil(L); Вызываем из standalone lua require «testlib» Выводит hello world Вызываем из квика require «testlib» ничего не выводит. Теряюсь в догадках. Кто может подсказать? на 5.3 проблем не наблюдалось www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 17.05.2022 13:04:44 Еще одна блоха на теле в лучшего в мире ПО Находим свой аккаунт в таблице trade_accounts Удивляемся, что некоторых классов из class_codes нет в таблице classes Удивляемся, удивляемся.. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 05.01.2022 18:55:55 Скрипт на луа, выставляющий 2 метки на один график res = AddLabel(«ri», Как видим, отличие лишь в бмп файле (yvalue изменены, чтобы видеть метки не друг на друге) в результате выставляется всегда только вторая метка, при первая не выставляется. Терминал при исполнении этого скрипта выдает сообщение в окно сообщений: Произошла ошибка при загрузке файла чивотатам2-0.bmp скрипт выдает message вида 23465.0 nil Из чего можно сделать вывод, что файл 2-0.bmp битый, а файл 2-0a.bmp нормальный. ok. Но раньше то все было нормально! Запускали мы сейчас скрипт на версии 9. Запустим его на версии 8. Упс, обе метки выставляются. А что у нас внутри bmp? 42 4В 22 00 00 00 00 00 | 00 00 1A 00 00 00 0С 00 Смотрим в этот бмп с помощью irfanview или чем нибудь еще — нет проблем. size 2*1 pixels Если надо подержать в руках обе бмпшки : https://dropmefiles.com/VH3Ks Что изменилось в терминале? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 26.11.2021 14:48:25 Вопрос Как отличить пустую свечу графика, получаемого по getcandlebyindex от правых фантомных свечей в случае, если график сдвинут вправо от источника его данных? Спасибо www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 04.10.2021 18:40:29 Settings={} [3676] QLUA E:Quik-JuniorLuaIndicators1.lua:3: attempt to call a nil value (global ‘getInfoParam’) www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 30.07.2021 19:42:26 function main() message(tostring( Вот такой чудесный скрипт, выставляющий метку. В 8.13 боевой выставляет картинку на диаграмму, а в 9.1 демо — нет. Оба терминала на одной машине, запущены одновременно, идентификаторы идентичны, проверено, скопировано через буфер обмена. Как такое может быть? Отчего это может зависеть? Индусов в программисты наняли? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 30.07.2021 18:12:46 Ув. разработчики! При активной работе с метками терминал через некоторое время начинает тупить и в результате вываливается с диагностикой о нехватке видеопамяти. Свободной видеопамяти еще много гигабайт. Скрипт просто переставляет метки посредством SetLabel. Написать тест из 10 строчек кода вы должны суметь сами. Почему вываливается если видеопамяти полно? Почему расходуется видеопамять при использовании SetLabel? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 30.07.2021 18:00:25 Уважаемые разработчики! Я уже много раз вам указывал на эту ошибку (и не только я). Много раз она «будет исправлена в очередной версии ПО» function main() Эта функция возвращает успех, номер метки. А не должна. Ошибка тянется с 2013 года, но компания Арка не чешется абсолютно. Отдельный привет Алексею Иванникову. У вас полно ошибок, которые вы не исправляете годами или не в состоянии исправить.. Открывайте ваши регистрации или куда вы все это пишете, ищите. Можете поискать по форуму. Пообещайте еще раз, что ли…. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 03.05.2021 22:36:30 Каждая уважающая себя среда должна иметь кроме прочего, исполняемую в ней игрушку. Я таких для терминала quik не встречал. Одно время была очень популярна игра 2048б мне заказывали ее написать для какого-то сайта. Вот ее вариант для quik, нарисовал под пиво:
Также можно взять здесь Не имею возражений, если разработчики включат игрушку в список своих демонстрационных скриптов )))) www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
||
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 30.04.2021 13:49:27 Добрый день Что за тип данных такой _dataline_data_metatablegc у меня не получилось осознать и не смог найти в спецификации lua www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 03.04.2021 18:02:45 message(« www.bot4sale.ru «) В сообщении на экране www.bot4sale.ru будет оформлена как ссылка, тут все в порядке. Но при нажатии на эту ссылку открывается проводник, а не браузер. Думаю, что и с другими типами (call-to и прочими будет то же самое) По умолчанию приложением для открытия URL назначен Хром. Поправьте. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 14.10.2020 18:12:23 Здравствуйте возможна ли ситуация с получением данных графика, когда свеча уже имеется (учтена в getnumcandles), но ее значение не заполнено и по getCandlesByIndex возвращаются ohlcv 0? возникает при очень частом опросе графика, последующий запрос выдает то же количество свечей, но ohlcv уже реальные www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 30.09.2020 09:34:34 Уважаемые разработчики. добавляя в терминал язык луа, вы наверняка подразумевали , что на нем будут писаться разные роботы и прочая торгующая ерунда. в таком случае у вас должно быть понимание, как необходимо при помощи языка луа принимать решение о возможности начала работы алгоритма после старта скрипта. проблема состоит в проверке, что данные, получаемые роботом из терминала, отражают текущее или почти текущее состояние торгов и можно приступать к анализу условий и самой торговле. варианты: 1. Терминал давно запущен до запуска робота и так далее.. в общих словах вопрос. как робот может понять, что данные, ему даёт терминал, являются более-менее актуальными, а не прошлогодними и можно торговать? Пожалуйста, приведите какую нибудь осмысленную последовательность проверок. я понимаю, что терминал сам не знает, последняя свеча ему пришла или непоследняя. Но луа в терминал вы же не по пьяни встраивали, а после «регистрации пожелания, постараемся его рассмотреть и сообщить» и далее по тексту. вы же пробовали сами что то писать на луа, верно?) www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 04.09.2020 12:54:32 В версии 8.8 наблюдаю странную вещь. в одних местах скрипта debug.getinfo(1) выдает таблицу , в которой есть поле name, а других местах в получаемой таблице этого поля нет. Остальные поля вроде на месте. вызов идёт из луа, си функций в последовательности вызова нет. что может быть тому причиной? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 12.08.2020 13:05:28 Получаю source info в индикаторе: {sec_code=»GAZP»,class_code=»QJSIM»,param=»»,interval=-1} Откуда взялся interval -1? Если это не ошибка, будьте любезны, объясните происходящее. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 06.08.2020 19:18:04 Что за зверь такой неизведанный? Зачем я вижу ошибки исполнения от него? Какие они бывают, откель они берутся и когда? Спасибо. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 13.06.2020 12:33:21 https://www.lua.org/work/ www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 09.06.2020 09:37:31 После получения сигнала смены сессии я отписываюсь от всех инструментов и подписываюсь заново. Как понимаю, это необходимо при возможном изменении истории инструмента при смене сессии. Подписка на инструмент сразу после смены сессии ошибок не возвращает, но и «мёд не носит» — свечи не приходят, колбек не дергается. Как нужно делать правильно? Спасибо. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 04.06.2020 12:07:26 Строим индикатор с гистограммами (первый рисунок) Увеличиваем ширину гистограмм — второй рисунок Враги съели легенду. Если сделать ширину еще больше — они сожрут и таймлайн (третий рисунок) www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 30.05.2020 16:51:13 Перекомпилировал свои скрипты, наткнулся: Открываем https://www.lua.org/pil/22.1.html , Видим пример print(os.time{year=1970, month=1, day=1, hour=0}) —> 10800 Не верим, проверяем. print(os.time{year=1970, month=1, day=1, hour=0}) И правильно не верим, как выясняется. И в терминале и в стандалоне одинаково. а вот print(os.time{year=1970, month=1, day=1, hour=0}) Оказывается. Теперь lua смотрит часовой пояс. У меня часовой пояс +1, и Смотрел в документацию на луа — ничего не нашел. На 5.1 в часовой пояс луа не смотрела. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 18.05.2020 12:59:20 Я правильно понимаю, что колонки пользовательских таблиц этих типов по прежнему уверенным домкратом выводят float циферки? ) www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 08.05.2020 11:52:43 В последней версии терминала 8 5 2 11 наблюдаю падения приложения при переносе мышкой (drag&drop) пользовательских индикаторов между диаграммами. При переносе встроенных индикаторов проблемы нет. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 12.11.2019 21:55:18 То ли лыжи не едут…. Как остановить скрипт при закрытии терминала, чтобы при последующем запуске терминала он вы в состоянии «не запущен»? Метод автогена с провокацией ошибки исполнения считаю недостойным для Программного Комплекса QUIK ))) www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 05.11.2019 21:55:57 Здравствуйте. Каким образом из всего множества доступных в терминале классов НАДЕЖНО найти их подмножество, по которым идут торгисделки? Вариант с заказом истории по инструментам класса не подходит. Например, SPBFUT — торгуемый, а cross_rate — не торгуемый www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 31.10.2019 18:49:24 Добрый. Что означают значения O,H, L, C на графике оборота в деньгах? Не могу придумать смысл для первых трех значений. Попутно — в какой валюте идет подсчет? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 10.09.2019 20:31:22 Что-то я сильно устал, пробуя пересобрать из исходников sqlite3.dll из пакета lua sql для работы с 8 квиком. Может, кто покажет указующим перстом, где это счастье можно взять в готовом виде? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 16.07.2019 10:33:49 Здравствуйте В индикаторе необходимо сохранять определённые данные между запусками терминала соответственно: 1. как отличить ручное удаление индикатора (или закрытие окна/диаграммы) от закрытия терминала? ну и попутно. Третий параметр setvalue() может быть nil. Всегда и всюду в lua правые параметры nil при вызове функций можно опускать, но не в случае этой функции. Я уже раз пятый наезжаю на эту граблю… Может, стоит привести в норму? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 05.07.2019 16:21:13 Если из lua выставить стоп заявку такую, что она не проходит проверку сервера, то 1. Она висит в таблице стоп-заявок Так и должно быть? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 02.05.2019 12:10:46 Здравствуйте Существует ли способ однозначно определить тип актива Фьючерсы/акции/опционы без использования таблицы текущих торгов? ТТТ может быть не открыта и получить оттуда нужные поля далеко не всегда возможно. По коду класса тоже ненадежно, классов много разных на разных площадках По наличию в полном наименовании слова «Фьючерсы» или «Опционы» как то видится ненадежным. Есть какие-то более стандартные варианты? Спасибо. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 03.04.2019 12:34:31 Здравствуйте. Как выгрузить библиотеку при завершении скрипта? Вот пример function main() assert (package.loadlib(getScriptPath() .. «\sqlite3.dll», «luaopen_luasql_sqlite3»)) () local db = env:connect(‘db.sqlite’) db:execute[[ db:execute[[ local results = db:execute[[ local key,value = results:fetch() results:close() end не выгружается. перенос текста в поток терминала эффекта тоже нее дает. спасибо www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 11.02.2019 11:40:44 здравствуйте Эту стоп-заявку я могу выставить из луа (как)? в документации информации нет, в карман транзакций добавить ее не могу www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 31.01.2019 22:45:33 Здравствуйте. 1. Как я понимаю, за прошедшие несколько лет (5? 8? 10?) ошибка терминала, проявляющаяся в НЕРИСОВАНИИ на диаграмме маленьких меток, так и не решена? Тестовый пример, иллюстрирующий проблему, я приводил на форуме очень давно и «будет исправлена в очередной версии» 2. Другая проблема. Индикатор рисует метки на диаграмме. В момент запуска терминала с установленным индикатором все прекрасно, за исключением одного — метки не выводятся. Логирование результатов AddLabel свидетельствует об успешности операций, функция возвращает номера меток в инкрементальном порядке. Но на экране их нет. В чем причина? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 31.01.2019 18:04:01 Здравствуйте Было бы очень неплохо иметь возможность получать в скрипте lua колбек при нажатии пользователем метки на графике по аналогии с SetTableNotificationCallback спасибо www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 27.12.2018 15:17:00 Здравствуйте. Задача. Индикатор. Необходимо выполнять определенные действия в oncalculate только на самой правой, текущей свече, игнорируя все предыдущие. Очевидная попытка решения function OnCalculate(i) к успеху не приводит, если на графике построен какой-либо индикатор, сдвинутый вправо. При этом Size() показывает увеличенное на величину сдвига число свечей. Узнать величину этого сдвига возможности нет. Вопрос. Как решить поставленную задачу? Спасибо. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 03.12.2018 21:22:37 Возможно я чего то не замечаю, но вижу следующее. При попытке исполнить транзакцию kill_stop_order для неактивной стоп-заявки не приходит ответ ontransaction. Мне это не кажется и так должно быть? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 04.06.2018 17:39:35 Сегодня установил новую версию терминала и оооо-паньки…Новый индикатор.
Что-то он мне напоминает… Даже помню что . Написано в 2015 году было. Практически один-в-один. Все режимы те же самые, тот же способ отображения из будущего по шкале времени, та же возможность отображать накопительные объемы. Плагиат расцениваю как комплимент ) Всем, кто пытается писать какие-то вкусности для творений арка — на заметку — даже спасибы от этой компании не дождетесь, не то что бутылку пива. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
||
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 28.05.2018 14:34:31 Снова возвращаюсь к вопросу. о котором разработчики позабыли, как видится. Вот эта функция крутится в цикле опроса:
20:09:22.057 Получено 151892 сделок Подписка на тиковые данные происходит по двум колбекам.
repository.init в частности исполняет следующее
Указанный эффект всегда происходит при первом включений терминала в пределах дня. Последующие включения такой эффект не несут. Если я что-то делаю неправильно, было бы полезно понять. что именно. Иначе получается, что это грубая ошибка терминала. Спасибо. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
||||||
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 18.04.2018 12:03:37 Здравствуйте. я уже дважды поднимал вопрос об отсутствии вызова omdestroy в индикаторах в режиме связанных окон. при смене инструмента в этом режиме функция ondrstroy не вызывается. оба раза я получал ответ в виде » абажите, щаса напишем скрипт для проверки и саапчим». Но не саапчили. Что имеем то по вопросу? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 09.04.2018 19:39:43 Здравствуйте. Вопрос скорее к разработчикам. Есть индикатор, одновременно запущенный на несколшьких разных инструментах (или одинаковых), с разными или одинаковыми настройкками, на произвольных таймфреймах и т.п. Необходимо: Найти способ для каждой запущенной копии индикатора сгенерировать свой ключ (строка, число) для установления связи между этой конкретной копией индикатора и внешним ПО. Основная проблема — получение внешним ПО информации о закрытии индикатора (тем или иным способом), закрытии терминала и корректная работа при перезапуске индикатора (например в режиме связанных окон). Допустимы любые быстрые способы — средства терминала, winapi и так далее. У меня не хватает фантазии пока. Спасибо. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 02.04.2018 14:48:54 Здравствуйте. Не могу понять, что происходит с метками в момент обновления окна в режиме связанных окон. насколько я могу предположить, что после обновления окна идентификатор остается тем же и функция Setlabelparams должна метку найти и переставить. если запрос setlabelparams происходит в момент обновления окна, там может произойти что-то неясное и, как я думаю, происходит. Но что? Каков должен быть алгоритм работы по перестановке метки из скрипта посредством setlabelparams? чтобы он работал в режиме связанных окон? Напоминаю также о ошибке, заключающейся в отсутствии вызова ondestroy индикатора в том же режиме связанных окон. Это серьезная проблема — невозможно исполнить финализацию (закрыть процессы, удалить файлы, отвязаться от апишных дел и прочего) www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 19.03.2018 08:24:20 Здравствуйте. Что обусловлено отсутствие колбеков от Createdate source при условии, что последний вернул код успеха? Эффект проявляется при запуске терминала с работающим скриптом. Эффект никогда не проявляется при запуске скрипта при уже работающем терминале. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 15.03.2018 17:38:18 Недавно был добавлен колбен OnChangeSettings Посмотрел. Или я чего-то не понял, или вы добавили его так, что он бесполезен Во первых, он не вызывается при старте индикатора. Но это обойти еще можно Главное — он не вызывается при смене таймфрейма, что приводит его полной бесполезности . Или я неправ? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 27.12.2017 23:38:45 Добрый день. манипуляции со стоп заявками из луа подразумевают неявное «сделать стоп заявку своей» или нужно выписывать это явно? спасибо. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 13.12.2017 12:23:03 У меня ещё несколько вопросов по этой функции. 1. Что происходит, если в момент обращения к функции нет соединения с сервером? 2. Будут ли запрашиваться данные с сервера после установления связи в пункте 1? 3. Что происходит с подпиской после смены сессии? 4. Что происходит с подпиской после выключения и включения терминала с работающим скриптом? www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 12.12.2017 19:24:43 Обращаюсь к разработчикам. Как узнать в индикаторе (OnCalculate), что обрабатывается самая правая свеча? Хотелось бы получить ответ, который работает всегда ))) Спасибо. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 02.11.2017 16:03:01 Здравствуйте id метки уникален в пределах окна (панели), диаграммы или терминала? Спасибо. www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
|
Перейти |
|
s_mike@rambler.ru
Сообщений: 1519 |
# 27.10.2017 11:22:09 Кусочек текста скрипта,занимающегося обработкой таблицы обезличенных сделок:
что мы тут имеем? rescan() получает новые сделки из ТОС и для каждой вызывает обработчик process_trade Время от времени (закономерность неясна) последнее действие приводит к развалу скрипта по причине недопустимых данных в datetime сделки. Смотрим конец логфайла:
Все строчки абсолютно нормальные, а последняя выведенная очень интересна. Все поля нулевые, в том числе и datetime.
Ситуация регулярно появляется как на моем компьютере, так и на множестве других компьютеров, что установлен этот скрипт. И собственно вопросы:
www.bot4sale.ru Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088 |
||||||
|
Перейти |
Страницы:
1
2
След.

-
- Поделиться
Есть скрипт и этот скрипт косячит. А если быть точным, то он в упор отказывается видеть процесс. Вот код скрипта
Скрытый текст
function CEButton1Click(sender) GameName = "notepad++.exe" GameID = getProcessIDFromProcessName(GameName) if(GemeID == nul) then showMessage("запустите процесс!") return end openProcess(GameName) result = AOBScan(0xA0,0x86,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x86,0x01,0x00,0x00) if(result == nul) then showMessage("сигнатура не рабочая!") return end cound = stringlist_getcount(result) i = 0 while i~= cound do address = stringlist_getcount(result,i) writeBytes(address,0x60,0xE3,0x16,0x00) end showMessage("актевировано!") end
Пока что не разбирал работоспособность скрипта дальше чем сообщение «Запустите процесс!». Что я делаю не так?
П.с. Как использовать фуркцию memrec_freeze? Мне нужно что бы запись байт происходила в цикле, т.е. заморожено =).
// Пользуемся тегами кода и спойлера (если код большой). Garik66. Пока устное предупреждение.
Ссылка на комментарий
Поделиться на другие сайты

-
- Поделиться
2 часа назад, pachela сказал:
то он в упор отказывается видеть процесс
Попробуй первую часть скрипта переписать так:
Скрытый текст
function CEButton1Click(sender) GameName = "notepad++.exe" GameID = getProcessIDFromProcessName(GameName) if(GemeID == nil) then showMessage("запустите процесс!") openProcess(GameName) end -- дальше код я не смотрел Garik66 result = AOBScan(0xA0,0x86,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x86,0x01,0x00,0x00) if(result == nul) then showMessage("сигнатура не рабочая!") return end cound = stringlist_getcount(result) i = 0 while i~= cound do address = stringlist_getcount(result,i) writeBytes(address,0x60,0xE3,0x16,0x00) end showMessage("актевировано!") end
И второе — ты уверен в своей сигнатуре?
Ссылка на комментарий
Поделиться на другие сайты

- Автор
-
- Поделиться
14 часа назад, Garik66 сказал:
Попробуй первую часть скрипта переписать так:
Скрыть содержимое
function CEButton1Click(sender) GameName = "notepad++.exe" GameID = getProcessIDFromProcessName(GameName) if(GemeID == nil) then showMessage("запустите процесс!") openProcess(GameName) end -- дальше код я не смотрел Garik66 result = AOBScan(0xA0,0x86,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x86,0x01,0x00,0x00) if(result == nul) then showMessage("сигнатура не рабочая!") return end cound = stringlist_getcount(result) i = 0 while i~= cound do address = stringlist_getcount(result,i) writeBytes(address,0x60,0xE3,0x16,0x00) end showMessage("актевировано!") endИ второе — ты уверен в своей сигнатуре?
1. Можно на русском, что делает openProcess()? Он создает процесс или переключается на него?
2. Сигнатура на 100% нужная. Первые 4 байта дублируются в конце сигнатуры всегда. Был бы код не на Луа, а на «С», при использовании патерна, я бы с 13 байта и по 0хА0 поставил бы «?», т.к. эти байты при определенных условиях могут изменяться. Но для начала нужно разобраться с «топорной» сигнатурой и не допускать изменения наличной сигнатуры. Т.е. пока я не захочу, эта сигнатура будет иметь именно такой вид.
Ссылка на комментарий
Поделиться на другие сайты
![]()
-
- Поделиться
53 минуты назад, pachela сказал:
1. Можно на русском, что делает openProcess()? Он создает процесс или переключается на него?
2. Сигнатура на 100% нужная. Первые 4 байта дублируются в конце сигнатуры всегда. Был бы код не на Луа, а на «С», при использовании патерна, я бы с 13 байта и по 0хА0 поставил бы «?», т.к. эти байты при определенных условиях могут изменяться. Но для начала нужно разобраться с «топорной» сигнатурой и не допускать изменения наличной сигнатуры. Т.е. пока я не захочу, эта сигнатура будет иметь именно такой вид.
Уважаемый pachela. Имею смелость заметить, что вы используете какой то заведомо «рабочий» код, изменив его под себя, не понимая сути. Мы лишь можем направить или указать на ошибки в общем случае.
Во-первых, советую ознакомиться с синтаксисом (в данном случае Lua) и обратить внимание на опечатки в коде.
Во-вторых, все инструкции CE используемые в Lua описываются подробно в файле main.lua, находящимся в корневой папке с Cheat Engine.
В-третьих, использовать «??» в сигнатуре до сих пор возможно.
Изменено 7 февраля, 2017 пользователем SnedS91
-

2
Ссылка на комментарий
Поделиться на другие сайты

- Автор
-
- Поделиться
2 минуты назад, SnedS91 сказал:
Уважаемый pachela. Имею смелость заметить, что вы используете какой то заведомо рабочий код, изменив его под себя, не понимая сути. Данный форум не является справочником, как это оговаривалось где-то ранее, мы лишь можем направить или указать на ошибки в общем случае.
Во-первых, советую ознакомиться с синтаксисом (в данном случае Lua) и обратить внимание на опечатки в коде.
Во-вторых, все инструкции CE используемые в Lua описываются подробно в файле main.lua, находящимся в корневой папке с Cheat Engine.
В-третьих, использовать «??» в сигнатуре до сих пор возможно.
Уважаемый SnedS91 код приведенный мной ранее действительно взят как по идее рабочий из видеомануала по созданию сего именно кода. И потому то я понимаю, что в коде для чего нужно. Но вот беда в том, что работоспособность кода на видео не была показана!!!
По поводу main.lua я знаю. Но вопрос то стоял по другому? Одно дело справочный материал на английском, а другое, когда на русском.
По поводу возможности использовать в Луа сигнатуры с «??» нигде не встречал, посему и предположил что нельзя!
Ну и в конце концов: Почему на офф-форуме СЕ люди подсказывают, помогают и объясняют, а тут только предлагают платные услуги и тыкают носом?
Я не прошу написать мне сложную программу с кучей функций, GUI, БлекДжеком и проститутками, а всего навсего прошу подсказать где допущена ошибка, как ее исправить и как лучше внести коррекцию кода под себя. Человек который понимает в Луа, Си и хорошо знаком с СЕ, может решить эту задачку за 2 минуты! Я же возможно и могу решить эту задачку под посторонних подсказок, только на это уйдет уже не 2 минуты и скорее всего не 2 дня.
Я уже давно не школьник, имею жену и ребенка. У меня нет такой роскоши как безграничное время! Лучше же когда мне знающий человек подскажет, я погляжу где я был не прав, сделаю выводы, положу полученное знание на полочку и перейду на следующую ступень, со следующим заданием и новой трудностью, которую возможно я решу сам, а возможно буду снова спрашивать «гуру».
Ссылка на комментарий
Поделиться на другие сайты
![]()
-
- Поделиться
Можно поробовать так openProcess(GameID)
Ссылка на комментарий
Поделиться на другие сайты
![]()
-
- Поделиться
if(GemeID == nul) then
if (GameID == nil) then
Ссылка на комментарий
Поделиться на другие сайты
![]()
-
- Поделиться
Все это довольно чудесно, семья, это безусловно замечательно. Носом тут и без того тыкают, сказал же, сначала проверить на наличие ошибок в синтаксисе, т.к. программный код не терпит малейших ошибок. ![]()
Кроме того в Lua есть возможность использовать aobscan более удобным способом, т.е. не набором байт, а строкой, к примеру:
AOBScan('A0 86 01 ?? 00') //можно и без пробелов
Ссылка на комментарий
Поделиться на другие сайты
![]()
-
- Поделиться
Скрытый текст
function CEButton1Click(sender) GameName = "notepad++.exe" if(openProcess(GameName) == nil) then showMessage("запустите процесс!") return end result = AOBScan('тут свои байты') if(result == nil) then showMessage("сигнатура не рабочая!") return end count = result.Count i = 0 while i~= count do address = result.getString(i) writeBytes(address,{0x60,0xE3,0x16,0x00}) i = i + 1 end showMessage("активировано!") end
Возможно в таком виде тебя устроит скрипт ![]()
Изменено 7 февраля, 2017 пользователем SnedS91
Ссылка на комментарий
Поделиться на другие сайты
![]()
-
- Поделиться
6 часов назад, pachela сказал:
1. Можно на русском, что делает openProcess()? Он создает процесс или переключается на него?
Это подключение к процессу, как Attach to proccess. Процесс уже должен быть запущен.
Если нужно создать процесс и сразу подлючитья к нему, то
Цитата
createProcess(path, parameters OPTIONAL, debug OPTIONAL, breakonentrypoint OPTIONAL) : Creates a process. If debug is true it will be created using the windows debugger and if breakonentry is true it will cause a breakpoint to occur on entrypoint
Пример
createProcess('D:\test.exe')
Путь игры можно узнать в теории из реестра, по ярлыкам на рабочем столе или по пути, где находиться трейнер.
Ссылка на комментарий
Поделиться на другие сайты

- Автор
-
- Поделиться
В 07.02.2017в13:54, Vlad2 сказал:
if(GemeID == nul) thenif (GameID == nil) then
Спасибо. Действительно в исходнике который я выставил в начале темы было несколько недоделок. первая, это опечатки на которые как раз ты и указал. Сделал я эту ошибку т.к. когда просматривал видео, сразу пытался и писать код, а в видео автор сказал именно Нул! Это меня не удивило, т.к., по моему, в С+ есть Нул. Вторая недоделка это та, что автор видео в другом своем уроке сказал что в прошлом видео ошибся и забыл добавить openProcess(GameName).
В 07.02.2017в14:00, SnedS91 сказал:
Все это довольно чудесно, семья, это безусловно замечательно. Носом тут и без того тыкают, сказал же, сначала проверить на наличие ошибок в синтаксисе, т.к. программный код не терпит малейших ошибок.
Кроме того в Lua есть возможность использовать aobscan более удобным способом, т.е. не набором байт, а строкой, к примеру:
AOBScan('A0 86 01 ?? 00') //можно и без пробелов
Это хорошо. И тут же сразу вопрос такой, имеет ли разница в скобочках? Двойные или одинарные ставятся? И еще, а можно ли в байтах обозначенных «??» ставить варианты, ну типа есть вариант что примерт такой вид или иной, но не совершенно иной? Возможно в виде переменной это обозначать? Ну это просто из любознательности, на последний вопрос можно ответить кратко: Да или Нет. И за это будет большое спасибо.
Представленный тобой скрипт работает отлично! Спасибо большое.
В 07.02.2017в18:14, MasterGH сказал:
Это подключение к процессу, как Attach to proccess. Процесс уже должен быть запущен.
Теперь разобрался. Просто написано «open» и это смущает. Хотя в справке и написано «подключиться», но все же перевод технической документации бывает двоякий.
Вот код который у меня вышел в результате, но я снова накосячил
Скрытый текст
function CEButton1Click(sender) GameName = "notepad++.exe" if(openProcess(GameName) == nil) then showMessage("запустите процесс!") return end result = AOBScan('A0 86 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A0 86 01 00') if(result == nil) then showMessage("сигнатура не рабочая!") return end count = result.Count i = 0 while i~= count do address = result.getString(i) writeBytes(address,0xC0, 0x5C, 0x15, 0x00) i = i + 1 end while true do res2 = readInteger(address) if(res2 == 1400000) then Sleep(50) end if not(res2 == 1400000) then writeBytes(address,0xC0, 0x5C, 0x15, 0x00) end end end
Код работает нормально, если не считать того печального факта, что СЕ со скриптом виснет наглухо. Я так понимаю что в конце нужно оставить только условие If not, а просто if убрать?
// Читаем правила (особенно пункт 1.3 ) Garik66
Ссылка на комментарий
Поделиться на другие сайты

- Автор
-
- Поделиться
Такс. Ну вот бороздя просторы большого ютубо-гугла я нашел причину почему трейнер вешается при активации, а точнее решение. Это запускать сканирование в потоки. Как я понял, то у меня должен быть 1 поток. Сначала 1 поток сканирует сигнатуру и записывает адрес. Далее поток освобождается и мы можем снова его использовать, что бы запустить цикл перезаписи, если изменяется значение в адресе.
Я все правильно понял?
Ссылка на комментарий
Поделиться на другие сайты

-
- Поделиться
Скрытый текст
function CEButton1Click(sender) if (getProcessIDFromProcessName('notepad.exe')==nil) then messageDialog("Запустите игру...",-1,0) return end openProcess('notepad.exe') potok = createNativeThread(potokF) end function potokF(senderThread) results=AOBScan("3F 00 00 00 00 00 00 E0" ,"*W*C*X") if (results==nil) then messageDialog("Сигнатура не найдена...",-1,0) return end count=stringlist_getCount(results) for i = 0, (count-1), 1 do address =stringlist_getString(results,i) writeBytes(address,0x20, 0xF2, 0x0F, 0x59, 0xC9, 0x90, 0x90, 0x90) end messageDialog("Чит активирован!.",-1,0) end
такой код устроит с потоком?
// Читаем правила (особенно пункт 1.3 ) Garik66
Ссылка на комментарий
Поделиться на другие сайты
![]()
-
- Поделиться
2 часа назад, pachela сказал:
Это хорошо. И тут же сразу вопрос такой, имеет ли разница в скобочках? Двойные или одинарные ставятся? И еще, а можно ли в байтах обозначенных «??» ставить варианты, ну типа есть вариант что примерт такой вид или иной, но не совершенно иной? Возможно в виде переменной это обозначать? Ну это просто из любознательности, на последний вопрос можно ответить кратко: Да или Нет. И за это будет большое спасибо.
Представленный тобой скрипт работает отлично! Спасибо большое.
«??» или «xx» обозначение неизвестного байта. Переменную можно в принципе использовать, получится что-то вроде подстановки в шаблон.
36 минуты назад, pachela сказал:
Такс. Ну вот бороздя просторы большого ютубо-гугла я нашел причину почему трейнер вешается при активации, а точнее решение. Это запускать сканирование в потоки. Как я понял, то у меня должен быть 1 поток. Сначала 1 поток сканирует сигнатуру и записывает адрес. Далее поток освобождается и мы можем снова его использовать, что бы запустить цикл перезаписи, если изменяется значение в адресе.
Я все правильно понял?
Можно не использовать явно потоки, а создать таймер, например:
tmr = createTimer(nil,true) function check() print('test') --тут свое сравнение и запись байт end tmr.setOnTimer(check) tmr.setInterval(200)
Ссылка на комментарий
Поделиться на другие сайты

-
- Поделиться
17 час назад, pachela сказал:
1. Можно на русском, что делает openProcess()? Он создает процесс или переключается на него?
Подключается к процессу, если тот уже запущен.
Если хочешь, чтобы трейнер не только подключался к процессу, но и запускал ну например тот же блокнот, можно сделать например так:
Скрытый текст
GameName = "notepad++.exe" GameID = getProcessIDFromProcessName(GameName) if(GemeID == nil) then showMessage("Процесс не запущен!Нажмите ОК! - ЗАПУЩУ :)") shellExecute('D://Notepad++/notepad++.exe/') -- здесь поменяй путь к икзешнику на свой. sleep '1000' openProcess(GameName) showMessage("Процесс подключен! Работайте.") end
17 час назад, pachela сказал:
2. Сигнатура на 100% нужная.
Если твоя сигнатура рабочая, то должен работать простейший АА-скрипт:
Скрытый текст
[ENABLE] aobscanmodule(INJECT,notepad++.exe,A0 86 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A0 86 01 00 00) registersymbol(INJECT) INJECT: db 60 E3 16 00 00 00 00 00 [DISABLE] INJECT: db A0 86 01 00 00 00 00 00 unregistersymbol(INJECT)
который будет делать, то что ты хотел:
Скрытый текст
В 06.02.2017в13:43, pachela сказал:
4. Детальное описание работы:
Программа должна по нажатию на кнопку находить уникальный массив байт (A0 86 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A0 86 01 00 00) в приложении NotePad++ и внести изменения в начало найденого массива на (60 E3 16 00 00 00 00 00) Последние нули обязательны!!! Изменение должно быть заморожено, с частотой обновления заморозки 50-100мс.
Ссылка на комментарий
Поделиться на другие сайты
![]()
-
- Поделиться
Насколько я помню нужно везде ставить два слэша
shellExecute('D://Notepad++/notepad++.exe/')
Ссылка на комментарий
Поделиться на другие сайты
![]()
-
- Поделиться
3 hours ago, Vlad2 said:
Насколько я помню нужно везде ставить два слэша
shellExecute('D://Notepad++/notepad++.exe/')
Если я правильно понимаю про что вы, два слеша требуются только в случае обратного слеша — «» дабы экранировать символ экранирования:
shellExecute('D:\Notepad++\notepad++.exe')
В случае прямого слеша он требуется только один:
shellExecute('D://Notepad++/notepad++.exe')
Плюс можно использовать двойные квадратные скобки:
shellExecute([[D:Notepad++notepad++.exe]])
Изменено 8 февраля, 2017 пользователем srg91
Ссылка на комментарий
Поделиться на другие сайты

- Автор
-
- Поделиться
На сегодня для меня самый подходящий код вышел вот такой вот:
Скрытый текст
function CEButton1Click(sender) if (getProcessIDFromProcessName('notepad++.exe')==nil) then messageDialog("Запустите игру...",-1,0) return end openProcess('notepad++.exe') potok = createNativeThread(potokF) end function potokF(senderThread) results=AOBScan("0000000050C30000000000000000000000000000000000000000000050C300000000000000000000002F4375" ,"*W*C*X") if (results==nil) then messageDialog("Сигнатура не найдена...",-1,0) return end count=stringlist_getCount(results) for i = 0, (count-1), 1 do address =stringlist_getString(results,i) writeBytes(address,0xC0,0x5C,0x15,0x00,0x80,0xC3,0xC9,0x01) end while true do writeBytes(address,0xC0,0x5C,0x15,0x00,0x80,0xC3,0xC9,0x01) sleep(250) end end
Одна проблема у него. Когда я генерирую трейнер и закрываю СЕ, то он не может найти сигнатуру! Хотя во время проверки в СЕ все идеально работает.
Я предполагаю следующее: В СЕ включены инструменты ядра. В трейнере же я не включаю их. Может из-за этого быть косяк?
// Читаем правила (особенно пункт 1.3 ) Garik66
Ссылка на комментарий
Поделиться на другие сайты
![]()
-
- Поделиться
Не думаю что в этом проблема, попробуй убрать следующее
,"*W*C*X"
Ссылка на комментарий
Поделиться на другие сайты

- Автор
-
- Поделиться
6 минут назад, SnedS91 сказал:
Не думаю что в этом проблема, попробуй убрать следующее
,"*W*C*X"
не. Не в этом дело. Оно как то сразу после нажатия на кнопку пишет что сигнатура не та. Даже не ищет, просто клац на кнопку, а он говорит фига! Попробовал вписать dbk_initialize(true). Но наверно эт не правильно. Хотя драйвер загрузило. Так же вместо OpenProcess использовал dbk_useKernelmodeOpenProcess(). Но походу тоже не правильно использовал. И я думаю что для полного набора инструментов нужно еще и dbk_useKernelmodeProcessMemoryAccess() использовать.
Ссылка на комментарий
Поделиться на другие сайты
![]()
-
- Поделиться
Раз говоришь, что обычный поиск дает результат, тогда скажи какая память сканируется? Т.е. каким образом выставлены флаги 
Ссылка на комментарий
Поделиться на другие сайты

- Автор
-
- Поделиться
2 минуты назад, SnedS91 сказал:
Раз говоришь, что обычный поиск дает результат, тогда скажи какая память сканируется? Т.е. каким образом выставлены флаги
Точно так как у тебя. Если зайти в настройки СЕ, «Дополнительно» и выключить нижние 3 галочки (первая у меня не включена, почему то включение этой галочки приводит к BSOD), то поиск вообще ничего не даст. Он не находит никаких значений вообще!!! Когда я пишу трейнер, то использую СЕ с включенными инструментами ядра и потому когда тестирую трейнер все пашет, а когда компилю, то инструменты ядра я не использую. Вот почему я думаю что из-за этого косяк.
Но опыта у меня в этом маловато, потому прислушиваюсь к вашим словам.
Ссылка на комментарий
Поделиться на другие сайты
![]()
-
- Поделиться
Попробуй убрать в настройках те галочки, перезапустить СЕ, потом убрать галку в главном окне с Writable (это для того чтобы не использовать CE Kernel). Найдется ли в таком случае сигнатура?
Ссылка на комментарий
Поделиться на другие сайты

- Автор
-
- Поделиться
14 минуты назад, SnedS91 сказал:
Попробуй убрать в настройках те галочки, перезапустить СЕ, потом убрать галку в главном окне с Writable (это для того чтобы не использовать CE Kernel). Найдется ли в таком случае сигнатура?
Поиск сразу заканчивается и ничего не находит.
Ссылка на комментарий
Поделиться на другие сайты

-
- Поделиться
папробуй вставить этот скрипт
Скрытый текст
local FLAGS_OFFSET=0x450 dbk_initialize() dbk_useKernelmodeOpenProcess() dbk_useKernelmodeProcessMemoryAccess() openProcess(getOpenedProcessID()) local list=createStringlist() getThreadlist(list) local i for i=0, list.count-1 do local tid=tonumber('0x'..list[i]) local PEThread=dbk_getPEThread(tid) local PEThread_Flags=PEThread+FLAGS_OFFSET local flags=readBytes(PEThread_Flags,1) if bAnd(flags,4)==4 then flags=bAnd(flags,0xfb) writeBytes(PEThread_Flags, flags) end end list.destroy()
// Читаем правила (особенно пункт 1.3 ) Garik66
Ссылка на комментарий
Поделиться на другие сайты
У меня есть следующая функция, которая отлично работает, пока я даю ей действительную команду для выполнения. Как только я даю ему несуществующую команду, сценарий прерывается с сообщением об ошибке.
#!/usr/bin/lua
function exec_com(com)
local ok,res=pcall(function() return io.popen(com) end)
if ok then
local tmp=res:read('*a')
res:close()
return ok,tmp
else
return ok,res
end
end
local st,val=exec_com('uptime')
print('Executed "uptime" with status:'..tostring(st)..' and value:'..val)
st,val=exec_com('zzzz')
print('Executed "zzzz" with status:'..tostring(st)..' and value:'..val)
Когда я запускаю скрипт выше, я получаю следующий вывод:
Executed "uptime" with status:true and value: 18:07:38 up 1 day, 23:00, 3 users, load average: 0.37, 0.20, 0.20
sh: zzzz: command not found
Executed "zzzz" with status:true and value:
Вы можете ясно видеть выше, что функция pcall() по-прежнему сообщает об успехе при выполнении «zzzz», что странно.
Может ли кто-нибудь помочь мне разработать способ перехвата исключения при выполнении несуществующей или неправильно сформированной команды Linux с использованием сценария Lua? Спасибо.
Изменить: повторил мой запрос после получения разъяснения о том, что pcall() работает должным образом, и проблема связана с тем, что popen() не выдает ошибку.
4 ответа
Я использую метод, похожий на ваш «временный обходной путь», но который дает вам больше информации:
local cmd = "uptime"
local f = io.popen(cmd .. " 2>&1 || echo ::ERROR::", "r")
local text = f:read "*a"
if text:find "::ERROR::" then
-- something went wrong
print("error: " .. text)
else
-- all is fine!!
print(text)
end
3
Niccolo M.
15 Июн 2014 в 11:44
Если вы посмотрите на io.popen(), вы увидим, что он всегда возвращает дескриптор файла.
Запускает программу prog в отдельном процессе и возвращает дескриптор файла которые вы можете использовать для чтения данных из этой программы (если режим
"r", по умолчанию) или для записи данных в эту программу (если режим"w").
Поскольку возвращаемый дескриптор файла по-прежнему является допустимым значением для lua, pcall(), ваша локальная функция внутри pcall возвращает истинное значение (и ошибка не распространяется); таким образом, давая вам истинный статус и никаких результатов.
2
hjpotter92
15 Июн 2014 в 05:26
Я придумал свой собственный временный обходной путь, который передает ошибку в /dev/null и определяет успех/неудачу выполненной команды на основе текста, полученного от команды io.popen():read('*a').
Вот мой новый код:
#!/usr/bin/lua
function exec_com(com)
local res=io.popen(com..' 2>/dev/null')
local tmp=res:read('*a')
res:close()
if string.len(tmp)>0 then
return true,tmp
else
return false,'Error executing command: '..com
end
end
local st,val=exec_com('uptime')
print('Executed "uptime" with status:'..tostring(st)..' and value:'..val)
st,val=exec_com('cat /etc/shadow')
print('Executed "cat /etc/shadow" with status:'..tostring(st)..' and value:'..val)
И соответствующий вывод теперь правильный:
Executed "uptime" with status:true and value: 00:10:11 up 2 days, 5:02, 3 users, load average: 0.01, 0.05, 0.19
Executed "cat /etc/shadow" with status:false and value:Error executing command: cat /etc/shadow
В моем примере выше я создаю «общее» описание ошибки. Это промежуточное исправление, и мне все еще интересно увидеть альтернативные решения, которые могут возвращать более осмысленное сообщение об ошибке, описывающее, почему команду не удалось выполнить.
2
Temperage
15 Июн 2014 в 08:19
Вместо того, чтобы тратить время на чтение всего файла в переменную, почему бы просто не проверить, пуст ли файл с помощью f:read(0)?
Local f = io.popen("NotExist")
if not f:read(0) Then
for l in st:lines() do
print(l)
end
else
error("Command Does Not Exist")
end
Из руководства lua: В частном случае функция io.read(0) работает как проверка конца файла: она возвращает пустую строку, если нужно прочитать еще, или ноль в противном случае.
0
Bilgus
13 Авг 2017 в 17:35
Многие игроки World of Warcraft жалуются на появление ошибок LUA при запуске игры. В сообщении таких ошибок обычно указывается, что некоторые из аддонов работают не совсем корректно. Ошибки не препятствуют игровому процессу, однако их постоянное появление в чат-боксе может изрядно раздражать. Windows 7, 8 и 10 — от этих ошибок страдают пользователи всех современных версий ОС Майкрософт.
Содержание
- Что такое LUA?
- Как исправить LUA-ошибку в World of Warcraft
- Метод №1 Перезагрузка игрового интерфейса WoW
- Метод №2 Полный сброс интерфейса WoW и удаление аддон-менеджера
- Метод №3 Сброс переменных кастомной консоли
- Метод №4 Удаление аддона Cartographer (или любого другого устаревшего аддона)
- Метод №5 Отключение сообщений ошибок LUA
Что такое LUA?
Прежде чем мы двинемся дальше, важно понять, что такое LUA и с чем его едят.
LUA — это скриптовый язык программирования, который привносит модулярность в самые разные приложения посредством эмбеддинга. LUA — излюбленный язык моддерского сообщества WoW, а все потому, что он относительно прост в освоении и с его помощью можно разрабатывать действительно впечатляющие модификации.
Ознакомившись с проблемой поближе, мы пришли к выводу, что LUA-ошибки в World of Warcraft могут возникать по следующему ряду причин:
- Глитч/баг в работе аддона/файла интерфейса. Зачастую ошибки LUA возникают в результате некорректно работающих аддонов или файлов, относящихся к игровому интерфейсу WoW. Происходит это из-за «кривого» или неактуального кода модификаций. Начиная от перезагрузки интерфейса и заканчивая обновлением версии мода — решения самые разные.
- «Битые» файлы аддон-менеджера. Если элементарная перезагрузка файлов не помогла, то можно попробовать осуществить полный сброс интерфейса WoW.
- Остаточные переменные кастомной консоли. LUA-ошибку можно ожидать в том случае, если игрок запускает WoW с переменными кастомной консоли, относящимися с аддону, который давно был удален. Чтобы разрешить ситуацию, достаточно избавиться от этих переменных.
- В WoW установлены устаревшие или более не поддерживаемые аддоны. Тут все довольно просто: в актуальной версии WoW установлены модификации, которые давно не обновлялись своими разработчиками или которые более не поддерживаются текущей версией игры. Либо обновляем аддоны, либо полностью удаляем их.
Как исправить LUA-ошибку в World of Warcraft

Метод №1 Перезагрузка игрового интерфейса WoW
Если ошибка возникла в результате бага или ситуации, когда не все аддоны загрузились вместе с WoW, вы должны легко избавиться от нее, выполнив перезагрузку интерфейса посредством консольной команды. Впрочем, стоит сразу предупредить, что ошибка практически наверняка является симптомом какой-то иной проблемы, например, устаревшего аддона, который отказывается нормально работать с текущей сборкой WoW.
Итак, чтобы перезагрузить интерфейс WoW, вам нужно просто открыть игровой чат (чат-бокс) и выполнить в нем следующую команду:
/reload
Заметка: этот метод не работает на самых последних версиях WoW, однако он должен сработать на «ванильной» версии.
Метод №2 Полный сброс интерфейса WoW и удаление аддон-менеджера
Если элементарная перезагрузка интерфейса не устранила ошибку LUA, то мы рекомендуем заняться полным сбросом интерфейса WoW, чтобы избавиться от всего ненужного кода, который мог остаться в вашей игре от ранее удаленного аддона или аддон-менеджера.
Также очень важно избавиться от используемого вами в данный момент (!) аддон-менеджера и файлов аддонов, расположенных в трех основных папках WoW.
- Полностью закройте WoW и ее лаунчер (обязательно проверьте, не осталось ли процессов игры в диспетчере задач);
- нажмите Win+R и выполните appwiz.cpl;
- найдите в списке установленных программ аддон-менеджер WoW;
- кликните ПКМ на менеджер и выберите «Удалить»;
- выполняйте все инструкции перед вами, чтобы избавиться от аддон-менеджера;
- перезагрузите компьютер;
- перейдите в корневую папку World of Warcraft;
- переименуйте следующие три папки:
- Cache→Cache.Damaged
- Interface→Interface.Damaged
- WTF→WTF.Damaged
- закройте все открытые окна и запустите WoW.
Проверьте, перестала ли появляться ошибка LUA или нет.
Метод №3 Сброс переменных кастомной консоли
Перезагрузка/сброс основного интерфейса не произвел желаемого эффекта? Тогда вы должны попробовать осуществить сброс всех переменных кастомной консоли WoW. Подобная процедура сработает только в том случае, если вы ранее устанавливали и играли с аддонами, которые имели параметры, потенциально входящие друг с другом в конфликт.
Вот как производиться сброс переменных консоли WoW:
- запустите WoW и откройте чат-бокс, когда это будет возможно;
- выполните в чат-боксе следующие команды:
- /console Cvar_reset
- /console cvar_defaut
Заметка: игнорируйте любые ошибки о правах после ввода этих команд — все нормально.
- перезапустите WoW и проверьте, исчезла ли ошибка LUA.
Метод №4 Удаление аддона Cartographer (или любого другого устаревшего аддона)
Оказывается, LUA-ошибки можно получить в том случае, если вы запускаете WoW с устаревшими аддонами, которые больше не могут работать с текущей версией игры. Вам необходимо избавиться от всех устаревших аддонов, после чего снова зайти в игру и проверить, была ли решена проблема. Сразу хочется отметить, что каждый аддон удаляется по разному, а поэтому мы не сможем помочь вам с процессом деинсталляции. Интересный факт: зачастую ошибки LUA возникают из-за аддона Cartographer.
Метод №5 Отключение сообщений ошибок LUA
Если у вас не получается избавиться от надоедливых LUA-ошибок (или вы не можете определить причину их появления), то мы рекомендуем не заморачиваться и попросту отключить сообщения о них. Делается это следующим образом:
- запустите WoW и откройте чат-бокс, когда появится такая возможность;
- пропишите в чат-боксе команду /console scriptErrors 0 и нажмите Enter;
- перезапустите WoW.
После этого вы гарантировано перестанете видеть ошибки LUA. Выполните команду /console scriptErrors 1, чтобы снова активировать функцию отображения сообщений об ошибках.
-
#1
Автор темы
ошибка
[ LUA ] Lua error: …ersamirZAppDataRoamingLegendwareScriptswwdwddd.lua:27: attempt to call field ‘register_callback’ (a nil value)
stack traceback:
…ersamirZAppDataRoamingLegendwareScriptswwdwddd.lua:27: in main chunk
-
#2
Попробуй вместо Paint в калбеке on_paint
-
#3
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А так стоп, это мой скрипт с форума легендвара, чё ты там вопрос не задал?
Проблему я вроде решил, залил на форум, но пока не юзай, ибо приколясы легендвара могут быть так же влиятельны.
-
#4
+ ты там не там функцию написал щас пк включу помогу
А так стоп, это мой скрипт с форума легендвара, чё ты там вопрос не задал?
Проблему я вроде решил, залил на форум, но пока не юзай, ибо приколясы легендвара могут быть так же влиятельны.
Тебе путь ошибки ничего не говорит?
-
#6
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Конкретно для лв — нет
Сам основной код — да хуй знает откуда он вообще
+ ты там не там функцию написал щас пк включу помогу
Причем тут функция, если проблема в том, что я аутдейтед ссылку залил, там синтаксисы неверные..
-
#7
Портануть любой дурак сможет. Не принимай кредиты скрипта на себя если не ты его сделал
-
#8
Конкретно для лв — нет
Сам основной код — да хуй знает откуда он вообщеПричем тут функция, если проблема в том, что я аутдейтед ссылку залил, там синтаксисы неверные..
Чел ты даже писал на какой софт когда в ошибке написано /Legendware
-
#9
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Чел ты даже писал на какой софт когда в ошибке написано /Legendware
Чё, причем тут вообще код ошибки и надпись легендвар, когда вместо register_callback нужно написать add_callback и заменить paint на on_paint..
-
#10
Попробуй вместо Paint в калбеке on_paint
Ладно так и расскажешь