Szerző Téma: adminnév lekérése dutynál  (Megtekintve 1927 alkalommal)

adminnév lekérése dutynál
« Dátum: 2016. október 15. - 12:18:37 »
0 Show voters
Sziasztok!!!
Nos, a kérdésem annyi lenne hogy a setanick működik, mysqlt átírja.  A kérdés csak annyi hogy miért nem megy a lekérés mysql alapján?
amikor adminduty==0 akkor beállítottam hogy lekérje a charactername et.
adminduty==1 esetén az anicket kéne lekérnie. nem váloztatja meg a nevet. mi lehet a problem?

adminnév lekérése dutynál
« Válasz #1 Dátum: 2016. október 15. - 12:35:18 »
0 Show voters
ha a dutyból másolsz egy kódrészletet kiegészítem neked jóra:D

adminnév lekérése dutynál
« Válasz #2 Dátum: 2016. október 15. - 12:53:46 »
0 Show voters
function adminDuty(thePlayer, commandName)
    if exports.global:isPlayerAdmin(thePlayer) then
        local adminduty = getElementData(thePlayer, \"adminduty\")
        local getAccuratePlayerName = getPlayerName(thePlayer)
         local adminrang = exports.global:getPlayerAdminTitle(thePlayer)
        local playerName = getPlayerName(thePlayer)
        local pmid = getElementData(thePlayer, \"playerid\")
       
        if (adminduty==0) then
                         local
                                setElementData(thePlayer, \"eredetinev\", eredetinev)
                       
                       
                        local anicks = getElementData(thePlayer, \"anick\")
                        local anick = table.concat({anicks}, \"_\")
                       
          exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 1)
     setPlayerName(thePlayer, anicks)
     exports.infobox:addNotification(root,playerName .. \" adminszolgálatba lépett!\",\"info\")
                                setPlayerNametagColor ( thePlayer, 0, 100, 255 )
             exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"adminduty\", 1)
                end
                exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 0)
        if (adminduty==1) then
                exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 0)
                local ernev = mysql:query_free ( \"UPDATE characters SET caractername = \'\" .. mysql:escape_string ( name ) .. \"\' WHERE id = \" .. mysql:escape_string ( getElementData ( targetPlayer, \"dbid\" ) ) )
                local anicks = mysql:query_free ( \"UPDATE characters SET anick = \'\" .. mysql:escape_string ( name ) .. \"\' WHERE id = \" .. mysql:escape_string ( getElementData ( targetPlayer, \"dbid\" ) ) )
                --local szoveg = \"Szolgálatban. [OOC van jelen!]\"
               
                               exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 1)
             
 
            exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"adminduty\", 0)
   exports.infobox:addNotification(root,playerName .. \" kilépett az adminszolgálatból!\",\"info\")
    setPlayerName(thePlayer, ernev)
        end
                dbPoll ( dbQuery( abKapcsolat, \"UPDATE accounts SET adminduty=\'?\' WHERE id=\'?\'\", getElementData(thePlayer, \"adminduty\"), getElementData(thePlayer, \"gameaccountid\")), -1 )
        exports.global:updateNametagColor(thePlayer)
    end
end
addCommandHandler(\"adminduty\", adminDuty, false, false)
addCommandHandler(\"aduty\", adminDuty, false, false)

adminnév lekérése dutynál
« Válasz #3 Dátum: 2016. október 15. - 15:03:43 »
0 Show voters
Nem akarok szervet nyitni köszi :) nem szeretnék a sok naiv nokedli közé tartozni.
Ha úgy van rájövök akkor magamtól, köszönöm!

adminnév lekérése dutynál
« Válasz #4 Dátum: 2016. október 15. - 22:27:20 »
+2 Show voters
Ahol nevet kérsz ki használj mondjuk egy saját függvényt pl ezt..
 

function getName(s)
if getElementData(s, \"adminduty\") == 1 then
return getElementData(s, \"anick\") or \"N/A\" -- ha nincs deklarálva az esetben, bejelentkezés után, ahol az sqlből kérsz ki adatokat ott deklaráld :)
else
return getPlayerName(s)
end
end

 
Ezzel a kis függvénnyel egyből a megfelelő értékkel fog visszatérni :)

adminnév lekérése dutynál
« Válasz #5 Dátum: 2016. október 16. - 10:25:33 »
0 Show voters
Valhallás dolgokat elfelejteném, lévén bonyolultan és felesleges dolgokkal van tele állandóan. Nyilván ha elakarod kezdeni valahol az egészet, ott is megteheted, lévén legalább van egy alapod hozzá. Viszont itt az adminos élőpélda, hogy mennyivel bonyolultabb az egész (recon-t csináltam régebben és akkor láttam, hogy valhallás van vagy 50-100 soros, holott az egész kihozható ennek a töredékéből. :D ). :D

adminnév lekérése dutynál
« Válasz #6 Dátum: 2016. október 16. - 17:38:35 »
0 Show voters
rendben köszi!

adminnév lekérése dutynál
« Válasz #7 Dátum: 2016. október 18. - 17:59:11 »
0 Show voters
Szerbusz Nem vagyok oda a valhalláért visszont a te döntésed. De próbáltad már a playername helyett az anicke-t kiexportálni ?  :question: Mondjuk így ?  ::| visszonylag nehéz lenne ki exportálnia az admin nevet miközben script alapján a playername-t kéred töle :P
 
function adminDuty(thePlayer, commandName)
    if exports.global:isPlayerAdmin(thePlayer) then
        local adminduty = getElementData(thePlayer, \"adminduty\")
        local getAccuratePlayerName = getPlayerName(thePlayer)
local adminrang = exports.global:getPlayerAdminTitle(thePlayer)
        local playerName = getPlayerName(thePlayer)
        local pmid = getElementData(thePlayer, \"playerid\")
           if (adminduty==0) then
                         local
                                setElementData(thePlayer, \"eredetinev\", eredetinev)
                       
                       
                        local anicks = getElementData(thePlayer, \"anick\")
                        local anick = table.concat({anicks}, \"_\")
                       
          exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 1)
                          setPlayerName(thePlayer, anicks)
                          exports.infobox:addNotification(root,.. anicks .. \" adminszolgálatba lépett!\",\"info\")
                                setPlayerNametagColor ( thePlayer, 0, 100, 255 )
             exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"adminduty\", 1)
                end
                exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 0)
        if (adminduty==1) then
                exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 0)
                local ernev = mysql:query_free ( \"UPDATE characters SET caractername = \'\" .. mysql:escape_string ( name ) .. \"\' WHERE id = \" .. mysql:escape_string ( getElementData ( targetPlayer, \"dbid\" ) ) )
                local anicks = mysql:query_free ( \"UPDATE characters SET anick = \'\" .. mysql:escape_string ( name ) .. \"\' WHERE id = \" .. mysql:escape_string ( getElementData ( targetPlayer, \"dbid\" ) ) )
                --local szoveg = \"Szolgálatban. [OOC van jelen!]\"
               
                               exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 1)
             
 
            exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"adminduty\", 0)
                        exports.infobox:addNotification(root, ..anicks .. \" kilépett az adminszolgálatból!\",\"info\")
                    setPlayerName(thePlayer, ernev)
        end
                dbPoll ( dbQuery( abKapcsolat, \"UPDATE accounts SET adminduty=\'?\' WHERE id=\'?\'\", getElementData(thePlayer, \"adminduty\"), getElementData(thePlayer, \"gameaccountid\")), -1 )
        exports.global:updateNametagColor(thePlayer)
    end
end
addCommandHandler(\"adminduty\", adminDuty, false, false)
addCommandHandler(\"aduty\", adminDuty, false, false)
« Utoljára szerkesztve: 2016. október 18. - 22:44:25 írta Gh0st »

adminnév lekérése dutynál
« Válasz #8 Dátum: 2016. október 18. - 18:35:07 »
0 Show voters
Miért kell mindent így túl bonyolítani?:D
szerk: kaptál egy kódot valhallára igazítva :D Használd egészséggel  :wave:
Spoiler for adminduty lua:D:
function getName(p)
if (getElementData(p, \"adminduty\") == true) then
   return getElementData(p, \"anick\") or \"N/A\"
else return getPlayerName(p) end
end
addCommandHandler(\"aduty\", function(p)
if exports.global:isPlayerAdmin(p) then return end
local aduty = getElementData(p, \"adminduty\")
setElementData(p, \"adminduty\", not aduty)
if aduty then
exports.infobox:addNotification(root,getName(p) .. \" adminszolgálatba lépett!\",\"info\")
else
exports.infobox:addNotification(root,getName(p) .. \" elhagyta az adminszolgálatot!\",\"info\")
end
end
« Utoljára szerkesztve: 2016. október 19. - 23:18:17 írta ?getr3kt »

adminnév lekérése dutynál
« Válasz #9 Dátum: 2016. október 20. - 18:34:52 »
0 Show voters
haliii!
Na, eközben én átgondoltam és írtam is egy másikat, de most pedig az a bajom hogy megy minden rendesen csak nem írja vissza a nevet :(
 
addCommandHandler(\"adminduty\",
function(thePlayer)
if exports.global:isPlayerAdmin(thePlayer) then
        local adminduty = getElementData(thePlayer, \"adminduty\")
local adminnick = getElementData(thePlayer, \"adminnick\")
local playername = getElementData(thePlayer, \"charactername\")
   if (adminduty==0) then
      setElementData(thePlayer, \"visibleName\", adminnick)
      setPlayerName(thePlayer, adminnick)
      exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"adminduty\", 1)
      mysql:query_free(\"UPDATE accounts SET adminduty=\" .. mysql:escape_string(getElementData(thePlayer, \"adminduty\")) .. \" WHERE id = \" .. mysql:escape_string(getElementData(thePlayer, \"gameaccountid\")) )
      exports.infobox:addNotification(root,adminnick .. \" adminszolgálatba lépett!\",\"info\")
      setPlayerNametagColor ( thePlayer, 0, 18, 255 )
      exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 0)
   end
   if (adminduty==1) then
      setElementData(thePlayer, \"visibleName\", playername)
      setPlayerName(thePlayer, playername)
      exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"adminduty\", 0)
      mysql:query_free(\"UPDATE accounts SET adminduty=\" .. mysql:escape_string(getElementData(thePlayer, \"adminduty\")) .. \" WHERE id = \" .. mysql:escape_string(getElementData(thePlayer, \"gameaccountid\")) )
      exports.infobox:addNotification(root,adminnick .. \" kilépett az adminszolgálatból!\",\"info\")
      setPlayerNametagColor ( thePlayer, 255, 255, 255 )
      exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 1)
   end
end
end
)

 
Ezt a hibaüzenetet kapom:
 
[2016-10-20 18:25:48] WARNING: admin-system\\Player\\s_player_commands.lua:2368: Bad argument @ \'setPlayerName\' [Expected string at argument 2, got boolean]

adminnév lekérése dutynál
« Válasz #10 Dátum: 2016. október 21. - 13:18:58 »
0 Show voters
Annyi felesleges dolog van ebben benne, pontosan ezért nem jó valhallát használni. Egy kb 10 soros scriptből csinálsz vagy 40-50-t. :D A hibaüzeneted az, hogy a második érték igaz/hamis értéket kap vissza. Pl SQL részt szerintem teljesen felesleges egy admindutyba lévén, addig legyen szolgálatba amíg fent van, teljesen felesleges sql-ben őt mentegetni, mivel ha nincs fent, akkor minek legyen sql szerint szolgálatban pl. Itt egy régebben megírt adminduty-m:
 
addCommandHandler(\"adminduty\", 
    function(player, cmd)
        if tonumber(getElementData(player, \"Account->admin_level\")) < access_list[cmd] then return end  -- megnézi, hogy van -e jogosultsága a parancshoz
        local currDuty = getElementData(player, \"Char->adminduty\") -- megnézi, jelenleg szolgálatban vagy -e vagy épp most készülsz belépni
        if currDuty then -- ha szolgálatban vagy akkor ez az ág fut le
            setElementData(player, \"Char->adminduty\", false)
            outputChatBox(\"Szolgálatból kilépés\")
        else -- ha nem vagy szolgálatban ez az ág fut le
            setElementData(player, \"Char->adminduty\", true)
            outputChatBox(\"Szolgálatba lépés\")
        end
    end
)

 
Teljesen felesleges nevet változtatgatni stb, nagyon egyszerű az egész. Elementdata tárolja az adatot és ha mondjuk true (vagy 1 vagy amit akarsz), akkor a nametagban (mivel renderben van, folyamatosan frissül), átugrik egy másik ágra, ami jelen esetben az admin neve. Nyilván nálad mások az elementdaták így azokat átírod és az általam felvázolt módon sokkal könnyebb és olvashatóbb lesz a scripted, ami nem utolsó szempont.

adminnév lekérése dutynál
« Válasz #11 Dátum: 2016. október 21. - 14:12:21 »
0 Show voters
Amit en adtam a gyerkoc kezebe, szerintem azzal jar a legjobban :)

adminnév lekérése dutynál
« Válasz #12 Dátum: 2016. október 21. - 14:49:08 »
0 Show voters
Idézetet írta: ?getr3kt date=1477051941\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63354\" data-ipsquote-contentclass=\"forums_Topic
Amit en adtam a gyerkoc kezebe, szerintem azzal jar a legjobban :)
 
A legjobbak akkor jár, ha nem valhallát használ.  :laugh: Amúgy nem tudom megnézni a spoileres cuccokat (így nem láttam azt se, sajnos), mert az istenért se akarja a firefox engedni nekem, hogy lenyíljon az ott, de hogy ez miért van azt már nem tudom.  :-[

adminnév lekérése dutynál
« Válasz #13 Dátum: 2016. október 21. - 20:05:16 »
0 Show voters
unction getName(p)
        if (getElementData(p, \"adminduty\") == true) then
                        return getElementData(p, \"anick\") or \"N/A\"
        else return getPlayerName(p) end
end
addCommandHandler(\"aduty\", function(p)
        if exports.global:isPlayerAdmin(p) then return end
        local aduty = getElementData(p, \"adminduty\")
        setElementData(p, \"adminduty\", not aduty)
        if aduty then
                exports.infobox:addNotification(root,getName(p) .. \" adminszolgálatba lépett!\",\"info\")
        else
                exports.infobox:addNotification(root,getName(p) .. \" elhagyta az adminszolgálatot!\",\"info\")
        end
end/code]
Akkor ezzel járnék legjobban :D
Egyébként nekem jó lenne úgy ahogy csinálták, ha visszakapják undutytol a characternamet
Nem készülök egyenlőre szervert nyitni, nekem a lua segít abban hogy megértsem a programozást, mivel holt egyszerű.
Ez a neves kombó még azért kell ha a haverok szeretnének hülyülni gyorsan nyitok egy pontot aztán így ökörködünk mindennel.
A \"nyissunk szervert\" korszakok 1 az 1ben kimaradt, minek égessem magam feleslegesen?

 
EDIT: nos, meg van mi volt a baj, ami még most is baj. A legnagyobb baj hogy nem mysql ből kéri az adatot így nem is mentődik, mellesleg nem definiáltam hogy mi az a charactername így nem tudott mit lekérni. most hozzáadtam a /changenamehez hogy ezt is írja így át.
« Utoljára szerkesztve: 2016. október 21. - 20:38:49 írta AceHardlightHUN »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal