ten9kovvv Posted August 18, 2018 Share Posted August 18, 2018 Привет. Буквально недавно увлёкся написанием скриптов для сервера, сделал систему ID. Но мне бы хотелось создать несколько команд с взаимодействием системы ID: Пример: /banid /kickid или /muteid Буду благодарен если вы мне напишите ответ, или же скините ссылку на информацию по моему вопросу. Link to comment
JeViCo Posted August 19, 2018 Share Posted August 19, 2018 Вопросы такого духа задавайте в следующий раз в разделе по скриптингу) Если у вас уже есть система id, то это в разы упрощает задачу. Для начала вам нужно как за какими данными закрепляются id ( ElementData ) Допустим getElementData(player,"id") даёт то самое заветное число, где player - нужный нам игрок. Тогда по этим данным сделаем следующий скрипт: local idname = "id" -- название данных function findById(id) -- получаем игрока по Id for _, v in ipairs(getElementsByType("player")) local curpl = getElementData(v,idname) if curpl then if tonumber(curpl) == id then return v break end end end return false end addCommandHandler("banid",function(pls,cmd,id,seconds,reason) if isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( pls ) ), aclGetGroup ( "Admin" ) ) then local pl = findById(id) if not seconds then local seconds = 0 end if not reason then local reason = "Вы были забанены навсегда" if pl then banPlayer(pl,true,false,true,pls,reason,seconds) end end end) addCommandHandler("kickid",function(pls,cmd,id,reason) if isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( pls ) ), aclGetGroup ( "Admin" ) ) then local pl = findById(id) if not reason then local reason = "Не веди себя плохо :3" if pl then kickPlayer(pl,pls,reason) end end end) addCommandHandler("muteid",function(pls,cmd,id) if isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( pls ) ), aclGetGroup ( "Admin" ) ) then local pl = findById(id) if pl then if isPlayerMuted(pl) then setPlayerMuted(pl,false) else setPlayerMuted(pl,true) end end end end) 1 Link to comment
GodOfPenguins Posted August 25, 2018 Share Posted August 25, 2018 On 19.08.2018 at 14:53, JeViCo said: Вопросы такого духа задавайте в следующий раз в разделе по скриптингу) Если у вас уже есть система id, то это в разы упрощает задачу. Для начала вам нужно как за какими данными закрепляются id ( ElementData ) Допустим getElementData(player,"id") даёт то самое заветное число, где player - нужный нам игрок. Тогда по этим данным сделаем следующий скрипт: local idname = "id" -- название данных function findById(id) -- получаем игрока по Id for _, v in ipairs(getElementsByType("player")) local curpl = getElementData(v,idname) if curpl then if tonumber(curpl) == id then return v break end end end return false end addCommandHandler("banid",function(pls,cmd,id,seconds,reason) if isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( pls ) ), aclGetGroup ( "Admin" ) ) then local pl = findById(id) if not seconds then local seconds = 0 end if not reason then local reason = "Вы были забанены навсегда" if pl then banPlayer(pl,true,false,true,pls,reason,seconds) end end end) addCommandHandler("kickid",function(pls,cmd,id,reason) if isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( pls ) ), aclGetGroup ( "Admin" ) ) then local pl = findById(id) if not reason then local reason = "Не веди себя плохо :3" if pl then kickPlayer(pl,pls,reason) end end end) addCommandHandler("muteid",function(pls,cmd,id) if isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( pls ) ), aclGetGroup ( "Admin" ) ) then local pl = findById(id) if pl then if isPlayerMuted(pl) then setPlayerMuted(pl,false) else setPlayerMuted(pl,true) end end end end) Я не понимаю, зачем прописывать эти длинные проверки на наличие в группе? А что если потребуется сделать отдельную группу для модераторов? Переписывать каждый скрипт? Почему бы просто не использовать эту функцию - https://wiki.multitheftauto.com/wiki/HasObjectPermissionTo ? Link to comment
JeViCo Posted August 25, 2018 Share Posted August 25, 2018 7 minutes ago, GodOfPenguins said: Я не понимаю, зачем прописывать эти длинные проверки на наличие в группе? А что если потребуется сделать отдельную группу для модераторов? Переписывать каждый скрипт? Почему бы просто не использовать эту функцию - https://wiki.multitheftauto.com/wiki/HasObjectPermissionTo ? может кто-то и переписывал бы, но у меня появилась бы одна таблица от силы. Тем более я никому не настаивал использовать свой способ. Он поможет большинству игроков, которые мало разбираются в скриптах, а остальные всегда могут отредактировать код под себя Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now