Jump to content

Создание /ban /kick /mute по ID


Recommended Posts

Привет. Буквально недавно увлёкся написанием скриптов для сервера, сделал систему ID. Но мне бы хотелось создать несколько команд с взаимодействием системы ID:
Пример: /banid  /kickid или /muteid
Буду благодарен если вы мне напишите ответ, или же скините ссылку на информацию по моему вопросу.

Link to comment

Вопросы такого духа задавайте в следующий раз в разделе по скриптингу)

Если у вас уже есть система 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)

 

  • Thanks 1
Link to comment
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
7 minutes ago, GodOfPenguins said:

Я не понимаю, зачем прописывать эти длинные проверки на наличие в группе? А что если потребуется сделать отдельную группу для модераторов? Переписывать каждый скрипт? Почему бы просто не использовать эту функцию - https://wiki.multitheftauto.com/wiki/HasObjectPermissionTo ?

может кто-то и переписывал бы, но у меня появилась бы одна таблица от силы. Тем более я никому не настаивал использовать свой способ. Он поможет большинству игроков, которые мало разбираются в скриптах, а остальные всегда могут отредактировать код под себя 

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...