[Ajuda] AJUDA BБSICA EM MYSQL ( +REP )
#1

Olб pessoal, preciso de uma pequena ajuda de vocкs, estou com o meu comando /jogadores em MYSQL, ele mostra o nome do jogador, score, e status, queria ajuda na parte do status, veja a baixo.

Queria deixar o ONLINE verde, e o OFFLINE vermelho, nгo tenho a minima ideia de como fazer isso, se puderem me explicar ou me ajudar com uma base, ficarei grato.

CODIGO:
PHP код:
forward MResultado(playerid);
public 
MResultado(playerid)
{
    new 
rowsfieldsMStatus[128], MNome[128], MScore[128], DialogBox[1200], MResultado[128];
    
cache_get_data(rows,fields,mysqlConnection);
    if(
rows)
    {
        for(new 
0rowsi++ )
        {
            
cache_get_field_content(i,"Nome",MNomemysqlConnection);
            
cache_get_field_content(i,"Score",MScoremysqlConnection);
            
cache_get_field_content(i,"Status",MStatusmysqlConnection);
            
format(MResultado,sizeof(MResultado),"Nome: %s -> Score: %d -> Status: %s\n"MNomestrval(MScore), MStatus);
            
strcat(DialogBox,MResultado);
        }
        
ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Jogadores",DialogBox,"OK","");
    }

Reply
#2

Tente:

Код:
forward MResultado(playerid);
public MResultado(playerid)
{
    new rows, fields, MNome[128], MScore[128], DialogBox[1200], MResultado[128];
    cache_get_data(rows,fields,mysqlConnection);
    if(rows)
    {
        for(new i = 0; i < rows; i++ )
        {
            cache_get_field_content(i,"Nome",MNome, mysqlConnection);
            cache_get_field_content(i,"Score",MScore, mysqlConnection);
            
            if(IsPlayerConnected(i) && !IsPlayerNPC(i))
            {
            	format(MResultado,sizeof(MResultado),"Nome: %s -> Score: %d -> Status: {00FF00}Online\n", MNome, strval(MScore));
	    }
	    else
	    {
		format(MResultado,sizeof(MResultado),"Nome: %s -> Score: %d -> Status: {FF0000}Offline\n", MNome, strval(MScore));
	    }
            strcat(DialogBox,MResultado);
        }
        ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Jogadores",DialogBox,"OK","");
    }
}
Reply
#3

Quote:
Originally Posted by RIPOrkut
Посмотреть сообщение
Tente:

Код:
forward MResultado(playerid);
public MResultado(playerid)
{
    new rows, fields, MNome[128], MScore[128], DialogBox[1200], MResultado[128];
    cache_get_data(rows,fields,mysqlConnection);
    if(rows)
    {
        for(new i = 0; i < rows; i++ )
        {
            cache_get_field_content(i,"Nome",MNome, mysqlConnection);
            cache_get_field_content(i,"Score",MScore, mysqlConnection);
            
            if(IsPlayerConnected(i) && !IsPlayerNPC(i))
            {
            	format(MResultado,sizeof(MResultado),"Nome: %s -> Score: %d -> Status: {00FF00}Online\n", MNome, strval(MScore));
	    }
	    else
	    {
		format(MResultado,sizeof(MResultado),"Nome: %s -> Score: %d -> Status: {FF0000}Offline\n", MNome, strval(MScore));
	    }
            strcat(DialogBox,MResultado);
        }
        ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Jogadores",DialogBox,"OK","");
    }
}
Deu errado, esses players que estгo com a TAG offline, metade estavam online, porem mostrou que estavam offline, sу o primeiro jogador que ficou com a tag verde e realmente estava online

Reply
#4

Код HTML:
forward MResultado(playerid); 
public MResultado(playerid) 
{ 

    new rows, fields, MStatus[128], MNome[128], MScore[128], DialogBox[1200], MResultado[128]; 
    cache_get_data(rows,fields,mysqlConnection); 
    if(rows) 
    { 
        for(new i = 0; i < rows; i++ ) 
        { 
            cache_get_field_content(i, "Nome", MNome, mysqlConnection); 
            cache_get_field_content(i, "Score", MScore, mysqlConnection); 
            cache_get_field_content(i, "Status", MStatus, mysqlConnection);
            if(strcmp(MStatus, "Offline", false, 8) == 0) 
                format(MResultado, sizeof(MResultado),"Nome: %s -> Score: %d -> Status: {FF0000}%s\n", MNome, strval(MScore), MStatus); 
            else 
                format(MResultado, sizeof(MResultado),"Nome: %s -> Score: %d -> Status: {00FF00}%s\n", MNome, strval(MScore), MStatus); 
            
            strcat(DialogBox,MResultado); 
        } 
        ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Jogadores",DialogBox,"OK",""); 
    } 
}  
Reply
#5

Quote:
Originally Posted by Injury
Посмотреть сообщение
Код HTML:
forward MResultado(playerid); 
public MResultado(playerid) 
{ 

    new rows, fields, MStatus[128], MNome[128], MScore[128], DialogBox[1200], MResultado[128]; 
    cache_get_data(rows,fields,mysqlConnection); 
    if(rows) 
    { 
        for(new i = 0; i < rows; i++ ) 
        { 
            cache_get_field_content(i, "Nome", MNome, mysqlConnection); 
            cache_get_field_content(i, "Score", MScore, mysqlConnection); 
            cache_get_field_content(i, "Status", MStatus, mysqlConnection);
            if(strcmp(MStatus, "Offline", false, 8) == 0) 
                format(MResultado, sizeof(MResultado),"Nome: %s -> Score: %d -> Status: {FF0000}%s\n", MNome, strval(MScore), MStatus); 
            else 
                format(MResultado, sizeof(MResultado),"Nome: %s -> Score: %d -> Status: {00FF00}%s\n", MNome, strval(MScore), MStatus); 
            
            strcat(DialogBox,MResultado); 
        } 
        ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Jogadores",DialogBox,"OK",""); 
    } 
}  
Obrigado por responder, mas parece que o script trocou as bolas, veja no print a baixo, onde era verde ficou vermelho, e onde era pra ser vermelho ficou verde, a penultima aficou os 2 vermelhos

Reply
#6

Quote:
Originally Posted by Cycle
Посмотреть сообщение
Tenta assim:

PHP код:
forward MResultado(playerid); 
public 
MResultado(playerid

    new 
rowsfieldsMStatus[128], MNome[128], MScore[128], DialogBox[1200], MResultado[128]; 
    
cache_get_data(rowsfieldsmysqlConnection); 
    if(
rows
    { 
        for(new 
0rowsi++ ) 
        { 
            
cache_get_field_content(i"Nome"MNomemysqlConnection); 
            
cache_get_field_content(i"Score"MScoremysqlConnection); 
            
cache_get_field_content(i"Status"MStatusmysqlConnection);
            
format(MResultadosizeof(MResultado), "Nome: %s -> Score: %d -> Status: %s\n"MNomestrval(MScore), (MStatus ? ("{00FF00}Online") : ("{FF0000}Offline")));
            
strcat(DialogBoxMResultado); 
        } 
        
ShowPlayerDialog(playerid0DIALOG_STYLE_MSGBOX"Jogadores"DialogBox"OK"""); 
    } 

Parece que ficou tudo verde, e tudo online tambйm, sendo que metade ta offline

Reply
#7

Quote:

Obrigado por responder, mas parece que o script trocou as bolas, veja no print a baixo, onde era verde ficou vermelho, e onde era pra ser vermelho ficou verde, a penultima aficou os 2 vermelhos

Isso ocorreu pois vocк escreveu "Offiline" e nгo "Offline" quando foi salvar o status do jogador, entгo ao comparar strings retornarб 1 ou -1 que no caso do strcmp й "falso", ou seja, ele vai pular para segunda opзгo.
Reply
#8

Vou te ajudar com algumas dicas antes
  • Nгo tem por que salvar se o jogador estб online/offline em varchar, quando se pode usar tinyint. Procure artigos na internet sobre otimizaзгo do banco de dados.
  • Se existem funзхes especificas para obter string, int, float e "bool", deveria usa-las e nгo obter tudo em string e converter o valor.
  • Aprenda contar cйlulas.
Reply
#9

Como Dayvison_ disse, nгo tem sentido criar um variбvel de 128 cйlulas para usar 8 apenas, й desperdнcio de memуria e velocidade do cуdigo.
O prуprio mysql lhe fornece a opзгo de armazenar booleans, que na minha opiniгo seria a opзгo mais viбvel.
Reply
#10

Quote:
Originally Posted by Dayvison_
Посмотреть сообщение
Vou te ajudar com algumas dicas antes
  • Nгo tem por que salvar se o jogador estб online/offline em varchar, quando se pode usar tinyint. Procure artigos na internet sobre otimizaзгo do banco de dados.
  • Se existem funзхes especificas para obter string, int, float e "bool", deveria usa-las e nгo obter tudo em string e converter o valor.
  • Aprenda contar cйlulas.
Obrigado pelas suas dicas, irei sim pesquisar por elas na internet, criei em varchar porque estou comeзando agora, ainda estou aprendendo aos poucos.
Quote:
Originally Posted by Injury
Посмотреть сообщение
Como Dayvison_ disse, nгo tem sentido criar um variбvel de 128 cйlulas para usar 8 apenas, й desperdнcio de memуria e velocidade do cуdigo.
O prуprio mysql lhe fornece a opзгo de armazenar booleans, que na minha opiniгo seria a opзгo mais viбvel.
Injury obrigado pela ajuda, o seu cуdigo funcionou perfeitamente aqui, obrigado pelas dicas de otimizaзгo, irei estudar mais sobre para nгo cometer mais esses tipos de erros que comprometem a memoria de ambos. +REP
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)