SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 14/02/2019, 10:24 PM   #1
JacKPanK
Big Clucker
 
JacKPanK's Avatar
 
Join Date: Dec 2015
Location: Brasil - Ceará
Posts: 109
Reputation: 1
Question Fazer comando para salvar Carros - MySQL

ESTOU COM UM PROBLEMA ENORME COM ISSO PASSEI O DIA TODO TENDO ESSA IDEIA MAS NÃO ESTOU CONSEGUINDO POR EM PRÁTICA POR FALTA DE CONHECIMENTO EM MySQL, ALGUÊM PODE ME AJUDAR?

O COMANDO PARA CRIAR O VEICULO:
PHP Code:
CMD:dv(playeridparams[])
{
    new 
Query[90];
    new 
idplayeridmodelocor1cor2Float:Pos[4];
    if(
sscanf(params"iiii"idplayeridmodelocor1cor2))                return SendClientMessage(playerid, -1"USE: /dv [PLAYERID] [IDCARRO] [COR1] [COR2]");
    if(
idmodelo 400 || idmodelo 611)                            return SendClientMessage(playerid, -1"USE IDS entre 400 e 611");
    
GetPlayerPos(playeridPos[0], Pos[1], Pos[2]);
    
GetPlayerFacingAngle(playerid,Pos[3]);

    if(
IsPlayerAdmin(playerid))
    {
        if(
Player[idplayer][pCarros] < 5){
            
mysql_format(ConexaoSQLQuerysizeof(Query), "INSERT INTO `zero_vehicles` (`vDono`,`vIDveh`,`vCor1`,`vCor2`,`vPosX`,`vPosZ`,`vPosY`,`vPosA`)\
            VALUES ('%i', '%i', '%i', '%i', '%f', '%f', '%f', '%f')"
Player[idplayer][pID], idmodelocor1cor2Pos[0], Pos[2], Pos[1], Pos[3]);
            
mysql_tquery(ConexaoSQLQuery);
            
pVeiculoSpawn[idplayer][Player[idplayer][pCarros]][vInfo] = CreateVehicle(idmodeloPos[0], Pos[1], Pos[2], Pos[3], cor1cor2, -1);
            
            new 
veiculoteste[99];
            
format(veiculotestesizeof(veiculoteste), "Veiculo criado ID:%i , COR1: %i, COR 2: %i, Dono ID: %"idmodelocor1cor2Player[idplayer][pID]);
            
            
SendClientMessage(playerid, -1veiculoteste);
        }else{
            
SendClientMessage(playerid, -1"O player já possui o limite máximo de carros que é de 5.");
        }
    }else{
        
SendClientMessage(playerid, -1"Você não é um adminitrador.");
    }
    return 
1;

TESTEI MAS DEU ERRADO, O CARRO CRIA MAS NÃO SALVA NO BANCO.

A DB:
PHP Code:
CREATE TABLE `zero_vehicles` (
    `
vIDINT(11NOT NULL AUTO_INCREMENT,
    `
vDonoINT(11NULL DEFAULT '1',
    `
vIDvehINT(11NULL DEFAULT NULL,
    `
vCor1INT(11NULL DEFAULT NULL,
    `
vCor2INT(11NULL DEFAULT NULL,
    `
vPosXFLOAT NOT NULL DEFAULT '0',
    `
vPosZFLOAT NOT NULL DEFAULT '0',
    `
vPosYFLOAT NOT NULL DEFAULT '0',
    `
vPosAFLOAT NOT NULL DEFAULT '0',
    
PRIMARY KEY (`vID`)
)
COMMENT='Veiculos de Jogadores - Zero'
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB

CODIGO COMPLETO:
Code:
#include <a_samp>
#include <a_objects>
#include <a_vehicles>
#include <zcmd>
#include <dini>
#include <a_mysql>
#include <mapandreas>
#include <sscanf2>
#include a_zones

#define	HOST    "127.0.0.1"
#define USER    "root"
#define PASS    ""
#define DBSA    "zero_db"

#define REGISTER_DIALOG 1001
#define LOGIN_DIALOG    1002
#define RG_DIALOG       1003
#define GPS_DIALOG      1004

enum PlayerInfos{
    pID,
    pSenha[24],
    pDinheiro,
    pScore,
    pSkin,
    Float:pPosX,
    Float:pPosY,
    Float:pPosZ,
    Float:pPosA,
	pTentativasLogin,
    pTentativasRegistro,
    pLogado,
	pCarros,
	pCar1,
	pCar2,
	pCar3,
	pCar4,
	pCar5
}

new Player[MAX_PLAYERS][PlayerInfos];

enum VehicleInfos{
	vInfo,
	vModelo,
	vCor1,
	vCor2,
	Float:vPosX,
	Float:vPosZ,
	Float:vPosY,
	Float:vPosA
}

new pVeiculoSpawn[MAX_PLAYERS][5][VehicleInfos];

new MySQL:ConexaoSQL;

forward VerificarContaSQL(playerid);
forward InserirDadosSQL(playerid);
forward CarregarContaSQL(playerid);
forward SalvarContaSQL(playerid);
forward KickPlayerinTime(playerid);
forward CarregarID(iddonocar);
forward CarregarVeiculoSQL(playerid,i);

main()
{
	print("\n ---------------------------------");
	print(" ----- GAMEMODE ZERO GROUNDS -----");
	print("---------------------------------\n");
}

public OnGameModeInit()
{
	ConexaoSQL = mysql_connect(HOST,USER,PASS,DBSA);
	SetGameModeText("Blank Script");
	if(mysql_errno(ConexaoSQL) != 0)
     { // Caso o servidor esteja desligado, você não ter criado o banco de dados ou algum erro, ele não se conecta e te avisa.
        print("[MySQL] Falha ao tentar estabelecer conexão com o banco de dados.");
    } else {// Caso de tudo certo, ele também te avisa.
        print("[MySQL] Sucesso ao conectar com o banco de dados.");
    }
	return 1;
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{

	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}

public OnPlayerConnect(playerid)
{
    new Query[90];
    TogglePlayerSpectating(playerid, 1);// Isso daqui é só pra sumir o botão de spawn, tem vários dele espalhado pelo code.

    mysql_format(ConexaoSQL, Query, sizeof(Query), "SELECT `pSenha`, `pID` FROM `zero_players` WHERE `pNome`='%e'", GetPlayerNameEx(playerid));
	// Ele seleciona as colunas "pSenha" e "pID" da tabela jogadores AONDE o nome é igual do player.
    mysql_tquery(ConexaoSQL, Query, "VerificarContaSQL", "i", playerid);
	// Logo depois de selecionar ele aciona a função para Verificar se ele tem conta ou não.
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
// Se o player estiver logado E a razão do disconnect for 0 ou 1 ou 2, salva a conta e zera os dados para não entrar em conflito com a conta de outro jogador.
    if(Player[playerid][pLogado] == 1 && reason >= 0)
    {
        SalvarContaSQL(playerid);
        ZerarDadosSQL(playerid);
    }
    new Query[250];
    mysql_format(ConexaoSQL, Query, sizeof(Query), "UPDATE `zero_players` SET `pLogado`='%i'",Player[playerid][pLogado]);
    mysql_query(ConexaoSQL, Query);

    for(new i = 0; i<6; i++){
        DestroyVehicle(pVeiculoSpawn[playerid][i][vInfo]);
    }
    return 1;
}

stock ZerarDadosSQL(playerid)
{
    Player[playerid][pID] = 0;
    Player[playerid][pSenha] = 0;
    Player[playerid][pDinheiro] = 0;
    Player[playerid][pScore] = 0;
    Player[playerid][pSkin] = 0;
    Player[playerid][pLogado] = 0;
    Player[playerid][pTentativasLogin] = 0;
    Player[playerid][pTentativasRegistro] = 0;
    Player[playerid][pPosX] = 0;
    Player[playerid][pPosA] = 0;
    Player[playerid][pPosY] = 0;
    Player[playerid][pPosA] = 0;

}

stock GetPlayerNameEx(playerid)
{
    static pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
    return pname;
}

CMD:dv(playerid, params[])
{
    new Query[90];
    new idplayer, idmodelo, cor1, cor2, Float:Pos[4];
    if(sscanf(params, "iiii", idplayer, idmodelo, cor1, cor2))                return SendClientMessage(playerid, -1, "USE: /dv [PLAYERID] [IDCARRO] [COR1] [COR2]");
    if(idmodelo < 400 || idmodelo > 611)                            return SendClientMessage(playerid, -1, "USE IDS entre 400 e 611");
    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    GetPlayerFacingAngle(playerid,Pos[3]);

	if(IsPlayerAdmin(playerid))
	{
	    if(Player[idplayer][pCarros] < 5){
			mysql_format(ConexaoSQL, Query, sizeof(Query), "INSERT INTO `zero_vehicles` (`vDono`,`vIDveh`,`vCor1`,`vCor2`,`vPosX`,`vPosZ`,`vPosY`,`vPosA`)\
			VALUES ('%i', '%i', '%i', '%i', '%f', '%f', '%f', '%f')", Player[idplayer][pID], idmodelo, cor1, cor2, Pos[0], Pos[2], Pos[1], Pos[3]);
			mysql_tquery(ConexaoSQL, Query);
			pVeiculoSpawn[idplayer][Player[idplayer][pCarros]][vInfo] = CreateVehicle(idmodelo, Pos[0], Pos[1], Pos[2], Pos[3], cor1, cor2, -1);
			
			new veiculoteste[99];
			format(veiculoteste, sizeof(veiculoteste), "Veiculo criado ID:%i , COR1: %i, COR 2: %i, Dono ID: %", idmodelo, cor1, cor2, Player[idplayer][pID]);
			
			SendClientMessage(playerid, -1, veiculoteste);
		}else{
		    SendClientMessage(playerid, -1, "O player já possui o limite máximo de carros que é de 5.");
		}
	}else{
	    SendClientMessage(playerid, -1, "Você não é um adminitrador.");
	}
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new Query[125];

    switch(dialogid)
    {
        case REGISTER_DIALOG:
        {
            if(!response) // Se ele apertar esc ou na segunda opção, vai ser kickado
                return Kick(playerid);

            if(strlen(inputtext) < 4 || strlen(inputtext) > 24) // Se o que ele digitou for menor 4 e maior que 24, a senha não sera aceita
            {
                SendClientMessage(playerid, 0xFF0000AA, "[SERVER] Escolha uma senha entre 4 a 24 caracteres.");
                TogglePlayerSpectating(playerid, 1);

                ShowPlayerDialog(playerid, REGISTER_DIALOG, DIALOG_STYLE_INPUT, "Registro", "Digite uma senha para se registrar em nosso servidor", "Registrar", "Sair"); // Mostra o dialog para ele tentar de novo.
                Player[playerid][pTentativasRegistro]++; // Adiciona +1 ao erro.

            } else { // Se a senha for aceitavel, no caso entre 4 a 24 caracteres
                TogglePlayerSpectating(playerid, 0); // Tira ele de espectador, agora ele vai entrar no server
                mysql_format(ConexaoSQL, Query, sizeof(Query), "INSERT INTO `zero_players`(`pNome`,`pSenha`) VALUES ('%e', '%e')", GetPlayerNameEx(playerid), inputtext);
				// Vai inserir na tabela jogares, nas colunas pNome e pSenha os seguintes valores, o nome do player que ele puxou com a stock e o que ele digitou, o inputtext.
                mysql_tquery(ConexaoSQL, Query, "InserirDadosSQL", "i", playerid);
				// Ele vai executar o comando acima e vai acionar a função de inserir o ID e criar a conta do player
            }
            if(Player[playerid][pTentativasRegistro] == 3) // Se ele errar mais de 3 vezes vai ser kickado
            {
                    SendClientMessage(playerid, 0xFF0000AA, "[SERVER] Limite de tentativas de registro excedida.");
                    Player[playerid][pTentativasRegistro] = 0; // Zerar a variável pra caso um outro jogador entre, não começe com 3 na variável
                    SetTimerEx("KickPlayerinTime", 200, false, "i", playerid); // ele é kickado 200 milisegundos apos isso acontecer, tempo suficiente pra ver a mensagem e ser kickado.

            }
        }
		case LOGIN_DIALOG:
        {
            if(!response) // Se responder a segunda opção ou apertar esc, sera kickado
                return Kick(playerid);

            if(!strcmp(Player[playerid][pSenha], inputtext, true, 24)) // Compara a senha do player com o que ele digitou
            { // caso esteja certo
                TogglePlayerSpectating(playerid, 0); // tira ele de espectador
                mysql_format(ConexaoSQL, Query, sizeof(Query), "SELECT * FROM zero_players WHERE pNome='%e'", GetPlayerNameEx(playerid)); // Seleciona tudo aonde o nome dele está
                mysql_tquery(ConexaoSQL, Query, "CarregarContaSQL", "i", playerid); // Executa o carregamento de conta
				mysql_format(ConexaoSQL, Query, sizeof(Query), "UPDATE `zero_players` SET `pLogado`='%i'",Player[playerid][pLogado]);
				mysql_query(ConexaoSQL, Query);
                SendClientMessage(playerid, 0x80FF00AA, "[Server] Logado com sucesso."); // E manda uma mensagem falando que ele logou

				for(new i = 0; i<6; i++){
        			DestroyVehicle(pVeiculoSpawn[playerid][i][vInfo]);
    			}

            } else { // Se não for igual
                TogglePlayerSpectating(playerid, 1);
                SendClientMessage(playerid, 0xFF0000AA, "[SERVER] Senha errada, tente novamente."); // Vai avisar
                Player[playerid][pTentativasLogin]++; // Contabilizar +1 erro
                ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Login", "Digite sua senha para entrar em nosso servidor.", "Confirmar", "Sair"); // Mostra a dialog pra ele tentar dnvo
            }
            if(Player[playerid][pTentativasLogin] == 3) // Caso ele erre 3 vezes
            {
                SendClientMessage(playerid, 0xFF0000AA, "[SERVER] Limite de tentativas de login excedida."); // Avisa que ele exedeu o limite
                Player[playerid][pTentativasLogin] = 0; // Zera a variável pra não gerar conflito
                SetTimerEx("KickPlayerinTime", 200, false, "i", playerid); // E kicka ele depois de 200 milisegundos, dando tempo de ver a mensagem
            }
        }
	}
	return 1;
}

public CarregarVeiculoSQL(playerid,i)
{
	cache_get_value_int(0, "vIDveh", pVeiculoSpawn[playerid][i][vModelo]);
	cache_get_value_int(0, "vCor1", pVeiculoSpawn[playerid][i][vCor1]);
	cache_get_value_int(0, "vCor2", pVeiculoSpawn[playerid][i][vCor2]);
	cache_get_value_float(0, "vPosX", pVeiculoSpawn[playerid][i][vPosX]);
	cache_get_value_float(0, "vPosZ", pVeiculoSpawn[playerid][i][vPosZ]);
	cache_get_value_float(0, "vPosY", pVeiculoSpawn[playerid][i][vPosY]);
	cache_get_value_float(0, "vPosA", pVeiculoSpawn[playerid][i][vPosA]);
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}

public KickPlayerinTime(playerid)
{
    return Kick(playerid);
}

public VerificarContaSQL(playerid)
{
    if(cache_num_rows() > 0) // Se for > 0 , existe uma linha com o nome do player, então ele tem conta.
    {
        cache_get_value_name(0, "pSenha", Player[playerid][pSenha], 24); // Já puxa a senha pra comparar se é igual a que ele vai digitar no dialog.
        ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "Login", "Digite sua senha para entrar em nosso servidor.", "Confirmar", "Sair");
// Abre o dialog pra logar
    }else{ // Se não for > 0 , não existe, ele não está registrado.
        ShowPlayerDialog(playerid, REGISTER_DIALOG, DIALOG_STYLE_INPUT, "Registro", "Digite uma senha para se registrar em nosso servidor", "Registrar", "Sair");
// Abre o dialog pra se registrar
    }
    return 1;
}

public InserirDadosSQL(playerid)
{
    new Query[90];

    Player[playerid][pID] = cache_insert_id(); // Adiciona o id no player
    printf("[MYSQL] Jogador %s registrado como ID %d", GetPlayerNameEx(playerid), Player[playerid][pID]); // Apenas um debug, pra saber se deu tudo certo.

    mysql_format(ConexaoSQL, Query, sizeof(Query), "SELECT * FROM zero_players WHERE pID='%i'", Player[playerid][pID]); // Seleciona todas as informações desse player AONDE o id dele é o id dele
    mysql_query(ConexaoSQL,Query); // Executa o comando acima

    CarregarContaSQL(playerid); // Ele carrega a conta.
    return 1;
}

public CarregarContaSQL(playerid)
{
    Player[playerid][pLogado] = 1; // Seta a variável bool, como true, no caso fala como se você tivesse logado.

    cache_get_value_int(0, "pID", Player[playerid][pID]); // Carrega o id e armazena nessa variável "Player[playerid][pID]"
    cache_get_value_int(0, "pDinheiro", Player[playerid][pDinheiro]); // A mesma coisa nesse e nas outras só que com outra variável
    cache_get_value_int(0, "pScore", Player[playerid][pScore]);
    cache_get_value_int(0, "pSkin", Player[playerid][pSkin]);
    cache_get_value_float(0, "pPosX", Player[playerid][pPosX]);
    cache_get_value_float(0, "pPosY", Player[playerid][pPosY]);
    cache_get_value_float(0, "pPosZ", Player[playerid][pPosZ]);
    cache_get_value_float(0, "pPosA", Player[playerid][pPosA]);
    cache_get_value_int(0, "pCarros", Player[playerid][pCarros]);
    cache_get_value_int(0, "pCar1", Player[playerid][pCar1]);
    cache_get_value_int(0, "pCar2", Player[playerid][pCar2]);
    cache_get_value_int(0, "pCar3", Player[playerid][pCar3]);
    cache_get_value_int(0, "pCar4", Player[playerid][pCar4]);
    cache_get_value_int(0, "pCar5", Player[playerid][pCar5]);
    

// Ele aplica as informações igame
    SetPlayerScore(playerid, Player[playerid][pScore]);  // seta o score com a variavel do score
    GivePlayerMoney(playerid, Player[playerid][pDinheiro]); // seta o dinheiro com a variavel do dinheiro

// Etc....
    SetSpawnInfo(playerid, 0, Player[playerid][pSkin], Player[playerid][pPosX], Player[playerid][pPosY], Player[playerid][pPosZ], Player[playerid][pPosA], 0, 0, 0, 0 ,0, 0);
    SpawnPlayer(playerid); //Spawna o player

    SetPlayerSkin(playerid, Player[playerid][pSkin]);
// Seta a skin dele, porquê as vezes pode bugar no SetSpawnInfo e aparecer a skin do CJ

    return 1;
}

public SalvarContaSQL(playerid)
{
    if(Player[playerid][pLogado] == 0) // Se ele não estiver logado, para ali mesmo
        return 0;

    new Query[250];

// Usa as variáveis pra pegar os valores in game
    Player[playerid][pDinheiro] = GetPlayerMoney(playerid);
    Player[playerid][pScore] = GetPlayerScore(playerid);
    Player[playerid][pSkin] = GetPlayerSkin(playerid);
    GetPlayerPos(playerid, Player[playerid][pPosX], Player[playerid][pPosY], Player[playerid][pPosZ]);
    GetPlayerFacingAngle(playerid, Player[playerid][pPosA]);

// Atualiza a tabela jogadores na fila do jogador SETANDO aquelas colunas como %i - interior, número e %f float , número com virgula AONDE está o ID do jogador
    mysql_format(ConexaoSQL, Query, sizeof(Query), "UPDATE `zero_players` SET \
    `pDinheiro`='%i', \
    `pScore`='%i', \
    `pSkin`='%i', \
    `pPosX`='%f', \
    `pPosY`='%f', \
    `pPosZ`='%f', \
    `pPosA`='%f' WHERE `pID`='%i'", Player[playerid][pDinheiro],
                                    Player[playerid][pScore],
                                    Player[playerid][pSkin],
                                    Player[playerid][pPosX],
                                    Player[playerid][pPosY],
                                    Player[playerid][pPosZ],
                                    Player[playerid][pPosA],
                                    Player[playerid][pID]);
    mysql_query(ConexaoSQL, Query); // Executa o comando
    
    printf("[MYSQL] Dados do Jogador %s ID %d salvo com sucesso", GetPlayerNameEx(playerid), Player[playerid][pID]); // Apenas um debug

    return 1;
}

Last edited by JacKPanK; 14/02/2019 at 10:30 PM. Reason: Acrescentar código completo.
JacKPanK is offline   Reply With Quote
Old 14/02/2019, 11:42 PM   #2
GuiKommander
Gangsta
 
GuiKommander's Avatar
 
Join Date: Dec 2016
Posts: 762
Reputation: 21
Default Re: Fazer comando para salvar Carros - MySQL

PHP Code:
mysql_format(ConexaoSQLQuerysizeof(Query), "INSERT INTO `zero_vehicles` (`vDono`,`vIDveh`,`vCor1`,`vCor2`,`vPosX`,`vPosZ`,`vPosY`,`vPosA`) "
"VALUES ('%i', '%i', '%i', '%i', '%f', '%f', '%f', '%f')"Player[idplayer][pID], idmodelocor1cor2Pos[0], Pos[2], Pos[1], Pos[3]); 
Substitua.
GuiKommander is offline   Reply With Quote
Old 15/02/2019, 12:47 AM   #3
JacKPanK
Big Clucker
 
JacKPanK's Avatar
 
Join Date: Dec 2015
Location: Brasil - Ceará
Posts: 109
Reputation: 1
Default Re: Fazer comando para salvar Carros - MySQL

Quote:
Originally Posted by GuiKommander View Post
PHP Code:
mysql_format(ConexaoSQLQuerysizeof(Query), "INSERT INTO `zero_vehicles` (`vDono`,`vIDveh`,`vCor1`,`vCor2`,`vPosX`,`vPosZ`,`vPosY`,`vPosA`) "
"VALUES ('%i', '%i', '%i', '%i', '%f', '%f', '%f', '%f')"Player[idplayer][pID], idmodelocor1cor2Pos[0], Pos[2], Pos[1], Pos[3]); 
Substitua.
PROBLEMA AINDA PERSISTE.
JacKPanK is offline   Reply With Quote
Old 15/02/2019, 10:25 AM   #4
StartOver
Little Clucker
 
Join Date: Dec 2018
Posts: 28
Reputation: 0
Default Re: Fazer comando para salvar Carros - MySQL

PHP Code:
CMD:dv(playeridparams[]) 

    new 
Query[163]; 
    new 
idplayeridmodelocor1cor2Float:Pos[4]; 
    if(
sscanf(params"iiii"idplayeridmodelocor1cor2))                return SendClientMessage(playerid, -1"USE: /dv [PLAYERID] [IDCARRO] [COR1] [COR2]"); 
    if(
idmodelo 400 || idmodelo 611)                            return SendClientMessage(playerid, -1"USE IDS entre 400 e 611"); 
    
GetPlayerPos(playeridPos[0], Pos[1], Pos[2]); 
    
GetPlayerFacingAngle(playerid,Pos[3]); 

    if(
IsPlayerAdmin(playerid)) 
    { 
        if(
Player[idplayer][pCarros] < 5){ 
            
mysql_format(ConexaoSQLQuerysizeof(Query), "INSERT INTO `zero_vehicles` (`vDono`,`vIDveh`,`vCor1`,`vCor2`,`vPosX`,`vPosZ`,`vPosY`,`vPosA`)\
            VALUES ('%i', '%i', '%i', '%i', '%f', '%f', '%f', '%f')"
Player[idplayer][pID], idmodelocor1cor2Pos[0], Pos[2], Pos[1], Pos[3]); 
            
mysql_tquery(ConexaoSQLQuery"""");
            
pVeiculoSpawn[idplayer][Player[idplayer][pCarros]][vInfo] = CreateVehicle(idmodeloPos[0], Pos[1], Pos[2], Pos[3], cor1cor2, -1); 
             
            new 
veiculoteste[99]; 
            
format(veiculotestesizeof(veiculoteste), "Veiculo criado ID:%i , COR1: %i, COR 2: %i, Dono ID: %"idmodelocor1cor2Player[idplayer][pID]); 
             
            
SendClientMessage(playerid, -1veiculoteste); 
        }else{ 
            
SendClientMessage(playerid, -1"O player já possui o limite máximo de carros que é de 5."); 
        } 
    }else{ 
        
SendClientMessage(playerid, -1"Você não é um adminitrador."); 
    } 
    return 
1

90 células não é o suficiente para completar oque você deseja. não puder analisar corretamente pois estou no trabalho.

De uma olhadinha no log do MySQL, "logs > plugins > MySQL".

Abraços!
__________________
- Você pode ser um rei ou um varredor de rua, mas todo mundo dança com o anjo da morte.
StartOver is offline   Reply With Quote
Old 15/02/2019, 02:21 PM   #5
JacKPanK
Big Clucker
 
JacKPanK's Avatar
 
Join Date: Dec 2015
Location: Brasil - Ceará
Posts: 109
Reputation: 1
Default Re: Fazer comando para salvar Carros - MySQL

Quote:
Originally Posted by StartOver View Post
PHP Code:
CMD:dv(playeridparams[]) 

    new 
Query[163]; 
    new 
idplayeridmodelocor1cor2Float:Pos[4]; 
    if(
sscanf(params"iiii"idplayeridmodelocor1cor2))                return SendClientMessage(playerid, -1"USE: /dv [PLAYERID] [IDCARRO] [COR1] [COR2]"); 
    if(
idmodelo 400 || idmodelo 611)                            return SendClientMessage(playerid, -1"USE IDS entre 400 e 611"); 
    
GetPlayerPos(playeridPos[0], Pos[1], Pos[2]); 
    
GetPlayerFacingAngle(playerid,Pos[3]); 

    if(
IsPlayerAdmin(playerid)) 
    { 
        if(
Player[idplayer][pCarros] < 5){ 
            
mysql_format(ConexaoSQLQuerysizeof(Query), "INSERT INTO `zero_vehicles` (`vDono`,`vIDveh`,`vCor1`,`vCor2`,`vPosX`,`vPosZ`,`vPosY`,`vPosA`)\
            VALUES ('%i', '%i', '%i', '%i', '%f', '%f', '%f', '%f')"
Player[idplayer][pID], idmodelocor1cor2Pos[0], Pos[2], Pos[1], Pos[3]); 
            
mysql_tquery(ConexaoSQLQuery"""");
            
pVeiculoSpawn[idplayer][Player[idplayer][pCarros]][vInfo] = CreateVehicle(idmodeloPos[0], Pos[1], Pos[2], Pos[3], cor1cor2, -1); 
             
            new 
veiculoteste[99]; 
            
format(veiculotestesizeof(veiculoteste), "Veiculo criado ID:%i , COR1: %i, COR 2: %i, Dono ID: %"idmodelocor1cor2Player[idplayer][pID]); 
             
            
SendClientMessage(playerid, -1veiculoteste); 
        }else{ 
            
SendClientMessage(playerid, -1"O player já possui o limite máximo de carros que é de 5."); 
        } 
    }else{ 
        
SendClientMessage(playerid, -1"Você não é um adminitrador."); 
    } 
    return 
1

90 células não é o suficiente para completar oque você deseja. não puder analisar corretamente pois estou no trabalho.

De uma olhadinha no log do MySQL, "logs > plugins > MySQL".

Abraços!
E oque seria essas 90 células?

@EDIT

ACHEI

Code:
[12:17:48] [WARNING] mysql_connect: no password specified
[12:19:20] [ERROR] mysql_format: destination size '90' is too small
[12:19:20] [ERROR] error #1065 while executing query "": Query was empty
JacKPanK is offline   Reply With Quote
Old 15/02/2019, 02:24 PM   #6
ipsLuan
High-roller
 
ipsLuan's Avatar
 
Join Date: Feb 2013
Location: Ilhéus, BA
Posts: 4,240
Reputation: 318
Default Re: Fazer comando para salvar Carros - MySQL

Tem que fazer deste jeito:

PHP Code:
new veiculoteste[99];  
format(veiculoteste[0], sizeof(veiculoteste[0]), "Veiculo criado ID:%i , COR1: %i, COR 2: %i, Dono ID: %"idmodelocor1cor2Player[idplayer][pID]); 
ipsLuan is offline   Reply With Quote
Old 15/02/2019, 02:47 PM   #7
JacKPanK
Big Clucker
 
JacKPanK's Avatar
 
Join Date: Dec 2015
Location: Brasil - Ceará
Posts: 109
Reputation: 1
Default Re: Fazer comando para salvar Carros - MySQL

Quote:
Originally Posted by ipsLuan View Post
Tem que fazer deste jeito:

PHP Code:
new veiculoteste[99];  
format(veiculoteste[0], sizeof(veiculoteste[0]), "Veiculo criado ID:%i , COR1: %i, COR 2: %i, Dono ID: %"idmodelocor1cor2Player[idplayer][pID]); 
Desse jeito ocorre esse erro:
Code:
C:\Users\yanmo\Desktop\Samp-Server\gamemodes\GAMEZERO.pwn(172) : error 001: expected token: "]", but found "-integer value-"
C:\Users\yanmo\Desktop\Samp-Server\gamemodes\GAMEZERO.pwn(172) : warning 215: expression has no effect
C:\Users\yanmo\Desktop\Samp-Server\gamemodes\GAMEZERO.pwn(172) : error 001: expected token: ";", but found "]"
C:\Users\yanmo\Desktop\Samp-Server\gamemodes\GAMEZERO.pwn(172) : error 029: invalid expression, assumed zero
C:\Users\yanmo\Desktop\Samp-Server\gamemodes\GAMEZERO.pwn(172) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.
JacKPanK is offline   Reply With Quote
Old 15/02/2019, 02:52 PM   #8
ipsLuan
High-roller
 
ipsLuan's Avatar
 
Join Date: Feb 2013
Location: Ilhéus, BA
Posts: 4,240
Reputation: 318
Default Re: Fazer comando para salvar Carros - MySQL

Deixa.
Fiz uma confusão e errei.
Analisei novamente o código e vi que veiculoteste é uma variável de string.

Aumente a quantidade query:
PHP Code:
new Query[600]; 
- Isso é uma base, altere a quantidade conforme for necessário.

E, também, faça debug (print/f) para verificar até onde a função vai e o que está sendo escrito na query após executar a função.

PHP Code:
printf(Query); 
ipsLuan is offline   Reply With Quote
Old 15/02/2019, 03:19 PM   #9
DanielMatrix
Big Clucker
 
Join Date: Sep 2018
Posts: 109
Reputation: 9
Exclamation Re: Fazer comando para salvar Carros - MySQL

Olá tudo bem JacKPanK.

Solução


Primeiramente vamos entender a questão, você quer salvar todos os carros do servidor correto, bem para isso preciso saber se os veículos já estão criados no servidor caso estejam criados você vai usar a função UPDATE não o INSERT, pensa comigo se toda vez que vc der o comando /salvarcarros e sua função for INSERT , ele ira inserir novas linhas dentro de sua tabela, para salvar os carros já existentes, você utiliza a função UPDATE como citei acima.

Não e simplesmente chegar , criar um comando para salvar os veículos, você precisa entender o código de sua gamemode, provavelmente você pegou ela na internet, de uma lida nos sistemas, verifique como funciona a questão da criação dos veículos, se eles estão sendo criados na sua BD "Banco de Dados", caso os veículos não esteja sendo salvos direto em uma tabela na BD, vc precisa refazer esse código , ai sim você ira implementar a função UPDATE no código /salvarveiculos,

Agora vem outra opção, você cria os veículos normalmente e no final vc salva todos os veículos,mas isso e horrível ,seria uma complicação para fazer um código assim , além de ser um sistema porco, vou te dar um exemplo, Vc ira fazer um loop com MAX VEHICLES, ira pegar todos os veículos existentes no servidor, nisso ao utilizar o comando /salvarveiculos vc usa a função INSERT INTO `suabd`..... , ele ira inserir todos os veiculos existentes , agora vamos supor que você use esse código mais de 1vez, presta atenção ele ira INSERIR os novos e os mesmos carros que vc salvou na utilização do comando, para isso não acontecer você teria que verificar os carros existentes com a função SELECT + cache num_rows(), fora que ainda terá que ter um conhecimento logico das variáveis para poder manipular elas, ex: você inseriu, fez a verificação se existe, caso existir você ira utilizar a função UPDATE, ao invés do INSERT.

Para você ver como e horrível pegar algo que não foi criado por você, não entenda mal , e muito melhor você estudar as linguagem de programação/salvamentos, para poder criar seu próprio código, com seu entendimento.

Se mesmo assim não quiser, faço sistemas por um preço justo dentro da suas exigências.

Original Roleplay
DanielMatrix is offline   Reply With Quote
Old 15/02/2019, 03:19 PM   #10
JacKPanK
Big Clucker
 
JacKPanK's Avatar
 
Join Date: Dec 2015
Location: Brasil - Ceará
Posts: 109
Reputation: 1
Default Re: Fazer comando para salvar Carros - MySQL

Aproveitando o tópico, pode me explicar como posso guardar a informação de mais de um carro nessa variavel:

PHP Code:
enum VehicleInfos{
    
vInfo,
    
vModelo,
    
vCor1,
    
vCor2,
    
Float:vPosX,
    
Float:vPosZ,
    
Float:vPosY,
    
Float:vPosA
}

new 
pVeiculoSpawn[MAX_PLAYERS// AQUI PRA IDENTIFICAR O PLAYER
[5]//AQUI COLOQUEI O TANTO DE VEICULOS QUE QUERO GUARDAR A INFORMAÇÃO
[VehicleInfos];//AQUI O TIPO DA INFO; 


Tipo, guardar o carro id 1 que é do dono 2 na variável de veiculos 0 e assim sucessivamente nos demais veiculos quando ele entrar no servidor.

Localizar todos os veículos dele pelo id do jogador registrado na DB, e guardar todos os carros que estão com o id dele nessas variáveis, são 5 carros pra cada jogador.

pVeiculoSpawn[playerid][0][vModelo];
.... Resto das info ....
pVeiculoSpawn[playerid][1][vModelo];
.... Resto das info ....
pVeiculoSpawn[playerid][2][vModelo];
.... Resto das info ....
pVeiculoSpawn[playerid][3][vModelo];
.... Resto das info ....
pVeiculoSpawn[playerid][4][vModelo];
.... Resto das info ....
JacKPanK is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Ajuda] como fazer para salvar na pasta contas tcharles2011 Português/Portuguese 7 26/06/2017 10:30 PM
[Pedido] Como fazer para salvar obejetos no player !!!! Marlon307 Português/Portuguese 1 25/05/2014 02:44 PM
[Ajuda] Como fazer para salvar isso... LeoPac Português/Portuguese 2 26/03/2014 07:23 PM
[Ajuda] Erro ao fazer carros para a gang yuran Português/Portuguese 6 23/12/2012 11:21 PM
[Ajuda] Preciso Fazer Cor Personalizada Para Carros joelbn Português/Portuguese 7 24/03/2011 11:21 PM


All times are GMT. The time now is 10:55 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.