как сделать так чтобы если ты не администратор на сервере, то скрипт не работал

William_Roses

Активный
Автор темы
260
26
Версия MoonLoader
.026-beta
как сделать так чтобы если ты не администратор на сервере, то скрипт не работал
 
Решение
Поправил недоработку прошлой версии - сообщение отправлялось вне зависимости от того, авторизовался ли игрок, или нет.
Плюсом добавил то, что непосредственно просил ты.
Внимание! Скрипт не будет работать до авторизации на сервере, но, думаю, это не критично. Если что - ты всегда можешь заменить wait(-1) на бесконечный цикл и добавить парочку if'ов.

Версия v2.0:
local sampev = require 'samp.events'
isLoggedAsAdmin = false

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(0) end
    while not sampIsLocalPlayerSpawned do wait(0) end -- проверка, заспавнен ли игрок (авторизовался ли)
   
    result, id = sampGetPlayerIdByCharHandle(PLAYER_PED)...

FogRider

Активный
188
70
как сделать так чтобы если ты не администратор на сервере, то скрипт не работал
Уточни, какие признаки на твоем сервере отличают администратора от рядового игрока (к примеру, на АРЗ это невозможность пробить админа через /id)
 

William_Roses

Активный
Автор темы
260
26
Уточни, какие признаки на твоем сервере отличают администратора от рядового игрока (к примеру, на АРЗ это невозможность пробить админа через /id)
допустим при вводе команды /mute пишет что вы не администратор
 

FogRider

Активный
188
70
Подстроишь этот код под свой скрипт.

Код:
local sampev = require 'samp.events'

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(0) end
    sampSendChat('/mute')
    wait(-1)
end

function sampev.onServerMessage(color, text)
    if text:match('твой текст ошибки из чатлога') then
        sampAddChatMessage('Вы не являетесь администратором, скрипт работать не будет!') -- отправка сообщения в чат
        thisScript():unload() -- выгрузка скрипта
        return false -- удаление полученной строки от /mute, чтобы не путать пользователя
    end
end
 
  • Нравится
Реакции: William_Roses

William_Roses

Активный
Автор темы
260
26
Подстроишь этот код под свой скрипт.

Код:
local sampev = require 'samp.events'

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(0) end
    sampSendChat('/mute')
    wait(-1)
end

function sampev.onServerMessage(color, text)
    if text:match('твой текст ошибки из чатлога') then
        sampAddChatMessage('Вы не являетесь администратором, скрипт работать не будет!') -- отправка сообщения в чат
        thisScript():unload() -- выгрузка скрипта
        return false -- удаление полученной строки от /mute, чтобы не путать пользователя
    end
end
немного не уточнил, как сделать так чтобы скрипт не работал до того момента как ты не войдешь в админку. Прости то что только сейчас пишу просто понял то что не очень это удобно
 

FogRider

Активный
188
70
немного не уточнил, как сделать так чтобы скрипт не работал до того момента как ты не войдешь в админку. Прости то что только сейчас пишу просто понял то что не очень это удобно
Да, понял. Через некоторое время отправлю отредактированную версию.
Если не сложно, скинь строчку, которая у тебя появляется в чате при успешном входе в админку, и есть ли она вообще.
 
Последнее редактирование:
  • Нравится
Реакции: William_Roses

William_Roses

Активный
Автор темы
260
26
Да, понял. Через некоторое время отправлю отредактированную версию.
Если не сложно, скинь строчку, которая у тебя появляется в чате при успешном входе в админку, и есть ли она вообще.
при заходе:
1630943335098.png

[19:48:24] {868484}Следящий за Мафиями {FFFFFF}Lavoste_Davinci[24] вошел в админку
при выходе тоже самое но, "вышел из админки", в месте где следящий за мафиями может быть абсолютно любой тег с абсолютно любым цветом
 
  • Нравится
Реакции: FogRider

FogRider

Активный
188
70
Поправил недоработку прошлой версии - сообщение отправлялось вне зависимости от того, авторизовался ли игрок, или нет.
Плюсом добавил то, что непосредственно просил ты.
Внимание! Скрипт не будет работать до авторизации на сервере, но, думаю, это не критично. Если что - ты всегда можешь заменить wait(-1) на бесконечный цикл и добавить парочку if'ов.

Версия v2.0:
local sampev = require 'samp.events'
isLoggedAsAdmin = false

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(0) end
    while not sampIsLocalPlayerSpawned do wait(0) end -- проверка, заспавнен ли игрок (авторизовался ли)
   
    result, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
   
    sampSendChat('/mute')
    wait(-1)
end

function sampev.onServerMessage(color, text)
    if text:match('твой текст ошибки из чатлога') then
        sampAddChatMessage('Вы не являетесь администратором, скрипт работать не будет!')
        return false
    end
   
    if text:find(tostring(sampGetPlayerNickname(id)) + '[' + tostring(id) + '] вошел в админку') then
        isLoggedAsAdmin = not isLoggedAsAdmin
    end
end

По итогу ты получаешь переменную isLoggedAsAdmin, которую ты можешь добавлять в любые ифы твоих функций/команд и т. д.
Если не сложно, перемести метку решения на это сообщение. :D
 
  • Нравится
Реакции: William_Roses