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: JacobtELLER - 2017. December 19. - 09:13:29

Cím: Admin rendszer/MySQL
Írta: JacobtELLER - 2017. December 19. - 09:13:29
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
)
Cím: Admin rendszer/MySQL
Írta: AlexSwamp - 2017. December 19. - 09:42:43
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.
Cím: Admin rendszer/MySQL
Írta: JacobtELLER - 2017. December 19. - 11:18:06
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! :)
Cím: Admin rendszer/MySQL
Írta: thegergo02 - 2017. December 19. - 12:07:44
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.)
Cím: Admin rendszer/MySQL
Írta: JacobtELLER - 2017. December 19. - 14:25:28
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
Cím: Admin rendszer/MySQL
Írta: thegergo02 - 2017. December 19. - 15:09:52
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.
Cím: Admin rendszer/MySQL
Írta: JacobtELLER - 2017. December 19. - 15:11:29
Már most megoldódott, de köszönöm még egyszer neked is. Amúgy természetesen szerver oldali.
Cím: Admin rendszer/MySQL
Írta: thegergo02 - 2017. December 19. - 15:20:57
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.)