else

Limonchek

Участник
Автор темы
85
7
Версия MoonLoader
.026-beta
46566

Суть скрипта: Когда в чате появляется: "Вы не голодны!" пишется "На данный момент Вы не можете использовать данную команду.", но если появляется "Вы взяли ланч." пишется "Вы успешно использовали команду" и скрипт дальше продолжается работу, то есть: Если в чате пишется "Вы взяли ланч" заменяется на "Вы успешно использовали команду", и сразу же скрипт начинает дальше работать то есть: printStringNow('~g~Hunger restored', 3000). А если в чате "Вы не голодны!" заменяется на "На данный момент Вы не можете использовать данную команду." то функция дальше просто не будет идти но не завершатся работа скрипта!
МБ одобрите?!
 
Последнее редактирование:

Dmitriy Makarov

25.05.2021
Проверенный
2,515
1,141
Ты хочешь заменить "Вы не голодны!" на "На данный момент Вы не можете использовать данную команду."
И "Вы взяли ланч." заменить на "Вы успешно использовали команду"
Я правильно понял?
Если да, то вот
Lua:
local sampev = require 'lib.samp.events' -- Пихаешь это в начало скрипта (в самый верх)


function sampev.onServerMessage(color, text)
    if text:find("Вы не голодны!") then
        text = text:gsub("Вы не голодны!", "На данный момент Вы не можете использовать данную команду.")
        return {color, text}
    end
    if text:find("Вы взяли ланч.") then
        text = text:gsub("Вы взяли ланч.", "Вы успешно использовали команду.")
        return {color, text}
    end
end

-- text = text:gsub("Текст, который хочешь заменить", "Текст на который хочешь заменить")
 

ImPasha

Software Developer & System Administrator
Друг
1,778
2,142
Ты хочешь заменить "Вы не голодны!" на "На данный момент Вы не можете использовать данную команду."
И "Вы взяли ланч." заменить на "Вы успешно использовали команду"
Я правильно понял?
Если да, то вот
Lua:
local sampev = require 'lib.samp.events' -- Пихаешь это в начало скрипта (в самый верх)


function sampev.onServerMessage(color, text)
    if text:find("Вы не голодны!") then
        text = text:gsub("Вы не голодны!", "На данный момент Вы не можете использовать данную команду.")
        return {color, text}
    end
    if text:find("Вы взяли ланч.") then
        text = text:gsub("Вы взяли ланч.", "Вы успешно использовали команду.")
        return {color, text}
    end
end

-- text = text:gsub("Текст, который хочешь заменить", "Текст на который хочешь заменить")
Lua:
local SE = require 'samp.events' -- Подключаем SAMP Events

function SE.onServerMessage(color, text) -- Создаём хук для серверных сообщений
    if text:find("Вы не голодны") then -- Если находим в чате "Вы не голодны"
        return {color, "На данный момент Вы не можете использовать данную команду."} -- Подменяем текст
    elseif text:find("Вы взяли ланч") then -- Если же находим "Вы взяли ланч"
        return {color, "Вы успешно использовали команду."} -- Подменяем на другой текст
    end
end
Использование string.gsub не несёт здесь вообще никакой пользы, лишь мешает.
Зачем два разных условия, если можно использовать elseif?
 

Dmitriy Makarov

25.05.2021
Проверенный
2,515
1,141
return {color, "На данный момент Вы не можете использовать данную команду."}
Про такой способ не знал, в вопросах по луа всегда давали примеры с gsub
elseif text:find("Вы взяли ланч") then
не вижу разницы, если она есть, разве что разница в сокращении на 2 строки
 

ImPasha

Software Developer & System Administrator
Друг
1,778
2,142
не вижу разницы, если она есть, разве что разница в сокращении на 2 строки
Разница в том, что elseif прекращает выполнение при нахождении совпадения во всей цепи, а if исполняются по очереди.