Furious Posted March 4, 2019 Share Posted March 4, 2019 (edited) Olá, eu tentei dar admin pelo ACL usando login mysql, mas sem sucesso, como eu posso dar admin para um player com login mysql? Eu preciso criar um recurso apenas para admin? tipo um painel de administração com comandos? etc... Edited March 4, 2019 by MatheusCalixto Link to comment
Jonas^ Posted March 4, 2019 Share Posted March 4, 2019 Como este seu banco de dados? acredito que você tem que fazer uma nova coluna lá apenas para o admin. se for 1 = everyone, se for 2 Mod e assim por diante. OBS: Posso estar errado. 1 Link to comment
DNL291 Posted March 4, 2019 Share Posted March 4, 2019 Não sei se entendi certo, mas você pode armazenar na database o grupo da ACL que o jogador está. 1 Link to comment
Furious Posted March 4, 2019 Author Share Posted March 4, 2019 (edited) 3 hours ago, OverKILL said: Como este seu banco de dados? acredito que você tem que fazer uma nova coluna lá apenas para o admin. se for 1 = everyone, se for 2 Mod e assim por diante. OBS: Posso estar errado. Eu pensei que fazer isso, tipo criar uma nova coluna com o nome "rank" e se for 5 = admin, 4 = mod etc... mas o que eu queria saber é como posso verificar se tal jogador é admin ou não, como por exemplo, ele entra no servidor e faz uma verificação no banco de dados nessa coluna "rank" caso esteja 0 = jogador mas caso esteja 5 = admin, fazendo essa verificação eu queria saber como vou permitir os comandos, no ALC é liberado o painel pela letra "P", é possível eu liberar essa função usando MySQL? igual adicionar no ACL o serial do jogador? 2 hours ago, DNL291 said: Não sei se entendi certo, mas você pode armazenar na database o grupo da ACL que o jogador está. Estou usando essa maneira de login, apenas a fase de testes: Mysql sistema - server.lua: local MySQL = nil function Database(host, user, pass, database) MySQL = dbConnect('mysql', ('dbname=%s;host=%s;port=%d'):format(database, host, (tonumber(port) or 3306)), user, pass) if (not MySQL) then outputDebugString('[DB] * Não foi possível conectar ao servidor!') stopResource(getThisResource()) else Query("SET NAMES utf8;") setTimer(Query,1000*60*2,0,'SET NAMES utf8;') outputDebugString('[DB] * Conexão relizada com sucesso!') end end function deDatabase() if (MySQL) then destroyElement(MySQL) end end function Query(query, ...) local queryHandle = dbQuery(MySQL, query, ...) local r1, r2, r3 = dbPoll(queryHandle, -1) if (not r1) then outputDebugString(('Query failed: errCode: %d - errMsg: %s'):format(r2, r3)) return false end return r1, r2, r3 end function Exec(query, ...) return dbExec(MySQL, query, ...) end addEventHandler('onResourceStart', resourceRoot, function () Database("127.0.0.1", "root", "", "db") end ) addEventHandler('onResourceStop', resourceRoot, function () deDatabase() end ) Login sistema - server.lua local mysql = exports.mysql --MySQL Resource function submitlogin(name, serial, player) local query, result = mysql:Query('SELECT `serial` FROM `contas` WHERE `serial` = ?', tostring(serial)) if (query) then if (result > 0) then --outputChatBox ( 'SERIAL: '..serial, source) triggerEvent("onPlayerLogin", getRootElement(), serial, player, source) outputDebugString('Jogador fez login!') else local pass = createRandomPassword (10) local query = mysql:Exec('INSERT INTO `contas` (`id`, `name`, `pass`, `serial`) VALUES (NULL, ?, ?, ?)', name, string.sub(md5(pass),1,24), tostring(serial)) if (query) then --outputChatBox ( 'SERIAL: '..serial, source) triggerEvent("onPlayerRegister", getRootElement(), serial, player, source) outputDebugString('Jogador registrado!') end end end end addEvent("submitlogin", true) addEventHandler("submitlogin", getRootElement(), submitlogin) Edited March 4, 2019 by MatheusCalixto Link to comment
[M]ister Posted March 4, 2019 Share Posted March 4, 2019 (edited) Qual vai se a utilidade de abandonar o sistema de contas do MTA e usar esse? Edited March 4, 2019 by MaligNos 1 Link to comment
Furious Posted March 4, 2019 Author Share Posted March 4, 2019 2 hours ago, MaligNos said: Qual vai se a utilidade de abandonar o sistema de contas do MTA e usar esse? Vou usar os dois, mais gostaria de usar o MySQL caso precise lá na frente de puxar algum dado para o site, como rank, jogadores online, etc.. essas coisas, ou tbm utilizar para o login do server no site. Link to comment
[M]ister Posted March 4, 2019 Share Posted March 4, 2019 17 minutes ago, MatheusCalixto said: Vou usar os dois, mais gostaria de usar o MySQL caso precise lá na frente de puxar algum dado para o site, como rank, jogadores online, etc.. essas coisas, ou tbm utilizar para o login do server no site. Você pode criar funções lua, e puxar esses dados do server para o site (sem usar outra database) ... Mas no caso de trabalhar com os dois, só criar uma boa lógica capaz de manter a correspondência dos dados. Vai ser cadastro pelo site ? Efetue uma call ao server e crie a conta lá também (addAccount) - Bloqueie ou adapte o /chgmypass se não a senha do server será diferente da do site. - Bloqueie ou adapte o /register - Alterou a senha no site ? Atualize no server (setAccountPassword) ... Dessa forma você poderá manipular as contas normalmente (adicionando na acl, setando dados, …) Nem precisaria definir no MySQL quem é staff, mas caso queira, pode ser feito no evento login, verificando e atualizando a coluna “Rank”, pois não existe nenhum evento relacionado com mudanças na ACL Dependendo do caso até acho melhor nem utilizar outra database, dai só trabalha com os dados no MTA e dale calls: server ↔ site 1 Link to comment
Furious Posted March 4, 2019 Author Share Posted March 4, 2019 32 minutes ago, MaligNos said: Você pode criar funções lua, e puxar esses dados do server para o site (sem usar outra database) ... Mas no caso de trabalhar com os dois, só criar uma boa lógica capaz de manter a correspondência dos dados. Vai ser cadastro pelo site ? Efetue uma call ao server e crie a conta lá também (addAccount) - Bloqueie ou adapte o /chgmypass se não a senha do server será diferente da do site. - Bloqueie ou adapte o /register - Alterou a senha no site ? Atualize no server (setAccountPassword) ... Dessa forma você poderá manipular as contas normalmente (adicionando na acl, setando dados, …) Nem precisaria definir no MySQL quem é staff, mas caso queira, pode ser feito no evento login, verificando e atualizando a coluna “Rank”, pois não existe nenhum evento relacionado com mudanças na ACL Dependendo do caso até acho melhor nem utilizar outra database, dai só trabalha com os dados no MTA e dale calls: server ↔ site Poderia me dar um exemplo de call? Link to comment
[M]ister Posted March 4, 2019 Share Posted March 4, 2019 6 minutes ago, MatheusCalixto said: Poderia me dar um exemplo de call? PHP Node.js 1 Link to comment
Furious Posted March 4, 2019 Author Share Posted March 4, 2019 21 minutes ago, MaligNos said: PHP Node.js Obrigado, vou dar uma olhada e vou ver o que posso fazer, vou deixar o MySQL de lado e tentar fazer com SQLite! Link to comment
[M]ister Posted March 4, 2019 Share Posted March 4, 2019 (edited) 46 minutes ago, MatheusCalixto said: Obrigado, vou dar uma olhada e vou ver o que posso fazer, vou deixar o MySQL de lado e tentar fazer com SQLite! Não digo que deva abandonar o MySQL, mas dependendo do caso não existe tanta necessidade... Fiz um exemplo simples de como efetuar login no site a partir de uma conta existente no server: <!-- index.html --> <form action="/login.php" method="post"> <input type="text" name="login"> <input type="password" name="senha"> <input type="submit" value="Logar"> </form> <? // login.php include("mta_sdk.php" ); if ($_SERVER["REQUEST_METHOD"] == "POST") { $mtaServer = new mta( "localhost", 22005, "adminlogin", "adminsenha" ); $resource = $mtaServer->getResource ( "site" ); $returns = $resource->call ( "login", $_POST["login"], $_POST["senha"] ); if ($returns[0]) { echo "logado!"; }else{ echo "falha no login!"; } } ?> -- resource "site" function login(user,pass) local acc = getAccount(user, pass) if (acc) then return true return false end <!-- meta.xml --> <export function="login" type="server" http="true" /> * Não testado Edited March 4, 2019 by MaligNos 1 Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now