Szerző Téma: Admin rendszer/MySQL  (Megtekintve 1357 alkalommal)

Admin rendszer/MySQL
« Dátum: 2017. december 19. - 09:13:29 »
0 Show voters
Hali. A napokban kezdtem el az MTA-val foglalkozni. Már csináltam egy ilyen nagyon kezdő login/register scriptet, ahol lementi az illetó életét, armor-ját, admin szintjét, illetve pénzét. Úgy gondoltam, hogy ne mindig az internal.db-t kelljen átírni, kis segítséggel csináltam egy /adminszint parancsot. Mivel egyedül vagyok, így nem nagyon tudom tesztelni máson, csak magamon a dolgokat, viszont amikor beírom hogy /adminszint jacob 5 , akkor kidob a konzolba egy hibát. ( attempt to compare number with string ), ami a \"if ( level >=0 and level <=8 ) then,, sorra mutat, pedig 0-8 közötti számot írok be. Egyik kérdésem az lenne, hogy hogyan lehetne kijavítani a hibát? Illetve tudtok-e olyan programokat, amivel \"házilag\" lehet MySQL-t készíteni? ugyanis gyakorolni szeretnék csak, úgyhogy szervert rendelni nem szeretnék.. ( wamp kilőve, nem indul el, hibát jelez az isucrtbase.terminate hibát. ) Válaszotokat előre is köszönöm, illetve további szép napot!
 


addCommandHandler(\"adminszint\", 
    function(player, command, targetName, level)
        if getPlayerName(player) == \"Jacob\" then
            if ( targetName ~= nil and level ~= nil ) then
                local target = getPlayerFromName(targetName)
                if ( target ~= false ) then
                    if ( level >=0 and level <=8 ) then
                        setElementData(target, \"ig.admin\", level)
                        outputChatBox(\"#4286f4[Admin System]:#ffffff Sikeresen módosítóttad \"..targetName..\" adminisztrátori szinjét! #ff4f4f[\"..level..\"]\", player, 255, 255, 255, true)
                        outputChatBox(\"#4286f4[Admin System]:#ffffff Adminisztrátori szinted módosításra került! #ff4f4f[\"..level..\"]\", target, 255, 255, 255, true)
                    else
                        outputChatBox(\"#4286f4[Admin System]:#ffffff Az adminisztrátori szintnek 0 és 8 között kell lennie!\", player, 255, 255, 255, true)
                    end
                else
                    outputChatBox(\"#4286f4[Admin System]:#ffffff A kiválasztott játékos jelenleg nem elérhető!\", player, 255, 255, 255, true)
                end
            else 
                outputChatBox(\"#4286f4[Admin System]: #ff4f4fHasználat: #ffffff/adminszint <név> <szint 0-tól 8-ig>!\", player, 255, 255, 255, true)
            end
        end
    end
)

Admin rendszer/MySQL
« Válasz #1 Dátum: 2017. december 19. - 09:42:43 »
+1 Show voters
Az lehet, hogy te számot írsz be, de azt a játék neved stringnek (szövegnek veszi) és ezért ír rá hibát. tonumber kell neked a level értékre (próbáld ki, hogy most akár \'asd\' szöveget is betudnál írni és ugyan az lenne a \"hiba\") .
xampp pl. Ha pedig esetleg felraksz egy sima mysql szervert (mert azt is lehet), akkor pedig mondjuk egy külső programmal tudod kezelni kényelmesen.

Admin rendszer/MySQL
« Válasz #2 Dátum: 2017. december 19. - 11:18:06 »
0 Show voters
Még egy egyszerű kis kérdésem lenne. Ugye az adminisztrátori parancsokat külön lua fájlban tárolom el, viszont ugyan arról a meta xml-ról, illetve ugyan abban a mappában vannak. A reglog.lua-ban ( register /login ) ugye kilépéskor/belépéskor lementi az adott dolgokat, és köztük van egy ilyen kis sor is: adminszint = getAccountData(playeraccount, \"ig.admin\", getElementData(source, \"ig.admin\")) Majd ugye egy másik lua fájlban, amint említettem vannak az admin parancsok. Úgy gondoltam úgy  oldom meg, hogy if adminszint >= 1 then .... end. Most viszont erre egy, az előzőhöz hasonló hibát jelez. ( Attempt to compare number with nil ). Ez lenne az utolsó kérdésem, illetve az előzőre visszatérve azt is köszönöm, működött minden! :)
« Utoljára szerkesztve: 2017. december 19. - 11:20:33 írta JacobtELLER »

Admin rendszer/MySQL
« Válasz #3 Dátum: 2017. december 19. - 12:07:44 »
0 Show voters
Egy lua fájlból nem érsz el egy másik lua fájlban lévő változót. Szóval az adminparancsosban is:
 

adminszint = getAccountData(playeraccount, \"ig.admin\")

 
(a playeraccount változót is hozd létre elötte ahogy az első lua fájlban.)

Admin rendszer/MySQL
« Válasz #4 Dátum: 2017. december 19. - 14:25:28 »
+1 Show voters
Csáó. Megcsináltam itt is, viszont sajnos így se jó :( Már elindításnál egy warningot dob ki , a képen a konzol látható, amit kiír, az error akkor jön ki, amikor beírom hogy /javitas a kocsiban )
 
EDIT: Megoldottam egy function-nal! Köszönöm a segítséget! :) 
 


function isAdmin(player, level)
    if getElementData(player, \"ig.admin\") >= level then return true
    else return false
    end
end
« Utoljára szerkesztve: 2017. december 19. - 15:07:32 írta JacobtELLER »

Admin rendszer/MySQL
« Válasz #5 Dátum: 2017. december 19. - 15:09:52 »
0 Show voters
Kliens vagy szerver oldali szkript? (Kliensen nem is működne nagyon)
 


 
addCommandHandler(\"adminszint\",
    function(player, command, targetName, level, targetaccount)
        local playeraccount = getPlayerAccount ( player )
   local adminszint = getAccountData(playeraccount, \"ig.admin\", getElementData(source, \"ig.admin\"))
        if  (getPlayerName(player) == \"Jacob\" and adminszint >= 7 ) then
            if ( targetName ~= nil and level ~= nil ) then
                local target = getPlayerFromName(targetName)
                if ( target ~= false ) then
                    if ( tonumber(level) >=0 and tonumber(level) <=8 ) then
                        setElementData(target, \"ig.admin\", level)
                        outputChatBox(\"#4286f4[Admin System]:#ffffff Sikeresen módosítóttad \"..targetName..\" adminisztrátori szinjét! #ff4f4f[\"..level..\"]\", player, 255, 255, 255, true)
                        outputChatBox(\"#4286f4[Admin System]:#ffffff Adminisztrátori szinted módosításra került #ff4f4f\" ..getPlayerName(player)..\" #ffffffáltal! #ff4f4f[\"..level..\"]\", target, 255, 255, 255, true)
                    else
                        outputChatBox(\"#4286f4[Admin System]:#ffffff Az adminisztrátori szintnek 0 és 8 között kell lennie!\", player, 255, 255, 255, true)
                    end
                else
                    outputChatBox(\"#4286f4[Admin System]:#ffffff A kiválasztott játékos jelenleg nem elérhető!\", player, 255, 255, 255, true)
                end
            else
                outputChatBox(\"#4286f4[Admin System]: #ff4f4fHasználat: #ffffff/adminszint <név> <szint 0-tól 8-ig>!\", player, 255, 255, 255, true)
            end
        end
    end
)
 
function myCommandHandler(thePlayer, command)
    local x, y, z = getElementPosition(thePlayer)
    local RaceVehicle = createVehicle ( 411, 0, 0, 0 )
    local spawnVeh = spawnVehicle ( RaceVehicle, x+3, y+3, z )
    if spawnVeh then    outputChatBox(\"Vehicle was spawned\", thePlayer) else    outputChatBox(\"Error\",thePlayer)    end
end
 
addCommandHandler(\"spawnvehicle\", myCommandHandler)
 
 
function fix (player)
             local playeraccount = getPlayerAccount ( player )
   local adminszint = getAccountData(playeraccount, \"ig.admin\", getElementData(source, \"ig.admin\"))
    if adminszint >= 1  then
        local theVehicle = getPedOccupiedVehicle (playerSource)
        local vehicleName = getVehicleName ( theVehicle )
        if theVehicle and getVehicleController ( theVehicle ) == playerSource then  
            fixVehicle (theVehicle)  
            outputChatBox(\"#4286f4[Admin System]: #ffffffSikeresen megjavítottál egy #ff4f4f\"..vehicleName..\" #ffffff típusú járművet!\", player, 255, 255, 255, true)
        end
    end
end
addCommandHandler (\"javitas\" , fix)

 
Elvileg jónak kell lennie, nem tudom tesztelni.

Admin rendszer/MySQL
« Válasz #6 Dátum: 2017. december 19. - 15:11:29 »
+1 Show voters
Már most megoldódott, de köszönöm még egyszer neked is. Amúgy természetesen szerver oldali.

Admin rendszer/MySQL
« Válasz #7 Dátum: 2017. december 19. - 15:20:57 »
0 Show voters
Idézetet írta: JacobtELLER date=1513689928


   
       
   
   
      EDIT: Megoldottam egy function-nal! Köszönöm a segítséget! :) 
   
   
       
   
   

function isAdmin(player, level)
    if getElementData(player, \"ig.admin\") >= level then return true
    else return false
    end
end

   
       
   


Ez pont azért jó amit kijavítottam a kódodban, de így legalább mindenhol tudod használni. (Más resource-k úgy tudják használni ha exportolod a funkciót.)
« Utoljára szerkesztve: 2017. december 19. - 15:21:08 írta thegergo02 »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal