Завершение бесконечного цикла lua

floppov

Участник
Автор темы
85
18
Версия SA-MP
  1. 0.3.7 (R1)
Как завершить беск.цикл в function main()?
 
Решение
В хуке и надо всё это делать, так как ты сделал работать не будет


Такой же скрипт
Lua:
local ev = require 'lib.samp.events'

local players = {'Niki_McKnight', 'Matvei_Mining', 'Ekaterina_Laskina'} -- Список игроков

function main()
    repeat wait(0) until isSampAvailable()
    wait(-1)
end

function ev.onPlayerJoin(playerid, color, isNpc, nickname) -- хук на вход игроков
    for _, v in ipairs(players) do -- проходится по всему списку игроков
        if nickname == v then -- если ник игрока который зашел равен нику из списка
            sampAddChatMessage(string.format("{FF0000}%s зашёл в игру.", v), -1)
        end
    end
end
Тут можно и без main сделать. Он попросту не нужен т.к не используется.
Lua:
local...

floppov

Участник
Автор темы
85
18
Lua:
function main() -- Начало main

    while true do -- Начало беск. цикла
        wait(0)
    end -- Конец беск. цикла
end -- Конец main
Блин, я не совсем так сформулировал вопрос. Как сделать что бы при if text:find() Завершался беск.цикл?
 

YarikVL

Известный
Проверенный
4,783
1,807
[ML] (error) Checker.lua: C:\GTA\moonloader\Checker.lua:25: no loop to break
[ML] (error) Checker.lua: Script died due to an error. (169740BC)
Ошибка SF.
Такая ошибка вроде появляется когда ты используешь break вне цикла ( for, while и тд )
Ты точно код армора засунул в бесконечный цикл?
 

floppov

Участник
Автор темы
85
18
Такая ошибка вроде появляется когда ты используешь break вне цикла ( for, while и тд )
Ты точно код армора засунул в бесконечный цикл?
[ML] (error) Checker.lua: C:\GTA\moonloader\Checker.lua:21: no loop to break
[ML] (error) Checker.lua: Script died due to an error. (1068610C)

дг:
script_name("Checker leadera")
script_author("MAD")
local hook = require('lib.samp.events')
local sampev = require 'lib.samp.events'

local encoding = require('encoding')
encoding.default = 'CP1251'
u8 = encoding.UTF8

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    while true do wait(0)
        sampSendChat("/id Niki_McKnight")
        wait(1000)
        sampSendChat("/id Matvei_Mining")
        wait(1000)
        sampSendChat("/id Ekaterina_Laskina")
    end
    if text:find("Niki_McKnight") then
        break
        sampAddChatMessage("{FF0000}Ник_Name зашёл в игру.", -1)
        return false
    end
    if text:find("Ekaterina_Laskina") then
        break
        sampAddChatMessage("{FF0000}Nick_Name зашёл в игру.", -1)
        return false
    end
    if text:find("Matvei_Mining") then
        break
        sampAddChatMessage("{FF0000}Nick_Name зашёл в игру.", -1)
        return false
    end
end
Вот код. До этого я финды сделал в отдельной функции hook.onServerMessage
 

Neil_

Активный
197
28
[ML] (error) Checker.lua: C:\GTA\moonloader\Checker.lua:21: no loop to break
[ML] (error) Checker.lua: Script died due to an error. (1068610C)

дг:
script_name("Checker leadera")
script_author("MAD")
local hook = require('lib.samp.events')
local sampev = require 'lib.samp.events'

local encoding = require('encoding')
encoding.default = 'CP1251'
u8 = encoding.UTF8

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    while true do wait(0)
        sampSendChat("/id Niki_McKnight")
        wait(1000)
        sampSendChat("/id Matvei_Mining")
        wait(1000)
        sampSendChat("/id Ekaterina_Laskina")
    end
    if text:find("Niki_McKnight") then
        break
        sampAddChatMessage("{FF0000}Ник_Name зашёл в игру.", -1)
        return false
    end
    if text:find("Ekaterina_Laskina") then
        break
        sampAddChatMessage("{FF0000}Nick_Name зашёл в игру.", -1)
        return false
    end
    if text:find("Matvei_Mining") then
        break
        sampAddChatMessage("{FF0000}Nick_Name зашёл в игру.", -1)
        return false
    end
end
Вот код. До этого я финды сделал в отдельной функции hook.onServerMessage
В хуке и надо всё это делать, так как ты сделал работать не будет

[ML] (error) Checker.lua: C:\GTA\moonloader\Checker.lua:21: no loop to break
[ML] (error) Checker.lua: Script died due to an error. (1068610C)

дг:
script_name("Checker leadera")
script_author("MAD")
local hook = require('lib.samp.events')
local sampev = require 'lib.samp.events'

local encoding = require('encoding')
encoding.default = 'CP1251'
u8 = encoding.UTF8

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    while true do wait(0)
        sampSendChat("/id Niki_McKnight")
        wait(1000)
        sampSendChat("/id Matvei_Mining")
        wait(1000)
        sampSendChat("/id Ekaterina_Laskina")
    end
    if text:find("Niki_McKnight") then
        break
        sampAddChatMessage("{FF0000}Ник_Name зашёл в игру.", -1)
        return false
    end
    if text:find("Ekaterina_Laskina") then
        break
        sampAddChatMessage("{FF0000}Nick_Name зашёл в игру.", -1)
        return false
    end
    if text:find("Matvei_Mining") then
        break
        sampAddChatMessage("{FF0000}Nick_Name зашёл в игру.", -1)
        return false
    end
end
Вот код. До этого я финды сделал в отдельной функции hook.onServerMessage
Такой же скрипт
Lua:
local ev = require 'lib.samp.events'

local players = {'Niki_McKnight', 'Matvei_Mining', 'Ekaterina_Laskina'} -- Список игроков

function main()
    repeat wait(0) until isSampAvailable()
    wait(-1)
end

function ev.onPlayerJoin(playerid, color, isNpc, nickname) -- хук на вход игроков
    for _, v in ipairs(players) do -- проходится по всему списку игроков
        if nickname == v then -- если ник игрока который зашел равен нику из списка
            sampAddChatMessage(string.format("{FF0000}%s зашёл в игру.", v), -1)
        end
    end
end
 
Последнее редактирование:
  • Нравится
Реакции: YarikVL и ARMOR

ARMOR

kjor32 is legend
Модератор
4,852
6,081
В хуке и надо всё это делать, так как ты сделал работать не будет


Такой же скрипт
Lua:
local ev = require 'lib.samp.events'

local players = {'Niki_McKnight', 'Matvei_Mining', 'Ekaterina_Laskina'} -- Список игроков

function main()
    repeat wait(0) until isSampAvailable()
    wait(-1)
end

function ev.onPlayerJoin(playerid, color, isNpc, nickname) -- хук на вход игроков
    for _, v in ipairs(players) do -- проходится по всему списку игроков
        if nickname == v then -- если ник игрока который зашел равен нику из списка
            sampAddChatMessage(string.format("{FF0000}%s зашёл в игру.", v), -1)
        end
    end
end
Тут можно и без main сделать. Он попросту не нужен т.к не используется.
Lua:
local ev = require 'lib.samp.events'

local players = {'Niki_McKnight', 'Matvei_Mining', 'Ekaterina_Laskina'} -- Список игроков

function ev.onPlayerJoin(playerid, color, isNpc, nickname) -- хук на вход игроков
    for _, v in ipairs(players) do -- проходится по всему списку игроков
        if nickname == v then -- если ник игрока который зашел равен нику из списка
            sampAddChatMessage(string.format("{FF0000}%s зашёл в игру.", v), -1)
        end
    end
end
 
  • Нравится
Реакции: Neil_

floppov

Участник
Автор темы
85
18
Тут можно и без main сделать. Он попросту не нужен т.к не используется.
Lua:
local ev = require 'lib.samp.events'

local players = {'Niki_McKnight', 'Matvei_Mining', 'Ekaterina_Laskina'} -- Список игроков

function ev.onPlayerJoin(playerid, color, isNpc, nickname) -- хук на вход игроков
    for _, v in ipairs(players) do -- проходится по всему списку игроков
        if nickname == v then -- если ник игрока который зашел равен нику из списка
            sampAddChatMessage(string.format("{FF0000}%s зашёл в игру.", v), -1)
        end
    end
end
Хорошо, а можно вопрос никак не связанный с данным скриптом? Возможно подключить скрипт к базе смены ника на трп? На сайте