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

neverlane

t.me/neverlane00
Друг
997
1,132
Есть у меня чилд
Чилд:
imgui.BeginChild("#settings-auto", imgui.ImVec2(295, 75), true)
    imgui.CenterText(u8 'Авто')
    imgui.Separator()
    imgui.Checkbox(u8'Вставить/Достать ключи', key)
    imgui.SameLine()
    imgui.TextQuestion(u8'При нажатии на клавишу K вы вставите/достаните ключи из вашего авто.')

    imgui.Checkbox(u8'Открыть/Закрыть личного авто', lock)
    imgui.SameLine()
    imgui.TextQuestion(u8'При нажатии на клавишу L ваше личное авто откроется/закроется.')   
imgui.EndChild()
Решил добавить туда ещё 2 функи, а именно
Функи:
imgui.Checkbox(u8'Открыть/Закрыть орг. авто', olock)
imgui.SameLine()
imgui.TextQuestion(u8'При вводе OL ваше орг. авто откроется/закроется.')
imgui.Checkbox(u8'Открыть/Закрыть аренд. авто', jlock)
imgui.SameLine()
imgui.TextQuestion(u8'При вводе JL ваше аренд. авто откроется/закроется.')
Но стало крашить скрипт с этой причиной
Краш:
[ML] (error) ARZ Assistant.lua: D:\GTA DNO PC DAPO SHOW\moonloader\ARZ Assistant.lua:566: function at line 171 has more than 60 upvalues
[ML] (error) ARZ Assistant.lua: Script died due to an error. (200125EC)
Как пофиксить?
 

zippy

Участник
67
32
буфер надо чистить:
Автор кодика DonHomka:
--------------------------------
-- СТАВИТЬ ПОСЛЕ While true do wait(0)
if memory.read(0x8E4CB4, 4, true) > 419430400 then
            cleanStreamMemoryBuffer()
        end
------------------------------------
-- Это куда угодно
function cleanStreamMemoryBuffer()
local huy = callFunction(0x53C500, 2, 2, true, true)
local huy1 = callFunction(0x53C810, 1, 1, true)
local huy2 = callFunction(0x40CF80, 0, 0)
local huy3 = callFunction(0x4090A0, 0, 0)
local huy4 = callFunction(0x5A18B0, 0, 0)
local huy5 = callFunction(0x707770, 0, 0)
local pX, pY, pZ = getCharCoordinates(PLAYER_PED)
requestCollision(pX, pY)
loadScene(pX, pY, pZ)
end
все равно крашит. Крашит на 3 раз после реконекта
 

talberom

Известный
100
14
function main() while not isSampAvailable() do wait(0) end sampRegisterChatCommand("whois", whois) wait(-1) end function whois(arg) local id = tonumber(arg) local result, ped = sampGetCharHandleBySampPlayerId(id) if result and sampIsPlayerConnected(id) then local nickname = sampGetPlayerNickname(id) local isNpc = sampIsPlayerNpc(id) and "Yes" or "No" local isPaused = sampIsPlayerPaused(id) and "Yes" or "No" local isSpawned = sampIsLocalPlayerSpawned(id) and "Yes" or "No" local isInCar = isCharInAnyCar(ped) and "Yes" or "No" sampAddChatMessage(("{67FFBC}[whois]: {FFFFFF}Ник: {67FFBC}%s{FFFFFF}, id: {67FFBC} %s, npc: {67FFBC}%s{FFFFFF}, afk: {67FFBC}%s{FFFFFF}."):format(nickname, id, isNpc, isPaused), -1) sampAddChatMessage(("{67FFBC}[whois]: {FFFFFF}isSpawned: {67FFBC}%s{FFFFFF}, isInCar: {67FFBC}%s{FFFFFF}.}"):format(isSpawned, isInCar), -1) end end
не работает(
 

AnWu

Guardian of Order
Всефорумный модератор
4,686
5,166
буфер надо чистить:
Автор кодика DonHomka:
--------------------------------
-- СТАВИТЬ ПОСЛЕ While true do wait(0)
if memory.read(0x8E4CB4, 4, true) > 419430400 then
            cleanStreamMemoryBuffer()
        end
------------------------------------
-- Это куда угодно
function cleanStreamMemoryBuffer()
local huy = callFunction(0x53C500, 2, 2, true, true)
local huy1 = callFunction(0x53C810, 1, 1, true)
local huy2 = callFunction(0x40CF80, 0, 0)
local huy3 = callFunction(0x4090A0, 0, 0)
local huy4 = callFunction(0x5A18B0, 0, 0)
local huy5 = callFunction(0x707770, 0, 0)
local pX, pY, pZ = getCharCoordinates(PLAYER_PED)
requestCollision(pX, pY)
loadScene(pX, pY, pZ)
end
ну зашибись, почему я автор то? это не мой код
 

|DEVIL|

Известный
359
273
Скрипт крашит игру, думаю что проблема в цикле, но как её решить?
Код:
script_name ('MChecker')
script_author ('Marcus Devil')
script_version ('1.0')

require "lib.moonloader"
require "lib.sampfuncs"
local inicfg = require 'inicfg'
local sampev = require 'lib.samp.events'
local wh = 0xFFFFFF
local tag = "{ffff00}[MChecker]: {FFFFFF}"
local mainIni = inicfg.load({
   main=
   {
   s1 = 0,
   s2 = 0,
   s3 = 0,
   s4 = 0,
   s5 = 0,
   s6 = 0,
   s7 = 0,
   s8 = 0,
   s9 = 0,
   s10 = 0
   },
   slots=
   {
   slot1 = "Conor_Bulls",
   slot2 = "Danila_Volkow",
   slot3 = "Christofer_Revazz",
   slot4 = "Johnny_Bulls",
   slot5 = "Free_Man",
   slot6 = "Lucas_Nowman",
   slot7 = "Freeman_Revazz",
   slot8 = "Markus_Bulls",
   slot9 = "Venni_Vrieno",
   slot10 = "Steven_Ward"
   },
   })
--ЋбъЯвы
local m1 = mainIni.main.s1
local m2 = mainIni.main.s2
local m3 = mainIni.main.s3
local m4 = mainIni.main.s4
local m5 = mainIni.main.s5
local m6 = mainIni.main.s6
local m7 = mainIni.main.s7
local m8 = mainIni.main.s8
local m9 = mainIni.main.s9
local m10 = mainIni.main.s10
--‘отры
local p1 = mainIni.slots.slot1
local p2 = mainIni.slots.slot2
local p3 = mainIni.slots.slot3
local p4 = mainIni.slots.slot4
local p5 = mainIni.slots.slot5
local p6 = mainIni.slots.slot6
local p7 = mainIni.slots.slot7
local p8 = mainIni.slots.slot8
local p9 = mainIni.slots.slot9
local p10 = mainIni.slots.slot10






function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    inicfg.save(mainIni)
    sampAddChatMessage(tag.."Скрипт {00ff00}запущен!{FFFFFF} {FFFFFF}Чтобы посмотреть команды - {00ff00}/mihelp",wh)
    --Регистры
    sampRegisterChatCommand("mrest",mpre)
    sampRegisterChatCommand("mcheck",mpch)
    sampRegisterChatCommand("mihelp",msh)
        --Цикл
    while true do
        function sampev.onServerMessage(color, text)
        --Первый
        if text:find("Отправил: " .. p1) then
        mp1()
        end
        --Второй
        if text:find("Отправил: " .. p2) then
        mp2()
        end
        --Третий
        if text:find("Отправил: " .. p3) then
        mp3()
        end
        --Четвёртый
        if text:find("Отправил: " .. p4) then
        mp4()
        end
        --Пятый
        if text:find("Отправил: " .. p5) then
        mp5()
        end
        --Шестой
        if text:find("Отправил: " .. p6) then
        mp6()
        end
        --Седьмой
        if text:find("Отправил: " .. p7) then
        mp7()
        end
        --Восьмой
        if text:find("Отправил: " .. p8) then
        mp8()
        end
        --Девятый
        if text:find("Отправил: " .. p9) then
        mp9()
        end
        --Десятый
        if text:find("Отправил: " .. p10) then
        mp10()
        end
        wait(0)
    end
 end
 --Конец цикла
 end
 --Первый
 function mp1()
       mainIni.main.m1 = mainIni.main.m1 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end
  
 end
 --Второй
 function mp2()
       mainIni.main.m2 = mainIni.main.m2 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end
  
 end
 --Третий
 function mp3()
       mainIni.main.m3 = mainIni.main.m3 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end
  
 end
 --Четвёртый
 function mp4()
       mainIni.main.m4 = mainIni.main.m4 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end
  
 end
 --Пятый
 function mp5()
       mainIni.main.m5 = mainIni.main.m5 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end
  
 end
 --Шестой
 function mp6()
       mainIni.main.m6 = mainIni.main.m6 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end
  
 end
 --Седьмой
 function mp7()
       mainIni.main.m7 = mainIni.main.m7 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end
  
 end
 --Восьмой
 function mp8()
       mainIni.main.m8 = mainIni.main.m8 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end
  
 end
 --Девятый
 function mp9()
       mainIni.main.m9 = mainIni.main.m9 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end
  
 end
 --Десятый
 function mp10()
       mainIni.main.m10 = mainIni.main.m10 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end
  
 end
 
 
 
 function mpre()
 mainIni.main.warning = 0
 sampAddChatMessage(tag .."Объявления успешно {FF0000}обнулены!", wh)
 end
 
 function mpch()
 inicfg.save(mainIni)
 sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p1.."{FFFFFF} | Количество объявлений:{FF0000} "..m1,wh)
 sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p2.."{FFFFFF} | Количество объявлений:{FF0000} "..m2,wh)
 sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p3.."{FFFFFF} | Количество объявлений:{FF0000} "..m3,wh)
 sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p4.."{FFFFFF} | Количество объявлений:{FF0000} "..m4,wh)
 sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p5.."{FFFFFF} | Количество объявлений:{FF0000} "..m5,wh)
 sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p6.."{FFFFFF} | Количество объявлений:{FF0000} "..m6,wh)
 sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p7.."{FFFFFF} | Количество объявлений:{FF0000} "..m7,wh)
 sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p8.."{FFFFFF} | Количество объявлений:{FF0000} "..m8,wh)
 sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p9.."{FFFFFF} | Количество объявлений:{FF0000} "..m9,wh)
 sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p10.."{FFFFFF} | Количество объявлений:{FF0000} "..m10,wh)
 end
 
 function msh()
 sampAddChatMessage("----------------------------------------------------------------",wh)
 sampAddChatMessage("Автор скрипта: {8a2be2}Marcus {9b2d30}Devil",wh)
 sampAddChatMessage("----------------------------------------------------------------",wh)
 sampAddChatMessage("{00ff00}/mcheck{FFFFFF} - Посмотреть кол-во объявлений",wh)
 sampAddChatMessage("{00ff00}/mrest - {FF0000}Обнулить{FFFFFF} ко-во объявлений",wh)
 sampAddChatMessage("----------------------------------------------------------------",wh)
 end
 

zippy

Участник
67
32
Скрипт крашит игру, думаю что проблема в цикле, но как её решить?
Код:
script_name ('MChecker')
script_author ('Marcus Devil')
script_version ('1.0')

require "lib.moonloader"
require "lib.sampfuncs"
local inicfg = require 'inicfg'
local sampev = require 'lib.samp.events'
local wh = 0xFFFFFF
local tag = "{ffff00}[MChecker]: {FFFFFF}"
local mainIni = inicfg.load({
   main=
   {
   s1 = 0,
   s2 = 0,
   s3 = 0,
   s4 = 0,
   s5 = 0,
   s6 = 0,
   s7 = 0,
   s8 = 0,
   s9 = 0,
   s10 = 0
   },
   slots=
   {
   slot1 = "Conor_Bulls",
   slot2 = "Danila_Volkow",
   slot3 = "Christofer_Revazz",
   slot4 = "Johnny_Bulls",
   slot5 = "Free_Man",
   slot6 = "Lucas_Nowman",
   slot7 = "Freeman_Revazz",
   slot8 = "Markus_Bulls",
   slot9 = "Venni_Vrieno",
   slot10 = "Steven_Ward"
   },
   })
--ЋбъЯвы
local m1 = mainIni.main.s1
local m2 = mainIni.main.s2
local m3 = mainIni.main.s3
local m4 = mainIni.main.s4
local m5 = mainIni.main.s5
local m6 = mainIni.main.s6
local m7 = mainIni.main.s7
local m8 = mainIni.main.s8
local m9 = mainIni.main.s9
local m10 = mainIni.main.s10
--‘отры
local p1 = mainIni.slots.slot1
local p2 = mainIni.slots.slot2
local p3 = mainIni.slots.slot3
local p4 = mainIni.slots.slot4
local p5 = mainIni.slots.slot5
local p6 = mainIni.slots.slot6
local p7 = mainIni.slots.slot7
local p8 = mainIni.slots.slot8
local p9 = mainIni.slots.slot9
local p10 = mainIni.slots.slot10






function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    inicfg.save(mainIni)
    sampAddChatMessage(tag.."Скрипт {00ff00}запущен!{FFFFFF} {FFFFFF}Чтобы посмотреть команды - {00ff00}/mihelp",wh)
    --Регистры
    sampRegisterChatCommand("mrest",mpre)
    sampRegisterChatCommand("mcheck",mpch)
    sampRegisterChatCommand("mihelp",msh)
        --Цикл
    while true do
        function sampev.onServerMessage(color, text)
        --Первый
        if text:find("Отправил: " .. p1) then
        mp1()
        end
        --Второй
        if text:find("Отправил: " .. p2) then
        mp2()
        end
        --Третий
        if text:find("Отправил: " .. p3) then
        mp3()
        end
        --Четвёртый
        if text:find("Отправил: " .. p4) then
        mp4()
        end
        --Пятый
        if text:find("Отправил: " .. p5) then
        mp5()
        end
        --Шестой
        if text:find("Отправил: " .. p6) then
        mp6()
        end
        --Седьмой
        if text:find("Отправил: " .. p7) then
        mp7()
        end
        --Восьмой
        if text:find("Отправил: " .. p8) then
        mp8()
        end
        --Девятый
        if text:find("Отправил: " .. p9) then
        mp9()
        end
        --Десятый
        if text:find("Отправил: " .. p10) then
        mp10()
        end
        wait(0)
    end
end
--Конец цикла
end
--Первый
function mp1()
       mainIni.main.m1 = mainIni.main.m1 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Второй
function mp2()
       mainIni.main.m2 = mainIni.main.m2 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Третий
function mp3()
       mainIni.main.m3 = mainIni.main.m3 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Четвёртый
function mp4()
       mainIni.main.m4 = mainIni.main.m4 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Пятый
function mp5()
       mainIni.main.m5 = mainIni.main.m5 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Шестой
function mp6()
       mainIni.main.m6 = mainIni.main.m6 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Седьмой
function mp7()
       mainIni.main.m7 = mainIni.main.m7 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Восьмой
function mp8()
       mainIni.main.m8 = mainIni.main.m8 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Девятый
function mp9()
       mainIni.main.m9 = mainIni.main.m9 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Десятый
function mp10()
       mainIni.main.m10 = mainIni.main.m10 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end



function mpre()
mainIni.main.warning = 0
sampAddChatMessage(tag .."Объявления успешно {FF0000}обнулены!", wh)
end

function mpch()
inicfg.save(mainIni)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p1.."{FFFFFF} | Количество объявлений:{FF0000} "..m1,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p2.."{FFFFFF} | Количество объявлений:{FF0000} "..m2,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p3.."{FFFFFF} | Количество объявлений:{FF0000} "..m3,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p4.."{FFFFFF} | Количество объявлений:{FF0000} "..m4,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p5.."{FFFFFF} | Количество объявлений:{FF0000} "..m5,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p6.."{FFFFFF} | Количество объявлений:{FF0000} "..m6,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p7.."{FFFFFF} | Количество объявлений:{FF0000} "..m7,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p8.."{FFFFFF} | Количество объявлений:{FF0000} "..m8,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p9.."{FFFFFF} | Количество объявлений:{FF0000} "..m9,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p10.."{FFFFFF} | Количество объявлений:{FF0000} "..m10,wh)
end

function msh()
sampAddChatMessage("----------------------------------------------------------------",wh)
sampAddChatMessage("Автор скрипта: {8a2be2}Marcus {9b2d30}Devil",wh)
sampAddChatMessage("----------------------------------------------------------------",wh)
sampAddChatMessage("{00ff00}/mcheck{FFFFFF} - Посмотреть кол-во объявлений",wh)
sampAddChatMessage("{00ff00}/mrest - {FF0000}Обнулить{FFFFFF} ко-во объявлений",wh)
sampAddChatMessage("----------------------------------------------------------------",wh)
end
ебать я сначало написал про wait(0) потом увидел его подумал что я долбаеб а нет, я все правильно сделал у тебя wait в функции и поэтому while был без задержки и гта крашило
Lua:
script_name ('MChecker')
script_author ('Marcus Devil')
script_version ('1.0')

require "lib.moonloader"
require "lib.sampfuncs"
local inicfg = require 'inicfg'
local sampev = require 'lib.samp.events'
local wh = 0xFFFFFF
local tag = "{ffff00}[MChecker]: {FFFFFF}"
local mainIni = inicfg.load({
   main=
   {
   s1 = 0,
   s2 = 0,
   s3 = 0,
   s4 = 0,
   s5 = 0,
   s6 = 0,
   s7 = 0,
   s8 = 0,
   s9 = 0,
   s10 = 0
   },
   slots=
   {
   slot1 = "Conor_Bulls",
   slot2 = "Danila_Volkow",
   slot3 = "Christofer_Revazz",
   slot4 = "Johnny_Bulls",
   slot5 = "Free_Man",
   slot6 = "Lucas_Nowman",
   slot7 = "Freeman_Revazz",
   slot8 = "Markus_Bulls",
   slot9 = "Venni_Vrieno",
   slot10 = "Steven_Ward"
   },
   })
--ЋбъЯвы
local m1 = mainIni.main.s1
local m2 = mainIni.main.s2
local m3 = mainIni.main.s3
local m4 = mainIni.main.s4
local m5 = mainIni.main.s5
local m6 = mainIni.main.s6
local m7 = mainIni.main.s7
local m8 = mainIni.main.s8
local m9 = mainIni.main.s9
local m10 = mainIni.main.s10
--‘отры
local p1 = mainIni.slots.slot1
local p2 = mainIni.slots.slot2
local p3 = mainIni.slots.slot3
local p4 = mainIni.slots.slot4
local p5 = mainIni.slots.slot5
local p6 = mainIni.slots.slot6
local p7 = mainIni.slots.slot7
local p8 = mainIni.slots.slot8
local p9 = mainIni.slots.slot9
local p10 = mainIni.slots.slot10






function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    inicfg.save(mainIni)
    sampAddChatMessage(tag.."Скрипт {00ff00}запущен!{FFFFFF} {FFFFFF}Чтобы посмотреть команды - {00ff00}/mihelp",wh)
    --Регистры
    sampRegisterChatCommand("mrest",mpre)
    sampRegisterChatCommand("mcheck",mpch)
    sampRegisterChatCommand("mihelp",msh)
        --Цикл
    while true do
        wait(0)
        function sampev.onServerMessage(color, text)
        --Первый
        if text:find("Отправил: " .. p1) then
        mp1()
        end
        --Второй
        if text:find("Отправил: " .. p2) then
        mp2()
        end
        --Третий
        if text:find("Отправил: " .. p3) then
        mp3()
        end
        --Четвёртый
        if text:find("Отправил: " .. p4) then
        mp4()
        end
        --Пятый
        if text:find("Отправил: " .. p5) then
        mp5()
        end
        --Шестой
        if text:find("Отправил: " .. p6) then
        mp6()
        end
        --Седьмой
        if text:find("Отправил: " .. p7) then
        mp7()
        end
        --Восьмой
        if text:find("Отправил: " .. p8) then
        mp8()
        end
        --Девятый
        if text:find("Отправил: " .. p9) then
        mp9()
        end
        --Десятый
        if text:find("Отправил: " .. p10) then
        mp10()
        end
    end
end
--Конец цикла
end
--Первый
function mp1()
       mainIni.main.m1 = mainIni.main.m1 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Второй
function mp2()
       mainIni.main.m2 = mainIni.main.m2 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Третий
function mp3()
       mainIni.main.m3 = mainIni.main.m3 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Четвёртый
function mp4()
       mainIni.main.m4 = mainIni.main.m4 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Пятый
function mp5()
       mainIni.main.m5 = mainIni.main.m5 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Шестой
function mp6()
       mainIni.main.m6 = mainIni.main.m6 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Седьмой
function mp7()
       mainIni.main.m7 = mainIni.main.m7 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Восьмой
function mp8()
       mainIni.main.m8 = mainIni.main.m8 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Девятый
function mp9()
       mainIni.main.m9 = mainIni.main.m9 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end
--Десятый
function mp10()
       mainIni.main.m10 = mainIni.main.m10 + 1
       if inicfg.save(mainIni) then
       sampAddChatMessage(tag .. "Объявление зачтено!", wh)
       else
       sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
       end

end



function mpre()
mainIni.main.warning = 0
sampAddChatMessage(tag .."Объявления успешно {FF0000}обнулены!", wh)
end

function mpch()
inicfg.save(mainIni)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p1.."{FFFFFF} | Количество объявлений:{FF0000} "..m1,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p2.."{FFFFFF} | Количество объявлений:{FF0000} "..m2,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p3.."{FFFFFF} | Количество объявлений:{FF0000} "..m3,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p4.."{FFFFFF} | Количество объявлений:{FF0000} "..m4,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p5.."{FFFFFF} | Количество объявлений:{FF0000} "..m5,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p6.."{FFFFFF} | Количество объявлений:{FF0000} "..m6,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p7.."{FFFFFF} | Количество объявлений:{FF0000} "..m7,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p8.."{FFFFFF} | Количество объявлений:{FF0000} "..m8,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p9.."{FFFFFF} | Количество объявлений:{FF0000} "..m9,wh)
sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p10.."{FFFFFF} | Количество объявлений:{FF0000} "..m10,wh)
end

function msh()
sampAddChatMessage("----------------------------------------------------------------",wh)
sampAddChatMessage("Автор скрипта: {8a2be2}Marcus {9b2d30}Devil",wh)
sampAddChatMessage("----------------------------------------------------------------",wh)
sampAddChatMessage("{00ff00}/mcheck{FFFFFF} - Посмотреть кол-во объявлений",wh)
sampAddChatMessage("{00ff00}/mrest - {FF0000}Обнулить{FFFFFF} ко-во объявлений",wh)
sampAddChatMessage("----------------------------------------------------------------",wh)
end
и вообще, что за извращения с function sampev.onServerMessage(color, text) - ты не правильно используешь
Lua:
script_name ('MChecker')
script_author ('Marcus Devil')
script_version ('1.0')
require "lib.moonloader"
require "lib.sampfuncs"
local inicfg = require 'inicfg'
local sampev = require 'lib.samp.events'
local wh = 0xFFFFFF
local tag = "{ffff00}[MChecker]: {FFFFFF}"
local mainIni = inicfg.load({
   main=
   {
   s1 = 0,
   s2 = 0,
   s3 = 0,
   s4 = 0,
   s5 = 0,
   s6 = 0,
   s7 = 0,
   s8 = 0,
   s9 = 0,
   s10 = 0
   },
   slots=
   {
   slot1 = "Conor_Bulls",
   slot2 = "Danila_Volkow",
   slot3 = "Christofer_Revazz",
   slot4 = "Johnny_Bulls",
   slot5 = "Free_Man",
   slot6 = "Lucas_Nowman",
   slot7 = "Freeman_Revazz",
   slot8 = "Markus_Bulls",
   slot9 = "Venni_Vrieno",
   slot10 = "Steven_Ward"
   },
})
--ЋбъЯвы
local m1 = mainIni.main.s1
local m2 = mainIni.main.s2
local m3 = mainIni.main.s3
local m4 = mainIni.main.s4
local m5 = mainIni.main.s5
local m6 = mainIni.main.s6
local m7 = mainIni.main.s7
local m8 = mainIni.main.s8
local m9 = mainIni.main.s9
local m10 = mainIni.main.s10
--‘отры
local p1 = mainIni.slots.slot1
local p2 = mainIni.slots.slot2
local p3 = mainIni.slots.slot3
local p4 = mainIni.slots.slot4
local p5 = mainIni.slots.slot5
local p6 = mainIni.slots.slot6
local p7 = mainIni.slots.slot7
local p8 = mainIni.slots.slot8
local p9 = mainIni.slots.slot9
local p10 = mainIni.slots.slot10


function sampev.onServerMessage(color, text)
    if text:find("Отправил: " .. p1) then
        mp1()
    end
        --Второй
    if text:find("Отправил: " .. p2) then
        mp2()
    end
        --Третий
    if text:find("Отправил: " .. p3) then
        mp3()
    end
        --Четвёртый
    if text:find("Отправил: " .. p4) then
        mp4()
    end
        --Пятый
    if text:find("Отправил: " .. p5) then
        mp5()
    end
        --Шестой
    if text:find("Отправил: " .. p6) then
        mp6()
    end
        --Седьмой
    if text:find("Отправил: " .. p7) then
        mp7()
    end
        --Восьмой
    if text:find("Отправил: " .. p8) then
        mp8()
    end
        --Девятый
    if text:find("Отправил: " .. p9) then
        mp9()
    end
        --Десятый
    if text:find("Отправил: " .. p10) then
        mp10()
    end
end

function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    inicfg.save(mainIni)
    sampAddChatMessage(tag.."Скрипт {00ff00}запущен!{FFFFFF} {FFFFFF}Чтобы посмотреть команды - {00ff00}/mihelp",wh)
    --Регистры
    sampRegisterChatCommand("mrest",mpre)
    sampRegisterChatCommand("mcheck",mpch)
    sampRegisterChatCommand("mihelp",msh)
 end
function mp1()
    mainIni.main.m1 = mainIni.main.m1 + 1
    if inicfg.save(mainIni) then
    sampAddChatMessage(tag .. "Объявление зачтено!", wh)
    else
    sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
    end
end
--Второй
function mp2()
    mainIni.main.m2 = mainIni.main.m2 + 1
    if inicfg.save(mainIni) then
    sampAddChatMessage(tag .. "Объявление зачтено!", wh)
    else
    sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
    end
end
--Третий
function mp3()
    mainIni.main.m3 = mainIni.main.m3 + 1
    if inicfg.save(mainIni) then
    sampAddChatMessage(tag .. "Объявление зачтено!", wh)
    else
    sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
    end
end
--Четвёртый
function mp4()
    mainIni.main.m4 = mainIni.main.m4 + 1
    if inicfg.save(mainIni) then
    sampAddChatMessage(tag .. "Объявление зачтено!", wh)
    else
    sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
    end
end
--Пятый
function mp5()
    mainIni.main.m5 = mainIni.main.m5 + 1
    if inicfg.save(mainIni) then
    sampAddChatMessage(tag .. "Объявление зачтено!", wh)
    else
    sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
    end
end
--Шестой
function mp6()
    mainIni.main.m6 = mainIni.main.m6 + 1
    if inicfg.save(mainIni) then
    sampAddChatMessage(tag .. "Объявление зачтено!", wh)
    else
    sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
    end
end
--Седьмой
function mp7()
    mainIni.main.m7 = mainIni.main.m7 + 1
    if inicfg.save(mainIni) then
    sampAddChatMessage(tag .. "Объявление зачтено!", wh)
    else
    sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
    end
end
--Восьмой
function mp8()
    mainIni.main.m8 = mainIni.main.m8 + 1
    if inicfg.save(mainIni) then
    sampAddChatMessage(tag .. "Объявление зачтено!", wh)
    else
    sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
    end
end
--Девятый
function mp9()
    mainIni.main.m9 = mainIni.main.m9 + 1
    if inicfg.save(mainIni) then
    sampAddChatMessage(tag .. "Объявление зачтено!", wh)
    else
    sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
    end
end
--Десятый
function mp10()
    mainIni.main.m10 = mainIni.main.m10 + 1
    if inicfg.save(mainIni) then
    sampAddChatMessage(tag .. "Объявление зачтено!", wh)
    else
    sampSendChatMessage(tag .. "Похоже, что-то не так. Скрипт не сохранил объявление", 0xFF0000)
    end
end
 
 
 
 function mpre()
    mainIni.main.warning = 0
    sampAddChatMessage(tag .."Объявления успешно {FF0000}обнулены!", wh)
 end
 
 function mpch()
    inicfg.save(mainIni)
    sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p1.."{FFFFFF} | Количество объявлений:{FF0000} "..m1,wh)
    sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p2.."{FFFFFF} | Количество объявлений:{FF0000} "..m2,wh)
    sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p3.."{FFFFFF} | Количество объявлений:{FF0000} "..m3,wh)
    sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p4.."{FFFFFF} | Количество объявлений:{FF0000} "..m4,wh)
    sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p5.."{FFFFFF} | Количество объявлений:{FF0000} "..m5,wh)
    sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p6.."{FFFFFF} | Количество объявлений:{FF0000} "..m6,wh)
    sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p7.."{FFFFFF} | Количество объявлений:{FF0000} "..m7,wh)
    sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p8.."{FFFFFF} | Количество объявлений:{FF0000} "..m8,wh)
    sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p9.."{FFFFFF} | Количество объявлений:{FF0000} "..m9,wh)
    sampAddChatMessage(tag .."Сотрудник: {FF0000}"..p10.."{FFFFFF} | Количество объявлений:{FF0000} "..m10,wh)
 end
 
 function msh()
    sampAddChatMessage("----------------------------------------------------------------",wh)
    sampAddChatMessage("Автор скрипта: {8a2be2}Marcus {9b2d30}Devil",wh)
    sampAddChatMessage("----------------------------------------------------------------",wh)
    sampAddChatMessage("{00ff00}/mcheck{FFFFFF} - Посмотреть кол-во объявлений",wh)
    sampAddChatMessage("{00ff00}/mrest - {FF0000}Обнулить{FFFFFF} ко-во объявлений",wh)
    sampAddChatMessage("----------------------------------------------------------------",wh)
 end
+ поправь табуляцию из - за нее вы делаете ошибки
 
Последнее редактирование:
  • Нравится
Реакции: |DEVIL|

Firus20016

Участник
148
15
Привет всем, помогите пожалуйста. Из-за чего тут может крашить самп?
Lua:
function ev.onShowTextDraw(id, data)
    if stage == 1 then
        stage = 0
        repeat
            lua_thread.create(function()
            wait(1000)
        end)
        if id == i then
    print(id)
        i = i + 1
    end
  until i > 2167
        end
    end
 

|DEVIL|

Известный
359
273
Можно ли как-то создавать в инике новую переменную от аргумента? К примеру написал я /createnew 25, и в инике новая переменная 25
 

kizn

О КУ)))
Всефорумный модератор
2,405
2,057
сделайте строчку кода:
если я нахожусь на координатах 123 123 123 и жму клавишу alt то:
<мое действие>
 

Angr

Известный
291
97
сделайте строчку кода:
если я нахожусь на координатах 123 123 123 и жму клавишу alt то:
<мое действие>
Lua:
 while true do
  wait(10)
    local x3, y3, z3 = getCharCoordinates(PLAYER_PED)
      if getDistanceBetweenCoords3d(123,123,123, x3, y3, z3) < 15 and isKeyJustPressed(0x12) then
      sampAddChatMessage("Вы прибыли",-1)
      end
  end
 
  • Нравится
Реакции: Firus20016 и kizn

Firus20016

Участник
148
15
Всем привет. Подскажите пожалуйста, можно ли как то ограничить переменную? К примеру есть local a = 0, можно ли её максимальное значение поставить 72?
 

Angr

Известный
291
97
Привет всем, помогите пожалуйста. Из-за чего тут может крашить самп?
Lua:
function ev.onShowTextDraw(id, data)
    if stage == 1 then
        stage = 0
        repeat
            lua_thread.create(function()
            wait(1000)
        end)
        if id == i then
    print(id)
        i = i + 1
    end
  until i > 2167
        end
    end
скорее всего из за repeat и в нем создаешь постоянные потоки.
Думаю тебе стоит осмыслить заново логику твоего кода
что-то странное там твориться у тебя
Всем привет. Подскажите пожалуйста, можно ли как то ограничить переменную? К примеру есть local a = 0, можно ли её максимальное значение поставить 72?
Тебе нужно почитать основы)
Логично же сделать проверку на это.
PRIMER:
if i > 72 then

--

end
Можно ли как-то создавать в инике новую переменную от аргумента? К примеру написал я /createnew 25, и в инике новая переменная 25
Можно, просто добавляешь таблицу или что там у тебя и сохраняешь
 
Последнее редактирование:
  • Нравится
Реакции: Firus20016