Вопросы по Lua скриптингу

Общая тема для вопросов по разработке скриптов на языке программирования Lua, в частности под MoonLoader.
  • Задавая вопрос, убедитесь, что его нет в списке частых вопросов и что на него ещё не отвечали (воспользуйтесь поиском).
  • Поищите ответ в теме посвященной разработке Lua скриптов в MoonLoader
  • Отвечая, убедитесь, что ваш ответ корректен.
  • Старайтесь как можно точнее выразить мысль, а если проблема связана с кодом, то обязательно прикрепите его к сообщению, используя блок [code=lua]здесь мог бы быть ваш код[/code].
  • Если вопрос связан с MoonLoader-ом первым делом желательно поискать решение на wiki.

Частые вопросы

Как научиться писать скрипты? С чего начать?
Информация - Гайд - Всё о Lua скриптинге для MoonLoader(https://blast.hk/threads/22707/)
Как вывести текст на русском? Вместо русского текста у меня какие-то каракули.
Изменить кодировку файла скрипта на Windows-1251. В Atom: комбинация клавиш Ctrl+Shift+U, в Notepad++: меню Кодировки -> Кодировки -> Кириллица -> Windows-1251.
Как получить транспорт, в котором сидит игрок?
Lua:
local veh = storeCarCharIsInNoSave(PLAYER_PED)
Как получить свой id или id другого игрока?
Lua:
local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получить свой ид
local _, id = sampGetPlayerIdByCharHandle(ped) -- получить ид другого игрока. ped - это хендл персонажа
Как проверить, что строка содержит какой-то текст?
Lua:
if string.find(str, 'текст', 1, true) then
-- строка str содержит "текст"
end
Как эмулировать нажатие игровой клавиши?
Lua:
local game_keys = require 'game.keys' -- где-нибудь в начале скрипта вне функции main

setGameKeyState(game_keys.player.FIREWEAPON, -1) -- будет сэмулировано нажатие клавиши атаки
Все иды клавиш находятся в файле moonloader/lib/game/keys.lua.
Подробнее о функции setGameKeyState здесь: lua - setgamekeystate | BlastHack — DEV_WIKI(https://www.blast.hk/wiki/lua:setgamekeystate)
Как получить id другого игрока, в которого целюсь я?
Lua:
local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE) -- получить хендл персонажа, в которого целится игрок
if valid and doesCharExist(ped) then -- если цель есть и персонаж существует
  local result, id = sampGetPlayerIdByCharHandle(ped) -- получить samp-ид игрока по хендлу персонажа
  if result then -- проверить, прошло ли получение ида успешно
    -- здесь любые действия с полученным идом игрока
  end
end
Как зарегистрировать команду чата SAMP?
Lua:
-- До бесконечного цикла/задержки
sampRegisterChatCommand("mycommand", function (param)
     -- param будет содержать весь текст введенный после команды, чтобы разделить его на аргументы используйте string.match()
    sampAddChatMessage("MyCMD", -1)
end)
Крашит игру при вызове sampSendChat. Как это исправить?
Это происходит из-за бага в SAMPFUNCS, когда производится попытка отправки пакета определенными функциями изнутри события исходящих RPC и пакетов. Исправления для этого бага нет, но есть способ не провоцировать его. Вызов sampSendChat изнутри обработчика исходящих RPC/пакетов нужно обернуть в скриптовый поток с нулевой задержкой:
Lua:
function onSendRpc(id)
  -- крашит:
  -- sampSendChat('Send RPC: ' .. id)

  -- норм:
  lua_thread.create(function()
    wait(0)
    sampSendChat('Send RPC: ' .. id)
  end)
end
 
Последнее редактирование:

[SA ARZ]

Известный
390
8
0 реакции на blackup - ничего не происходит.
в чем может быть проблема?

Lua:
    sampRegisterChatCommand('blackup', function()
        local path = getGameDirectory() .. '\\moonloader\\resource\\MedicHelper\\BlackList\\blacklist.txt'
        downloadUrlToFile('https://forum.advance-rp.ru/threads/ministerstvo-zdravooxranenija-chernyj-spisok-ministerstva-zdravooxranenija.1815138/', path, function(id, status, p1, p2)
        if status == dlstatus.STATUS_ENDDOWNLOADDATA then
            print('[Blacklist]: Downloaded, preparing..')
            sampAddChatMessage("Status Black:{F5FFFA} Update BlackList ...", 0xFFFF00)
            lua_thread.create(function()
                wait(3000)
                local f = io.open(path, 'r')
                local blackF = f:read('*a')
                f:close()
          
                if f then
                    print('[Blacklist]: First preparing completed')
                    blackF = blackF:gsub('<.->', '')
                    blackList = io.open(path, 'w')
                    for w in blackF:gmatch('=ZZ=(.-)=ZZEND=') do
                        blackList:write(w)
                    end
                    blackList:close()
                          
                    format_file()
                    print('[Blacklist]: Second preparing completed')
                    print('[Blacklist]: Update completed')
                    sampAddChatMessage("Status Black:{F5FFFA} Update BlackList completed", 0xFFFF00)
                else
                    print('[Blacklist]: Preparing error, please, /try again later.')
                end
            end)
        end
        end)
    end)
Код:
[22:58:26.913785] (system)    Session started.
[22:58:26.915785] (debug)    Module handle: 51B40000

MoonLoader v.026.5-beta loaded.
Developers: FYP, hnnssy, EvgeN 1137

Copyright (c) 2016, BlastHack Team
https://www.blast.hk/moonloader/

[22:58:26.915785] (info)    Working directory: F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader
[22:58:26.915785] (debug)    FP Control: 0009001F
[22:58:26.915785] (debug)    Game: GTA SA 1.0.0.0 US
[22:58:26.915785] (system)    Installing pre-game hooks...
[22:58:26.920785] (system)    Hooks installed.
[22:58:28.844815] (debug)    Initializing opcode handler table
[22:58:28.844815] (debug)    package.path = F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\lib\?.lua;F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\lib\?\init.lua;F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\?.lua;F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\?\init.lua;.\?.lua;F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\lib\?.luac;F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\lib\?\init.luac;F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\?.luac;F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\?\init.luac;.\?.luac
[22:58:28.844815] (debug)    package.cpath = F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\lib\?.dll;
[22:58:28.846815] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\AutoReboot.lua'...
[22:58:28.847815] (debug)    New script: 06692E54
[22:58:28.849815] (system)    ML-AutoReboot: Loaded successfully.
[22:58:28.849815] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\GroupColor.lua'...
[22:58:28.850815] (debug)    New script: 06610584
[22:58:28.867816] (system)    GroupColor.lua: Loaded successfully.
[22:58:28.867816] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\picturehud.lua'...
[22:58:28.867816] (debug)    New script: 0661070C
[22:58:28.892818] (system)    picturehud.lua: Loaded successfully.
[22:58:28.892818] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\reload_all.lua'...
[22:58:28.892818] (debug)    New script: 06610894
[22:58:28.894818] (system)    ML-ReloadAll: Loaded successfully.
[22:58:28.894818] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\scriptManager.lua'...
[22:58:28.894818] (debug)    New script: 06610BA4
[22:58:28.902818] (system)    ScriptManager: Loaded successfully.
[22:58:28.902818] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\SF Integration.lua'...
[22:58:28.902818] (debug)    New script: 06610D2C
[22:58:28.907818] (system)    SAMPFUNCS Integration: Loaded successfully.
[22:58:28.907818] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\USMoH.lua'...
[22:58:28.907818] (debug)    New script: 066B122C
[22:58:29.601858] (system)    MedicHelper: Loaded successfully.
[22:58:44.433706] (system)    Installing post-load hooks...
[22:58:44.433706] (system)    Hooks installed.
[22:58:58.255497] (script)    MedicHelper: File yes, good game. [ MedicHelper ]
[22:58:59.213552] (script)    MedicHelper: File yes, good game. [ servers ]
[22:59:00.217609] (script)    MedicHelper: File yes, good game. [ Files ]
[22:59:01.235667] (script)    MedicHelper: Начинаем инициализацию клавиш
[22:59:01.235667] (script)    MedicHelper: Регистрируем клавиши
[22:59:01.235667] (script)    MedicHelper: Инициализация клавиш завершена
[22:59:03.277784] (script)    MedicHelper: Список лидеров подргружен
[22:59:12.722324] (system)    MedicHelper: Script terminated. (066B122C)
[23:00:56.116238] (script)    ML-AutoReboot: Reloading "GroupColor.lua"...
[23:01:00.263475] (system)    GroupColor.lua: Script terminated. (06610584)
[23:01:00.264476] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\GroupColor.lua'...
[23:01:00.265476] (debug)    New script: 06610584
[23:01:00.283477] (system)    GroupColor.lua: Loaded successfully.
[23:02:02.757050] (script)    ML-AutoReboot: Reloading "GroupColor.lua"...
[23:02:06.719277] (system)    GroupColor.lua: Script terminated. (06610584)
[23:02:06.720277] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\GroupColor.lua'...
[23:02:06.721277] (debug)    New script: 06610584
[23:02:06.738278] (system)    GroupColor.lua: Loaded successfully.
[23:02:43.461378] (system)    ML-AutoReboot: Script terminated. (06692E54)
[23:02:43.461378] (system)    picturehud.lua: Script terminated. (0661070C)
[23:02:43.463378] (system)    ML-ReloadAll: Script terminated. (06610894)
[23:02:43.464378] (system)    ScriptManager: Script terminated. (06610BA4)
[23:02:43.465378] (system)    SAMPFUNCS Integration: Script terminated. (06610D2C)
[23:02:43.466378] (system)    GroupColor.lua: Script terminated. (06610584)
[23:02:43.468378] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\AutoReboot.lua'...
[23:02:43.468378] (debug)    New script: 06610584
[23:02:43.470379] (system)    ML-AutoReboot: Loaded successfully.
[23:02:43.470379] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\GroupColor.lua'...
[23:02:43.470379] (debug)    New script: 06610D2C
[23:02:43.486380] (system)    GroupColor.lua: Loaded successfully.
[23:02:43.486380] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\picturehud.lua'...
[23:02:43.486380] (debug)    New script: 06610BA4
[23:02:43.503380] (system)    picturehud.lua: Loaded successfully.
[23:02:43.503380] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\reload_all.lua'...
[23:02:43.503380] (debug)    New script: 06610894
[23:02:43.505381] (system)    ML-ReloadAll: Loaded successfully.
[23:02:43.505381] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\scriptManager.lua'...
[23:02:43.505381] (debug)    New script: 0661070C
[23:02:43.514381] (system)    ScriptManager: Loaded successfully.
[23:02:43.514381] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\SF Integration.lua'...
[23:02:43.514381] (debug)    New script: 066103FC
[23:02:43.519381] (system)    SAMPFUNCS Integration: Loaded successfully.
[23:02:43.519381] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\USMoD.lua'...
[23:02:43.520381] (debug)    New script: 0660F014
[23:02:44.261424] (system)    U.S MoD - Helper: Loaded successfully.
[23:02:44.261424] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\USMoH.lua'...
[23:02:44.261424] (debug)    New script: 066B2DBC
[23:02:44.925462] (system)    MedicHelper: Loaded successfully.
[23:02:44.930462] (script)    MedicHelper: File yes, good game. [ MedicHelper ]
[23:02:44.980465] (script)    MedicHelper: File yes, good game. [ servers ]
[23:02:45.946520] (script)    MedicHelper: File yes, good game. [ Files ]
[23:02:46.963578] (script)    MedicHelper: Начинаем инициализацию клавиш
[23:02:46.963578] (script)    MedicHelper: Регистрируем клавиши
[23:02:46.963578] (script)    MedicHelper: Инициализация клавиш завершена
[23:02:48.465664] (script)    U.S MoD - Helper: File yes, good game. [ U.S MoD ]
[23:02:48.465664] (script)    U.S MoD - Helper: File yes, good game. [ servers ]
[23:02:48.465664] (script)    U.S MoD - Helper: File yes, good game. [ Files ]
[23:02:48.488666] (script)    U.S MoD - Helper: Начинаем инициализацию клавиш
[23:02:48.488666] (script)    U.S MoD - Helper: Регистрируем клавиши
[23:02:48.488666] (script)    U.S MoD - Helper: Инициализация клавиш завершена
[23:02:48.629674] (script)    U.S MoD - Helper: 27 | {0099CC}Меню игрока
[23:02:48.765681] (script)    U.S MoD - Helper: 0 | {FFCD00}Статистика игрока
[23:02:49.488723] (script)    MedicHelper: Список лидеров подргружен
[23:02:50.913804] (script)    U.S MoD - Helper: 27 | {0099CC}Меню игрока
[23:02:51.069813] (script)    U.S MoD - Helper: 94 | {FFCD00}Дополнительные возможности (донат)
[23:02:51.093815] (script)    U.S MoD - Helper: [ Check status VIP ] 969 | ID: 3595865798
[23:02:51.548841] (system)    MedicHelper: Script terminated. (066B2DBC)
[23:02:52.916919] (script)    U.S MoD - Helper: 424 | {FFCD00}Лидеры
[23:02:52.917919] (script)    U.S MoD - Helper: Список лидеров подргружен
[23:03:43.730825] (script)    U.S MoD - Helper: [ phoneBookAll ] Уже есть номер в бд
[23:04:14.188567] (system)    U.S MoD - Helper: Script terminated. (0660F014)
[23:04:14.965612] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\USMoD.lua'...
[23:04:14.966612] (debug)    New script: 0660F014
[23:04:15.650651] (system)    U.S MoD - Helper: Loaded successfully.
[23:04:19.983899] (script)    U.S MoD - Helper: File yes, good game. [ U.S MoD ]
[23:04:19.983899] (script)    U.S MoD - Helper: File yes, good game. [ servers ]
[23:04:19.983899] (script)    U.S MoD - Helper: File yes, good game. [ Files ]
[23:04:19.985899] (script)    U.S MoD - Helper: Начинаем инициализацию клавиш
[23:04:19.985899] (script)    U.S MoD - Helper: Регистрируем клавиши
[23:04:19.985899] (script)    U.S MoD - Helper: Инициализация клавиш завершена
[23:04:20.112906] (script)    U.S MoD - Helper: 27 | {0099CC}Меню игрока
[23:04:20.240914] (script)    U.S MoD - Helper: 0 | {FFCD00}Статистика игрока
[23:04:22.370035] (script)    U.S MoD - Helper: 27 | {0099CC}Меню игрока
[23:04:22.464041] (script)    U.S MoD - Helper: [ Check status VIP ] 969 | ID: 3595865798
[23:04:22.609049] (script)    U.S MoD - Helper: 94 | {FFCD00}Дополнительные возможности (донат)
[23:04:24.393151] (script)    U.S MoD - Helper: 424 | {FFCD00}Лидеры
[23:04:24.394151] (script)    U.S MoD - Helper: Список лидеров подргружен
[23:04:32.907638] (script)    U.S MoD - Helper: 0 | {FFCD00}Прошлые имена Randall_Harley
[23:05:19.073279] (script)    ML-AutoReboot: Loading "F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\USMoH.lua"...
[23:05:19.074279] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\USMoH.lua'...
[23:05:19.074279] (debug)    New script: 22096AE4
[23:05:19.778319] (system)    MedicHelper: Loaded successfully.
[23:05:19.787319] (script)    MedicHelper: File yes, good game. [ MedicHelper ]
[23:05:23.918556] (script)    U.S MoD - Helper: [ phoneBookAll ] Уже есть номер в бд
[23:05:24.777605] (script)    MedicHelper: File yes, good game. [ servers ]
[23:05:25.789663] (script)    MedicHelper: File yes, good game. [ Files ]
[23:05:26.803721] (script)    MedicHelper: Начинаем инициализацию клавиш
[23:05:26.803721] (script)    MedicHelper: Регистрируем клавиши
[23:05:26.803721] (script)    MedicHelper: Инициализация клавиш завершена
[23:05:26.947729] (script)    U.S MoD - Helper: 27 | {0099CC}Меню игрока
[23:05:27.258747] (script)    U.S MoD - Helper: 0 | {FFCD00}Статистика игрока
[23:05:28.457815] (system)    ML-AutoReboot: Script terminated. (06610584)
[23:05:28.458815] (system)    GroupColor.lua: Script terminated. (06610D2C)
[23:05:28.459815] (system)    picturehud.lua: Script terminated. (06610BA4)
[23:05:28.460816] (system)    ML-ReloadAll: Script terminated. (06610894)
[23:05:28.461816] (system)    ScriptManager: Script terminated. (0661070C)
[23:05:28.463816] (system)    SAMPFUNCS Integration: Script terminated. (066103FC)
[23:05:28.464816] (system)    U.S MoD - Helper: Script terminated. (0660F014)
[23:05:28.474816] (system)    MedicHelper: Script terminated. (22096AE4)
[23:05:28.484817] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\AutoReboot.lua'...
[23:05:28.484817] (debug)    New script: 22096AE4
[23:05:28.487817] (system)    ML-AutoReboot: Loaded successfully.
[23:05:28.487817] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\GroupColor.lua'...
[23:05:28.487817] (debug)    New script: 22096C6C
[23:05:28.502818] (system)    GroupColor.lua: Loaded successfully.
[23:05:28.502818] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\picturehud.lua'...
[23:05:28.502818] (debug)    New script: 2209664C
[23:05:28.518819] (system)    picturehud.lua: Loaded successfully.
[23:05:28.518819] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\reload_all.lua'...
[23:05:28.519819] (debug)    New script: 0660F014
[23:05:28.520819] (system)    ML-ReloadAll: Loaded successfully.
[23:05:28.521819] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\scriptManager.lua'...
[23:05:28.521819] (debug)    New script: 066103FC
[23:05:28.528819] (system)    ScriptManager: Loaded successfully.
[23:05:28.529819] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\SF Integration.lua'...
[23:05:28.529819] (debug)    New script: 0661070C
[23:05:28.534820] (system)    SAMPFUNCS Integration: Loaded successfully.
[23:05:28.534820] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\USMoH.lua'...
[23:05:28.534820] (debug)    New script: 06610894
[23:05:29.215859] (system)    MedicHelper: Loaded successfully.
[23:05:29.220859] (script)    MedicHelper: File yes, good game. [ MedicHelper ]
[23:05:29.463873] (script)    MedicHelper: File yes, good game. [ servers ]
[23:05:30.463930] (script)    MedicHelper: File yes, good game. [ Files ]
[23:05:31.473988] (script)    MedicHelper: Начинаем инициализацию клавиш
[23:05:31.473988] (script)    MedicHelper: Регистрируем клавиши
[23:05:31.473988] (script)    MedicHelper: Инициализация клавиш завершена
[23:05:33.556107] (script)    MedicHelper: Список лидеров подргружен
[23:05:34.214145] (script)    MedicHelper: update: 1 / 9
[23:05:35.020191] (script)    MedicHelper: update: 2 / 9
[23:05:35.821236] (script)    MedicHelper: update: 3 / 9
[23:05:36.622282] (script)    MedicHelper: update: 4 / 9
[23:05:37.429328] (script)    MedicHelper: update: 5 / 9
[23:05:38.232374] (script)    MedicHelper: update: 6 / 9
[23:05:39.047421] (script)    MedicHelper: update: 7 / 9
[23:05:54.540307] (script)    ML-AutoReboot: Reloading "GroupColor.lua"...
[23:05:54.540307] (script)    MedicHelper: update: 8 / 9
[23:05:58.647542] (system)    GroupColor.lua: Script terminated. (22096C6C)
[23:05:58.648542] (system)    Loading script 'F:\Games\GTA\GTA San Andreas - копия (3) - копия\moonloader\GroupColor.lua'...
[23:05:58.648542] (debug)    New script: 22096C6C
[23:05:58.664543] (system)    GroupColor.lua: Loaded successfully.
[23:05:59.290579] (script)    MedicHelper: update: 9 / 9