[Ajuda] Comando funcionar online/offline MYSQL
#1

Queria fazer um comando pra admin que fosse /givedp, que seria pra dar donate points, mas seria um saco se eu fizese do jeito que eu sei fazer, pq sу ia funcionar com player online, ai cada player que donata-se eu teria que ir atй o phpmyadmin

Queria fazer um comando que fosse assim
Код:
    CMD:givedp(playerid, params[])
    {
		new player, quantidade, string[128];
		if(sscanf(params,"??", player, quantidade)) return SendClientMessage(playerid, -1, "Use: /givedp [player-name] [ammount]");
		
		if(PLAYERONLINE) {
			DP[player] += quantidade;
			format(string, sizeof(string), "Vocк adicionou %i Donate Points para o jogador %s [ONLINE]", quantidade, NOMEDOPLAYER );
			SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
		}
		else if(PLAYEROFFILINE) {
			soma dp e atualiza na DB... como fazer ? XD
			format(query, sizeof(query), "UPDATE `accounts` SET `DP` = '%d' WHERE Username = '%s'",
			DP[playerid],

			
			format(string, sizeof(string), "Vocк adicionou %i Donate Points para o jogador %s [OFFLINE]", quantidade, NOMEDOPLAYER );
			SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
		}
	}
Reply
#2

http://www.tech-recipes.com/rx/2139/...xisitng_value/
Reply
#3

Vocк precisa executar uma query pra receber o valor atual e depois disso somar a quantidade, e executar uma nova query pra fazer o update, ou simplesmente usar a sintaxe SQL pra adcionar o valor + a quantidade como o amigo explicou acima. A segunda opзгo й a melhor, mais rбpida e mais fбcil.
Reply
#4

Vocк vai ter que fazer um comando tipo /givedp [nome do player] assim ele vai fazer uma busca no banco de dados se achar uma conta com o nome igual ele vai primeiro fazer o select para obter o valor e dps um update para atualizar o valor.
Reply
#5

Acho que dessa maneira deve funcionar, se houver algum problema me avisa ou chama skype garotin1408
PHP код:
CMD:givedp(playeridparams[])
    {
        new 
playerquantidadestring[128];
        if(
sscanf(params,"??"playerquantidade)) return SendClientMessage(playerid, -1"Use: /givedp [player-name] [ammount]");
        if(
PLAYERONLINE) {
            
DP[player] += quantidade;
            
format(stringsizeof(string), "Vocк adicionou %i Donate Points para o jogador %s [ONLINE]"quantidadeNOMEDOPLAYER );
            
SendClientMessage(playeridCOLOR_LIGHTBLUEstring);
        }
        else if(
PLAYEROFFILINE) {
            
soma dp e atualiza na DB... como fazer XD
            
new query[200], dpatual;
            
format(querysizeof(query), "SELECT * FROM accounts WHERE Username='%s'"player);
            
mysql_query(String da sua conexao aquiquery);
            
mysql_store_result();
            while(
mysql_fetch_row_format(query,"|"))
            {
                
dpatual cache_get_field_content_int(0"DP");
            }
            
mysql_free_result();
            
format(querysizeof(query), "UPDATE accounts SET DP=%d WHERE Username='%s'",
            
dpatual quantidade,
            
player);
            
mysql_query(String da sua conexao aquiquery);
            
format(stringsizeof(string), "Vocк adicionou %i Donate Points para o jogador %s [OFFLINE]"quantidadeplayer);
            
SendClientMessage(playeridCOLOR_LIGHTBLUEstring);
        }
    } 
Lembrando que usei funзхes do plugin MySQL R33
Reply
#6

Quote:
Originally Posted by garotin
Посмотреть сообщение
Acho que dessa maneira deve funcionar, se houver algum problema me avisa ou chama skype garotin1408
PHP код:
CMD:givedp(playeridparams[])
    {
        new 
playerquantidadestring[128];
        if(
sscanf(params,"??"playerquantidade)) return SendClientMessage(playerid, -1"Use: /givedp [player-name] [ammount]");
        if(
PLAYERONLINE) {
            
DP[player] += quantidade;
            
format(stringsizeof(string), "Vocк adicionou %i Donate Points para o jogador %s [ONLINE]"quantidadeNOMEDOPLAYER );
            
SendClientMessage(playeridCOLOR_LIGHTBLUEstring);
        }
        else if(
PLAYEROFFILINE) {
            
soma dp e atualiza na DB... como fazer XD
            
new query[200], dpatual;
            
format(querysizeof(query), "SELECT * FROM accounts WHERE Username='%s'"player);
            
mysql_query(String da sua conexao aquiquery);
            
mysql_store_result();
            while(
mysql_fetch_row_format(query,"|"))
            {
                
dpatual cache_get_field_content_int(0"DP");
            }
            
mysql_free_result();
            
format(querysizeof(query), "UPDATE accounts SET DP=%d WHERE Username='%s'",
            
dpatual quantidade,
            
player);
            
mysql_query(String da sua conexao aquiquery);
            
format(stringsizeof(string), "Vocк adicionou %i Donate Points para o jogador %s [OFFLINE]"quantidadeplayer);
            
SendClientMessage(playeridCOLOR_LIGHTBLUEstring);
        }
    } 
Lembrando que usei funзхes do plugin MySQL R33
MySQL store result nгo й necessaria na R33+
Reply
#7

Quote:
Originally Posted by ipsLeon
Посмотреть сообщение
MySQL store result nгo й necessaria na R33+
Valeu pela dica, nn sabia dessa, vou arrumar isso na minha GM.
Engraзado pois acho o R33 melhor do que os plugins superiores, atй pelo motivo dele nгo precisar de uma callback para armazenar os dados do banco.
Reply


Forum Jump:


Users browsing this thread: 6 Guest(s)