awilson Posted December 3, 2019 Share Posted December 3, 2019 Привет! Как можно создать видимые маркер или пикап для игроков в определенной acl группе? Притом, если игроки не состоят в опред. группе - они их не видят и не могкт ими пользоваться. Link to comment
Scripting Moderators Sarrum Posted December 4, 2019 Scripting Moderators Share Posted December 4, 2019 Привет @awilson. Для таких целей логично использовать маркеры и функцию setElementVisibleTo, т.к. можно сразу же задать видимость для конкретных игроков. С пикапами так просто не выйдет и придется создавать их на клиенте для каждого нужного игрока, используя triggerClientEvent на сервере для вызова события, созданного на клиенте. Примерно так я бы реализовал вариант с маркерами: local marker = createMarker ( 0, 0, 2, "cylinder" ) setElementVisibleTo ( marker, root, false ) -- скрываем маркер для всех -- при входе в маркер: addEventHandler ( "onMarkerHit", marker, function ( hitElement, matchingDimension ) if getElementType ( hitElement ) == "player" then -- если подобрал маркер игрок if isElementVisibleTo ( source, hitElement ) then -- если маркер виден для игрока outputChatBox ( "Есть доступ.", hitElement ) -- вывод текста для теста end end end ) -- при логине игрока: addEventHandler ( "onPlayerLogin", root, function ( _, account ) local object = "user." .. getAccountName ( account ) -- объект аккаунта for _, group in pairs ( { "Admin", "SuperModerator", "Moderator" } ) do -- список групп, для которых есть доступ к маркеру if isObjectInACLGroup ( object, aclGetGroup ( group ) ) then -- проверка, если игрок в одной из групп, которые указаны выше setElementVisibleTo ( marker, source, true ) -- отображаем маркер для игрока return end end end ) Link to comment
awilson Posted December 17, 2019 Author Share Posted December 17, 2019 On 05/12/2019 at 03:30, Sarrum said: Привет @awilson. Для таких целей логично использовать маркеры и функцию setElementVisibleTo, т.к. можно сразу же задать видимость для конкретных игроков. С пикапами так просто не выйдет и придется создавать их на клиенте для каждого нужного игрока, используя triggerClientEvent на сервере для вызова события, созданного на клиенте. Примерно так я бы реализовал вариант с маркерами: local marker = createMarker ( 0, 0, 2, "cylinder" ) setElementVisibleTo ( marker, root, false ) -- скрываем маркер для всех -- при входе в маркер: addEventHandler ( "onMarkerHit", marker, function ( hitElement, matchingDimension ) if getElementType ( hitElement ) == "player" then -- если подобрал маркер игрок if isElementVisibleTo ( source, hitElement ) then -- если маркер виден для игрока outputChatBox ( "Есть доступ.", hitElement ) -- вывод текста для теста end end end ) -- при логине игрока: addEventHandler ( "onPlayerLogin", root, function ( _, account ) local object = "user." .. getAccountName ( account ) -- объект аккаунта for _, group in pairs ( { "Admin", "SuperModerator", "Moderator" } ) do -- список групп, для которых есть доступ к маркеру if isObjectInACLGroup ( object, aclGetGroup ( group ) ) then -- проверка, если игрок в одной из групп, которые указаны выше setElementVisibleTo ( marker, source, true ) -- отображаем маркер для игрока return end end end ) Большое спасибо 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