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

Fott

Простреленный
3,461
2,378
[23:06:37.256652] (system) Session started.
[23:06:37.257651] (debug) Module handle: 72660000

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

Copyright (c) 2016, BlastHack Team

[23:06:37.257651] (info) Working directory: C:\Games\GTA San Andreas\moonloader
[23:06:37.257651] (debug) FP Control: 0009001F
[23:06:37.257651] (debug) Game: GTA SA 1.0.0.0 US
[23:06:37.257651] (system) Installing pre-game hooks...
[23:06:37.259652] (system) Hooks installed.
[23:06:38.666510] (debug) Initializing opcode handler table
[23:06:38.666510] (debug) package.path = C:\Games\GTA San Andreas\moonloader\lib\?.lua;C:\Games\GTA San Andreas\moonloader\lib\?\init.lua;C:\Games\GTA San Andreas\moonloader\?.lua;C:\Games\GTA San Andreas\moonloader\?\init.lua;.\?.lua;C:\Games\GTA San Andreas\moonloader\lib\?.luac;C:\Games\GTA San Andreas\moonloader\lib\?\init.luac;C:\Games\GTA San Andreas\moonloader\?.luac;C:\Games\GTA San Andreas\moonloader\?\init.luac;.\?.luac
[23:06:38.666510] (debug) package.cpath = C:\Games\GTA San Andreas\moonloader\lib\?.dll;
[23:06:38.666510] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\AutoForward v2.lua'...
[23:06:38.667511] (debug) New script: 0D38EC9C
[23:06:38.669512] (system) AutoForward: Loaded successfully.
[23:06:38.669512] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\AutoReboot.lua'...
[23:06:38.669512] (debug) New script: 01E748C4
[23:06:38.670511] (system) ML-AutoReboot: Loaded successfully.
[23:06:38.670511] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\check-moonloader-updates.lua'...
[23:06:38.670511] (debug) New script: 01E74E6C
[23:06:38.672512] (system) Check MoonLoader Updates: Loaded successfully.
[23:06:38.672512] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\fastload.lua'...
[23:06:38.672512] (debug) New script: 13251D04
[23:06:38.673512] (system) быстрая загрузка: Loaded successfully.
[23:06:38.673512] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\fbitools.lua'...
[23:06:38.673512] (debug) New script: 13251E8C
[23:06:38.879559] (system) SA:PD Tools: Loaded successfully.
[23:06:38.879559] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\gta5hudhq.luac'...
[23:06:38.879559] (debug) New script: 1328341C
[23:06:38.880559] (system) [hqGTAVhud]: Loaded successfully.
[23:06:38.880559] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\hitinformer.luac'...
[23:06:38.880559] (debug) New script: 132836AC
[23:06:38.891561] (system) Absolute Damage Informer: Loaded successfully.
[23:06:38.891561] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\MP.lua'...
[23:06:38.891561] (debug) New script: 13283C6C
[23:06:38.898563] (system) LVa-Police: Loaded successfully.
[23:06:38.898563] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\MST_Script.lua'...
[23:06:38.898563] (debug) New script: 13283DF4
[23:06:38.903564] (system) MST_Script.lua: Loaded successfully.
[23:06:38.903564] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\Multi_Script.lua'...
[23:06:38.903564] (debug) New script: 13283F7C
[23:06:38.913566] (system) Multi_Script: Loaded successfully.
[23:06:38.913566] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\out.lua'...
[23:06:38.913566] (debug) New script: 1328430C
[23:06:38.914566] (system) out.lua: Loaded successfully.
[23:06:38.914566] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\reload_all.lua'...
[23:06:38.914566] (debug) New script: 132AD01C
[23:06:38.915566] (system) ML-ReloadAll: Loaded successfully.
[23:06:38.915566] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\RequestText.lua'...
[23:06:38.915566] (debug) New script: 132AD1A4
[23:06:38.921567] (system) RequestText.lua: Loaded successfully.
[23:06:38.921567] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\scoreboard.lua'...
[23:06:38.921567] (debug) New script: 132AD32C
[23:06:38.932570] (system) ImGui Scoreboard: Loaded successfully.
[23:06:38.932570] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\SF Integration.lua'...
[23:06:38.932570] (debug) New script: 132BD1A4
[23:06:38.934571] (system) SF Integration: Loaded successfully.
[23:06:38.934571] (system) Loading script 'C:\Games\GTA San Andreas\moonloader\TimerOnline.lua'...
[23:06:38.934571] (debug) New script: 132C5334
[23:06:38.940572] (system) TimerOnline.lua: Loaded successfully.
[23:06:38.941572] (system) out.lua: Script terminated. (1328430C)
[23:06:40.833996] (system) Installing post-load hooks...
[23:06:40.834996] (system) Hooks installed.
[23:06:41.958248] (script) SA:PD Tools: SA:PD Tools v10.27: Успешно загружен
[23:06:41.958248] (script) SA:PD Tools: Все необходиме библиотеки были найдены и загружены
[23:06:42.027263] (script) MST_Script.lua: {3377FF}[BC_Script]:{FFFFFF} Конфигурация загружена.
[23:06:42.715485] (script) SA:PD Tools: Проверка обновления прошка неуспешно. Запускаю старую версию.
[23:06:46.381028] (script) SA:PD Tools: LVA
[23:06:46.381028] (script) SA:PD Tools: Лейтенант
[23:09:02.405487] (system) Unloading...
[23:09:02.405487] (system) AutoForward: Script terminated. (0D38EC9C)
[23:09:02.405487] (system) ML-AutoReboot: Script terminated. (01E748C4)
[23:09:02.406487] (system) Check MoonLoader Updates: Script terminated. (01E74E6C)
[23:09:02.406487] (system) быстрая загрузка: Script terminated. (13251D04)
[23:09:02.407487] (system) SA:PD Tools: Script terminated. (13251E8C)
[23:09:02.413489] (system) [hqGTAVhud]: Script terminated. (1328341C)
[23:09:02.415488] (system) Absolute Damage Informer: Script terminated. (132836AC)
[23:09:02.416489] (system) LVa-Police: Script terminated. (13283C6C)
[23:09:02.417489] (system) MST_Script.lua: Script terminated. (13283DF4)
[23:09:02.417489] (system) Multi_Script: Script terminated. (13283F7C)
[23:09:02.419490] (system) ML-ReloadAll: Script terminated. (132AD01C)
[23:09:02.419490] (system) RequestText.lua: Script terminated. (132AD1A4)
[23:09:02.424491] (system) ImGui Scoreboard: Script terminated. (132AD32C)
[23:09:02.428491] (system) SF Integration: Script terminated. (132BD1A4)
[23:09:02.434493] (system) TimerOnline.lua: Script terminated. (132C5334)
[23:09:02.462500] (system) Session terminated.



Скорее всего речь идёт об этом (кликабельно)
Все скрипты загружаются, где ты краш то нашел
 

_ex$tanOr_

Участник
125
19
Lua:
if text:find('~w~Press ~g~~k~~CONVERSATION_YES~ ~w~%(%d+/10%)') then -- буква Y

sendKey(64)

sampAddChatMessage("Нажата буква Y", -1)

end

откуда вот sendkey 64 присвоили? Где эти коды найти?
 

Luis_Mora

Участник
31
1
Все скрипты загружаются, где ты краш то нашел

Я вижу что все скрипты грузятся. Речь о том что во время применения конкретно этой функции, т.е. замена текста в чате, крашит саму игру а не скрипт. Если бы выбивало скрипт, я бы не обратился)
Lua:
if text:find('~w~Press ~g~~k~~CONVERSATION_YES~ ~w~%(%d+/10%)') then -- буква Y

sendKey(64)

sampAddChatMessage("Нажата буква Y", -1)

end

откуда вот sendkey 64 присвоили? Где эти коды найти?
Я же тебе уже давал ссылку только что)
Ссылка
Все скрипты загружаются, где ты краш то нашел
Причём интересно так. Запускался на локальном сервере, та же самая функция, всё такое же, и там всё в порядке.
 
  • Нравится
Реакции: _ex$tanOr_

ufdhbi

Известный
Проверенный
1,460
866
Лог чего конкретно?
Если SF то вот.


[23:06:37]
SAMPFUNCS v5.4.1-final rel.21 (SA-MP 0.3.7-R1)
Compiled: Dec 24 2018 03:13:37

Copyright (c) 2013-2018, BlastHack Team <blast.hk>

[23:06:37] Base address: 0x71F10000.
[23:06:37] Initializing opcodes...
[23:06:37] Opcodes initialized successfully. Total opcodes: 382.
[23:06:37] Hook "CTimer::GetRealTimeScale" installed.
[23:06:37] Hook "CPad::Update" installed.
[23:06:37] Hook "CCamera::RenderMotionBlur" installed.
[23:06:37] Hook "CScriptThread::AddScriptToQueue" installed.
[23:06:37] Hook "CScriptThread::RemoveScriptFromQueue" installed.
[23:06:37] Hook "CScriptThread::Process" installed.
[23:06:37] Hook "WinMainLoop" installed.
[23:06:37] Hook "CLoadingScreen::RenderSplash" installed.
[23:06:37] Hook "CVehicle::CVehicle" installed.
[23:06:37] Hook "CVehicle::~CVehicle" installed.
[23:06:37] Hook "CPed::CPed" installed.
[23:06:37] Hook "CPed::~CPed" installed.
[23:06:37] Initializing plugins...
[23:06:37] SF Plugin "chatroom_3_1.sf" loaded.
[23:06:37] SF Plugin "FixReconnect.sf" loaded.
[23:06:37] SF Plugin "GameExitFixbyRomelo.sf" loaded.
[23:06:37] SF Plugin "Reconnect+.sf" loaded.
[23:06:38] samp.dll base addres: 0x03CB0000
[23:06:38] Hook "SAMP: CNetGame::CNetGame" installed.
[23:06:38] Hook "SAMP: CDialog::Close" installed.
[23:06:38] Hook "SAMP: QuitGame" installed.
[23:06:38] Hook "SAMP: CCmdWindow::ProcessInput" installed.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Session started.
[23:06:40] {C0C0C0}[ML] {C0C0C0}
MoonLoader v.026.5-beta loaded.
[23:06:40] {C0C0C0}[ML] {C0C0C0}Developers: FYP, hnnssy, EvgeN 1137

[23:06:40] {C0C0C0}[ML] {C0C0C0}Copyright (c) 2016, BlastHack Team
[23:06:40] {C0C0C0}[ML] {C0C0C0}https://www.blast.hk/moonloader/

[23:06:40] {C0C0C0}[ML] {A9EFF5}(info) {C0C0C0}Working directory: C:\Games\GTA San Andreas\moonloader
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Installing pre-game hooks...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Hooks installed.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\AutoForward v2.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}AutoForward: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\AutoReboot.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}ML-AutoReboot: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\check-moonloader-updates.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}Check MoonLoader Updates: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\fastload.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}быстрая загрузка: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\fbitools.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}SA:PD Tools: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\gta5hudhq.luac'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}[hqGTAVhud]: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\hitinformer.luac'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}Absolute Damage Informer: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\MP.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}LVa-Police: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\MST_Script.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}MST_Script.lua: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\Multi_Script.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}Multi_Script: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\out.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}out.lua: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\reload_all.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}ML-ReloadAll: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\RequestText.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}RequestText.lua: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\scoreboard.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}ImGui Scoreboard: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\SF Integration.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}SF Integration: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Loading script 'C:\Games\GTA San Andreas\moonloader\TimerOnline.lua'...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}TimerOnline.lua: {C0C0C0}Loaded successfully.
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {E0E0E0}out.lua: {C0C0C0}Script terminated. (1328430C)
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Installing post-load hooks...
[23:06:40] {C0C0C0}[ML] {FA9746}(system) {C0C0C0}Hooks installed.
[23:06:41] Direct3DDevice9 hook installed.
[23:06:41] Hook "SAMP: RakPeer::HandleRPCPacket" installed.
[23:06:41] Initializing SAMP data...
[23:06:41] Info initialized.
[23:06:41] Pools initialized.
[23:06:41] Player pool initialized.
[23:06:41] Vehicle pool initialized.
[23:06:41] Chat initialized.
[23:06:41] Input initialized.
[23:06:41] Death list initialized.
[23:06:41] Dialog initialized.
[23:06:41] Misc data initialized.
[23:06:41] Scoreboard initialized.
[23:06:41] RakNet initialized.
[23:06:41] SAMPFUNCS v5.4.1-final rel.21 (SA-MP 0.3.7-R1) completely loaded!
[23:06:42] {C0C0C0}[ML] {7DD156}(script) {E0E0E0}SA:PD Tools: {C0C0C0}SA:PD Tools v10.27: Успешно загружен
[23:06:42] {C0C0C0}[ML] {7DD156}(script) {E0E0E0}SA:PD Tools: {C0C0C0}Все необходиме библиотеки были найдены и загружены
[23:06:42] RegisterCommand Error: Command "rt" already exists.
[23:06:42] {C0C0C0}[ML] {7DD156}(script) {E0E0E0}MST_Script.lua: {C0C0C0}{3377FF}[BC_Script]:{FFFFFF} Конфигурация загружена.
[23:06:42] {C0C0C0}[ML] {7DD156}(script) {E0E0E0}SA:PD Tools: {C0C0C0}Проверка обновления прошка неуспешно. Запускаю старую версию.
[23:06:46] {C0C0C0}[ML] {7DD156}(script) {E0E0E0}SA:PD Tools: {C0C0C0}LVA
[23:06:46] {C0C0C0}[ML] {7DD156}(script) {E0E0E0}SA:PD Tools: {C0C0C0}Лейтенант
[23:09:02] {00FF00}TimerOnline: {FFFFFF}Ваш онлайн сохранён!
[23:09:02] Uninitializing SAMPFUNCS...
[23:09:02] Exited.
Moonloader log
Я же тебе уже давал ссылку только что)
Ты ему дал ссылку на виртуальные коды...
 

_ex$tanOr_

Участник
125
19
Я вижу что все скрипты грузятся. Речь о том что во время применения конкретно этой функции, т.е. замена текста в чате, крашит саму игру а не скрипт. Если бы выбивало скрипт, я бы не обратился)

Я же тебе уже давал ссылку только что)
Ссылка

Причём интересно так. Запускался на локальном сервере, та же самая функция, всё такое же, и там всё в порядке.
Номера то у этих клавиш не схожи с теми, что в коде. А код рабочий
 

damag

Женюсь на официантке в моем любимом баре
Проверенный
1,152
1,202
Lua:
function sendKey(key)
    local _, myId = sampGetPlayerIdByCharHandle(PLAYER_PED)
    local data = allocateMemory(68)
    sampStorePlayerOnfootData(myId, data)
    setStructElement(data, 36, 1, key, false)
    sampSendOnfootData(data)
    freeMemory(data)

end
Y = gunid + 64 F =keydata + 16 H = gunid + 192 C = keydata + 2 N = gunid + 128 LMB = keydata + 4 RMB = keydata + 128 TAB = keydata + 1 SPRINT = keydata +8 ALT = keydata + 1024 JUMP = keydata + 32

пример ALT
Lua:
local data = samp_create_sync_data('player')
data.keysData = data.keysData + 1024
data.send()

function samp_create_sync_data(sync_type, copy_from_player)
    local ffi = require 'ffi'
    local sampfuncs = require 'sampfuncs'
    -- from SAMP.Lua
    local raknet = require 'samp.raknet'
    require 'samp.synchronization'

    copy_from_player = copy_from_player or true
    local sync_traits = {
        player = {'PlayerSyncData', raknet.PACKET.PLAYER_SYNC, sampStorePlayerOnfootData},
        vehicle = {'VehicleSyncData', raknet.PACKET.VEHICLE_SYNC, sampStorePlayerIncarData},
        passenger = {'PassengerSyncData', raknet.PACKET.PASSENGER_SYNC, sampStorePlayerPassengerData},
        aim = {'AimSyncData', raknet.PACKET.AIM_SYNC, sampStorePlayerAimData},
        trailer = {'TrailerSyncData', raknet.PACKET.TRAILER_SYNC, sampStorePlayerTrailerData},
        unoccupied = {'UnoccupiedSyncData', raknet.PACKET.UNOCCUPIED_SYNC, nil},
        bullet = {'BulletSyncData', raknet.PACKET.BULLET_SYNC, nil},
        spectator = {'SpectatorSyncData', raknet.PACKET.SPECTATOR_SYNC, nil}
    }
    local sync_info = sync_traits[sync_type]
    local data_type = 'struct ' .. sync_info[1]
    local data = ffi.new(data_type, {})
    local raw_data_ptr = tonumber(ffi.cast('uintptr_t', ffi.new(data_type .. '*', data)))
    -- copy player's sync data to the allocated memory
    if copy_from_player then
        local copy_func = sync_info[3]
        if copy_func then
            local _, player_id
            if copy_from_player == true then
                _, player_id = sampGetPlayerIdByCharHandle(PLAYER_PED)
            else
                player_id = tonumber(copy_from_player)
            end
            copy_func(player_id, raw_data_ptr)
        end
    end
    -- function to send packet
    local func_send = function()
        local bs = raknetNewBitStream()
        raknetBitStreamWriteInt8(bs, sync_info[2])
        raknetBitStreamWriteBuffer(bs, raw_data_ptr, ffi.sizeof(data))
        raknetSendBitStreamEx(bs, sampfuncs.HIGH_PRIORITY, sampfuncs.UNRELIABLE_SEQUENCED, 1)
        raknetDeleteBitStream(bs)
    end
    -- metatable to access sync data and 'send' function
    local mt = {
        __index = function(t, index)
            return data[index]
        end,
        __newindex = function(t, index, value)
            data[index] = value
        end
    }
    return setmetatable({send = func_send}, mt)
end
 
  • Нравится
Реакции: ГОХА | GoxaShow

_ex$tanOr_

Участник
125
19
Помогите, пожалуйста, определить id текстдрава, который на USE. Там id под id идет, нижний не могу разглядеть
sa-mp-001.png
 

Luis_Mora

Участник
31
1
Помогите, пожалуйста, определить id текстдрава, который на USE. Там id под id идет, нижний не могу разглядеть
Удали верхний текстдрав. Команда вроде даже в этом скрипте быть должна если память не изменяет.