Вопросы по 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
 
Последнее редактирование:

|| NN - NoName ||

Известный
1,049
635
Всё равно не загружает. Ты не знаешь, если ты скрипт так загружаешь - нужно ли как-то менять импорт библиотек(в скрипте который загружаешь)?

определение квадра:
function()
    local squares = {"А", "Б", "В", "Г", "Д", "Ж", "З", "И", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Я",
    }
    local xCoord, yCoord = getCharCoordinates(playerPed)
    return squares[math.ceil((yCoord * - 1 + 3000) / 250)] .."-".. math.ceil((xCoord + 3000) / 250)
end
город:
function()
    local cityNames = {'Los Santos', 'San Fierro', 'Las Venturas'}
    return cityNames[getCityPlayerIsIn(PLAYER_HANDLE)]
end

район:
function calculateZoneRU(x, y, z)
    local streets = {
        {"Загородный клуб «Ависпа»", -2667.810, -302.135, -28.831, -2646.400, -262.320, 71.169},
        {"Международный аэропорт Истер-Бэй", -1315.420, -405.388, 15.406, -1264.400, -209.543, 25.406},
        {"Загородный клуб «Ависпа»", -2550.040, -355.493, 0.000, -2470.040, -318.493, 39.700},
        {"Международный аэропорт Истер-Бэй", -1490.330, -209.543, 15.406, -1264.400, -148.388, 25.406},
        {"Гарсия", -2395.140, -222.589, -5.3, -2354.090, -204.792, 200.000},
        {"Шейди-Кэбин", -1632.830, -2263.440, -3.0, -1601.330, -2231.790, 200.000},
        {"Восточный Лос-Сантос", 2381.680, -1494.030, -89.084, 2421.030, -1454.350, 110.916},
        {"Грузовое депо Лас-Вентураса", 1236.630, 1163.410, -89.084, 1277.050, 1203.280, 110.916},
        {"Пересечение Блэкфилд", 1277.050, 1044.690, -89.084, 1315.350, 1087.630, 110.916},
        {"Загородный клуб «Ависпа»", -2470.040, -355.493, 0.000, -2270.040, -318.493, 46.100},
        {"Темпл", 1252.330, -926.999, -89.084, 1357.000, -910.170, 110.916},
        {"Станция «Юнити»", 1692.620, -1971.800, -20.492, 1812.620, -1932.800, 79.508},
        {"Грузовое депо Лас-Вентураса", 1315.350, 1044.690, -89.084, 1375.600, 1087.630, 110.916},
        {"Лос-Флорес", 2581.730, -1454.350, -89.084, 2632.830, -1393.420, 110.916},
        {"Казино «Морская звезда»", 2437.390, 1858.100, -39.084, 2495.090, 1970.850, 60.916},
        {"Химзавод Истер-Бэй", -1132.820, -787.391, 0.000, -956.476, -768.027, 200.000},
        {"Деловой район", 1370.850, -1170.870, -89.084, 1463.900, -1130.850, 110.916},
        {"Восточная Эспаланда", -1620.300, 1176.520, -4.5, -1580.010, 1274.260, 200.000},
        {"Станция «Маркет»", 787.461, -1410.930, -34.126, 866.009, -1310.210, 65.874},
        {"Станция «Линден»", 2811.250, 1229.590, -39.594, 2861.250, 1407.590, 60.406},
        {"Пересечение Монтгомери", 1582.440, 347.457, 0.000, 1664.620, 401.750, 200.000},
        {"Мост «Фредерик»", 2759.250, 296.501, 0.000, 2774.250, 594.757, 200.000},
        {"Станция «Йеллоу-Белл»", 1377.480, 2600.430, -21.926, 1492.450, 2687.360, 78.074},
        {"Деловой район", 1507.510, -1385.210, 110.916, 1582.550, -1325.310, 335.916},
        {"Джефферсон", 2185.330, -1210.740, -89.084, 2281.450, -1154.590, 110.916},
        {"Малхолланд", 1318.130, -910.170, -89.084, 1357.000, -768.027, 110.916},
        {"Загородный клуб «Ависпа»", -2361.510, -417.199, 0.000, -2270.040, -355.493, 200.000},
        {"Джефферсон", 1996.910, -1449.670, -89.084, 2056.860, -1350.720, 110.916},
        {"Западаная автострада Джулиус", 1236.630, 2142.860, -89.084, 1297.470, 2243.230, 110.916},
        {"Джефферсон", 2124.660, -1494.030, -89.084, 2266.210, -1449.670, 110.916},
        {"Северная автострада Джулиус", 1848.400, 2478.490, -89.084, 1938.800, 2553.490, 110.916},
        {"Родео", 422.680, -1570.200, -89.084, 466.223, -1406.050, 110.916},
        {"Станция «Крэнберри»", -2007.830, 56.306, 0.000, -1922.000, 224.782, 100.000},
        {"Деловой район", 1391.050, -1026.330, -89.084, 1463.900, -926.999, 110.916},
        {"Западный Рэдсэндс", 1704.590, 2243.230, -89.084, 1777.390, 2342.830, 110.916},
        {"Маленькая Мексика", 1758.900, -1722.260, -89.084, 1812.620, -1577.590, 110.916},
        {"Пересечение Блэкфилд", 1375.600, 823.228, -89.084, 1457.390, 919.447, 110.916},
        {"Международный аэропорт Лос-Сантос", 1974.630, -2394.330, -39.084, 2089.000, -2256.590, 60.916},
        {"Бекон-Хилл", -399.633, -1075.520, -1.489, -319.033, -977.516, 198.511},
        {"Родео", 334.503, -1501.950, -89.084, 422.680, -1406.050, 110.916},
        {"Ричман", 225.165, -1369.620, -89.084, 334.503, -1292.070, 110.916},
        {"Деловой район", 1724.760, -1250.900, -89.084, 1812.620, -1150.870, 110.916},
        {"Стрип", 2027.400, 1703.230, -89.084, 2137.400, 1783.230, 110.916},
        {"Деловой район", 1378.330, -1130.850, -89.084, 1463.900, -1026.330, 110.916},
        {"Пересечение Блэкфилд", 1197.390, 1044.690, -89.084, 1277.050, 1163.390, 110.916},
        {"Конференц Центр", 1073.220, -1842.270, -89.084, 1323.900, -1804.210, 110.916},
        {"Монтгомери", 1451.400, 347.457, -6.1, 1582.440, 420.802, 200.000},
        {"Долина Фостер", -2270.040, -430.276, -1.2, -2178.690, -324.114, 200.000},
        {"Часовня Блэкфилд", 1325.600, 596.349, -89.084, 1375.600, 795.010, 110.916},
        {"Международный аэропорт Лос-Сантос", 2051.630, -2597.260, -39.084, 2152.450, -2394.330, 60.916},
        {"Малхолланд", 1096.470, -910.170, -89.084, 1169.130, -768.027, 110.916},
        {"Поле для гольфа «Йеллоу-Белл»", 1457.460, 2723.230, -89.084, 1534.560, 2863.230, 110.916},
        {"Стрип", 2027.400, 1783.230, -89.084, 2162.390, 1863.230, 110.916},
        {"Джефферсон", 2056.860, -1210.740, -89.084, 2185.330, -1126.320, 110.916},
        {"Малхолланд", 952.604, -937.184, -89.084, 1096.470, -860.619, 110.916},
        {"Альдеа-Мальвада", -1372.140, 2498.520, 0.000, -1277.590, 2615.350, 200.000},
        {"Лас-Колинас", 2126.860, -1126.320, -89.084, 2185.330, -934.489, 110.916},
        {"Лас-Колинас", 1994.330, -1100.820, -89.084, 2056.860, -920.815, 110.916},
        {"Ричман", 647.557, -954.662, -89.084, 768.694, -860.619, 110.916},
        {"Грузовое депо Лас-Вентураса", 1277.050, 1087.630, -89.084, 1375.600, 1203.280, 110.916},
        {"Северная автострада Джулиус", 1377.390, 2433.230, -89.084, 1534.560, 2507.230, 110.916},
        {"Уиллоуфилд", 2201.820, -2095.000, -89.084, 2324.000, -1989.900, 110.916},
        {"Северная автострада Джулиус", 1704.590, 2342.830, -89.084, 1848.400, 2433.230, 110.916},
        {"Темпл", 1252.330, -1130.850, -89.084, 1378.330, -1026.330, 110.916},
        {"Маленькая Мексика", 1701.900, -1842.270, -89.084, 1812.620, -1722.260, 110.916},
        {"Квинс", -2411.220, 373.539, 0.000, -2253.540, 458.411, 200.000},
        {"Аэропорт Лас-Вентурас", 1515.810, 1586.400, -12.500, 1729.950, 1714.560, 87.500},
        {"Ричман", 225.165, -1292.070, -89.084, 466.223, -1235.070, 110.916},
        {"Темпл", 1252.330, -1026.330, -89.084, 1391.050, -926.999, 110.916},
        {"Восточный Лос-Сантос", 2266.260, -1494.030, -89.084, 2381.680, -1372.040, 110.916},
        {"Восточная автострада Джулиус", 2623.180, 943.235, -89.084, 2749.900, 1055.960, 110.916},
        {"Уиллоуфилд", 2541.700, -1941.400, -89.084, 2703.580, -1852.870, 110.916},
        {"Лас-Колинас", 2056.860, -1126.320, -89.084, 2126.860, -920.815, 110.916},
        {"Восточная автострада Джулиус", 2625.160, 2202.760, -89.084, 2685.160, 2442.550, 110.916},
        {"Родео", 225.165, -1501.950, -89.084, 334.503, -1369.620, 110.916},
        {"Лас-Брухас", -365.167, 2123.010, -3.0, -208.570, 2217.680, 200.000},
        {"Восточная автострада Джулиус", 2536.430, 2442.550, -89.084, 2685.160, 2542.550, 110.916},
        {"Родео", 334.503, -1406.050, -89.084, 466.223, -1292.070, 110.916},
        {"Вайнвуд", 647.557, -1227.280, -89.084, 787.461, -1118.280, 110.916},
        {"Родео", 422.680, -1684.650, -89.084, 558.099, -1570.200, 110.916},
        {"Северная автострада Джулиус", 2498.210, 2542.550, -89.084, 2685.160, 2626.550, 110.916},
        {"Деловой район", 1724.760, -1430.870, -89.084, 1812.620, -1250.900, 110.916},
        {"Родео", 225.165, -1684.650, -89.084, 312.803, -1501.950, 110.916},
        {"Джефферсон", 2056.860, -1449.670, -89.084, 2266.210, -1372.040, 110.916},
        {"Хэмптон-Барнс", 603.035, 264.312, 0.000, 761.994, 366.572, 200.000},
        {"Темпл", 1096.470, -1130.840, -89.084, 1252.330, -1026.330, 110.916},
        {"Мост «Кинкейд»", -1087.930, 855.370, -89.084, -961.950, 986.281, 110.916},
        {"Пляж «Верона»", 1046.150, -1722.260, -89.084, 1161.520, -1577.590, 110.916},
        {"Коммерческий район", 1323.900, -1722.260, -89.084, 1440.900, -1577.590, 110.916},
        {"Малхолланд", 1357.000, -926.999, -89.084, 1463.900, -768.027, 110.916},
        {"Родео", 466.223, -1570.200, -89.084, 558.099, -1385.070, 110.916},
        {"Малхолланд", 911.802, -860.619, -89.084, 1096.470, -768.027, 110.916},
        {"Малхолланд", 768.694, -954.662, -89.084, 952.604, -860.619, 110.916},
        {"Южная автострада Джулиус", 2377.390, 788.894, -89.084, 2537.390, 897.901, 110.916},
        {"Айдлвуд", 1812.620, -1852.870, -89.084, 1971.660, -1742.310, 110.916},
        {"Океанские доки", 2089.000, -2394.330, -89.084, 2201.820, -2235.840, 110.916},
        {"Коммерческий район", 1370.850, -1577.590, -89.084, 1463.900, -1384.950, 110.916},
        {"Северная автострада Джулиус", 2121.400, 2508.230, -89.084, 2237.400, 2663.170, 110.916},
        {"Темпл", 1096.470, -1026.330, -89.084, 1252.330, -910.170, 110.916},
        {"Глен Парк", 1812.620, -1449.670, -89.084, 1996.910, -1350.720, 110.916},
        {"Международный аэропорт Истер-Бэй", -1242.980, -50.096, 0.000, -1213.910, 578.396, 200.000},
        {"Мост «Мартин»", -222.179, 293.324, 0.000, -122.126, 476.465, 200.000},
        {"Стрип", 2106.700, 1863.230, -89.084, 2162.390, 2202.760, 110.916},
        {"Уиллоуфилд", 2541.700, -2059.230, -89.084, 2703.580, -1941.400, 110.916},
        {"Марина", 807.922, -1577.590, -89.084, 926.922, -1416.250, 110.916},
        {"Аэропорт Лас-Вентурас", 1457.370, 1143.210, -89.084, 1777.400, 1203.280, 110.916},
        {"Айдлвуд", 1812.620, -1742.310, -89.084, 1951.660, -1602.310, 110.916},
        {"Восточная Эспаланда", -1580.010, 1025.980, -6.1, -1499.890, 1274.260, 200.000},
        {"Деловой район", 1370.850, -1384.950, -89.084, 1463.900, -1170.870, 110.916},
        {"Мост «Мако»", 1664.620, 401.750, 0.000, 1785.140, 567.203, 200.000},
        {"Родео", 312.803, -1684.650, -89.084, 422.680, -1501.950, 110.916},
        {"Площадь «Першинг»", 1440.900, -1722.260, -89.084, 1583.500, -1577.590, 110.916},
        {"Малхолланд", 687.802, -860.619, -89.084, 911.802, -768.027, 110.916},
        {"Мост «Гант»", -2741.070, 1490.470, -6.1, -2616.400, 1659.680, 200.000},
        {"Лас-Колинас", 2185.330, -1154.590, -89.084, 2281.450, -934.489, 110.916},
        {"Малхолланд", 1169.130, -910.170, -89.084, 1318.130, -768.027, 110.916},
        {"Северная автострада Джулиус", 1938.800, 2508.230, -89.084, 2121.400, 2624.230, 110.916},
        {"Коммерческий район", 1667.960, -1577.590, -89.084, 1812.620, -1430.870, 110.916},
        {"Родео", 72.648, -1544.170, -89.084, 225.165, -1404.970, 110.916},
        {"Рока-Эскаланте", 2536.430, 2202.760, -89.084, 2625.160, 2442.550, 110.916},
        {"Родео", 72.648, -1684.650, -89.084, 225.165, -1544.170, 110.916},
        {"Маркет", 952.663, -1310.210, -89.084, 1072.660, -1130.850, 110.916},
        {"Лас-Колинас", 2632.740, -1135.040, -89.084, 2747.740, -945.035, 110.916},
        {"Малхолланд", 861.085, -674.885, -89.084, 1156.550, -600.896, 110.916},
        {"Кингс", -2253.540, 373.539, -9.1, -1993.280, 458.411, 200.000},
        {"Восточный Рэдсэндс", 1848.400, 2342.830, -89.084, 2011.940, 2478.490, 110.916},
        {"Деловой район", -1580.010, 744.267, -6.1, -1499.890, 1025.980, 200.000},
        {"Конференц Центр", 1046.150, -1804.210, -89.084, 1323.900, -1722.260, 110.916},
        {"Ричман", 647.557, -1118.280, -89.084, 787.461, -954.662, 110.916},
        {"Оушен-Флэтс", -2994.490, 277.411, -9.1, -2867.850, 458.411, 200.000},
        {"Колледж Грингласс", 964.391, 930.890, -89.084, 1166.530, 1044.690, 110.916},
        {"Глен Парк", 1812.620, -1100.820, -89.084, 1994.330, -973.380, 110.916},
        {"Грузовое депо Лас-Вентураса", 1375.600, 919.447, -89.084, 1457.370, 1203.280, 110.916},
        {"Регьюлар-Том", -405.770, 1712.860, -3.0, -276.719, 1892.750, 200.000},
        {"Пляж «Верона»", 1161.520, -1722.260, -89.084, 1323.900, -1577.590, 110.916},
        {"Восточный Лос-Сантос", 2281.450, -1372.040, -89.084, 2381.680, -1135.040, 110.916},
        {"Дворец Калигулы", 2137.400, 1703.230, -89.084, 2437.390, 1783.230, 110.916},
        {"Айдлвуд", 1951.660, -1742.310, -89.084, 2124.660, -1602.310, 110.916},
        {"Пилигрим", 2624.400, 1383.230, -89.084, 2685.160, 1783.230, 110.916},
        {"Айдлвуд", 2124.660, -1742.310, -89.084, 2222.560, -1494.030, 110.916},
        {"Квинс", -2533.040, 458.411, 0.000, -2329.310, 578.396, 200.000},
        {"Деловой район", -1871.720, 1176.420, -4.5, -1620.300, 1274.260, 200.000},
        {"Коммерческий район", 1583.500, -1722.260, -89.084, 1758.900, -1577.590, 110.916},
        {"Восточный Лос-Сантос", 2381.680, -1454.350, -89.084, 2462.130, -1135.040, 110.916},
        {"Марина", 647.712, -1577.590, -89.084, 807.922, -1416.250, 110.916},
        {"Ричман", 72.648, -1404.970, -89.084, 225.165, -1235.070, 110.916},
        {"Вайнвуд", 647.712, -1416.250, -89.084, 787.461, -1227.280, 110.916},
        {"Восточный Лос-Сантос", 2222.560, -1628.530, -89.084, 2421.030, -1494.030, 110.916},
        {"Родео", 558.099, -1684.650, -89.084, 647.522, -1384.930, 110.916},
        {"Истерский Тоннель", -1709.710, -833.034, -1.5, -1446.010, -730.118, 200.000},
        {"Родео", 466.223, -1385.070, -89.084, 647.522, -1235.070, 110.916},
        {"Восточный Рэдсэндс", 1817.390, 2202.760, -89.084, 2011.940, 2342.830, 110.916},
        {"Казино «Карман клоуна»", 2162.390, 1783.230, -89.084, 2437.390, 1883.230, 110.916},
        {"Айдлвуд", 1971.660, -1852.870, -89.084, 2222.560, -1742.310, 110.916},
        {"Пересечение Монтгомери", 1546.650, 208.164, 0.000, 1745.830, 347.457, 200.000},
        {"Уиллоуфилд", 2089.000, -2235.840, -89.084, 2201.820, -1989.900, 110.916},
        {"Темпл", 952.663, -1130.840, -89.084, 1096.470, -937.184, 110.916},
        {"Прикл-Пайн", 1848.400, 2553.490, -89.084, 1938.800, 2863.230, 110.916},
        {"Международный аэропорт Лос-Сантос", 1400.970, -2669.260, -39.084, 2189.820, -2597.260, 60.916},
        {"Мост «Гарвер»", -1213.910, 950.022, -89.084, -1087.930, 1178.930, 110.916},
        {"Мост «Гарвер»", -1339.890, 828.129, -89.084, -1213.910, 1057.040, 110.916},
        {"Мост «Кинкейд»", -1339.890, 599.218, -89.084, -1213.910, 828.129, 110.916},
        {"Мост «Кинкейд»", -1213.910, 721.111, -89.084, -1087.930, 950.022, 110.916},
        {"Пляж «Верона»", 930.221, -2006.780, -89.084, 1073.220, -1804.210, 110.916},
        {"Обсерватория «Зелёный утёс»", 1073.220, -2006.780, -89.084, 1249.620, -1842.270, 110.916},
        {"Вайнвуд", 787.461, -1130.840, -89.084, 952.604, -954.662, 110.916},
        {"Вайнвуд", 787.461, -1310.210, -89.084, 952.663, -1130.840, 110.916},
        {"Коммерческий район", 1463.900, -1577.590, -89.084, 1667.960, -1430.870, 110.916},
        {"Маркет", 787.461, -1416.250, -89.084, 1072.660, -1310.210, 110.916},
        {"Западный Рокшор", 2377.390, 596.349, -89.084, 2537.390, 788.894, 110.916},
        {"Северная автострада Джулиус", 2237.400, 2542.550, -89.084, 2498.210, 2663.170, 110.916},
        {"Восточный пляж", 2632.830, -1668.130, -89.084, 2747.740, -1393.420, 110.916},
        {"Мост «Фаллоу»", 434.341, 366.572, 0.000, 603.035, 555.680, 200.000},
        {"Уиллоуфилд", 2089.000, -1989.900, -89.084, 2324.000, -1852.870, 110.916},
        {"Чайнатаун", -2274.170, 578.396, -7.6, -2078.670, 744.170, 200.000},
        {"Эль-Кастильо-дель-Дьябло", -208.570, 2337.180, 0.000, 8.430, 2487.180, 200.000},
        {"Океанские доки", 2324.000, -2145.100, -89.084, 2703.580, -2059.230, 110.916},
        {"Химзавод Истер-Бэй", -1132.820, -768.027, 0.000, -956.476, -578.118, 200.000},
        {"Казино «Визаж»", 1817.390, 1703.230, -89.084, 2027.400, 1863.230, 110.916},
        {"Оушен-Флэтс", -2994.490, -430.276, -1.2, -2831.890, -222.589, 200.000},
        {"Ричман", 321.356, -860.619, -89.084, 687.802, -768.027, 110.916},
        {"Нефтяной комплекс «Зеленый оазис»", 176.581, 1305.450, -3.0, 338.658, 1520.720, 200.000},
        {"Ричман", 321.356, -768.027, -89.084, 700.794, -674.885, 110.916},
        {"Казино «Морская звезда»", 2162.390, 1883.230, -89.084, 2437.390, 2012.180, 110.916},
        {"Восточный пляж", 2747.740, -1668.130, -89.084, 2959.350, -1498.620, 110.916},
        {"Джефферсон", 2056.860, -1372.040, -89.084, 2281.450, -1210.740, 110.916},
        {"Деловой район", 1463.900, -1290.870, -89.084, 1724.760, -1150.870, 110.916},
        {"Деловой район", 1463.900, -1430.870, -89.084, 1724.760, -1290.870, 110.916},
        {"Мост «Гарвер»", -1499.890, 696.442, -179.615, -1339.890, 925.353, 20.385},
        {"Южная автострада Джулиус", 1457.390, 823.228, -89.084, 2377.390, 863.229, 110.916},
        {"Восточный Лос-Сантос", 2421.030, -1628.530, -89.084, 2632.830, -1454.350, 110.916},
        {"Колледж «Грингласс»", 964.391, 1044.690, -89.084, 1197.390, 1203.220, 110.916},
        {"Лас-Колинас", 2747.740, -1120.040, -89.084, 2959.350, -945.035, 110.916},
        {"Малхолланд", 737.573, -768.027, -89.084, 1142.290, -674.885, 110.916},
        {"Океанские доки", 2201.820, -2730.880, -89.084, 2324.000, -2418.330, 110.916},
        {"Восточный Лос-Сантос", 2462.130, -1454.350, -89.084, 2581.730, -1135.040, 110.916},
        {"Гантон", 2222.560, -1722.330, -89.084, 2632.830, -1628.530, 110.916},
        {"Загородный клуб «Ависпа»", -2831.890, -430.276, -6.1, -2646.400, -222.589, 200.000},
        {"Уиллоуфилд", 1970.620, -2179.250, -89.084, 2089.000, -1852.870, 110.916},
        {"Северная Эспланада", -1982.320, 1274.260, -4.5, -1524.240, 1358.900, 200.000},
        {"Казино «Хай-Роллер»", 1817.390, 1283.230, -89.084, 2027.390, 1469.230, 110.916},
        {"Океанские доки", 2201.820, -2418.330, -89.084, 2324.000, -2095.000, 110.916},
        {"Мотель «Последний цент»", 1823.080, 596.349, -89.084, 1997.220, 823.228, 110.916},
        {"Бэйсайнд-Марина", -2353.170, 2275.790, 0.000, -2153.170, 2475.790, 200.000},
        {"Кингс", -2329.310, 458.411, -7.6, -1993.280, 578.396, 200.000},
        {"Эль-Корона", 1692.620, -2179.250, -89.084, 1812.620, -1842.270, 110.916},
        {"Часовня Блэкфилд", 1375.600, 596.349, -89.084, 1558.090, 823.228, 110.916},
        {"«Розовый лебедь»", 1817.390, 1083.230, -89.084, 2027.390, 1283.230, 110.916},
        {"Западаная автострада Джулиус", 1197.390, 1163.390, -89.084, 1236.630, 2243.230, 110.916},
        {"Лос-Флорес", 2581.730, -1393.420, -89.084, 2747.740, -1135.040, 110.916},
        {"Казино «Визаж»", 1817.390, 1863.230, -89.084, 2106.700, 2011.830, 110.916},
        {"Прикл-Пайн", 1938.800, 2624.230, -89.084, 2121.400, 2861.550, 110.916},
        {"Пляж «Верона»", 851.449, -1804.210, -89.084, 1046.150, -1577.590, 110.916},
        {"Пересечение Робада", -1119.010, 1178.930, -89.084, -862.025, 1351.450, 110.916},
        {"Линден-Сайд", 2749.900, 943.235, -89.084, 2923.390, 1198.990, 110.916},
        {"Океанские доки", 2703.580, -2302.330, -89.084, 2959.350, -2126.900, 110.916},
        {"Уиллоуфилд", 2324.000, -2059.230, -89.084, 2541.700, -1852.870, 110.916},
        {"Кингс", -2411.220, 265.243, -9.1, -1993.280, 373.539, 200.000},
        {"Коммерческий район", 1323.900, -1842.270, -89.084, 1701.900, -1722.260, 110.916},
        {"Малхолланд", 1269.130, -768.027, -89.084, 1414.070, -452.425, 110.916},
        {"Марина", 647.712, -1804.210, -89.084, 851.449, -1577.590, 110.916},
        {"Бэттери-Пойнт", -2741.070, 1268.410, -4.5, -2533.040, 1490.470, 200.000},
        {"Казино «4 Дракона»", 1817.390, 863.232, -89.084, 2027.390, 1083.230, 110.916},
        {"Блэкфилд", 964.391, 1203.220, -89.084, 1197.390, 1403.220, 110.916},
        {"Северная автострада Джулиус", 1534.560, 2433.230, -89.084, 1848.400, 2583.230, 110.916},
        {"Поле для гольфа «Йеллоу-Белл»", 1117.400, 2723.230, -89.084, 1457.460, 2863.230, 110.916},
        {"Айдлвуд", 1812.620, -1602.310, -89.084, 2124.660, -1449.670, 110.916},
        {"Западный Рэдсэндс", 1297.470, 2142.860, -89.084, 1777.390, 2243.230, 110.916},
        {"Доэрти", -2270.040, -324.114, -1.2, -1794.920, -222.589, 200.000},
        {"Ферма Хиллтоп", 967.383, -450.390, -3.0, 1176.780, -217.900, 200.000},
        {"Лас-Барранкас", -926.130, 1398.730, -3.0, -719.234, 1634.690, 200.000},
        {"Казино «Пираты в мужских штанах»", 1817.390, 1469.230, -89.084, 2027.400, 1703.230, 110.916},
        {"Сити Холл", -2867.850, 277.411, -9.1, -2593.440, 458.411, 200.000},
        {"Загородный клуб «Ависпа»", -2646.400, -355.493, 0.000, -2270.040, -222.589, 200.000},
        {"Стрип", 2027.400, 863.229, -89.084, 2087.390, 1703.230, 110.916},
        {"Хашбери", -2593.440, -222.589, -1.0, -2411.220, 54.722, 200.000},
        {"Международный аэропорт Лос-Сантос", 1852.000, -2394.330, -89.084, 2089.000, -2179.250, 110.916},
        {"Уайтвуд-Истейтс", 1098.310, 1726.220, -89.084, 1197.390, 2243.230, 110.916},
        {"Водохранилище Шермана", -789.737, 1659.680, -89.084, -599.505, 1929.410, 110.916},
        {"Эль-Корона", 1812.620, -2179.250, -89.084, 1970.620, -1852.870, 110.916},
        {"Деловой район", -1700.010, 744.267, -6.1, -1580.010, 1176.520, 200.000},
        {"Долина Фостер", -2178.690, -1250.970, 0.000, -1794.920, -1115.580, 200.000},
        {"Лас-Паясадас", -354.332, 2580.360, 2.0, -133.625, 2816.820, 200.000},
        {"Долина Окультадо", -936.668, 2611.440, 2.0, -715.961, 2847.900, 200.000},
        {"Пересечение Блэкфилд", 1166.530, 795.010, -89.084, 1375.600, 1044.690, 110.916},
        {"Гантон", 2222.560, -1852.870, -89.084, 2632.830, -1722.330, 110.916},
        {"Международный аэропорт Истер-Бэй", -1213.910, -730.118, 0.000, -1132.820, -50.096, 200.000},
        {"Восточный Рэдсэндс", 1817.390, 2011.830, -89.084, 2106.700, 2202.760, 110.916},
        {"Восточная Эспаланда", -1499.890, 578.396, -79.615, -1339.890, 1274.260, 20.385},
        {"Дворец Калигулы", 2087.390, 1543.230, -89.084, 2437.390, 1703.230, 110.916},
        {"Казино «Рояль»", 2087.390, 1383.230, -89.084, 2437.390, 1543.230, 110.916},
        {"Ричман", 72.648, -1235.070, -89.084, 321.356, -1008.150, 110.916},
        {"Казино «Морская звезда»", 2437.390, 1783.230, -89.084, 2685.160, 2012.180, 110.916},
        {"Малхолланд", 1281.130, -452.425, -89.084, 1641.130, -290.913, 110.916},
        {"Деловой район", -1982.320, 744.170, -6.1, -1871.720, 1274.260, 200.000},
        {"Ханки-Панки-Пойнт", 2576.920, 62.158, 0.000, 2759.250, 385.503, 200.000},
        {"Военный склад топлива К.А.С.С.", 2498.210, 2626.550, -89.084, 2749.900, 2861.550, 110.916},
        {"Автострада «Гарри-Голд»", 1777.390, 863.232, -89.084, 1817.390, 2342.830, 110.916},
        {"Тоннель Бэйсайд", -2290.190, 2548.290, -89.084, -1950.190, 2723.290, 110.916},
        {"Океанские доки", 2324.000, -2302.330, -89.084, 2703.580, -2145.100, 110.916},
        {"Ричман", 321.356, -1044.070, -89.084, 647.557, -860.619, 110.916},
        {"Промсклад имени Рэндольфа", 1558.090, 596.349, -89.084, 1823.080, 823.235, 110.916},
        {"Восточный пляж", 2632.830, -1852.870, -89.084, 2959.350, -1668.130, 110.916},
        {"Флинт-Уотер", -314.426, -753.874, -89.084, -106.339, -463.073, 110.916},
        {"Блуберри", 19.607, -404.136, 3.8, 349.607, -220.137, 200.000},
        {"Станция «Линден»", 2749.900, 1198.990, -89.084, 2923.390, 1548.990, 110.916},
        {"Глен Парк", 1812.620, -1350.720, -89.084, 2056.860, -1100.820, 110.916},
        {"Деловой район", -1993.280, 265.243, -9.1, -1794.920, 578.396, 200.000},
        {"Западный Рэдсэндс", 1377.390, 2243.230, -89.084, 1704.590, 2433.230, 110.916},
        {"Ричман", 321.356, -1235.070, -89.084, 647.522, -1044.070, 110.916},
        {"Мост «Гант»", -2741.450, 1659.680, -6.1, -2616.400, 2175.150, 200.000},
        {"Бар «Probe Inn»", -90.218, 1286.850, -3.0, 153.859, 1554.120, 200.000},
        {"Пересечение Флинт", -187.700, -1596.760, -89.084, 17.063, -1276.600, 110.916},
        {"Лас-Колинас", 2281.450, -1135.040, -89.084, 2632.740, -945.035, 110.916},
        {"Собелл-Рейл-Ярдс", 2749.900, 1548.990, -89.084, 2923.390, 1937.250, 110.916},
        {"Изумрудный остров", 2011.940, 2202.760, -89.084, 2237.400, 2508.230, 110.916},
        {"Эль-Кастильо-дель-Дьябло", -208.570, 2123.010, -7.6, 114.033, 2337.180, 200.000},
        {"Санта-Флора", -2741.070, 458.411, -7.6, -2533.040, 793.411, 200.000},
        {"Плайя-дель-Севиль", 2703.580, -2126.900, -89.084, 2959.350, -1852.870, 110.916},
        {"Маркет", 926.922, -1577.590, -89.084, 1370.850, -1416.250, 110.916},
        {"Квинс", -2593.440, 54.722, 0.000, -2411.220, 458.411, 200.000},
        {"Пересечение Пилсон", 1098.390, 2243.230, -89.084, 1377.390, 2507.230, 110.916},
        {"Спинибед", 2121.400, 2663.170, -89.084, 2498.210, 2861.550, 110.916},
        {"Пилигрим", 2437.390, 1383.230, -89.084, 2624.400, 1783.230, 110.916},
        {"Блэкфилд", 964.391, 1403.220, -89.084, 1197.390, 1726.220, 110.916},
        {"«Большое ухо»", -410.020, 1403.340, -3.0, -137.969, 1681.230, 200.000},
        {"Диллимор", 580.794, -674.885, -9.5, 861.085, -404.790, 200.000},
        {"Эль-Кебрадос", -1645.230, 2498.520, 0.000, -1372.140, 2777.850, 200.000},
        {"Северная Эспланада", -2533.040, 1358.900, -4.5, -1996.660, 1501.210, 200.000},
        {"Международный аэропорт Истер-Бэй", -1499.890, -50.096, -1.0, -1242.980, 249.904, 200.000},
        {"Рыбацкая лагуна", 1916.990, -233.323, -100.000, 2131.720, 13.800, 200.000},
        {"Малхолланд", 1414.070, -768.027, -89.084, 1667.610, -452.425, 110.916},
        {"Восточный пляж", 2747.740, -1498.620, -89.084, 2959.350, -1120.040, 110.916},
        {"Сан-Андреас Саунд", 2450.390, 385.503, -100.000, 2759.250, 562.349, 200.000},
        {"Тенистые ручьи", -2030.120, -2174.890, -6.1, -1820.640, -1771.660, 200.000},
        {"Маркет", 1072.660, -1416.250, -89.084, 1370.850, -1130.850, 110.916},
        {"Западный Рокшор", 1997.220, 596.349, -89.084, 2377.390, 823.228, 110.916},
        {"Прикл-Пайн", 1534.560, 2583.230, -89.084, 1848.400, 2863.230, 110.916},
        {"«Бухта Пасхи»", -1794.920, -50.096, -1.04, -1499.890, 249.904, 200.000},
        {"Лифи-Холлоу", -1166.970, -1856.030, 0.000, -815.624, -1602.070, 200.000},
        {"Грузовое депо Лас-Вентураса", 1457.390, 863.229, -89.084, 1777.400, 1143.210, 110.916},
        {"Прикл-Пайн", 1117.400, 2507.230, -89.084, 1534.560, 2723.230, 110.916},
        {"Блуберри", 104.534, -220.137, 2.3, 349.607, 152.236, 200.000},
        {"Эль-Кастильо-дель-Дьябло", -464.515, 2217.680, 0.000, -208.570, 2580.360, 200.000},
        {"Деловой район", -2078.670, 578.396, -7.6, -1499.890, 744.267, 200.000},
        {"Восточный Рокшор", 2537.390, 676.549, -89.084, 2902.350, 943.235, 110.916},
        {"Залив Сан-Фиерро", -2616.400, 1501.210, -3.0, -1996.660, 1659.680, 200.000},
        {"Парадизо", -2741.070, 793.411, -6.1, -2533.040, 1268.410, 200.000},
        {"Казино «Носок верблюда»", 2087.390, 1203.230, -89.084, 2640.400, 1383.230, 110.916},
        {"Олд-Вентурас-Стрип", 2162.390, 2012.180, -89.084, 2685.160, 2202.760, 110.916},
        {"Джанипер-Хилл", -2533.040, 578.396, -7.6, -2274.170, 968.369, 200.000},
        {"Джанипер-Холлоу", -2533.040, 968.369, -6.1, -2274.170, 1358.900, 200.000},
        {"Рока-Эскаланте", 2237.400, 2202.760, -89.084, 2536.430, 2542.550, 110.916},
        {"Восточная автострада Джулиус", 2685.160, 1055.960, -89.084, 2749.900, 2626.550, 110.916},
        {"Пляж «Верона»", 647.712, -2173.290, -89.084, 930.221, -1804.210, 110.916},
        {"Долина Фостер", -2178.690, -599.884, -1.2, -1794.920, -324.114, 200.000},
        {"Арко-дель-Оэсте", -901.129, 2221.860, 0.000, -592.090, 2571.970, 200.000},
        {"«Упавшее дерево»", -792.254, -698.555, -5.3, -452.404, -380.043, 200.000},
        {"Ферма", -1209.670, -1317.100, 114.981, -908.161, -787.391, 251.981},
        {"Дамба Шермана", -968.772, 1929.410, -3.0, -481.126, 2155.260, 200.000},
        {"Северная Эспланада", -1996.660, 1358.900, -4.5, -1524.240, 1592.510, 200.000},
        {"Финансовый район", -1871.720, 744.170, -6.1, -1701.300, 1176.420, 300.000},
        {"Гарсия", -2411.220, -222.589, -1.14, -2173.040, 265.243, 200.000},
        {"Монтгомери", 1119.510, 119.526, -3.0, 1451.400, 493.323, 200.000},
        {"Крик", 2749.900, 1937.250, -89.084, 2921.620, 2669.790, 110.916},
        {"Международный аэропорт Лос-Сантос", 1249.620, -2394.330, -89.084, 1852.000, -2179.250, 110.916},
        {"Пляж «Санта-Мария»", 72.648, -2173.290, -89.084, 342.648, -1684.650, 110.916},
        {"Пересечение Малхолланд", 1463.900, -1150.870, -89.084, 1812.620, -768.027, 110.916},
        {"Эйнджел-Пайн", -2324.940, -2584.290, -6.1, -1964.220, -2212.110, 200.000},
        {"Вёрдант-Медоус", 37.032, 2337.180, -3.0, 435.988, 2677.900, 200.000},
        {"Октан-Спрингс", 338.658, 1228.510, 0.000, 664.308, 1655.050, 200.000},
        {"Казино Кам-э-Лот", 2087.390, 943.235, -89.084, 2623.180, 1203.230, 110.916},
        {"Западный Рэдсэндс", 1236.630, 1883.110, -89.084, 1777.390, 2142.860, 110.916},
        {"Пляж «Санта-Мария»", 342.648, -2173.290, -89.084, 647.712, -1684.650, 110.916},
        {"Обсерватория «Зелёный утёс", 1249.620, -2179.250, -89.084, 1692.620, -1842.270, 110.916},
        {"Аэропорт Лас-Вентурас", 1236.630, 1203.280, -89.084, 1457.370, 1883.110, 110.916},
        {"Округ Флинт", -594.191, -1648.550, 0.000, -187.700, -1276.600, 200.000},
        {"Обсерватория «Зелёный утёс", 930.221, -2488.420, -89.084, 1249.620, -2006.780, 110.916},
        {"Паломино Крик", 2160.220, -149.004, 0.000, 2576.920, 228.322, 200.000},
        {"Океанские доки", 2373.770, -2697.090, -89.084, 2809.220, -2330.460, 110.916},
        {"Международный аэропорт Истер-Бэй", -1213.910, -50.096, -4.5, -947.980, 578.396, 200.000},
        {"Уайтвуд-Истейтс", 883.308, 1726.220, -89.084, 1098.310, 2507.230, 110.916},
        {"Калтон-Хайтс", -2274.170, 744.170, -6.1, -1982.320, 1358.900, 200.000},
        {"«Бухта Пасхи»", -1794.920, 249.904, -9.1, -1242.980, 578.396, 200.000},
        {"Залив Лос-Сантос", -321.744, -2224.430, -89.084, 44.615, -1724.430, 110.916},
        {"Доэрти", -2173.040, -222.589, -1.0, -1794.920, 265.243, 200.000},
        {"Гора Чилиад", -2178.690, -2189.910, -47.917, -2030.120, -1771.660, 576.083},
        {"Форт-Карсон", -376.233, 826.326, -3.0, 123.717, 1220.440, 200.000},
        {"Долина Фостер", -2178.690, -1115.580, 0.000, -1794.920, -599.884, 200.000},
        {"Оушен-Флэтс", -2994.490, -222.589, -1.0, -2593.440, 277.411, 200.000},
        {"Ферн-Ридж", 508.189, -139.259, 0.000, 1306.660, 119.526, 200.000},
        {"Бэйсайд", -2741.070, 2175.150, 0.000, -2353.170, 2722.790, 200.000},
        {"Аэропорт Лас-Вентурас", 1457.370, 1203.280, -89.084, 1777.390, 1883.110, 110.916},
        {"Поместье Блуберри", -319.676, -220.137, 0.000, 104.534, 293.324, 200.000},
        {"Пэлисейдс", -2994.490, 458.411, -6.1, -2741.070, 1339.610, 200.000},
        {"Норт-Рок", 2285.370, -768.027, 0.000, 2770.590, -269.740, 200.000},
        {"Карьер «Хантер»", 337.244, 710.840, -115.239, 860.554, 1031.710, 203.761},
        {"Международный аэропорт Лос-Сантос", 1382.730, -2730.880, -89.084, 2201.820, -2394.330, 110.916},
        {"Миссионер-Хилл", -2994.490, -811.276, 0.000, -2178.690, -430.276, 200.000},
        {"Залив Сан-Фиерро", -2616.400, 1659.680, -3.0, -1996.660, 2175.150, 200.000},
        {"Запретная Зона", -91.586, 1655.050, -50.000, 421.234, 2123.010, 250.000},
        {"Гора «Чилиад»", -2997.470, -1115.580, -47.917, -2178.690, -971.913, 576.083},
        {"Гора «Чилиад»", -2178.690, -1771.660, -47.917, -1936.120, -1250.970, 576.083},
        {"Международный аэропорт Истер-Бэй", -1794.920, -730.118, -3.0, -1213.910, -50.096, 200.000},
        {"Паноптикум", -947.980, -304.320, -1.1, -319.676, 327.071, 200.000},
        {"Тенистые ручьи", -1820.640, -2643.680, -8.0, -1226.780, -1771.660, 200.000},
        {"Бэк-о-Бейонд", -1166.970, -2641.190, 0.000, -321.744, -1856.030, 200.000},
        {"Гора «Чилиад»", -2994.490, -2189.910, -47.917, -2178.690, -1115.580, 576.083},
        {"Тьерра Робада", -1213.910, 596.349, -242.990, -480.539, 1659.680, 900.000},
        {"Округ Флинт", -1213.910, -2892.970, -242.990, 44.615, -768.027, 900.000},
        {"Уэтстоун", -2997.470, -2892.970, -242.990, -1213.910, -1115.580, 900.000},
        {"Пустынный округ", -480.539, 596.349, -242.990, 869.461, 2993.870, 900.000},
        {"Тьерра Робада", -2997.470, 1659.680, -242.990, -480.539, 2993.870, 900.000},
        {"Сан Фиерро", -2997.470, -1115.580, -242.990, -1213.910, 1659.680, 900.000},
        {"Лас Вентурас", 869.461, 596.349, -242.990, 2997.060, 2993.870, 900.000},
        {"Туманный округ", -1213.910, -768.027, -242.990, 2997.060, 596.349, 900.000},
        {"Лос Сантос", 44.615, -2892.970, -242.990, 2997.060, -768.027, 900.000}
    }
    for i, v in ipairs(streets) do
        if (x >= v[2]) and (y >= v[3]) and (z >= v[4]) and (x <= v[5]) and (y <= v[6]) and (z <= v[7]) then
            return v[1]
        end
    end
    return 'Пригород'
end

Скрипт 1(Который в moonloader):
Lua:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand("prv",prv)
    while true do
        wait(0)
    end
end
function prv()
    res = script.load("C:/Users/omg/Desktop/lox.lua")
end

Код второй(у меня в другой папке):

Lua:
function main()
    sampRegisterChatCommand("lox13",lox)
    s= thisScript()
    while true do
        wait(0)
    end
end
function lox()
    sampAddChatMessage("100", -1)
    s:unload()
end

У меня работает, можешь сам проверить. Сначало пишешь: /prv потом: /lox13
 

lorgon

Известный
656
271
Скрипт 1(Который в moonloader):
Lua:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand("prv",prv)
    while true do
        wait(0)
    end
end
function prv()
    res = script.load("C:/Users/omg/Desktop/lox.lua")
end

Код второй(у меня в другой папке):

Lua:
function main()
    sampRegisterChatCommand("lox13",lox)
    s= thisScript()
    while true do
        wait(0)
    end
end
function lox()
    sampAddChatMessage("100", -1)
    s:unload()
end

У меня работает, можешь сам проверить. Сначало пишешь: /prv потом: /lox13
Проблема решена. Моя ошибка была в том что у меня в пути до файла были русские символы.
 

Lucifer Melton

Активный
164
57
Посмотреть вложение 50584
помогите вытащить ник и номер телефона человека, ник без его ид
Lua:
if message:find(".*Отправил %w+_%w+%[%d+%] %(тел%. %d+%)") then
    local nick, number = message:match(".*Отправил (%w+_%w+)%[%d+%] %(тел%. (%d+)%)")
    sampAddChatMessage("nick: "..nick..", number: "..number, -1)
end
 

Dmitriy Makarov

25.05.2021
Проверенный
2,500
1,131
Ребят, как исправить такую ошибку, VK_LEFT является NUMPAD_LEFT, нажимает цифру 4 в место того чтобы нажать стрелочку налево, шо делать?
Там нету такой клавишы как NUMPAD_LEFT
Screenshot_1.png

Попробуй по цифрам тогда забиндить, что-ли..
 

HarlyCloud

Потрачен
238
67
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Проверка на таргет + на нажатие клавиши.

Lua:
function main()
  while true do
    wait(0)
    result, ped = getCharPlayerIsTargeting(Player player)
    if isKeyJustPressed(key) and result then
        main_window_state.v = not main_window_state.v
    end
    imgui.Process = main_window_state.v
  end
end
Посмотреть вложение 50592


Как сделать такое же окно в imgui?
Как сделать так что когда нажимаешь на кнопку в имгуи проигрывалась функция какая то.
 
Последнее редактирование:

HarlyCloud

Потрачен
238
67
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Lua:
if imgui.Button("name") then
func()
end
Вот так?
Lua:
    if imgui.Button(u8("Выгнать"), imgui.ImVec2(95, 25)) then
    func expel(arg)
    sampSendChat("/do Человек лежит на полу.")
     wait(2000)
     sampSendChat("/me заломал руки и ведёт к двери")
     wait(2000)
     sampSendChat("/me открыл дверь и вывел человека")
     wait(2000)
     sampSendChat("/me закрыл дверь")
     wait(2000)
     sampSendChat("/expel " .. arg)
        end
 

|| NN - NoName ||

Известный
1,049
635
Вот так?
Lua:
    if imgui.Button(u8("Выгнать"), imgui.ImVec2(95, 25)) then
    func expel(arg)
    sampSendChat("/do Человек лежит на полу.")
     wait(2000)
     sampSendChat("/me заломал руки и ведёт к двери")
     wait(2000)
     sampSendChat("/me открыл дверь и вывел человека")
     wait(2000)
     sampSendChat("/me закрыл дверь")
     wait(2000)
     sampSendChat("/expel " .. arg)
        end
Правильно будет так:

Это добавляешь в свой код:

Lua:
if imgui.Button(u8("Выгнать"), imgui.ImVec2(95, 25))
      lua_thread.create(fuck)
end

А это отдельная функция, просто скопируй и вставь в отдельное место:

Lua:
function fuck()
  sampSendChat("/do Человек лежит на полу.")
  wait(2000)
  sampSendChat("/me заломал руки и ведёт к двери")
  wait(2000)
  sampSendChat("/me открыл дверь и вывел человека")
  wait(2000)
  sampSendChat("/me закрыл дверь")
  wait(2000)
  sampSendChat("/expel " .. arg)
end

Дальше сам додумаешься.
 

HarlyCloud

Потрачен
238
67
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Правильно будет так:

Это добавляешь в свой код:

Lua:
if imgui.Button(u8("Выгнать"), imgui.ImVec2(95, 25))
      lua_thread.create(fuck)
end

А это отдельная функция, просто скопируй и вставь в отдельное место:

Lua:
function fuck()
  sampSendChat("/do Человек лежит на полу.")
  wait(2000)
  sampSendChat("/me заломал руки и ведёт к двери")
  wait(2000)
  sampSendChat("/me открыл дверь и вывел человека")
  wait(2000)
  sampSendChat("/me закрыл дверь")
  wait(2000)
  sampSendChat("/expel " .. arg)
end

Дальше сам додумаешься.
Нихуя не понял, типо как мне сделать по нажатию писалось это?))))))))
 

[SA ARZ]

Известный
392
8
код:
function main()
    if not isSampLoaded() and not isSampfuncsLoaded() then return end -- проверяем загружен ли SAMP и сам SampFuncs, если нет, то сбрасываем соединение
    repeat wait(0) until isSampAvailable()
    repeat wait(100) until sampIsLocalPlayerSpawned()

    files_add()
    sampRegisterChatCommand('mh', function()
        if not SelectPlayers.v and not HistorySMS.v and not newFind.v and not newFind.v and not settingsMenu.v and not SelectPlayersMedicalOsmtr.v and not showBinnder.v and not gnewsLeaderMenu.v and not ComputerDialogMain.v then
            selected = 1
            MainNewMenu.v = not MainNewMenu.v
        end
    end)
    sampRegisterChatCommand('gate', function() GatePanelFunc:run() end)
    sampRegisterChatCommand('r', RadioRun)
    sampRegisterChatCommand('p', canncelPPhone)
    sampRegisterChatCommand('h', canncelHPhone)
    sampRegisterChatCommand('histsms', function()
        if not SelectPlayers.v and not newFind.v and not callSobesMenu.v and not settingsMenu.v and not SelectPlayersMedicalOsmtr.v and not showBinnder.v and not gnewsLeaderMenu.v and not ComputerDialogMain.v then
            HistorySMS.v = not HistorySMS.v
        end
    end)
    sampRegisterChatCommand('rep', reportText)
    sampRegisterChatCommand('drive', DriveFunc)
    sampRegisterChatCommand('повышение', getinforang)
    sampRegisterChatCommand('f', RadioFun)
    sampRegisterChatCommand('sobes', SobesMenu)
    sampRegisterChatCommand('friends', cmd_friends)
    sampRegisterChatCommand('kpk', cmd_kpk)
    sampRegisterChatCommand('checkfind', cmd_checkfind)
    sampRegisterChatCommand('find', function()
        logTextFind = {}
        allcols = 0
        afkcols = 0
        jailcols = 0
        mutecols = 0
        sampSendChat("/find")
    end)
    sampRegisterChatCommand('debtorlist', debtorlist)
    sampRegisterChatCommand('debtorsell', cmd_debtorsell)
    sampRegisterChatCommand('to', toSystem)
    sampRegisterChatCommand('leak', leakrp)
    sampRegisterChatCommand('ap', MedSkipRP)
    sampRegisterChatCommand('free', FreeJail)
    sampRegisterChatCommand('givelic', GiveLicSystem)
    sampRegisterChatCommand('putmed', cmd_putmed)
    sampRegisterChatCommand('цп', lecdialog)
    sampRegisterChatCommand('pickmed', cmd_pickmed)
    sampRegisterChatCommand('out', outSystem)
    sampRegisterChatCommand('historymed', gethistmed)
    sampRegisterChatCommand('operacion', operacionrp)
    sampRegisterChatCommand('changesex', changesex)
    sampRegisterChatCommand('medcard', MedCardList)
    sampRegisterChatCommand('medskip', MedSkipRP)
    sampRegisterChatCommand('medhelp', medhelpList)
    sampRegisterChatCommand('onehelp', onehelp)
    sampRegisterChatCommand('клятва', Klyatva)
    sampRegisterChatCommand('light', cmd_light)
    sampRegisterChatCommand('tvlift', cmd_tvlift)
    sampRegisterChatCommand('audience', cmd_audience)
    sampRegisterChatCommand('all', cmd_all)
    sampRegisterChatCommand('tvtext', cmd_tvtext)
    sampRegisterChatCommand('tvskip', cmd_tvskipRolePlay)
    sampRegisterChatCommand('radiojoin', cmd_radiojoinRolePlay)
    sampRegisterChatCommand('givemic', cmd_givemicRolePlay)
    sampRegisterChatCommand('makeskin', cmd_makeskinRP)
    sampRegisterChatCommand('sale', cmd_PaperRP)
    sampRegisterChatCommand('efir', cmd_efirRolePlay)
    sampRegisterChatCommand('stand', cmd_standRolePlay)
    sampRegisterChatCommand('camera', cmd_cameraRolePlay)
    sampRegisterChatCommand('bring', cmd_bringRolePlay)
    sampRegisterChatCommand('fixedit', function()
        sampSendDialogResponse(224, 1, 0, tageditor.." | "..u8:decode(MessagesAds.v))
    end)
    sampRegisterChatCommand('liv', cmd_livby)
    sampRegisterChatCommand('unvby', cmd_uninvby)
    sampRegisterChatCommand('ok', cmd_ok)
    sampRegisterChatCommand('fd', RadioFunDoclade)
    sampRegisterChatCommand('rd', RadioRunDoclade)
    sampRegisterChatCommand('rn', RadioRunNonRP)
    sampRegisterChatCommand('eject', ejectRP)
    sampRegisterChatCommand('heal', medhealList)
    sampRegisterChatCommand('gps', gpsfunc)
    sampRegisterChatCommand('график', grafikdialog)
    sampRegisterChatCommand('addbl', cmd_addbl)
    sampRegisterChatCommand('delbl', cmd_delbl)
    sampRegisterChatCommand('drone', drone)
    sampRegisterChatCommand('autodoclade', funcAutoDoclade)
    sampRegisterChatCommand('fn', RadioFunNonRP)
    sampRegisterChatCommand('unv', UvalPlayer)
    sampRegisterChatCommand('uninvite', UvalPlayer)
    sampRegisterChatCommand('inv', InvitePlayer)
    sampRegisterChatCommand('invite', InvitePlayer)   
    sampRegisterChatCommand('dice', ex_dice)
    sampRegisterChatCommand('offrang', funOffRang)
    sampRegisterChatCommand('uninviteoff', funOffUninvite)
    sampRegisterChatCommand('gn', function()
        if NumRangPlayer == 10 or accNumber == 905492 or accNumber == 1638304 or accNumber == 905738 then
            if not SelectPlayers.v and not HistorySMS.v and not newFind.v and not callSobesMenu.v and not settingsMenu.v and not SelectPlayersMedicalOsmtr.v and not showBinnder.v and not ComputerDialogMain.v then
                gnewsLeaderMenu.v = not gnewsLeaderMenu.v
            end
        else
            sampAddChatMessage("[{FF8800}MultiAHK{F5FFFA}]: У Вас нет доступа к данному разделу. Ваш текущий уровень доступа: {"..colororgs.."}"..NumRangPlayer, 0xF5FFFA)
            sampAddChatMessage("[{FF8800}MultiAHK{F5FFFA}]: Для данного раздела требуется уровень доступа: {"..colororgs.."}10", 0xF5FFFA)
            SoundDENIED()
        end
    end)
    sampRegisterChatCommand('binder', function()
        if not SelectPlayers.v and not HistorySMS.v and not newFind.v and not callSobesMenu.v and not settingsMenu.v and not SelectPlayersMedicalOsmtr.v and not gnewsLeaderMenu.v and not ComputerDialogMain.v then
            showBinnder.v = not showBinnder.v
        end
    end)
    sampRegisterChatCommand('ud', GoUdsPlayer)
    sampRegisterChatCommand('hist', HistoryPlayer)
    sampRegisterChatCommand('black', black_checker)
    sampRegisterChatCommand('blackname', black_history)
    sampRegisterChatCommand('rang', ex_rang)
    sampRegisterChatCommand('gg', GGSay)
    sampRegisterChatCommand('number', numberID)
    sampRegisterChatCommand('vig', vigovor)
    sampRegisterChatCommand('changeskin', changeskin)
    sampRegisterChatCommand('smsn', NonRPSMS)
    sampRegisterChatCommand('reconnect', reconnect)
    update() -- запуск обновлений
    while not UpdateNahuy do wait(0) end -- пока не проверит обновления тормозим работу

    print("Получаем номер аккаунта игрока ARP")
    ScriptUse = 3
    regAcc = true
    sampSendChat("/mn")
    while ScriptUse == 3 do wait(0) end
    if ScriptUse == 4 then -- в случае неудачного получения номера аккаунта
        print("Номер аккаунта не получен, работа завершена")
        reloadScript = true
        sampAddChatMessage("[{FF8800}MLUA{F5FFFA}]: Прозошла ошибка при получении данных номера аккаунта.", 0xF5FFFA)
        thisScript():unload()
        return
    elseif ScriptUse == 5 then
        print("Номер аккаунта был получен: "..tonumber(accNumber))
        if sampGetCurrentServerAddress() == "54.37.142.73" then gameServer = "Green";          stateName = "{FFFF66}Advance RolePlay - {00FF00}Green"; serverName = "ARP - {00FF00}Green";     regDialogOpen = 1; sampSendChat("/mn")
        elseif sampGetCurrentServerAddress() == "54.37.142.72" then gameServer = "Red";          stateName = "{FFFF66}Advance RolePlay - {FF0000}Red"; serverName = "ARP - {FF0000}Red";     regDialogOpen = 1; sampSendChat("/mn")
        elseif sampGetCurrentServerAddress() == "54.37.142.74" then gameServer = "Blue";          stateName = "{FFFF66}Advance RolePlay - {0000FF}Blue"; serverName = "ARP - {0000FF}Blue";     regDialogOpen = 1; sampSendChat("/mn")
        else
            print("Сервер не допущен, работа скрипта завершена")
            print("IP сервера: "..sampGetCurrentServerAddress())
            sampAddChatMessage("[{FF8800}MLUA{F5FFFA}]: К сожалению, данный скрипт недоступен для работы на данном сервере.", 0xF5FFFA)
            sampAddChatMessage("[{FF8800}MLUA{F5FFFA}]: Свяжитесь с разработчиками, если хотите уточнить возможность решения данной проблемы.", 0xF5FFFA)
            thisScript():unload()
            return
        end
    end
    inputHelpText = renderCreateFont("Arial", 9, FCR_BORDER + FCR_BOLD)
    lua_thread.create(showInputHelp)
    print("Начинаем инициализацию клавиш")
    if tBindList ~= nil then
        print("Регистрируем клавиши")
        for k, v in pairs(tBindList) do
            rkeys.registerHotKey(v.v, true, onHotKey)
        end
    else
        print("Критическая ошибка, выполняем откат клавиш")
        tBindList = {
            [1] = { text = "/lock", v = {} },
            [2] = { text = "/find", v = {} },
            [3] = { text = "/c 60", v = {} },
            [4] = { text = "/medskip (/ap)", v = {} },
            [5] = { text = "/gg *Представиться", v = {18,49} },
            [6] = { text = "/gate", v = {} },
            [7] = { text = "/badge", v = {} },
            [8] = { text = "/устав", v = {} },
            [9] = { text = "/график", v = {} }
        }
        print("Откат выполнен.")
    end
    print("Инициализация клавиш завершена")
    print("Начинаем инициализацию биндера")
    if mass_bind ~= nil then
        print("Регистрируем команды бинда.")
        for k, p in ipairs(mass_bind) do
            if p.cmd ~= "-" then
                rcmd(p.cmd, p.text, p.delay)
                print("Зарегистрирована команда биндера: /"..p.cmd)
            end
        end
    else
        print("Критическая ошибка, выполняем откат binder.bind")
        mass_bind = {
            [1] = { cmd = "-", v = {}, text = "Any text", delay = 3 },
            [2] = { cmd = "-", v = {}, text = "Any text", delay = 3 },
            [3] = { cmd = "-", v = {}, text = "Any text", delay = 3 },
            [4] = { cmd = "-", v = {}, text = "Any text", delay = 3 },
            [5] = { cmd = "-", v = {}, text = "Any text", delay = 3 }
        }
        print("Откат выполнен.")
    end

    print("Регистрация клавиш бинда")
    for i, g in pairs(mass_bind) do
        rkeys.registerHotKey(g.v, true, onHotKey)
    end
    print("Инициализация биндера завершена")
    
    while true do wait(0)

        unix_time = os.time(os.date('!*t'))
        moscow_time = unix_time + timefix.v * 60 * 60

        imgui.Process = ComputerDialogMain.v or MainNewMenu.v or EditorADS.v or callMenuPhone.v or HistorySMS.v or settingsMenu.v or updateINFO.v or infobarImgui.v or showBinnder.v or SelectPlayers.v or SelectPlayersMedicalOsmtr.v or callSobesMenu.v


        zX, zY, zZ = getCharCoordinates(playerPed)

        -- определение города
        local citiesList = {'Los-Santos', 'San-Fierro', 'Las-Venturas'}
        local city = getCityPlayerIsIn(PLAYER_HANDLE)
        if city > 0 then playerCity = citiesList[city] else playerCity = "N/a" end

        if arrayFunc.infobar.v and not isGamePaused() then
            if not MainNewMenu.v then
                infobarImgui.v = true
            end

            if showBinnder.v then
                infobarImgui.v = false
            end

            if mouseCoord then
                showCursor(true, true)
                infoX, infoY = getCursorPos()
                if isKeyDown(VK_RETURN) then
                    settings.options.infoX = math.floor(infoX)
                    settings.options.infoY = math.floor(infoY)
                    mouseCoord = false
                    showCursor(false, false)
                    MainNewMenu.v = not MainNewMenu.v
                    inicfg.save(settings, 'USMOH.ini')
                end
            end
        else
            infobarImgui.v = false
        end
        if isKeyJustPressed(VK_G) and not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsScoreboardOpen() and not isSampfuncsConsoleActive() then
            local result, ped = getCharPlayerIsTargeting(PLAYER_HANDLE)
            if result and doesCharExist(ped) then
                local tdd, id = sampGetPlayerIdByCharHandle(ped)
                if tdd then
                    MenuName = sampGetPlayerNickname(id)
                    MenuID = id
                    systemSecurity()
                end
            end
        end
        if isKeyJustPressed(VK_Y) and not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsScoreboardOpen() and not isSampfuncsConsoleActive() then
            local result, ped = getCharPlayerIsTargeting(PLAYER_HANDLE)
            if result and doesCharExist(ped) then
                local tdd, id = sampGetPlayerIdByCharHandle(ped)
                if tdd then
                    MenuName = sampGetPlayerNickname(id)
                    MenuID = id
                    systemMySelf()
                end
            end
        end
        if isKeyJustPressed(VK_1) and not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsScoreboardOpen() and not isSampfuncsConsoleActive() then
            local result, ped = getCharPlayerIsTargeting(PLAYER_HANDLE)
            if result and doesCharExist(ped) then
                local tdd, id = sampGetPlayerIdByCharHandle(ped)
                if tdd then
                    MenuName = sampGetPlayerNickname(id)
                    MenuID = id
                    SystemQQMo()
                end
            end
        end
        if isKeyJustPressed(VK_R) and not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsScoreboardOpen() and not isSampfuncsConsoleActive() then -- меню взаимодействия на ПКМ + R
            local result, ped = getCharPlayerIsTargeting(PLAYER_HANDLE)
            if result and doesCharExist(ped) then
                local tdd, id = sampGetPlayerIdByCharHandle(ped)
                if tdd then
                    MenuName = sampGetPlayerNickname(id)
                    MenuID = id
                    SelectPlayers.v = not SelectPlayers.v
                end
            end
        end
        if isKeyJustPressed(VK_E) and not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsScoreboardOpen() and not isSampfuncsConsoleActive() then -- меню взаимодействия на ПКМ + R
            local result, ped = getCharPlayerIsTargeting(PLAYER_HANDLE)
            if result and doesCharExist(ped) then
                local tdd, id = sampGetPlayerIdByCharHandle(ped)
                if tdd then
                    sampProcessChatInput("/historymed "..id)
                end
            end
        end

        if isKeyJustPressed(VK_F2) and golecpacient and not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsScoreboardOpen() and not isSampfuncsConsoleActive() then
            lastmedprice()
        end
        if isKeyJustPressed(VK_F3) and golecpacient and not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsScoreboardOpen() and not isSampfuncsConsoleActive() then
            Sendchat("/me "..(SexPlayersFunc and 'убрала' or 'убрал').." лекарство в мед. сумку")
            wait(1000)
            Sendchat("К сожалению, у Вас нет средств для оплаты лечения.")
            golecpacient = false
        end

        if isKeyJustPressed(VK_F4) and RPDesign and not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsScoreboardOpen() and not isSampfuncsConsoleActive() then
            ActionRP1:terminate()
            ActionRP2:terminate()
            RPDesign = false
            sampAddChatMessage("[{FF8800}MLUA{F5FFFA}]: Вы отказались проводить акцию.", 0xF5FFFA)
        end
        if isKeyJustPressed(VK_F4) and CancelCommand and not sampIsChatInputActive() and not sampIsDialogActive() and not sampIsScoreboardOpen() and not isSampfuncsConsoleActive() then
            LicThread:terminate()
            AdvocateThread1:terminate()
            sampAddChatMessage("[{FF8800}MLUA{F5FFFA}]: Действие было - остановлено.", 0xF5FFFA)
            CancelCommand = false
        end
        for i = 0, sampGetMaxPlayerId(true) do -- отключаем "вх" камхака для игроков, оставляем для разрабов.
            if sampIsPlayerConnected(i) then
                local result, ped = sampGetCharHandleBySampPlayerId(i)
                if result then
                    local positionX, positionY, positionZ = getCharCoordinates(ped)
                    local localX, localY, localZ = getCharCoordinates(PLAYER_PED)
                    local distance = getDistanceBetweenCoords3d(positionX, positionY, positionZ, localX, localY, localZ)
                    if distance >= 30 and droneActive and developers ~= 1 then
                        EmulShowNameTag(i, false)
                    elseif droneActive and developers == 1 then
                        EmulShowNameTag(i, true)
                    else
                        EmulShowNameTag(i, true)
                    end
                end
            end
        end
    end
end
 

sanders

Потрачен
253
126
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как через рендер нарисовать круг?