Portal SAMP
[Ajuda] To tentando adaptar mysql nesse sistema. - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] To tentando adaptar mysql nesse sistema. (/showthread.php?tid=4430)



To tentando adaptar mysql nesse sistema. - overlordfy - 19/01/2024

Olá, eu coloquei um sistema de mysql para salvar meus dados e tá funcionando perfeitamente o sistema e o  https://portalsamp.com/showthread.php?ti...ight=mysql , mas não estou conseguindo adaptar ele no meu sistema de punição e outros, mas acredito que se eu aprender a adaptar ele no sistema de puni consigo adaptar em outros lugares também, eu já criei no Mysql workbench a tabela com tudo certinho, para o sistema de punição eu criei uma tabela com pAdmin, pPresoAdmin, pMinutosPreso, pMotivo e pSegundosPreso, eu tentei de toda forma adaptar o mysql no sistema de punição mas infelizmente não consigo, se alguém conseguir me ajudar agradeço a todos.

Código:
CMD:punir(playerid, params[])
{
    new id, minutos, str[350], motivo[50];
    if(!IsPlayerAdmin(playerid) && pInfo[playerid][Admin] < 1) return SendClientMessage(playerid, -1, "{FF0000}| ERRO | {FFFFFF}Você não tem Autorização");
    if(sscanf(params, "uds", id, minutos, motivo)) return SendClientMessage(playerid, -1, "{FF0000}| ERRO | {FFFFFF}Use /punir | ID | | Minutos | | Motivo |");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "{FF0000}| ERRO | {FFFFFF}Jogador Offline");
    if(pInfo[playerid][PresoAdmin] == 1) return SendClientMessage(playerid, -1, "{FF0000}| ERRO | {FFFFFF}Este jogador já esta preso");
    pInfo[playerid][MinutosAdmin] = minutos - 1;
    pInfo[playerid][SegundosAdmin] = 59;
    pInfo[playerid][PresoAdmin] = 1;
    new pasta[50];
    format(pasta, 50, "Punicao/%s.ini", PlayerName(id));
    dini_Create(pasta);
    dini_IntSet(pasta, "Minutos", pInfo[playerid][MinutosAdmin]);
    dini_IntSet(pasta, "Segundos", pInfo[playerid][SegundosAdmin]);
    dini_Set(pasta, "Motivo", motivo);
    dini_Set(pasta, "Admin", PlayerName(playerid));
    format(str, 50, "%02d:%02d", pInfo[playerid][MinutosAdmin], pInfo[playerid][SegundosAdmin]);
    PlayerTextDrawSetString(playerid, Text_Timer[playerid][0], str);
    PlayerTextDrawShow(playerid, Text_Timer[playerid][0]);
    TimerPunicao[playerid] = SetTimerEx("SairPunicao", 1000, true, "d", playerid);
    SetPlayerPos(playerid, 322.197998,302.497985,999.148437);
    SetPlayerInterior(playerid, 5);
    new Ano, Mes, Dia;
    getdate(Ano, Mes, Dia);
    format(str, 50, "%02d/%02d/%d", Dia, Mes, Ano);
    dini_Set(pasta, "Data", str);
    format(str, 350, "{FF0000}Punição:{FFFFFF}O{FF0000} %s %s{FFFFFF} prendeu {FF0000}%s{FFFFFF} por {FF0000}%d {FFFFFF}minutos. Motivo:{FFFFFF} {FF0000}%s",      CargoPlayer(pInfo[playerid][Admin]), PlayerName(playerid), PlayerName(id), minutos, motivo);
    SendClientMessageToAll(-1, str);
    return 1;
}



RE: To tentando adaptar mysql nesse sistema. - xbruno1000x - 20/01/2024

Só criar a tabela punição com os mesmos campos que existiam no dini. Você citou os campos que adicionou, porém faltou um campo importante que é o nome do próprio jogador punido.


RE: To tentando adaptar mysql nesse sistema. - overlordfy - 20/01/2024

(20/01/2024 01:07)xbruno1000x Escreveu: Só criar a tabela punição com os mesmos campos que existiam no dini. Você citou os campos que adicionou, porém faltou um campo importante que é o nome do próprio jogador punido.

Entendi mais ou menos manin, mas eu posso deixar o dini quieto ali ou eu tenho que trocar por exemplo: dini_Set(pasta, "Motivo", motivo); , obrigado manin por ta me ajudando.


RE: To tentando adaptar mysql nesse sistema. - xbruno1000x - 20/01/2024

(20/01/2024 18:49)overlordfy Escreveu:
(20/01/2024 01:07)xbruno1000x Escreveu: Só criar a tabela punição com os mesmos campos que existiam no dini. Você citou os campos que adicionou, porém faltou um campo importante que é o nome do próprio jogador punido.

Entendi mais ou menos manin, mas eu posso deixar o dini quieto ali ou eu tenho que trocar por exemplo: dini_Set(pasta, "Motivo", motivo); , obrigado manin por ta me ajudando.

Não, o salvamento dini precisa ser removido. Para salvar via MySql precisa ter conhecimento em Structured Query Language(SQL) e enviar uma query para realizar o salvamento.

Código:
//EXEMPLO DE QUERY
mysql_format(g_SQL, query, sizeof query, "SELECT * FROM `players` WHERE `username` = '%e' LIMIT 1", Player[playerid][Name]);

Não é nada fácil fazer essa mudança de sistema de salvamento, pois SQL é uma linguagem distinta do Pawn.

Abaixo segue um script de exemplo de como fazer ser salvamento em MySQL:
Usando Orm:
https://github.com/pBlueG/SA-MP-MySQL/blob/master/example_scripts/login_system-orm.pwn
Usando Cache:
https://github.com/pBlueG/SA-MP-MySQL/blob/master/example_scripts/login_system-cache.pwn

Caso não tenha tanto conhecimento, recomendo DOF2.