Hali!
Megpróbáltam megcsinálni egy adminrendszer féleséget, viszont kicsit elakadtam. Mivel még kezdő vagyok, egy Social Gaming nevezetű modból próbáltam lesni, és onnan kiszedni pár dolgot, átalakítva.
Viszont ott elakadtam, amikor pl. egy admin adást, vagy egy skin választást kellene lebonyolítani.
Itt vannak a különféle kódok:
Maga a parancs addCommandHandler(\"setalevel\",
function(playerSource, cmd, id, level)
if id and level then
aszint = getElementData(playerSource, \"adminlevel\")
if(aszint >= 1) then
local targetPlayer, targetPlayerName = exports[\'sg_functions\']:findPlayerByID(playerSource, id)
if targetPlayer then
oldlevel = getElementData(targetPlayer, \"adminlevel\")
setElementData(targetPlayer, \"adminlevel\", tonumber(level))
pc = toPlayer()
dbExec(kapcsolat, \"UPDATE accounts SET admin = ? WHERE ID = ?\",level,getElementData(targetPlayer, \"accountID\"))
end
else
outputChatBox(\"Nincs elég magas Adminszinted a parancshoz!\", playerSource,169,139,101,true)
end
else
outputChatBox(\"[sGaming] #ffffff/\"..cmd..\" [NÉVRÉSZLET/ID] [ADMINSZINT]\", playerSource,169,139,101,true)
end
end
)
Kapcsolódó exportált funkciók(elvileg ezek vannak hozzá) function findPlayerByPartialNick(thePlayer, partialNick)
if not partialNick and not isElement(thePlayer) and type( thePlayer ) == \"string\" then
outputDebugString( \"Hibás paraméterek lettek megadva.\" )
partialNick = thePlayer
thePlayer = nil
end
local candidates = {}
local matchPlayer = nil
local matchNick = nil
local matchNickAccuracy = -1
local partialNick = string.lower(partialNick)
if thePlayer and partialNick == \"*\" then
return thePlayer, getPlayerName(thePlayer):gsub(\"_\", \" \")
elseif getPlayerFromName(partialNick) then
return getPlayerFromName(partialNick), getPlayerName( getPlayerFromName(partialNick) ):gsub(\"_\", \" \")
elseif tonumber(partialNick) then
matchPlayer = findP(thePlayer, partialNick)
candidates = { matchPlayer }
else
local players = getElementsByType(\"player\")
for playerKey, arrayPlayer in ipairs(players) do
if isElement(arrayPlayer) then
local playerName = string.lower(getPlayerName(arrayPlayer))
if(string.find(playerName, tostring(partialNick))) then
local posStart, posEnd = string.find(playerName, tostring(partialNick))
if posEnd - posStart > matchNickAccuracy then
-- better match
matchNickAccuracy = posEnd-posStart
matchNick = playerName
matchPlayer = arrayPlayer
candidates = { arrayPlayer }
elseif posEnd - posStart == matchNickAccuracy then
matchNick = nil
matchPlayer = nil
table.insert( candidates, arrayPlayer )
end
end
end
end
end
if not matchPlayer or not isElement(matchPlayer) then
if isElement( thePlayer ) then
if #candidates == 0 then
outputChatBox(\"#dc143c[Hiba]:#ffffff Nincs találat.\", thePlayer, 255, 255, 255, true )
else
--outputChatBox( #candidates .. \" találat:\", thePlayer, 255, 194, 14)
for _, arrayPlayer in ipairs( candidates ) do
outputChatBox(\"(\" .. tostring( getElementData( arrayPlayer, \"playerid\" ) ) .. \") \" .. getPlayerName( arrayPlayer ), thePlayer)
end
end
end
return false
else
return matchPlayer, getPlayerName( matchPlayer ):gsub(\"_\", \" \")
end
end
function findP(thePlayer, nick)
nick = tonumber(nick)
for key, value in ipairs(getElementsByType(\"player\")) do
local playerID = tonumber(getElementData(value, \"playerid\"))
local playerName2 = getPlayerName(value):gsub(\"_\", \" \")
if playerID == nick then
return value, playerName2
end
end
outputChatBox(\"#cb1919[Hiba]: #ffffffNem találtam meg a játékost.\", thePlayer,0,0,0,true)
return false
end
function findPlayerByID(thePlayer, nick)
return findPlayerByPartialNick(thePlayer, nick)
end
local ids = {}
function assignID()
for i=1,getMaxPlayers() do
if not ids then
ids = source
setElementData(source,\"char:id\",i,not optimize)
setElementData(source,\"playerid\",i,not optimize)
break
end
end
end
addEventHandler(\"onPlayerJoin\",root,assignID)
function freeID()
local id = getElementData(source,\"char:id\")
if not id then return end
ids[id] = nil
end
addEventHandler(\"onPlayerQuit\",root,freeID)
Valami olyat gondoltam ki ezek alapján, hogy megnézi a rendszer, hogy a beírt név vagy id egyezik-e bármelyik játékossal. És ha igen, akkor vele végezze el a műveletet.
Ha valaki tud ebben segíteni, azt nagyon megköszönném!