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

P0M61K

Активный
264
54
Можно ли отправить фейковый пакет серверу что игрок сел в транспорт?
 

tlwsn

Известный
537
85
Как сделать так, чтобы текст был посередине, как на скрине
35537
Он и так по стандарту посередине кнопки.
И как выровнять вот эти переключатели по правому краю в окне?
35536
Получай ширину окна и используйimgui.SetCursorPosX(float x) для выравнивания.
Пример:
local imadd = require 'imgui_addons'

local state1 = imgui.ImBool(false)

--в OnDrawFrame:
local wX = imgui.GetWindowWidth()
imgui.SetCursorPosX(wX - 20)
imadd.ToggleButton('togglebutton', state1)
 
  • Нравится
Реакции: Kuharz

Leo_Mendes

Известный
52
3
Подскажите как сосчитать сколько осталось топлива в машине, по текстдраву, id 2054 и вывести в "renderFontDrawText"
Lua:
renderFontDrawText(font, string.format("ffffff", ffff), 728, 825, -1)
3HwlxTG.png
Наброски)))
Lua:
Не работает:
require "lib.moonloader"
require "lib.sampfuncs"
local sampev = require 'lib.samp.events'
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
local font = renderCreateFont("Arial", 12, 12)
while not isSampAvailable()
do wait(100) end
end
function sampev.onShowTextDraw(id, data)
if id == 2054 and data.text == 2059 then
renderFontDrawText(font, string.format("{FF8B00}Fuel:{ffffff} %s %d", id, data.text), 728, 825, -1)
end
end


  Работает и показывает не сколько осталось топлива, а id 2054
local font = renderCreateFont("Arial", 12, 12)
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then
        return
    end
    while not isSampAvailable() do wait(50) end
  while true do wait(0)
        if sampTextdrawIsExists(2054) then
        renderFontDrawText(font, string.format("{FF8B00}Бенз:{ffffff} %s", 2054), 728, 825, -1)
    end
  end
 

lazarenok

Известный
15
0

tlwsn

Известный
537
85
Подскажите как сосчитать сколько осталось топлива в машине, по текстдраву, id 2054 и вывести в "renderFontDrawText"
Lua:
renderFontDrawText(font, string.format("ffffff", ffff), 728, 825, -1)
3HwlxTG.png
Наброски)))
Lua:
Не работает:
require "lib.moonloader"
require "lib.sampfuncs"
local sampev = require 'lib.samp.events'
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
local font = renderCreateFont("Arial", 12, 12)
while not isSampAvailable()
do wait(100) end
end
function sampev.onShowTextDraw(id, data)
if id == 2054 and data.text == 2059 then
renderFontDrawText(font, string.format("{FF8B00}Fuel:{ffffff} %s %d", id, data.text), 728, 825, -1)
end
end


  Работает и показывает не сколько осталось топлива, а id 2054
local font = renderCreateFont("Arial", 12, 12)
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then
        return
    end
    while not isSampAvailable() do wait(50) end
  while true do wait(0)
        if sampTextdrawIsExists(2054) then
        renderFontDrawText(font, string.format("{FF8B00}Бенз:{ffffff} %s", 2054), 728, 825, -1)
    end
  end
Lua:
local sampev = require("lib.samp.events")

local isActive = false
local font = renderCreateFont("Arial", 12, 12)

function main()
    repeat wait(0) until isSampAvailable()
    while true do wait(0)
        if isActive then
            local fuel = sampTextdrawGetString(2054)
            renderFontDrawText(font, ("{FF8B00}Fuel:{ffffff} %s"):format(fuel), 728, 825, -1)
        end
    end
end

function sampev.onShowTextDraw(id, textdraw)
    if id == 2054 then isActive = true end
end

function sampev.onTextDrawHide(id)
    if id == 2054 then isActive = false end
end

Можно обойтись и без библиотеки samp.lua:
Lua:
local font = renderCreateFont("Arial", 12, 12)

function main()
    repeat wait(0) until isSampAvailable()
    while true do wait(0)
        if sampTextdrawIsExists(2054) then
            local fuel = sampTextdrawGetString(2054)
            renderFontDrawText(font, ("{FF8B00}Fuel:{ffffff} %s"):format(fuel), 728, 825, -1)
        end
    end
end
 
  • Нравится
Реакции: Kuharz и Leo_Mendes

lazarenok

Известный
15
0
помогите,вот такая ситуция появилась,кто подскажет как выйти из этой цепочки

35546
 

Leo_Mendes

Известный
52
3
Считывает цвет Красный [Неудачно] Зеленый [Удачно]
Lua:
                    function sampev.onServerMessage(color, dialog7)
        local result = dialog7:match('%S+.*{00AB06}%s*%[(%S+)]') -- удачно
        if result and dialog7:find(string.rlower('изучает снимок конечности, перелом обнаружен')) then
        lua_thread.create(function()
         wait(1100)
                sampSendChat("/me берёт шприц и ампулу с обезболиваюшим")
        end)
    end
    local result = dialog7:match('%S+.*{C42100}%s*%[(%S+)]') -- неудачно
    if result and dialog7:find(string.rlower('изучает снимок конечности, перелом обнаружен')) then
        lua_thread.create(function()
         wait(1100)
                sampSendChat("/try внимательно изучает снимок конечности, перелом обнаружен")
        end)
    end

Доп добавить для работы
Lua:
function string.rlower(s)
    local russian_characters = {[168] = 'Ё', [184] = 'ё', [192] = 'А', [193] = 'Б', [194] = 'В', [195] = 'Г', [196] = 'Д', [197] = 'Е', [198] = 'Ж', [199] = 'З', [200] = 'И', [201] = 'Й', [202] = 'К', [203] = 'Л', [204] = 'М', [205] = 'Н', [206] = 'О', [207] = 'П', [208] = 'Р', [209] = 'С', [210] = 'Т', [211] = 'У', [212] = 'Ф', [213] = 'Х', [214] = 'Ц', [215] = 'Ч', [216] = 'Ш', [217] = 'Щ', [218] = 'Ъ', [219] = 'Ы', [220] = 'Ь', [221] = 'Э', [222] = 'Ю', [223] = 'Я', [224] = 'а', [225] = 'б', [226] = 'в', [227] = 'г', [228] = 'д', [229] = 'е', [230] = 'ж', [231] = 'з', [232] = 'и', [233] = 'й', [234] = 'к', [235] = 'л', [236] = 'м', [237] = 'н', [238] = 'о', [239] = 'п', [240] = 'р', [241] = 'с', [242] = 'т', [243] = 'у', [244] = 'ф', [245] = 'х', [246] = 'ц', [247] = 'ч', [248] = 'ш', [249] = 'щ', [250] = 'ъ', [251] = 'ы', [252] = 'ь', [253] = 'э', [254] = 'ю', [255] = 'я',}
    s = s:lower()
    local strlen = s:len()
    if strlen == 0 then return s end
    s = s:lower()
    local output = ''
    for i = 1, strlen do
        local ch = s:byte(i)
        if ch >= 192 and ch <= 223 then -- upper russian characters
            output = output .. russian_characters[ch + 32]
        elseif ch == 168 then -- Ё
            output = output .. russian_characters[184]
        else
           output = output .. string.char(ch)
        end
    end
    return output
end
Если кто знает проще, напишите ему)
 
Последнее редактирование:

dmitri4

Известный
452
79
при редере картинки выбивает ошибку
Lua:
local ffi = require 'ffi'
local texture = nil
exit_data ="\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52\x00\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7A\x7A\xF4\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7C\x08\x64\x88\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0E\xC4\x00\x00\x0E\xC4\x01\x95\x2B\x0E\x1B\x00\x00\x08\xCB\x49\x44\x41\x54\x58\x85\xA5\x97\x79\x90\x1C\x55\x1D\xC7\x3F\xEF\xBD\xBE\xA6\x67\x66\x67\x8F\xC9\xDE\x81\x10\x02\x84\x84\x2C\x91\x24\x06\xCC\xA5\x06\x10\xE4\xB0\x08\x84\xA4\x40\x02\x56\x50\xD0\x52\xA4\x44\x02\x9A\xB2\x52\x56\x41\x09\x22\x56\x01\x7F\x04\x83\x58\x65\xB4\x14\x48\x09\x12\x02\x04\x45\xB1\x84\x84\x10\x49\x02\x39\xC1\xDC\xE4\xDC\xCD\x2E\x3B\x3B\x99\xD9\xE9\x99\x3E\x9E\x7F\xF4\xEC\xC5\x4D\xF9\xAB\x7A\xD5\xAF\x5F\xF7\x7B\xBF\xEF\xEF\xF8\xFE\xFA\xD7\x82\xCF\x21\x1B\xEF\x6C\x38\x2B\xE3\x5A\x73\xA4\x50\x5F\x50\x92\x36\xAD\x49\x46\x9A\x50\x47\xBA\xC7\x0F\x83\x77\x03\x3F\x7C\x43\x87\xDD\xFF\x9E\xFC\x20\xC5\xCF\x7A\xA6\xF8\xB4\x17\x56\x7F\x07\x77\x5C\x53\xEB\x4D\x8E\xA9\x6E\x71\x1A\x46\x4F\x72\xC7\xCE\x12\x66\xD3\x44\x54\x4D\x0B\xC2\x48\xA0\xB5\x26\x2C\xE7\x09\x7A\xDF\xA3\x74\x68\x0B\x85\x7D\xEB\x0B\xE5\x93\x3D\x4F\x97\x2A\xFE\x43\x53\x1F\xE8\xDE\xFC\x7F\x01\xD8\xB1\xB4\x79\xBE\x9B\xB0\x1E\x48\x8D\x3D\xFF\xD4\xD4\xB4\xC5\x58\x6D\xD3\x10\xE2\xE3\xB7\x68\x04\x3A\xF0\x28\xBE\xFB\x12\xB9\xD7\x57\x04\xA5\xAE\xFD\x4F\xF6\xF6\xF5\xDD\x71\xC1\xC3\xC5\xCE\xCF\x05\x60\xFF\x32\x9C\x40\xB4\x2D\x4F\xA4\xD3\x37\xD6\xCE\xBA\x5D\x38\x67\x5E\x8A\x10\x10\x44\x1A\x53\x89\x91\x3B\xF5\xD0\xBE\x30\xD2\x83\x8F\x74\x50\xA1\x6F\xC3\xA3\xF4\x6E\x5E\x75\xBC\x5C\xAE\x5C\x7F\xCE\xBD\x9D\xFF\xFC\x4C\x00\x36\xFC\xA0\xBE\x26\x3B\x2A\xF9\x9C\x9B\x72\x67\xD7\xCE\x5D\x8A\xD5\xD2\x81\xE7\x6B\x8A\xE5\x88\x8C\xAB\xB0\x4C\xC1\x70\x27\xE8\x61\x93\x48\x43\x6F\x21\xC4\x90\x90\x76\x24\x3A\x82\xC2\xDB\x4F\xF2\xFE\x7F\xFE\x58\xE9\x2F\x55\x16\x4D\xBA\xB7\xF3\xC9\x4F\x04\xB0\x7D\x19\x56\xC2\x68\x7F\xC1\x75\xAD\xB9\xE9\xC9\xD7\x62\x9F\x71\x11\xB9\xFE\x10\xA9\x04\x75\x29\x05\xA2\xBA\xE1\x23\xFC\xA6\x75\x15\x85\x86\x42\x29\xA2\x27\x1F\xD2\x5E\x6F\xA2\x43\x4D\xDF\x6B\x0F\x93\x3F\xB0\xA5\xE2\x15\xFD\xAB\x26\xDE\x77\xFC\x85\xE1\xFB\x8C\xE1\x37\xB6\x6A\xBD\xDF\x4D\x58\x73\x13\xB5\xB5\xD8\xAD\x93\x90\x7E\x0F\xF5\x36\x08\x09\xC2\x17\x20\xF4\xC7\xF8\xAD\xBA\x54\x7D\x9C\x52\x90\xAC\xD5\x68\x1F\x08\xC1\x3D\x63\x0E\xE5\xCE\x6D\x56\x14\xF1\x87\xAD\x77\x67\xA6\x75\xDC\xD7\xB7\xEF\x43\x00\x76\x2C\x6D\x9E\xED\x3A\xD6\xF7\xED\x84\xC2\x1E\x35\x06\x11\xE5\xC0\x07\xA1\x62\x97\x6F\x3D\xE0\x01\xD0\x71\xBA\x3D\xE4\xF3\x0F\x00\xF1\xCA\x9A\xB5\x1B\x8B\x7C\xF9\x5C\x97\x8C\xAB\x20\x8C\x01\x18\xB6\x85\x53\x93\x21\x0C\x72\xF5\x81\x9F\x7C\x14\xFA\xBE\x36\x00\xD7\x18\x38\xEA\x40\xC2\xFA\x95\xE5\x18\x86\x99\x90\x28\x5B\x22\xFC\xEE\xD8\xE0\x08\x4A\x41\xC4\x6F\xFF\xDA\x05\xC0\xFD\xB7\x8E\x22\x61\x0F\xF3\x06\x7A\xD0\x25\xEB\xDE\xEA\xE7\xA5\x75\x05\xFC\x92\xCB\x35\xB3\x6B\x10\x91\x80\x00\x44\xA8\x31\x13\x16\x96\x2D\xF1\x2B\xEA\xA2\xB7\xEF\x6C\xBC\xE2\xDC\x07\xBA\x56\x0F\x02\xD8\xF5\xB3\x96\x0B\xEB\x13\xC6\x34\xCB\x96\x98\x96\x40\x46\x3D\x88\xB0\x27\x3E\x56\xC1\x81\x43\x1E\x87\x8F\x9C\x00\x60\xFF\x61\x9F\x09\xA7\x19\xB1\x4E\x31\x8C\x02\xC0\x8E\xDD\x79\x3A\x3B\x3D\xB6\xFF\xD7\x62\xFE\xCC\x32\x3A\x14\x10\x0A\x64\xA8\x31\x8C\x12\xA6\x23\x31\xCB\x0A\xC3\x56\x77\x03\x43\x00\x52\xAE\xB9\xD8\x76\x14\xA6\x2D\x91\x96\x44\x84\x3D\x10\x9C\x00\x24\xA0\x29\x95\x4A\x74\x76\xC6\x54\x2E\x16\x03\xC0\xAA\x5A\x3E\x3C\x0C\x82\x5C\xAE\x8F\xCE\xCE\x12\xED\x75\x76\x75\x45\x82\x16\xE8\x4A\x01\x65\x06\x98\xB6\xC2\xB2\x23\xCC\xB2\x71\xFE\xBA\xDB\xEA\xCE\x99\xF1\x70\xEF\x76\xE3\xA9\xF9\x58\x8E\x6D\x5E\x62\x59\x0A\x65\x29\xA4\x29\x40\x69\x28\xBF\x07\xB2\x16\xA4\xA6\x7D\x94\x4F\x77\x77\x37\x00\xED\xCD\x16\xC8\x6A\x08\xC4\x48\x00\x4D\x0D\x05\xBA\xBB\xF3\x64\x33\x69\x10\x16\x31\x5F\x05\x22\xEC\x44\xDA\x12\xE5\x80\xE9\x29\x6C\x3B\x12\xA9\xA4\x73\x25\xB0\xDD\x38\x6F\x7C\xCB\xA4\xA4\x6B\x66\x0C\x4B\xA2\x0C\xC1\x8B\x5B\x0A\x94\xB4\xE6\x2B\xD3\x22\xB2\x4E\x04\xC2\xA4\xB1\x01\xAE\x99\x0B\x5A\x68\x5A\x9A\x3C\x90\xD1\x07\x00\x08\x40\x72\xF5\xA5\x92\xF5\x9B\x7D\x6E\xB8\x4A\x81\x51\x8C\x95\x53\x62\xD3\xDE\x3C\x87\x0E\xF9\x5C\x3C\x21\x85\x61\x2B\x4C\x2B\xC2\x34\xD5\x4C\x00\x23\x53\x63\x4F\x30\x0D\x85\x54\x92\x83\x3D\x3E\xFB\x4F\x04\x4C\x3B\x27\x49\x36\xEB\x80\x0C\x40\x6A\x50\x82\x7B\x7F\x94\x8D\xE7\x52\x0F\xC5\x5F\x50\x0D\x93\x04\x14\xD9\x7A\xC9\xEF\x1F\x1C\x1D\x47\x27\x8C\x40\xFB\x60\x41\x5D\xD6\x61\xF3\xAE\x32\xCF\x6F\x29\x70\xF9\xC4\x54\x15\x80\x9C\x08\x08\xC3\x30\x8D\x16\xA9\x24\x42\x4A\x1A\xEB\x6C\xBE\x7B\x65\x92\x55\xAF\xE7\x18\x9B\x97\x34\xB6\x24\xC0\x54\xF1\x50\xB2\xEA\xFA\x81\xE4\x1B\xA8\x09\xB1\xF2\xC1\xA1\x05\x88\x08\x08\x00\x1F\xA8\xF0\xCA\x96\x1C\x37\x7E\xA3\x19\xE5\x45\x04\xB9\x00\xC3\xD6\x58\xA6\x6A\x04\xA4\x21\x84\x74\xA4\x10\x20\x24\xA9\x84\x02\xC3\x64\xE1\xC5\x6D\x2C\x5F\xD3\xC5\x8D\xD7\x34\x90\x74\x5D\x50\x16\x28\xA3\xAA\x4C\x0C\x01\x18\xF4\x80\xAA\xE6\xB3\xAA\x86\x23\x02\xE9\x83\x28\xB1\xFA\xE5\xBD\xCC\x9A\xDE\x8C\xE5\x2A\xA2\xB0\x82\xB4\xC0\xB0\x22\x94\xA9\x6C\x40\x1A\x52\xE0\x09\x21\xAB\xE5\xCE\x00\x65\x21\x0C\x87\x5B\x16\x8E\xE7\xD7\x7F\x3A\xC8\x75\xF3\xCE\xA6\xAD\xB5\x01\x84\x09\x42\x0D\x2B\x42\x03\x14\x14\x23\x01\x88\x2A\x00\x7C\x56\x3D\xFF\x36\xA7\xB5\x35\x71\xD6\x38\x1B\xED\x15\x10\x16\x48\x4B\xA3\xE2\x1C\x28\x03\x42\x06\x9A\x63\xB1\x55\x12\xA4\x41\x0C\x31\x81\xB2\xD2\x2C\x5E\x70\x1E\xF3\x17\xBE\xC8\xCA\x27\xF6\x13\xE9\x3A\x10\x03\xA3\x16\xA8\x05\x32\xC3\xAE\x69\x20\x05\xA4\x39\x74\x34\x62\xD1\xB7\x57\x93\x70\x6A\x99\x7A\xEE\x38\x50\x69\x50\x2E\xC2\xB4\x11\xA6\x89\x32\x15\x18\xF2\x04\x80\x2C\x79\xDE\x0E\x3D\x60\x85\xA8\x02\x90\x09\x90\x49\xEA\xEB\xB3\x7C\xF3\x86\xE9\x3C\xB1\x64\x0D\x57\xCF\x7D\x84\xC7\x57\x6E\xA2\xA7\x37\x04\x12\xD5\xE1\x02\x0E\xE0\xA0\xB5\xC5\x86\x4D\x47\x59\x7A\xD7\xD3\xDC\x34\xEB\x97\xA4\x50\x5C\x7E\xE1\x64\x10\x29\x90\x49\x84\x4A\x80\xB4\x11\xCA\x40\x1A\x06\x21\xE2\x1D\x20\x32\x8E\xED\x7D\x6F\x5B\x36\x5B\xD7\x67\x09\x99\x41\xA8\xD8\xD5\xD2\x8E\x41\x88\x04\xDF\x5A\x34\x8B\x67\x7F\xB3\x1E\xB9\xBB\x8B\x35\x3F\xF9\x0B\x2B\x97\x3E\x4D\xCB\xF8\x56\x46\x9F\xD1\x44\x4D\x43\x12\xAF\xE4\xD3\x75\xF8\x7D\x0E\xEC\x38\x82\x7A\xBF\x48\x12\xC0\x36\x58\xB2\x6C\x5E\x7C\x16\x16\x08\x27\xAE\x0B\xD2\x00\x69\x20\x94\x24\xD7\x1F\xBC\x01\x84\xC6\xD4\x15\xF8\x85\xA9\xD1\x8B\x16\x62\xE1\xC8\x84\x32\x40\x18\x24\x12\x0E\x97\x2D\x9E\xC3\xBF\x7E\xF1\x1C\x12\xC8\x46\x1A\x7F\xE7\x11\xF6\xED\x3C\x32\xA2\x0C\xD7\x0C\x9B\xCF\xB8\xEE\x4B\x8C\x19\xDD\x40\xFC\x35\x1A\x62\x88\xA8\x26\x69\x18\xA1\xD7\xEF\xCC\xBD\x00\x68\x09\x50\xF0\xBC\xC7\xF5\x00\xB3\x06\x19\x26\xAA\x73\xC1\x82\x05\xD3\xE9\x91\x9F\xDA\x3E\x02\xD0\x07\x2C\x5C\x34\x73\x68\x41\xEB\xEA\x88\x73\x53\x44\x90\x3F\x59\xD9\x74\xF3\xEF\xBA\xB6\x0E\x70\x88\xA6\xDB\x76\xFF\xC3\xF3\x2A\x1B\x09\xAB\x6D\x4D\x14\x41\x14\x82\x8E\xBF\xA7\x4D\xD9\x14\xA3\x3B\x46\xE3\x03\x61\x3A\x4D\xE8\xBA\x83\x9D\x50\x00\xE8\x74\x1A\xD2\x69\x22\x20\x79\x6A\x03\x13\xCE\x6C\x8E\xAD\xD0\x21\xE8\x00\xA2\x00\xC2\x10\x82\x08\x1D\x44\xBC\xF9\x4E\xEF\x23\x80\x47\xD5\xD7\x08\xD0\x5D\x45\xEF\xC7\x56\x3A\xF9\x8A\x0A\x7C\x45\xE0\x43\x50\x01\xC3\xAF\x56\x43\xC9\xC4\x0B\xA6\x30\x7F\xD9\x43\xB4\x35\x37\x53\xEE\xEE\xE6\xB5\x97\x5F\x66\xC3\xAB\xAF\xF2\xF5\x19\x33\x38\x33\x9B\x25\xCA\xE7\x79\x7D\xEB\x56\xDE\x1C\xD5\x1F\x9B\xAA\x43\xD0\x15\xD0\x65\x08\xCB\xE0\x57\x20\x08\xE8\xEE\x2E\xBE\x76\xC9\x3D\x7B\x57\x57\xE3\x33\xD4\x90\x34\x7E\x6F\xDB\xAB\xB9\x95\xD3\x1F\xA9\x49\x38\xB7\x8B\x4A\x19\x2C\x0F\x0C\x0B\x64\xCC\xFD\x71\x4E\x2D\x75\x9B\x36\x71\xB2\xAF\x8F\x28\x9F\xE7\xBC\x7C\x1E\xC7\xB2\x68\xDF\xB8\x91\x62\x7F\x3F\x22\x8A\x98\x9E\x4E\xA3\x26\xB7\xC4\x25\x58\xFB\x10\x95\x20\xE8\x07\xBF\x04\xBE\x47\xB9\x50\xCA\x2D\x5F\x7D\x70\x09\x70\x72\x40\xEF\x88\x96\xEC\x6F\xCF\xBD\x71\xD7\x65\xD7\xCE\xEE\x70\x2D\xF3\xAB\x94\x0D\x50\x03\x85\x45\x13\x1E\xDA\x43\xE9\xC0\x36\xA2\x7C\x9E\xB0\x50\x40\x7B\x1E\x4E\xA5\x82\x2F\x04\xCA\xB2\x30\x1B\x1A\x70\x32\x19\x1C\x43\x41\xD4\x5F\xB5\xBC\x1F\xFC\x02\x54\x8A\x04\xA5\x7E\xFF\xEF\xEB\x0F\xFD\x70\xD9\x9F\x8F\xBE\x35\x60\xFD\x87\x00\x5C\xBB\x8A\xCA\x9B\x63\x0F\xCF\x1B\x7F\xBE\x5A\xE3\x1A\x72\xA6\x50\xD5\xBA\xAE\x03\xAC\x09\x49\xE4\x91\x00\x33\x99\x8C\xE3\x6E\xDB\x8C\x11\x02\x65\xDB\x18\x99\x0C\x76\x63\x23\x76\x63\x23\x51\x43\x0E\xC2\x3C\x84\x5E\x6C\x7D\xA5\x9F\xA0\xBF\x50\x79\x65\xC3\xB1\x3B\xAE\xF8\xF9\x3B\xCF\x02\xA5\xE1\x3A\x15\x1F\x90\x15\xEB\x7A\xCB\x93\xA3\x03\x4F\xB4\x8C\x69\x1C\x6D\xDB\xA2\x43\x08\x2D\x20\xE0\xF4\xB3\xEB\x58\x7B\x3C\x8F\xAE\xA4\x69\x6F\x6D\xC3\x6E\x6C\xC4\x69\x69\xC1\x69\x6B\xC3\x69\x6D\xC5\x4F\xA7\x79\x29\x38\xCC\xAC\x05\x59\x1C\x55\x8E\x2D\xF7\x8B\x94\xFA\xF2\x5D\x4F\xAD\xD9\x7D\xF3\xBC\x65\x3B\x9F\xA9\x92\x64\x84\x7C\x12\xB7\xE4\xCE\xE5\x53\x16\x9C\x32\xB6\xFE\x3E\xB7\x36\x75\x8A\x30\x6D\x30\x4C\x8E\xF5\x54\xD8\xB1\x2B\x87\xC8\x41\x14\xC4\x0D\xAB\x95\x10\x38\xAD\x92\x29\x1D\x75\x28\x02\x88\x2A\x04\x9E\x17\x1E\x3E\xDC\xF7\xCC\x5D\x0F\xEE\xB8\xE7\xA9\x75\xB9\x3D\xF0\xD1\xFF\x8B\x9F\x4A\xEE\xEB\xBF\x48\xCD\x4F\x6F\x99\x72\x53\x6B\x5B\xCD\xE2\x54\xC6\x9D\x64\x58\xA6\x40\x0E\xE4\x46\x9C\x1F\x71\xD6\x47\x68\x1D\x50\x2E\x7A\xF9\xE3\x5D\xC5\xB5\xAB\xD6\x1E\x7C\x6C\xC9\x63\x47\xDF\x02\x72\xC4\x6C\xFD\x48\xF9\x6C\xD5\x25\x7E\xCF\x7E\xE8\xD6\x53\xCF\x9E\x31\xB9\x61\x4E\x5D\x9D\xD5\xE1\xBA\x66\xBB\xA1\x48\x45\x9A\xC0\xF3\xA3\x9E\x7C\xAE\xBC\x6F\xD7\x9E\xDC\xA6\xA5\x2B\xF6\x6C\xD8\xDD\x45\x2F\x50\x20\x6E\x08\x3E\xF5\xE0\xCF\x2B\x92\xC1\x5A\x3D\xBC\x01\x20\xAC\x2A\x0C\x19\xF1\xC7\xF8\xC9\xF2\x3F\x00\x7A\x7E\xB8\xD8\x6B\xB1\xDB\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82"
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(0) end
    texture = renderLoadTextureFromFileInMemory(ffi.cast('intptr_t', ffi.cast('const char*', exit_data)), #exit_data)
    while true do  wait(0)
        if texture ~= nil then
            renderDrawTexture(texture, 800.0, 600.0, 32.0, 32.0, 0.0, 0xFFFFFFFF)
        end
    end
end
в итоге texture = nil
 
Последнее редактирование:

MrCold

Активный
364
118
Можно ли как-то хукать и менять позицию объекта? Ну или другими способами. Вот так не робит:
Lua:
function events.onCreateObject(objId, data)
    if data.modelId == 1588 or data.modelId == 1590 or data.modelId == 1589 or data.modelId == 1591 or data.modelId == 1592 then
        local X, Y, Z = getCharCoordinates(PLAYER_PED)
        data.position.x = X
        data.position.y = Y
        data.position.z = Z
        sampAddChatMessage('id: ' .. objId .. ' x: ' .. data.position.x .. ' y: ' .. data.position.y .. ' z: ' .. data.position.z, -1)
    end
end
 

Armando Guerra

Новичок
16
1
Здравствуйте, меняю кодировку на Windows 1251 и все равно пишет иероглифами, помогите пожалуйста
 

Musaigen

abobusnik
Проверенный
1,585
1,309
Можно ли как-то хукать и менять позицию объекта? Ну или другими способами. Вот так не робит:
Lua:
function events.onCreateObject(objId, data)
    if data.modelId == 1588 or data.modelId == 1590 or data.modelId == 1589 or data.modelId == 1591 or data.modelId == 1592 then
        local X, Y, Z = getCharCoordinates(PLAYER_PED)
        data.position.x = X
        data.position.y = Y
        data.position.z = Z
        sampAddChatMessage('id: ' .. objId .. ' x: ' .. data.position.x .. ' y: ' .. data.position.y .. ' z: ' .. data.position.z, -1)
    end
end
Подмениваешь и потом
return {objId, data}