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

Удалённый пользователь 405536

Гость
Попытка не обвенчалась успехом

Все равно -1
Держи пример
Lua:
require 'lib.moonloader'
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    res, id = sampGetPlayerIdByCharHandle(playerPed)
    if res then
        nick = sampGetPlayerNickname(id)
        nick = nick:gsub('_', ' ')
        sampAddChatMessage('{FF0000}[SH] {FF8C00}Добро пожаловать '..nick..'['..id..']', 0xFFFF0000)
    end
    while true do
        wait(0)
    end
end
 
  • Ха-ха
Реакции: Shinodaaa

Bernardoooo!

Известный
98
13
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    wait(2000)
    sampRegisterChatCommand('/dsign', newfuncs)
    wait(-1)
end

function newfuncs()
        local veh = storeCarCharIsInNoSave(PLAYER_PED)
        local _, vehid = sampGetVehicleIdByCarHandle(veh)
         sampAddChatMessage('{CEC0CC}[{FF00D6}AUTO DSIGN:{CEC0CC}]{00DD00}CALLSIGN удалён с автомобиля: {D9D4D9}..veh..', -1)
         sampSendChat("/dsign '..veh..'")
end
В чём проблема сего говнокода? Почему в dsign не вводится айди транспорта?
 

damag

Женюсь на официантке в моем любимом баре
Проверенный
1,152
1,192
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    wait(2000)
    sampRegisterChatCommand('/dsign', newfuncs)
    wait(-1)
end

function newfuncs()
        local veh = storeCarCharIsInNoSave(PLAYER_PED)
        local _, vehid = sampGetVehicleIdByCarHandle(veh)
         sampAddChatMessage('{CEC0CC}[{FF00D6}AUTO DSIGN:{CEC0CC}]{00DD00}CALLSIGN удалён с автомобиля: {D9D4D9}..veh..', -1)
         sampSendChat("/dsign '..veh..'")
end
В чём проблема сего говнокода? Почему в dsign не вводится айди транспорта?
Закрывай ковычки когда вызываешь переменную

sampAddChatMessage('{CEC0CC}[{FF00D6}AUTO DSIGN:{CEC0CC}]{00DD00}CALLSIGN удалён с автомобиля: {D9D4D9}'..veh, -1)
sampSendChat("/dsign '..veh)
 

Bernardoooo!

Известный
98
13
Закрывай ковычки когда вызываешь переменную

sampAddChatMessage('{CEC0CC}[{FF00D6}AUTO DSIGN:{CEC0CC}]{00DD00}CALLSIGN удалён с автомобиля: {D9D4D9}'..veh, -1)
sampSendChat("/dsign '..veh)
вот такая шляпа
[18:36:10.644259] (info) Working directory: D:\GtaNa2K\moonloader
[18:36:10.644259] (debug) FP Control: 0009001F
[18:36:10.645259] (debug) Game: GTA SA 1.0.0.0 US
[18:36:10.645259] (system) Installing pre-game hooks...
[18:36:10.651260] (system) Hooks installed.
[18:36:12.496365] (debug) Initializing opcode handler table
[18:36:12.496365] (debug) package.path = D:\GtaNa2K\moonloader\lib\?.lua;D:\GtaNa2K\moonloader\lib\?\init.lua;D:\GtaNa2K\moonloader\?.lua;D:\GtaNa2K\moonloader\?\init.lua;.\?.lua;D:\GtaNa2K\moonloader\lib\?.luac;D:\GtaNa2K\moonloader\lib\?\init.luac;D:\GtaNa2K\moonloader\?.luac;D:\GtaNa2K\moonloader\?\init.luac;.\?.luac
[18:36:12.496365] (debug) package.cpath = D:\GtaNa2K\moonloader\lib\?.dll;
[18:36:12.653374] (system) Loading script 'D:\GtaNa2K\moonloader\AutoReboot.lua'...
[18:36:12.653374] (debug) New script: 01ADE694
[18:36:12.659374] (system) ML-AutoReboot: Loaded successfully.
[18:36:12.659374] (system) Loading script 'D:\GtaNa2K\moonloader\check-moonloader-updates.lua'...
[18:36:12.659374] (debug) New script: 01C07AAC
[18:36:12.662375] (system) Check MoonLoader Updates: Loaded successfully.
[18:36:12.662375] (system) Loading script 'D:\GtaNa2K\moonloader\dsign bez ebli.lua'...
[18:36:12.662375] (debug) New script: 01C07C34
[18:36:12.663375] (system) dsign bez ebli.lua: Loaded successfully.
[18:36:12.663375] (system) Loading script 'D:\GtaNa2K\moonloader\pb (1).lua'...
[18:36:12.703377] (debug) New script: 06E3692C
[18:36:12.705377] (system) pb (1).lua: Loaded successfully.
[18:36:12.705377] (system) Loading script 'D:\GtaNa2K\moonloader\reload_all.lua'...
[18:36:12.705377] (debug) New script: 06E36AB4
[18:36:12.707377] (system) ML-ReloadAll: Loaded successfully.
[18:36:12.707377] (system) Loading script 'D:\GtaNa2K\moonloader\SF Integration.lua'...
[18:36:12.707377] (debug) New script: 06E36C3C
[18:36:12.711377] (system) SF Integration: Loaded successfully.
[18:36:12.711377] (system) Loading script 'D:\GtaNa2K\moonloader\WTD Changer (1).lua'...
[18:36:12.711377] (debug) New script: 06E37DC4
[18:36:12.713377] (system) WTD Changer: Loaded successfully.
[18:36:24.589057] (system) Installing post-load hooks...
[18:36:24.590057] (system) Hooks installed.
[18:37:20.177236] (error) dsign bez ebli.lua: D:\GtaNa2K\moonloader\dsign bez ebli.lua:11: attempt to concatenate local 'f' (a boolean value)
stack traceback:
D:\GtaNa2K\moonloader\dsign bez ebli.lua:11: in function <D:\GtaNa2K\moonloader\dsign bez ebli.lua:8>
[18:37:20.177236] (error) dsign bez ebli.lua: Script died due to an error. (01C07C34)
код
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    wait(2000)
    sampRegisterChatCommand('/dsign', newfuncs)
    wait(-1)
end

function newfuncs()
        local veh = storeCarCharIsInNoSave(PLAYER_PED)
        local f, vehid = sampGetVehicleIdByCarHandle(veh)
        sampAddChatMessage('{CEC0CC}[{FF00D6}AUTO DSIGN:{CEC0CC}]{00DD00}CALLSIGN удалён с автомобиля: {D9D4D9}'..f, -1)
        sampSendChat('/dsign '..f)
end
Поставил другую переменную потому-что первая выбивала айди транспорта, которым ты рулишь всегда единицу. Со второй переменной оно работать отказывается.
 
У

Удалённый пользователь 405536

Гость
вот такая шляпа
[18:36:10.644259] (info) Working directory: D:\GtaNa2K\moonloader
[18:36:10.644259] (debug) FP Control: 0009001F
[18:36:10.645259] (debug) Game: GTA SA 1.0.0.0 US
[18:36:10.645259] (system) Installing pre-game hooks...
[18:36:10.651260] (system) Hooks installed.
[18:36:12.496365] (debug) Initializing opcode handler table
[18:36:12.496365] (debug) package.path = D:\GtaNa2K\moonloader\lib\?.lua;D:\GtaNa2K\moonloader\lib\?\init.lua;D:\GtaNa2K\moonloader\?.lua;D:\GtaNa2K\moonloader\?\init.lua;.\?.lua;D:\GtaNa2K\moonloader\lib\?.luac;D:\GtaNa2K\moonloader\lib\?\init.luac;D:\GtaNa2K\moonloader\?.luac;D:\GtaNa2K\moonloader\?\init.luac;.\?.luac
[18:36:12.496365] (debug) package.cpath = D:\GtaNa2K\moonloader\lib\?.dll;
[18:36:12.653374] (system) Loading script 'D:\GtaNa2K\moonloader\AutoReboot.lua'...
[18:36:12.653374] (debug) New script: 01ADE694
[18:36:12.659374] (system) ML-AutoReboot: Loaded successfully.
[18:36:12.659374] (system) Loading script 'D:\GtaNa2K\moonloader\check-moonloader-updates.lua'...
[18:36:12.659374] (debug) New script: 01C07AAC
[18:36:12.662375] (system) Check MoonLoader Updates: Loaded successfully.
[18:36:12.662375] (system) Loading script 'D:\GtaNa2K\moonloader\dsign bez ebli.lua'...
[18:36:12.662375] (debug) New script: 01C07C34
[18:36:12.663375] (system) dsign bez ebli.lua: Loaded successfully.
[18:36:12.663375] (system) Loading script 'D:\GtaNa2K\moonloader\pb (1).lua'...
[18:36:12.703377] (debug) New script: 06E3692C
[18:36:12.705377] (system) pb (1).lua: Loaded successfully.
[18:36:12.705377] (system) Loading script 'D:\GtaNa2K\moonloader\reload_all.lua'...
[18:36:12.705377] (debug) New script: 06E36AB4
[18:36:12.707377] (system) ML-ReloadAll: Loaded successfully.
[18:36:12.707377] (system) Loading script 'D:\GtaNa2K\moonloader\SF Integration.lua'...
[18:36:12.707377] (debug) New script: 06E36C3C
[18:36:12.711377] (system) SF Integration: Loaded successfully.
[18:36:12.711377] (system) Loading script 'D:\GtaNa2K\moonloader\WTD Changer (1).lua'...
[18:36:12.711377] (debug) New script: 06E37DC4
[18:36:12.713377] (system) WTD Changer: Loaded successfully.
[18:36:24.589057] (system) Installing post-load hooks...
[18:36:24.590057] (system) Hooks installed.
[18:37:20.177236] (error) dsign bez ebli.lua: D:\GtaNa2K\moonloader\dsign bez ebli.lua:11: attempt to concatenate local 'f' (a boolean value)
stack traceback:
D:\GtaNa2K\moonloader\dsign bez ebli.lua:11: in function <D:\GtaNa2K\moonloader\dsign bez ebli.lua:8>
[18:37:20.177236] (error) dsign bez ebli.lua: Script died due to an error. (01C07C34)
код
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    wait(2000)
    sampRegisterChatCommand('/dsign', newfuncs)
    wait(-1)
end

function newfuncs()
        local veh = storeCarCharIsInNoSave(PLAYER_PED)
        local f, vehid = sampGetVehicleIdByCarHandle(veh)
        sampAddChatMessage('{CEC0CC}[{FF00D6}AUTO DSIGN:{CEC0CC}]{00DD00}CALLSIGN удалён с автомобиля: {D9D4D9}'..f, -1)
        sampSendChat('/dsign '..f)
end
Поставил другую переменную потому-что первая выбивала айди транспорта, которым ты рулишь всегда единицу. Со второй переменной оно работать отказывается.
Жду лайк xD
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    wait(2000)
    sampRegisterChatCommand('dsign', newfuncs) -- активация на /dsign будет а не на //dsign
    wait(-1)
end

function newfuncs()
    local veh = storeCarCharIsInNoSave(PLAYER_PED)
    local f, vehid = sampGetVehicleIdByCarHandle(veh)
    if f then
        sampAddChatMessage('{CEC0CC}[{FF00D6}AUTO DSIGN:{CEC0CC}]{00DD00}CALLSIGN удалён с автомобиля: {D9D4D9}'..vehid, -1)
        sampSendChat('/dsign '..vehid)
    end
end
 

Izvinisb

Известный
Проверенный
964
598
Жду лайк xD
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    wait(2000)
    sampRegisterChatCommand('dsign', newfuncs) -- активация на /dsign будет а не на //dsign
    wait(-1)
end

function newfuncs()
    local veh = storeCarCharIsInNoSave(PLAYER_PED)
    local f, vehid = sampGetVehicleIdByCarHandle(veh)
    if f then
        sampAddChatMessage('{CEC0CC}[{FF00D6}AUTO DSIGN:{CEC0CC}]{00DD00}CALLSIGN удалён с автомобиля: {D9D4D9}'..vehid, -1)
        sampSendChat('/dsign '..vehid)
    end
end
Серьезно, sampSendChat отправит команду зареганую в скрипте? И зачем это вообще делать?
 
У

Удалённый пользователь 405536

Гость
Последнее редактирование модератором:

Fott

Простреленный
3,431
2,270
Держи пример
Lua:
require 'lib.moonloader'
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    res, id = sampGetPlayerIdByCharHandle(playerPed)
    if res then
        nick = sampGetPlayerNickname(id)
        nick = nick:gsub('_', ' ')
        sampAddChatMessage('{FF0000}[SH] {FF8C00}Добро пожаловать '..nick..'['..id..']', 0xFFFF0000)
    end
    while true do
        wait(0)
    end
end
Оно берёт мой ид, а нужно чтобы брало ид другого игрока, который напишет определенное сообщение в чат
 
У

Удалённый пользователь 405536

Гость
Оно берёт мой ид, а нужно чтобы брало ид другого игрока, который напишет определенное сообщение в чат
Lua:
local samp = require 'lib.samp.events'
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    while true do
        wait(0)
    end
end

function samp.onServerMessage(color, text)
    if text:find('(.*)%[(%d+)%] говорит: ВЫ ВСЕ ПЛОХИЕ') then
        nick, id = text:match('(.*)%[(%d+)%] говорит: ВЫ ВСЕ ПЛОХИЕ')
        sampAddChatMessage('Ник: '..nick..'\tИД: '..id)
    end
end
 

damag

Женюсь на официантке в моем любимом баре
Проверенный
1,152
1,192
как ускорить все анимации ну например в 2 раза?
setCharAnimSpeed - функция

можно использовать так:
Lua:
all_anims = {'abseil', 'arrestgun', 'atm', 'bike_elbowl', 'bike_elbowr', 'bike_fallr', 'bike_fall_off', 'bike_pickupl', 'bike_pickupr', 'bike_pullupl', 'bike_pullupr', 'bomber', 'car_alignhi_lhs', 'car_alignhi_rhs', 'car_align_lhs', 'car_align_rhs', 'car_closedoorl_lhs', 'car_closedoorl_rhs', 'car_closedoor_lhs', 'car_closedoor_rhs', 'car_close_lhs', 'car_close_rhs', 'car_crawloutrhs', 'car_dead_lhs', 'car_dead_rhs', 'car_doorlocked_lhs', 'car_doorlocked_rhs', 'car_fallout_lhs', 'car_fallout_rhs', 'car_getinl_lhs', 'car_getinl_rhs', 'car_getin_lhs', 'car_getin_rhs', 'car_getoutl_lhs', 'car_getoutl_rhs', 'car_getout_lhs', 'car_getout_rhs', 'car_hookertalk', 'car_jackedlhs', 'car_jackedrhs', 'car_jumpin_lhs', 'car_lb', 'car_lb_pro', 'car_lb_weak', 'car_ljackedlhs', 'car_ljackedrhs', 'car_lshuffle_rhs', 'car_lsit', 'car_open_lhs', 'car_open_rhs', 'car_pulloutl_lhs', 'car_pulloutl_rhs', 'car_pullout_lhs', 'car_pullout_rhs', 'car_qjacked', 'car_rolldoor', 'car_rolldoorlo', 'car_rollout_lhs', 'car_rollout_rhs', 'car_shuffle_rhs', 'car_sit', 'car_sitp', 'car_sitplo', 'car_sit_pro', 'car_sit_weak', 'car_tune_radio', 'climb_idle', 'climb_jump', 'climb_jump2fall', 'climb_jump_b', 'climb_pull', 'climb_stand', 'climb_stand_finish', 'cower', 'crouch_roll_l', 'crouch_roll_r', 'dam_arml_frmbk', 'dam_arml_frmft', 'dam_arml_frmlt', 'dam_armr_frmbk', 'dam_armr_frmft', 'dam_armr_frmrt', 'dam_legl_frmbk', 'dam_legl_frmft', 'dam_legl_frmlt', 'dam_legr_frmbk', 'dam_legr_frmft', 'dam_legr_frmrt', 'dam_stomach_frmbk', 'dam_stomach_frmft', 'dam_stomach_frmlt', 'dam_stomach_frmrt', 'door_lhinge_o', 'door_rhinge_o', 'drivebyl_l', 'drivebyl_r', 'driveby_l', 'driveby_r', 'drive_boat', 'drive_boat_back', 'drive_boat_l', 'drive_boat_r', 'drive_l', 'drive_lo_l', 'drive_lo_r', 'drive_l_pro', 'drive_l_pro_slow', 'drive_l_slow', 'drive_l_weak', 'drive_l_weak_slow', 'drive_r', 'drive_r_pro', 'drive_r_pro_slow', 'drive_r_slow', 'drive_r_weak', 'drive_r_weak_slow', 'drive_truck', 'drive_truck_back', 'drive_truck_l', 'drive_truck_r', 'drown', 'duck_cower', 'endchat_01', 'endchat_02', 'endchat_03', 'ev_dive', 'ev_step', 'facanger', 'facgum', 'facsurp', 'facsurpm', 'factalk', 'facurios', 'fall_back', 'fall_collapse', 'fall_fall', 'fall_front', 'fall_glide', 'fall_land', 'fall_skydive', 'fight2idle', 'fighta_1', 'fighta_2', 'fighta_3', 'fighta_block', 'fighta_g', 'fighta_m', 'fightidle', 'fightshb', 'fightshf', 'fightsh_bwd', 'fightsh_fwd', 'fightsh_left', 'fightsh_right', 'flee_lkaround_01', 'floor_hit', 'floor_hit_f', 'fucku', 'gang_gunstand', 'gas_cwr', 'getup', 'getup_front', 'gum_eat', 'guncrouchbwd', 'guncrouchfwd', 'gunmove_bwd', 'gunmove_fwd', 'gunmove_l', 'gunmove_r', 'gun_2_idle', 'gun_butt', 'gun_butt_crouch', 'gun_stand', 'handscower', 'handsup', 'hita_1', 'hita_2', 'hita_3', 'hit_back', 'hit_behind', 'hit_front', 'hit_gun_butt', 'hit_l', 'hit_r', 'hit_walk', 'hit_wall', 'idlestance_fat', 'idlestance_old', 'idle_armed', 'idle_chat', 'idle_csaw', 'idle_gang1', 'idle_hbhb', 'idle_rocket', 'idle_stance', 'idle_taxi', 'idle_tired', 'jetpack_idle', 'jog_femalea', 'jog_malea', 'jump_glide', 'jump_land', 'jump_launch', 'jump_launch_r', 'kart_drive', 'kart_l', 'kart_lb', 'kart_r', 'kd_left', 'kd_right', 'ko_shot_face', 'ko_shot_front', 'ko_shot_stom', 'ko_skid_back', 'ko_skid_front', 'ko_spin_l', 'ko_spin_r', 'pass_smoke_in_car', 'phone_in', 'phone_out', 'phone_talk', 'player_sneak', 'player_sneak_walkstart', 'roadcross', 'roadcross_female', 'roadcross_gang', 'roadcross_old', 'run_1armed', 'run_armed', 'run_civi', 'run_csaw', 'run_fat', 'run_fatold', 'run_gang1', 'run_left', 'run_old', 'run_player', 'run_right', 'run_rocket', 'run_stop', 'run_stopr', 'run_wuzi', 'seat_down', 'seat_idle', 'seat_up', 'shot_leftp', 'shot_partial', 'shot_partial_b', 'shot_rightp', 'shove_partial', 'smoke_in_car', 'sprint_civi', 'sprint_panic', 'sprint_wuzi', 'swat_run', 'swim_tread', 'tap_hand', 'tap_handp', 'turn_180', 'turn_l', 'turn_r', 'walk_armed', 'walk_civi', 'walk_csaw', 'walk_doorpartial', 'walk_drunk', 'walk_fat', 'walk_fatold', 'walk_gang1', 'walk_gang2', 'walk_old', 'walk_player', 'walk_rocket', 'walk_shuffle', 'walk_start', 'walk_start_armed', 'walk_start_csaw', 'walk_start_rocket', 'walk_wuzi', 'weapon_crouch', 'woman_idlestance', 'woman_run', 'woman_runbusy', 'woman_runfatold', 'woman_runpanic', 'woman_runsexy', 'woman_walkbusy', 'woman_walkfatold', 'woman_walknorm', 'woman_walkold', 'woman_walkpro', 'woman_walksexy', 'woman_walkshop', 'xpressscratch'}


for k, v in pairs(all_anims) do setCharAnimSpeed(PLAYER_PED, v, speed) end
 
  • Нравится
Реакции: MaksQ

#Rewzeisch

Известный
121
10
Как написать под данный вид диалога регулярку? Не сталкивался еще с таким :С

Слой 1.png
 

encore:

Новичок
26
1
В коде который я кидаю ниже мне нужно, чтобы по сторонам от символа "X" были пробелы, а так получается что там стоит ".*" т.е любые символы
так вот мне надо чтобы были пробелы вокруг "X" а дальше этих пробелов любые символы, помогите, а то пробовал %s не получается совместить

function sampev.onServerMessage(color, text)
if text:find('%[Жалоба%] (%w+.%w+)%[(%d+)%]:.*X.*') then
local nick, id = text:match('%[Жалоба%] (%w+.%w+)%[(%d+)%]:.*X.*')
sampSendChat('/pm ' ..id.. tp_text)
sampAddChatMessage(text, -1)
else
 
У

Удалённый пользователь 405536

Гость
В коде который я кидаю ниже мне нужно, чтобы по сторонам от символа "X" были пробелы, а так получается что там стоит ".*" т.е любые символы
так вот мне надо чтобы были пробелы вокруг "X" а дальше этих пробелов любые символы, помогите, а то пробовал %s не получается совместить

function sampev.onServerMessage(color, text)
if text:find('%[Жалоба%] (%w+.%w+)%[(%d+)%]:.*X.*') then
local nick, id = text:match('%[Жалоба%] (%w+.%w+)%[(%d+)%]:.*X.*')
sampSendChat('/pm ' ..id.. tp_text)
sampAddChatMessage(text, -1)
else
Lua:
function sampev.onServerMessage(color, text)
    if text:find('%[Жалоба%] (.*)%[(%d+)%]: (.*)') then
        nick, id, other = text:match('%[Жалоба%] (.*)%[(%d+)%]: (.*)')
        sampSendChat('/re '..id)
    end
end