Portal SAMP
[Ajuda] sistema com id fixo do mysql... - 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] sistema com id fixo do mysql... (/showthread.php?tid=4732)

Páginas: 1 2 3


sistema com id fixo do mysql... - Cyclopeta - 28/04/2024

fala rapaziada, blz?!... entao, eu tenho um comando de dar cadeia no player, ai eu queria que verificasse se estiver online ou offline so pelo id fixo que o mysql possibilita q é´o auto increment, que é o 1 em diante, so que quando vou fazer um teste, na parte do id, ele tbm usa o id tab, nao quero isso, quero q so verifique se online ou nao, e de cadeia somente pelo id fixo, e nao pelo id tab que é 0 ou um outro aleatorio.... COMO POSSO RESOLVER ISSO? nao verificar pelo ID do tab, e sim do id fixo?!! desde ja agradeço.


RE: sistema com id fixo do mysql... - pushline - 29/04/2024

retorne o id do sql numa variavel com cache_get_value_int e use essa variavel inves do playerid


RE: sistema com id fixo do mysql... - Carlos Victor - 29/04/2024

Geralmente esse ID fixo é armazenado em uma variável, você pode criar uma função e rodar um looping nos jogadores conectados, se tiver algum jogador com o ID informado, significa que ele está online, caso contrário, offline.


RE: sistema com id fixo do mysql... - Cyclopeta - 29/04/2024

tem um exemplo pra eu ver como fica?


RE: sistema com id fixo do mysql... - samuelmatheus0502 - 29/04/2024

Um exemplo básico, não se aplica para seu GM mas seria tipo assim PlayerInfo[playerid][suaVariaveldoIdUnico].
Deixar de verificar pelo id do tab teria que fazer o que o @Carlos Victor disse, que é fazer um looping para verificar todos os players online e verificar se é o id do player que presisa ser preso


RE: sistema com id fixo do mysql... - Cyclopeta - 29/04/2024

a variavel do id fixo ja tenho. ai fica pDados[playerid][IDFIXO] , ai pra fazer esse loop pra verificar so pelo id fixo da variavel, tinha que ser como?


RE: sistema com id fixo do mysql... - Carlos Victor - 30/04/2024

Código PHP:
IsPlayerConnectedSQLID(sqlid)
{
    for (new 
0GetPlayerPoolSize(); <= ji++)
    {
        if (
IsPlayerConnected(i))
        {
            if (
pDados[i][IDFIXO] == sqlid)
                return 
1;
        }
    }
    return 
0;


No caso, a função se retornar 0 significa que o jogador não está online, se retornar 1, significa que ele está online.


RE: sistema com id fixo do mysql... - Cyclopeta - 04/05/2024

coloquei la, mais continua dando cadeia e verificando pleo id do tab ainda ;/


RE: sistema com id fixo do mysql... - pushline - 05/05/2024

Código que é bom nada


RE: sistema com id fixo do mysql... - Cyclopeta - 05/05/2024

Ta ai:
Código:
IsPlayerConnectedSQLID(sqlid)
{
    for (new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
    {
        if (IsPlayerConnected(i))
        {
            if (pDados[i][IDFIXO] == sqlid)
            {
                return 1;
            }
        }
    }
    return 0;
}
CMD:prender(playerid, params[])
{
    new minutos, motivo[50];
    
    if (!IsPlayerAdmin(playerid) && pDados[playerid][Admin] < 1)  
    {
        SendClientMessage(playerid, -1, "{FA5858}Erro: {FFFFFF}Você não tem autorização.");
        return 1;
    }

    if(sscanf(params, "udi[50]s[50]", IDFIXO, minutos, motivo))
    {
        SendClientMessage(playerid, -1, "{FA5858}[ERRO]: {FFFFFF}Use /prender [ID] [Minutos] [Motivo]. {DC143C}NÃO COLOQUE O TEMPO ACIMA DA TABELA, OU TOMARÁ PUNIÇÃO.");
        return 1;
    }
  
  

    if (!IsPlayerConnectedSQLID(IDFIXO))
    {
        SendClientMessage(playerid, -1, "{FA5858}Erro: {FFFFFF}Este jogador não está online ou não possui o ID correspondente.");
        return 1;
    }

    // Verifica se o jogador já está preso
    if (pDados[ID][PresoAdmin] == 1)
        return SendClientMessage(playerid, -1, "{FA5858}Erro: {FFFFFF}Este jogador já está preso.");

    // Restante do código...

    // Marca o jogador como preso
    pDados[ID][PresoAdmin] = 1;

    // Calcular horas, minutos e segundos
    new horas, segundos;
    horas = minutos / 60;
    segundos = minutos % 60;
    minutos %= 60;
    
    pDados[playerid][HorasAdmin] = horas;
    pDados[playerid][MinutosAdmin] = minutos;
    pDados[playerid][SegundosAdmin] = segundos;
    
    // Diretório para salvar informações da prisão
    new pasta[50];
    format(pasta, sizeof(pasta), "Cadeias/%s.ini", pName(IDFIXO));
    DOF2_CreateFile(pasta);
    DOF2_SetInt(pasta, "Horas", horas);
    DOF2_SetInt(pasta, "Minutos", minutos);
    DOF2_SetInt(pasta, "Segundos", segundos);
    DOF2_SetString(pasta, "Motivo", motivo);
    DOF2_SetString(pasta, "Admin", pName(playerid));
    
    // Formatando a string de tempo
    new str[50];
    format(str, sizeof(str), "%02d:%02d:%02d", horas, minutos, segundos);
    PlayerTextDrawSetString(playerid, Text_Timer[playerid][0], str);
    PlayerTextDrawShow(playerid, Text_Timer[playerid][0]);
    TimerCadeia[ID] = SetTimerEx("SairCadeia", 1000, true, "d", ID);
    
    // Posição da prisão
    SetPlayerPos(playerid, 1412.14, -2.28, 1000.92);
    SetPlayerInterior(playerid, 1);
    
    // Obter data atual
    new Ano, Mes, Dia;
    getdate(Ano, Mes, Dia);
    format(str, sizeof(str), "%02d/%02d/%d", Dia, Mes, Ano);
    DOF2_SetString(pasta, "Data", str);
    
    // Mensagem para todos os jogadores sobre a prisão
    new msgcadeia[140];
    format(msgcadeia, sizeof(msgcadeia), "{FF6347}[CADEIA]: O Admin %s prendeu o Player %s no Quadradao. Por [%d] Minutos. Motivo: %s", pName(playerid), pName(IDFIXO), minutos + horas * 60, motivo);
    SendClientMessageToAll(-1, msgcadeia);

    return 1;
}