Вывод разного текста в зависимости от организации/подразделения

w99zzl1

Участник
Автор темы
131
12
Версия MoonLoader
.026-beta
Ребятки, хочу сделать так, чтобы если я нахожусь в разных организациях, мой скрипт срабатывал по разному. т.е., если я в "Администрация Губернатора СФ", то пишет:
Привет, я из Мэрии СФ
Если я из "Радиоцентра ЛС" то пишет соответственно. Пока получился такой вот говнокод: (которые не работает)
Lua:
local sampev = require 'samp.events'
local playerOrg = ""
local playerRank = ""
local news1, news2, news3 = "", "", ""

function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    -- Убираем цветовые коды
    text = text:gsub("{......}", "")
    for line in text:gmatch("[^\n]+") do
        if line:find('Должность:%s+(.+)') then
            playerRank = line:match('Должность:%s+(.+)'):gsub("^%s*(.-)%s*$", "%1")
        end
        if line:find('Подразделение:%s+(.+)') then
            playerOrg = line:match("Подразделение:%s+(.+)"):gsub("^%s*(.-)%s*$", "%1")
        end
    end
    text()
end
function text()
    if playerOrg == "Администрация Губернатора ЛВ" then
        news1 = "G-SF | Уважаемые граждане, минуточку внимания!"
        news2 = "G-SF | Проходит собеседование в Администрацию ш. San-Fierro"
        news3 = "G-SF | От вас от 4-х лет в штате. Аванс 50.000$ GPS 1-3"
    elseif playerOrg == "Администрация Губернатора СФ" then
        news1 = "G-LV | Уважаемые граждане, минуточку внимания!"
        news2 = "G-LV | Проходит собеседование в Администрацию ш. Las-Venturas"
        news3 = "G-LV | От вас от 4-х лет в штате. Аванс 50.000$ GPS 1-3"
    else
        news1 = "Организация не определена!"
        news2 = "Откройте статистику /mn - 1."
        news3 = ""
    end
end
function main()
    while not isSampAvailable() do
        wait(100)
    end
    sampRegisterChatCommand("test", cmd_test)
    while true do
        wait(0)
    end
end
function cmd_text()
    if playerOrg == "" then
        sampAddChatMessage("{FF0000}Подразделение не определено! Откройте статистику /mn для получения данных.", 0xFFFFFF)
    else
        sampAddChatMessage("{00FF00}Подразделение: {FFFFFF}" .. playerOrg, 0xFFFFFF)
        sampAddChatMessage("{00FF00}Текст новостей: {FFFFFF}" .. news2, 0xFFFFFF)
    end
end
 

chromiusj

Стань той переменой, которую хочешь увидеть в мире
Модератор
5,732
4,033
Можно использовать свитч(не встроенный) для такого:
 

w99zzl1

Участник
Автор темы
131
12
Можно использовать свитч(не встроенный) для такого:
Что то не понял.. Не работает у меня:(

Lua:
local sampev = require 'samp.events'
local playerOrg = ""
local playerRank = ""
local news1, news2, news3 = "", "", ""

local function updateNewsByOrg(org)
    org = org:lower():gsub("^%s*(.-)%s*$", "%1")

    local orgSwitch = {
        ["администрация губернатора сф"] = function()
            return {
                "SF | Уважаемые граждане, минуточку внимания!",
                "SF | Проходит собеседование в Администрацию ш. San-Fierro",
                "SF | От вас от 4-х лет в штате. Аванс 50.000$ GPS 1-3"
            }
        end,
        ["администрация губернатора лв"] = function()
            return {
                "LV | Уважаемые граждане, минуточку внимания!",
                "LV | Проходит собеседование в Администрацию ш. Las-Venturas",
                "LV | От вас от 4-х лет в штате. Аванс 50.000$ GPS 1-3"
            }
        end,
        default = function()
            return {
                "Организация не определена!",
                "Откройте статистику /mn - 1.",
                ""
            }
        end
    }

    local result = (orgSwitch[org] or orgSwitch.default)()
    news1, news2, news3 = result[1], result[2], result[3]
end

function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
    text = text:gsub("{......}", "")

    for line in text:gmatch("[^\n]+") do
        if line:find('Должность:%s+(.+)') then
            playerRank = line:match('Должность:%s+(.+)'):gsub("^%s*(.-)%s*$", "%1")
        elseif line:find('Подразделение:%s+(.+)') then
            playerOrg = line:match('Подразделение:%s+(.+)'):gsub("^%s*(.-)%s*$", "%1")
        end
    end

    updateNewsByOrg(playerOrg)
end

function main()
    while not isSampAvailable() do
        wait(100)
    end

    sampRegisterChatCommand("test", cmd_text)

    while true do
        wait(0)
    end
end

function cmd_text()
    if playerOrg == "" then
        sampAddChatMessage("{FF0000}Подразделение не определено! Откройте статистику /mn для получения данных.", 0xFFFFFF)
    else
        sampAddChatMessage("{00FF00}Подразделение: {FFFFFF}" .. playerOrg, 0xFFFFFF)
        sampAddChatMessage("{00FF00}Новость 1: {FFFFFF}" .. news1, 0xFFFFFF) -- не выводится, просит открыть /mn
        sampAddChatMessage("{00FF00}Новость 2: {FFFFFF}" .. news2, 0xFFFFFF) -- ^
        sampAddChatMessage("{00FF00}Новость 3: {FFFFFF}" .. news3, 0xFFFFFF) -- ^
    end
end