Jump to content

استفسار عن يوزفل فنكشن


Recommended Posts

سلام عليكم ...

اقدر اسوي يوزفل فنكشن ان اتحقق ان الشخص معه رتبة معينة

لكن الكودد يكون كلنت يعني مثلا كدا

-- # Client
addCommandHandler ("rank",
  function (  )
    if يوزفل فنكشن تحقق الرتبة("Console") then
     outputChatBox ("لديك رتبة كونسل !")
    else
     outputChatBox ("ليس لديك رتبة كونسل")
    end
  end
 )

ببساطة يعني استخدم

isObjectInACLGroup

لكن كلنت

+ لو اقدر اسويه .. وش بتكون الاكواد الي بستخدمها؟

Edited by Mr.Mostafa
Link to comment

هذا يوزفل جبتلك ياه من الويكي

لو كنت كلفت نفسك وكنت دورت عليه كنت بتلاقيه

function isPlayerInACL(player, acl)
   local accountName = getAccountName( getPlayerAccount(player) )
   if accountName ~= "guest" and type( aclGetGroup(acl) ) == "userdata" then
      return isObjectInACLGroup( "user."..accountName, aclGetGroup(acl) )
   end
   return false
end

 

Link to comment
1 hour ago, #DesTroeyR said:

هذا يوزفل جبتلك ياه من الويكي

لو كنت كلفت نفسك وكنت دورت عليه كنت بتلاقيه


function isPlayerInACL(player, acl)
   local accountName = getAccountName( getPlayerAccount(player) )
   if accountName ~= "guest" and type( aclGetGroup(acl) ) == "userdata" then
      return isObjectInACLGroup( "user."..accountName, aclGetGroup(acl) )
   end
   return false
end

 

يباه كلنت سايد

Link to comment
3 minutes ago, #َxLysandeR said:

يباه كلنت سايد

اهاا

يعني خلاص يستخدم الداتا احسن

اول م المود يشتغل واول م اللاعب يسجل وخلاص ..#

يتحقق من الرتبة حقته ويعطيه داتا

Edited by #DesTroeyR
Link to comment

سويت لك فنكشن وماجربته, من المفترض انه يشتغل:

Server side :

function playerACL()
    if eventName == 'onResourceStart' then
        for _, player in ipairs(getElementsByType('player')) do
            updatePlayerACL(player)
        end
    elseif eventName == 'onPlayerLogin' or eventName == 'onPlayerLogout' then
        updatePlayerACL(source)
    end
end
addEventHandler('onResourceStart', root, playerACL)
addEventHandler('onPlayerLogin', root, playerACL)

function aclHook(sourceResource, functionName, isAllowedByACL, luaFilename, luaLineNumber, ...)
    local args = {...}
        if type(args[2]) == 'string' then
        local converted = split(args[2], 46);
        local account = getAccount(converted[2]);
        if account then
            updatePlayerACL(getAccountPlayer(account))
        end
    end
end
addDebugHook('preFunction', aclHook, {'aclGroupAddObject', 'aclGroupRemoveObject'})

function updatePlayerACL(player)
    if isElement(player) and getElementType(player) == 'player' then
    local account = getPlayerAccount(player)
    local accounts = {};
        if account and not isGuestAccount(account) then
            for _, group in ipairs(aclGroupList()) do
                if isObjectInACLGroup('user.'..getAccountName(account), group) then
                    accounts[#accounts+1] = aclGroupGetName(group)
                end
            end
        end
        setElementData(player, 'playerAccounts', accounts)
        return true
    end
    return false
end

Client side :

function isPlayerInACLGroup(player, group)
    if (isElement(player) and getElementType(player) == 'player') and (type(group) == 'string') then
    local groups = getElementData(player, 'playerAccounts') or {}
        if type(groups) == 'table' and #groups > 0 then
            for _, value in ipairs(groups) do
                if value == group then
                    return true
                end
            end
            return false
        end
    end
    return false
end

 

Edited by #,+( _xiRoc[K]; >
Link to comment
22 minutes ago, #,+( _xiRoc[K]; > said:

غلط, بسبب ان هذي الوظيفة تنفذ الفنكشن المكتوب

يعني مابترجع القيمة الصحيحة

مادري اذا فهمتني

يب فهمتك وصح الوظيفه ذي بحد ذاتها ماراح تنفذ الي طالبه هو بس بتعديل بسيط ممكن تنفذ مثال 

server

function isPlayerInACL(player, acl)
   local accountName = getAccountName( getPlayerAccount(player) )
   if accountName ~= "guest" and type( aclGetGroup(acl) ) == "userdata" then
      return isObjectInACLGroup( "user."..accountName, aclGetGroup(acl) )
   end
   return false
end

-- Always, always, always, (always) use a list of allowed servers functions.
-- Otherwise hackers can call any function and destroy your server.
allowedFunctions = { ["isPlayerInACL"]=true, ["getListOfCheese"]=true }

function callServerFunction(funcname, ...)
    if not allowedFunctions[funcname] then
        -- Protect server from abuse
        outputServerLog( "SECURITY: " .. tostring(getPlayerName(client)) .. " tried to use function " .. tostring(funcname) )
        return
    end

    local arg = { ... }
    if (arg[1]) then
        for key, value in next, arg do arg[key] = tonumber(value) or value end
    end
    triggerClientEvent(source,'returnonClientCallsServerFunction',source,loadstring("return "..funcname)()(unpack(arg)))
end
addEvent("onClientCallsServerFunction", true)
addEventHandler("onClientCallsServerFunction", root , callServerFunction)

client

local cRes = false

function callServerFunction(funcname, ...)
    local arg = { ... }
    if (arg[1]) then
        for key, value in next, arg do
            if (type(value) == "number") then arg[key] = tostring(value) end
        end
    end
    triggerServerEvent("onClientCallsServerFunction", localPlayer , funcname, unpack(arg))
	return cRes
end

addEvent('returnonClientCallsServerFunction',true)
addEventHandler('returnonClientCallsServerFunction',root,function(res)
	cRes = res
end)

addCommandHandler('x',function()
	if ( callServerFunction('isPlayerInACL',localPlayer,'Console') ) then
		outputChatBox('عندك صلاحيه')
	else
		outputChatBox('ماعندك')
	end
end)

 

Link to comment
1 hour ago, #,+( _xiRoc[K]; > said:

@TheOtherSide

طريقتك هذي غلط ايضاً

وبالنسبة لصاحب الموضوع عدل كودي في السطر 23 جهة السيرفر خله كذا :


addDebugHook('postFunction', aclHook, {'aclGroupAddObject', 'aclGroupRemoveObject'})

 

غلط بناءً على ايش ؟

Link to comment
4 minutes ago, #_iMr,[E]coo said:

وآل , سويه بداتا و إختصر الأكوادالي فوق ^

مايصير يسوي لما يشتغل السكربت ولا لما اللاعب يسجل بس

لازم لما تنضاف رتبة و تنحذف من لاعب ايضا ..

Link to comment
On ٢٥‏/٧‏/٢٠١٨ at 16:12, #,+( _xiRoc[K]; > said:

مايصير يسوي لما يشتغل السكربت ولا لما اللاعب يسجل بس

لازم لما تنضاف رتبة و تنحذف من لاعب ايضا ..

شكرآ علي مسآعدتكم + آلآكوآد

ــ

ممكن آسوي مثلا لو آلشخص سجل لو معه رتبة كونسل يحطله دآتآ ( كونسل ) ء

ولمآ يخرج يسحب منه آلدآتآ 

عشآن لو آلرتبة آنسحبت ودخل مرة تآنية مآ تكون معه آلدآتآ

Link to comment
10 minutes ago, Mr.Mostafa said:

شكرآ علي مسآعدتكم + آلآكوآد

ــ

ممكن آسوي مثلا لو آلشخص سجل لو معه رتبة كونسل يحطله دآتآ ( كونسل ) ء

ولمآ يخرج يسحب منه آلدآتآ 

عشآن لو آلرتبة آنسحبت ودخل مرة تآنية مآ تكون معه آلدآتآ

استخدم كودي

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...