GTA Közösség - A magyar GTA fórum

Multi Theft Auto (MTA) => MTA: Szerverfejlesztés => Segítségkérés => A témát indította: Milan0831 - 2016. Augusztus 20. - 03:54:07

Cím: Admin név segítség
Írta: Milan0831 - 2016. Augusztus 20. - 03:54:07
Próbálok összehozni egy működő adminnév scriptet. Amikor bedutyzok rendesen átváltja a nevemet anick-re, viszont ha kidutyzom nem vált vissza a régi névre. Nem tudom mi lehet a gond a scripttel, hátha valaki tud segíteni. Elég kezdő vagyok még ezekhez, előre is bocsássatok meg. (Ez csak az aduty/anick része a scriptnek, több minden van az egészben.)
 
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 eredetinev = getPlayerName(thePlayer)
                setElementData(thePlayer, \"eredetineve\", eredetinev)
           
           
            local anicks = getElementData(thePlayer, \"anick\")
            local anick = table.concat({anicks}, \"_\")
           
      exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 1)
              setPlayerName(thePlayer, anicks)
              exports.wls_info:addNotification(root,anicks .. \" adminszolgálatba lépett.\",\"info\")
                setPlayerNametagColor ( thePlayer, 0, 206, 209 )
             exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"adminduty\", 1)
        end
        exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 0)
        if (adminduty==1) then
            local ernev = getElementData(thePlayer, \"eredetinev\")
            local anicks = getElementData(thePlayer, \"anick\")
           
            exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 1)
            setPlayerName(thePlayer, ernev)
   
   
            exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"adminduty\", 0)
            exports.wls_info:addNotification(root,anicks .. \" kilépett az adminszolgálatból.\",\"info\")
        end
        mysql:query_free(\"UPDATE accounts SET adminduty=0 WHERE id = \" .. mysql:escape_string(getElementData(thePlayer, \"gameaccountid\")) )
        exports.global:updateNametagColor(thePlayer)
    end
end
addCommandHandler(\"adminduty\", adminDuty, false, false)
addCommandHandler(\"aduty\", adminDuty, false, false)
Cím: Admin név segítség
Írta: AceHardlightHUN - 2016. Augusztus 20. - 10:34:38
Debug ír hibát?
Cím: Admin név segítség
Írta: Milan0831 - 2016. Augusztus 20. - 15:00:14
Hali Bob, Sergio vagyok  :D
[2016-08-20 14:53:54] WARNING: adminsystem/commandsS.lua:1347: Bad argument @ \'setPlayerName\' [Expected string at argument 2, got boolean]
Ez az egyik hiba amit kiír és ez szúrt nekem jobban szemet.
Cím: Admin név segítség
Írta: Xistance - 2016. Augusztus 20. - 15:07:46
Idézetet írta: Milan0831 date=1471658047\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"62748\" data-ipsquote-contentclass=\"forums_Topic
Próbálok összehozni egy működő adminnév scriptet. Amikor bedutyzok rendesen átváltja a nevemet anick-re, viszont ha kidutyzom nem vált vissza a régi névre. Nem tudom mi lehet a gond a scripttel, hátha valaki tud segíteni. Elég kezdő vagyok még ezekhez, előre is bocsássatok meg. (Ez csak az aduty/anick része a scriptnek, több minden van az egészben.)
 
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 eredetinev = getPlayerName(thePlayer)
                setElementData(thePlayer, \"eredetineve\", eredetinev)
           
           
            local anicks = getElementData(thePlayer, \"anick\")
            local anick = table.concat({anicks}, \"_\")
           
      exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 1)
              setPlayerName(thePlayer, anicks)
              exports.wls_info:addNotification(root,anicks .. \" adminszolgálatba lépett.\",\"info\")
                setPlayerNametagColor ( thePlayer, 0, 206, 209 )
             exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"adminduty\", 1)
        end
        exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 0)
        if (adminduty==1) then
            local ernev = getElementData(thePlayer, \"eredetinev\")
            local anicks = getElementData(thePlayer, \"anick\")
           
            exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 1)
            setPlayerName(thePlayer, ernev)
   
   
            exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"adminduty\", 0)
            exports.wls_info:addNotification(root,anicks .. \" kilépett az adminszolgálatból.\",\"info\")
        end
        mysql:query_free(\"UPDATE accounts SET adminduty=0 WHERE id = \" .. mysql:escape_string(getElementData(thePlayer, \"gameaccountid\")) )
        exports.global:updateNametagColor(thePlayer)
    end
end
addCommandHandler(\"adminduty\", adminDuty, false, false)
addCommandHandler(\"aduty\", adminDuty, false, false)

 

A setelementdatánál \"eredetineve\" van, a getElementData-nál pedig \"eredetinev\".
Cím: Admin név segítség
Írta: Milan0831 - 2016. Augusztus 20. - 15:11:29
Sajnos ez nem segített. Gondolom még van benne valami hiba, azért köszönöm.
Cím: Admin név segítség
Írta: Xistance - 2016. Augusztus 20. - 15:43:36
Idézetet írta: Milan0831 date=1471698689\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"62748\" data-ipsquote-contentclass=\"forums_Topic
Sajnos ez nem segített. Gondolom még van benne valami hiba, azért köszönöm.
 
Így mit ír a debug?
Cím: Admin név segítség
Írta: Milan0831 - 2016. Augusztus 20. - 15:49:18
[2016-08-20 15:32:12] ERROR: Client (Sergio) triggered serverside event adminDuty1, but event is not added serverside
[2016-08-20 15:32:13] ERROR: Client (Sergio) triggered serverside event adminDuty0, but event is not added serverside
Ezeket spammeli a debug folyamatosan.
Cím: Admin név segítség
Írta: impreZZa - 2016. Augusztus 20. - 15:56:02
addEvent(\"adminDuty1\", true)
addEvent(\"adminDuty0\", true)

 
btw. nem írtál el valamit? :D
Cím: Admin név segítség
Írta: Xistance - 2016. Augusztus 20. - 15:59:20
Idézetet írta: Milan0831 date=1471700958\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"62748\" data-ipsquote-contentclass=\"forums_Topic
[2016-08-20 15:32:12] ERROR: Client (Sergio) triggered serverside event adminDuty1, but event is not added serverside
[2016-08-20 15:32:13] ERROR: Client (Sergio) triggered serverside event adminDuty0, but event is not added serverside
Ezeket spammeli a debug folyamatosan.
 
Az adminduty1 és az adminduty0 nevű event nincs hozzáadva a szerveroldalhoz. Magyarán az addEvent-et írhattad el.
Cím: Admin név segítség
Írta: Milan0831 - 2016. Augusztus 20. - 16:24:34
addEvent hozzáadva normálisan, köszönöm srácok. Viszont most már semmiféle hibát nem ír a debug minden full jó egyszerűen csak nem váltja vissza a nevet. Oda tök jól váltja debug is írja h megváltozott a nevem majd amikor kilépek semmi.
Cím: Admin név segítség
Írta: AceHardlightHUN - 2016. Augusztus 20. - 17:09:43
Idézetet írta: Milan0831 date=1471703074\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"62748\" data-ipsquote-contentclass=\"forums_Topic
addEvent hozzáadva normálisan, köszönöm srácok. Viszont most már semmiféle hibát nem ír a debug minden full jó egyszerűen csak nem váltja vissza a nevet. Oda tök jól váltja debug is írja h megváltozott a nevem majd amikor kilépek semmi.
 
m
Most jobban átnéztem és teszteltem. Lehet az lehet a problém hogy nem tudja honnan lekérni hogy mi az ic név. Oda szerintem tegyél be egy lekérést. Ha a zeró mysqlt használod ez magától értetődő honnan kell.
UI:Áve Toscani írom ezt jelentésekhez :)
Cím: Admin név segítség
Írta: Xistance - 2016. Augusztus 20. - 19:59:23
Idézetet írta: Milan0831 date=1471703074\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"62748\" data-ipsquote-contentclass=\"forums_Topic
addEvent hozzáadva normálisan, köszönöm srácok. Viszont most már semmiféle hibát nem ír a debug minden full jó egyszerűen csak nem váltja vissza a nevet. Oda tök jól váltja debug is írja h megváltozott a nevem majd amikor kilépek semmi.
 
Elsősorban minek is van egybe a kettő? Írd meg két külön parancsba.
Cím: Admin név segítség
Írta: Milan0831 - 2016. Augusztus 20. - 21:03:22
Rendben, megpróbálok írni egy másikat.
Cím: Admin név segítség
Írta: Xenius - 2016. Augusztus 20. - 22:32:11
local anicks = getElementData(thePlayer, \"anick\") or \"Hiba a lekérdezéskor\"
Cím: Admin név segítség
Írta: Milan0831 - 2016. Augusztus 21. - 01:28:19
Újra lett írva az egész rendszer, mivel nem akart működni az előző. Viszont megint ugyanaz a problémám, hogy nem adja vissza a nevet. Több féle módon is próbáltam lekérni. Volt már külön funkció is névlekérésre, de próbáltam egy egyszerű getPlayerName-el is. Egyikkel sem működik, nagyon nagyon megköszönném ha valaki tudna ezzel is segíteni.
Itt a script anick funkció része:
 
function anick ( thePlayer, commandName, who, rank )
if (exports.global:isSuperAdmin(thePlayer)) then
        if not (who) then
   outputChatBox(\"#0086c9[Használat]#C4C4C4 Használd :/setanick [iD] [admin név]\", thePlayer, 255, 255, 255,true)
   outputChatBox(\"#0086c9[Használat]#C4C4C4 Ezzel A Parancsal Tudod Beállítani hogy Mi legyen Az Admin Neve\", thePlayer, 255, 255, 255, true)
else
            local targetPlayer, targetPlayerName = exports.global:findPlayerByPartialNick(thePlayer, who)
            if (targetPlayer) then
                 local getAccuratePlayerName = getPlayerName(thePlayer)
                 rank = rank
                 setElementData ( targetPlayer, \"anick\", rank )
       outputChatBox(\"#0086c9[Admin-Napló]:#C4C4C4 Beállítottad \" .. targetPlayerName .. \" admin nevét erre:#FF0202 \" .. rank .. \".\", thePlayer, 255, 255, 255,true)
       mysql:query_free(\"UPDATE characters SET anick = \'\" .. mysql:escape_string(rank) .. \"\' WHERE id = \" .. mysql:escape_string(getElementData( targetPlayer, \"dbid\" )) )
                 local targetAdminTitle = exports.global:getPlayerAdminTitle(targetPlayer)
            end
        end
    end
end

 
Illetve itt van a script azon része, hogy amikor bedutyzik egy admin átváltsa a nevét anickre, illetve vissza. Itt lesz valahol hiba úgy gondolom.
 
function adminDuty(thePlayer, commandName)
if exports.global:isPlayerAdmin ( thePlayer ) then
        local adminduty = getElementData(thePlayer, \"adminduty\")
        local username = getPlayerName(thePlayer)
        local adminrang = exports.global:getPlayerAdminTitle(thePlayer)
        local playerName = getElementData(thePlayer, \"anick\") or getPlayerName(thePlayer)
        local pmid = getElementData(thePlayer, \"playerid\")
        if ( adminduty == 0 ) then
            local eredetinev = getPlayerName(thePlayer)
                setElementData(thePlayer, \"eredetineve\", eredetinev)         
   local anicks = getElementData(thePlayer, \"anick\")
            local anick = table.concat({anicks}, \"_\")
            exports[\'anticheat-system\']:changeProtectedElementDataEx ( thePlayer, \"adminduty\", 1 )
            outputChatBox(\"#7CC576\".. playerName .. \"#FFFFFF adminszolgálatba lépett! A#7CC576 /pm #7CC576\"..pmid..\"#FFFFFF paranccsal tudsz neki írni!\", getRootElement(), 255, 255, 255,true)
   exports.cf_info:addNotification(root,playerName .. \" adminszolgálatba  lépett!\",\"info\")
   exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 1)
   setPlayerName(thePlayer, anicks)
   exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 0)
        else
    local eredetinev = getElementData(thePlayer, \"eredetineve\")
            exports[\'anticheat-system\']:changeProtectedElementDataEx ( thePlayer, \"adminduty\", 0 )
   exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 1)
   setPlayerName(thePlayer, eredetinev)
   exports[\'anticheat-system\']:changeProtectedElementDataEx(thePlayer, \"legitnamechange\", 0)
            outputChatBox(\"#7CC576\".. playerName .. \"#FFFFFF kilépett az adminszolgálatból!\", getRootElement(), 255, 255, 255,true)
   exports.cf_info:addNotification(root,playerName .. \" kilépett az adminszolgálatból!\",\"info\")
        end
        mysql:query_free ( \"UPDATE accounts SET adminduty=\" .. mysql:escape_string(getElementData(thePlayer, \"adminduty\")) .. \" WHERE id = \" .. mysql:escape_string(getElementData(thePlayer, \"gameaccountid\")) )
    end
end
addCommandHandler(\"adminduty\", adminDuty, false, false)
addCommandHandler(\"aduty\", adminDuty, false, false)
Cím: Admin név segítség
Írta: NagyLaszlo - 2016. Augusztus 21. - 13:10:31
Kezdőként ilyet írni, nem semmi dolog. Én amikor kezdő voltam, írtam pár teleportálos cuccot :laugh:
Cím: Admin név segítség
Írta: Milan0831 - 2016. Augusztus 21. - 16:18:19
Az adminsystem nem az enyém, csak az anicket írtuk át barátommal :)
Cím: Admin név segítség
Írta: NagyLaszlo - 2016. Augusztus 21. - 16:54:41
Akkor nem szóltam.
Cím: Admin név segítség
Írta: Hasirama - 2016. Augusztus 21. - 22:07:32
Hali!
Nem tudom, hogy a nevet hogy kezeli, vagy hogy érzékeli. Hogy most a _ jel ott van a nevek között, vagy sem, de lehet ez miatt nem jó az elementdata lekérdezés, hibásan akarná beállítani a nevet. Vagy az eredetinev-et mondjuk lehet nem stringnek érzékeli. Kipróbálhatod a string()-et. Ha ez nem jön be, akkor gondolom van az adatbázisban külön a nevének egy hely. Adatbázisból kérdezd le, ne pedig elementdata-ból. Hátha ez fog segíteni.
Cím: Admin név segítség
Írta: Xistance - 2016. Augusztus 22. - 22:00:35
Sikerült megoldani? Ha nem, akkor holnap megírom neked.
Cím: Admin név segítség
Írta: Milan0831 - 2016. Augusztus 24. - 05:04:58
Nem voltam itt egy napig gépközelben, így nem tudtam válaszolni nektek sorry.
Mindkettőtöknek nagyon köszönöm a segítséget és a felajánlást, de szerencsére sikerült megoldanom. Létrehoztam egy eredetinev funkciót amivel már rendesen visszaváltja a nevemet, csak annyit kell csinálnom, hogy ha valaki admin lesz akkor egy /seteredetinev-el meg kell adni a rendes nevét de szerintem egy ilyen 1x használatos dolog semmit nem fog lelassítani, szóval örülök neki. :)