[Ajuda] Fazer comando para salvar Carros - MySQL
#1

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 код:
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 код:
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:
Код:
#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;
}
Reply
#2

PHP код:
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.
Reply
#3

Quote:
Originally Posted by GuiKommander
Посмотреть сообщение
PHP код:
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.
Reply
#4

PHP код:
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!
Reply
#5

Quote:
Originally Posted by StartOver
Посмотреть сообщение
PHP код:
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

Код:
[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
Reply
#6

Tem que fazer deste jeito:

PHP код:
new veiculoteste[99];  
format(veiculoteste[0], sizeof(veiculoteste[0]), "Veiculo criado ID:%i , COR1: %i, COR 2: %i, Dono ID: %"idmodelocor1cor2Player[idplayer][pID]); 
Reply
#7

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
Tem que fazer deste jeito:

PHP код:
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:
Код:
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 © 1997-2006, ITB CompuPhase


4 Errors.
Reply
#8

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 код:
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 код:
printf(Query); 
Reply
#9

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
Reply
#10

Aproveitando o tуpico, pode me explicar como posso guardar a informaзгo de mais de um carro nessa variavel:

PHP код:
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 ....
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)