Salvamento de slots
#1

Eu tф quebrando a cabeзa com o salvamento de todos os slots de armas.

Observem o cуdigo:
Код:
SaveArmas(playerid)
	new weaponid, ammo, query[150];

	for(new i; i < 13; i++) // looping through all weapon slots (0 - 12)
	{
    	GetPlayerWeaponData(playerid, i, weaponid, ammo); // get weaponid and ammo

    	if(!weaponid) continue; // don't insert if there's no weapon in this slot

    	mysql_format(dbHandle, query, sizeof(query), "INSERT INTO characters (weapon1, ammo1, weapon2, ammo2, weapon3, ammo3, weapon4, ammo4, weapon5, ammo5, weapon6, ammo6, weapon7, ammo7, weapon8, ammo8, weapon9, ammo9, weapon10, ammo10, weapon11, ammo11, weapon12, ammo12) VALUES (%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)", weaponid, ammo, weaponid, ammo, weaponid, ammo, weaponid, ammo, weaponid, ammo, weaponid, ammo, weaponid, ammo, weaponid, ammo, weaponid, ammo, weaponid, ammo, weaponid, ammo, weaponid, ammo);
    	mysql_tquery(dbHandle, query); // parallel queries
	}
  		
	return 1;
}
O meu objetivo й pegar todas as armas de todos os slots (ao todo 13 slots) e salvar na MySQL. Eu jб criei da weapon1/ammo1 atй a weapon12/weapon12 na MySQL, mas eu nгo sei como eu passo do jogo pra db, nгo sei como fazer o uso correto de todos os slots pelo GetPlayerWeaponData

Se alguйm conseguir me dar uma luz, ficarei agradecido.
Reply
#2

PHP код:
SaveArmas(playerid){
    new 
weaponid[13], ammo[13], query[150];
    for(new 
i13i++) GetPlayerWeaponData(playeridiweaponid[i], ammo[i]);
    
mysql_format(dbHandlequerysizeof(query), "INSERT INTO characters (weapon1, ammo1, weapon2, ammo2, weapon3, ammo3, weapon4, ammo4, weapon5, ammo5, weapon6, ammo6, weapon7, ammo7, weapon8, ammo8, weapon9, ammo9, weapon10, ammo10, weapon11, ammo11, weapon12, ammo12) VALUES (%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",  weaponid[0], ammo[0], weaponid[1], ammo[1], weaponid[2], ammo[2], weaponid[3], ammo[3], weaponid[4], ammo[4], weaponid[5], ammo[5], weaponid[6], ammo[6], weaponid[7], ammo[7], weaponid[8], ammo[8], weaponid[9], ammo[9], weaponid[10], ammo[10], weaponid[11], ammo[11], weaponid[12], ammo[12]);
    
mysql_tquery(dbHandlequery);
    return 
1;

Testa assim tambйm

PHP код:
SaveArmas(playerid){
    new 
weaponid[13], ammo[13], query[150];
    for(new 
i13i++){
        
GetPlayerWeaponData(playeridiweaponid[i], ammo[i]);
        
mysql_format(dbHandlequerysizeof(query), "INSERT INTO characters (weapon%d, ammo%d) VALUES (%d, %d)"iiweaponid[i], ammo[i]);
        
mysql_tquery(dbHandlequery);
    }    
    return 
1;

Nгo esqueзa que o slot 0 nгo estб sendo salvo, adicione na sua tabela weapon0 e ammo0.
Reply
#3

Use Update man
Reply
#4

Quote:
Originally Posted by DelK
Посмотреть сообщение
Use Update man
Mais ele vai atualizar algo que nгo existe '-'
Reply
#5

Quote:
Originally Posted by Felipealves
Посмотреть сообщение
Mais ele vai atualizar algo que nгo existe '-'
Vocк deu a soluзгo para o problema dele:
PHP код:
SaveArmas(playerid){ 
    new 
weaponid[13], ammo[13], query[150]; 
    for(new 
i13i++){ 
        
GetPlayerWeaponData(playeridiweaponid[i], ammo[i]); 
        
mysql_format(dbHandlequerysizeof(query), "INSERT INTO characters (weapon%d, ammo%d) VALUES (%d, %d)"iiweaponid[i], ammo[i]); 
        
mysql_tquery(dbHandlequery); 
    }     
    return 
1

Eu sу dei o nome da funзгo para "atualizar" as armas.
Reply
#6

Quote:
Originally Posted by DelK
Посмотреть сообщение
Eu sу dei o nome da funзгo para "atualizar" as armas.
MB men
Reply
#7

Testei da forma que vocкs falaram e meio que deu certo, o problema й que criava uns 7 characters nulos e nгo salvava a arma no character certo.

Tentei desta forma:
Код:
SaveArmas(playerid){
    new weaponid[13], ammo[13], query[150];
    for(new i; i < 13; i++){
        GetPlayerWeaponData(playerid, i, weaponid[i], ammo[i]);
        mysql_format(dbHandle, query, sizeof(query), "INSERT INTO characters (weapon%d, ammo%d) VALUES (%d, %d) WHERE char_name = '%s'", i, i, weaponid[i], ammo[i], PlayerInfo[playerid][pCharacterName]);
        mysql_tquery(dbHandle, query);
    }
    return 1;
}
Mas nгo salvou. Jб tentei em vez de char_name colocar o id, tambйm nгo dб.
Reply
#8

PHP код:
CarregarArmas(playerid){
    new 
Query[80];
    
mysql_format(ConexaoQuerysizeof(Query), "SELECT `nome`, `ID` FROM `SlotArmas` WHERE `nome`='%s'"GetPlayerNome(playerid));
    
mysql_tquery(ConexaoQuery"VerificarArmas""i"playerid);
    return 
1;
}
forward VerificarArmas(playerid);
public 
VerificarArmas(playerid){  
    new 
weaponid[13], ammo[13], query[999]; // defina o query qnt quiser sу alto msm pq quis kjkasdjka
    
for(new 013; ++iGetPlayerWeaponData(playeridiweaponid[i], ammo[i]);
    if(
cache_num_rows() > 0){
        
// UPDATE
    
}else{
        
// CRIA ARMA
           
mysql_format(Conexaoquerysizeof(query), "INSERT INTO SlotArmas (nome, weapon0, ammo0, weapon1, ammo1, weapon2, ammo2, weapon3, ammo3, weapon4, ammo4, weapon5, ammo5, weapon6, ammo6, weapon7, ammo7, weapon8, ammo8, weapon9, ammo9, weapon10, ammo10, weapon11, ammo11, weapon12, ammo12) VALUES ('%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')",
        
GetPlayerNome(playerid), weaponid[0], ammo[0], weaponid[1], ammo[1], weaponid[2], ammo[2], weaponid[3], ammo[3], weaponid[4], ammo[4], weaponid[5], ammo[5], weaponid[6], ammo[6], weaponid[7], ammo[7], weaponid[8], ammo[8], weaponid[9], ammo[9], weaponid[10], ammo[10], weaponid[11], ammo[11], weaponid[12], ammo[12]); 
        
mysql_tquery(Conexaoquery"DadosRegistrados""i"playerid);  
    }    
    return 
1;  

forward DadosRegistrados(playerid);
public 
DadosRegistrados(playerid){
    
pInfo[playerid][c_bid] = cache_insert_id();
    
printf("Arma registrada id: %d"pInfo[playerid][c_bid]);
    return 
1;
}
static 
GetPlayerNome(playerid)
{
    new 
Nome[MAX_PLAYER_NAME];
    
GetPlayerName(playeridNomesizeof(Nome));
    return 
Nome;

Nгo esqueзa quando for passar os parвmetros de usar ' ' ex: '%d'.
Reply
#9

+rep Felipe Alves, vocк me deu a luz pra conseguir! Deixei assim:

Код:
SaveArmas(playerid){

	new Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, sizeof(Nome));


	new weaponid[13], ammo[13], query[999];
    for(new i; i < 13; i++){
        GetPlayerWeaponData(playerid, i, weaponid[i], ammo[i]);
        if(cache_num_rows() >= 0){
        	mysql_format(dbHandle, query, sizeof(query), "UPDATE characters SET weapon%d = '%d', ammo%d = '%d' WHERE char_name = '%s'", i, weaponid[i], i, ammo[i], PlayerInfo[playerid][pCharacterName]);
        	mysql_tquery(dbHandle, query);
        }
        else
        {
			mysql_format(dbHandle, query, sizeof(query), "INSERT INTO characters (weapon1, ammo1, weapon2, ammo2, weapon3, ammo3, weapon4, ammo4, weapon5, ammo5, weapon6, ammo6, weapon7, ammo7, weapon8, ammo8, weapon9, ammo9, weapon10, ammo10, weapon11, ammo11, weapon12, ammo12) VALUES ('%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d') WHERE char_name = '%s'",
        	weaponid[1], ammo[1], weaponid[2], ammo[2], weaponid[3], ammo[3], weaponid[4], ammo[4], weaponid[5], ammo[5], weaponid[6], ammo[6], weaponid[7], ammo[7], weaponid[8], ammo[8], weaponid[9], ammo[9], weaponid[10], ammo[10], weaponid[11], ammo[11], weaponid[12], ammo[12], Nome);
        	mysql_tquery(dbHandle, query);
		}
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)