problem con guardado de bolsillos :/
#1

Bueno estuve asiendo un sistema de bolsillos y todo funciona a la perfecciуn pero el problema es al guardar y cargar lo que tiene en las manos por ejemplo tiene una pistola con 2 balas y al desconectarse y al volverse a conectar se le ponen 4 osea se suman y nose porque entonces creo que debe ser que el guardado lo puse en OnPlayerDisconnect y creo que por eso se suman pero nose... Alguien me puede ayudar? aquн les dejo el guardado:

Код:
public OnPlayerDisconnect(playerid, reason)
			{
			//save de sistemas
			new INI:File = INI_Open(UserPath(playerid));
		    INI_SetTag(File,"data");
		    INI_WriteInt(File,"bolsillo",PlayerInfo[playerid][pBol][0]);
		    INI_WriteInt(File,"bolsillo1",PlayerInfo[playerid][pBol][1]);
		    INI_WriteInt(File,"bolsillo2",PlayerInfo[playerid][pBol][2]);
		    INI_WriteInt(File,"bolsillo3",PlayerInfo[playerid][pBol][3]);
		    INI_WriteInt(File,"bolsillo4",PlayerInfo[playerid][pBol][4]);
		    INI_WriteInt(File,"bolsillo5",PlayerInfo[playerid][pBol][5]);
		    INI_WriteInt(File,"bolsillo6",PlayerInfo[playerid][pBol][6]);
		    INI_WriteInt(File,"bolsillo7",PlayerInfo[playerid][pBol][7]);
		    INI_WriteInt(File,"Manoizq",PlayerInfo[playerid][pManoIzq]);
		    INI_WriteInt(File,"Espalda",PlayerInfo[playerid][pEspalda]);
		    INI_WriteInt(File,"ManoizqCant",PlayerInfo[playerid][pManoIzqCant]);
		    INI_WriteInt(File,"EspaldaCant",PlayerInfo[playerid][pEspaldaCant]);
		    INI_WriteInt(File,"ManoDer",PlayerInfo[playerid][pManoDer]);
		    INI_WriteInt(File,"ManoDerCant",PlayerInfo[playerid][pManoDerCant]);
		    INI_WriteInt(File,"bolcant",PlayerInfo[playerid][pBolCant][0]);
		    INI_WriteInt(File,"bolcant1",PlayerInfo[playerid][pBolCant][1]);
		    INI_WriteInt(File,"bolcant2",PlayerInfo[playerid][pBolCant][2]);
		    INI_WriteInt(File,"bolcant3",PlayerInfo[playerid][pBolCant][3]);
		    INI_WriteInt(File,"bolcant4",PlayerInfo[playerid][pBolCant][4]);
		    INI_WriteInt(File,"bolcant5",PlayerInfo[playerid][pBolCant][5]);
		    INI_WriteInt(File,"bolcant6",PlayerInfo[playerid][pBolCant][6]);
		    INI_WriteInt(File,"bolcant7",PlayerInfo[playerid][pBolCant][7]);
                    		    INI_Close(File);
Y este es el cargado:

Код:
public CargarInfo_datos(playerid,name[],value[]){
	    INI_Int("bolsillo0",PlayerInfo[playerid][pBol][0]);
	    INI_Int("bolsillo1",PlayerInfo[playerid][pBol][1]);
	    INI_Int("bolsillo2",PlayerInfo[playerid][pBol][2]);
	    INI_Int("bolsillo3",PlayerInfo[playerid][pBol][3]);
	    INI_Int("bolsillo4",PlayerInfo[playerid][pBol][4]);
	    INI_Int("bolsillo5",PlayerInfo[playerid][pBol][5]);
	    INI_Int("bolsillo6",PlayerInfo[playerid][pBol][6]);
	    INI_Int("bolsillo7",PlayerInfo[playerid][pBol][7]);
	    INI_Int("Manoizq",PlayerInfo[playerid][pManoIzq]);
	    INI_Int("Espalda",PlayerInfo[playerid][pEspalda]);
	    INI_Int("ManoizqCant",PlayerInfo[playerid][pManoIzqCant]);
	    INI_Int("EspaldaCant",PlayerInfo[playerid][pEspaldaCant]);
	    INI_Int("ManoDer",PlayerInfo[playerid][pManoDer]);
	    INI_Int("ManoDerCant",PlayerInfo[playerid][pManoDerCant]);
	    INI_Int("bolcant",PlayerInfo[playerid][pBolCant][0]);
	    INI_Int("bolcant1",PlayerInfo[playerid][pBolCant][1]);
	    INI_Int("bolcant2",PlayerInfo[playerid][pBolCant][2]);
	    INI_Int("bolcant3",PlayerInfo[playerid][pBolCant][3]);
	    INI_Int("bolcant4",PlayerInfo[playerid][pBolCant][4]);
	    INI_Int("bolcant5",PlayerInfo[playerid][pBolCant][5]);
	    INI_Int("bolcant6",PlayerInfo[playerid][pBolCant][6]);
	    INI_Int("bolcant7",PlayerInfo[playerid][pBolCant][7]);
		return 0;
	}
Reply
#2

Que variables de allн se supone que son para guardar las balas de los diferentes tipos de armas?,
usa https://sampwiki.blast.hk/wiki/GetPlayerWeaponData para obtener las armas que tiene y meter en las variables, luego en el archivo, te indicarнa con ejemplo pero no se que variable usas para las municiones, allн solo veo un usuario pulpo con 100 manos, var manoizquierda, manoderecha, manocuadrada,manoarriba,manoabajo,manoenmedio, en fin, no se distingue.
Reply
#3

xD la variable que uso para guardar las balas es:

INI_WriteInt(File,"ManoDerCant",PlayerInfo[playerid][pManoDerCant]); pero creo que el problem esta en que la funciуn se llama cada vez que se desconecta por eso suma las balas
Reply
#4

Cuantas armas guardas? tienes que guardar las municiones de las armas pertenecientes al slot 2 como son: 9mm, desert eagle, 9mm, las del slot 3, slot 4 etc, como haces para guardar las municiones de cada arma?, guardas en pManoDerCant las municiones de todas?, has un guardado de todos los slots con un bucle o sin buble puede ser y usa la funcion que te dije, y lo de onplayerdisconnect no tiene nada que ver que sume, para que sume deberнa de estar asн: PlayerInfo[playerid][pManoDerCant]++; .
Reply
#5

nop pero yo lo utilizo para una sola arma el player puede tener una sola arma en mano y un cargador en la otra

esta es la funciуn que hace al spawnear al jugador:

Код:
if(ManoDer > 0) //Si tiene algo en la mano derecha
			{
			PonerObjeto(playerid, 1, ManoDer);
			if(ObjetoInfo[ManoDer][IDArma] > 0) //Es un arma
			{
			GivePlayerWeaponEx(playerid, ObjetoInfo[ManoDer][IDArma], PlayerInfo[playerid][pManoDerCant]); //Le da el arma
			}
			}
Reply
#6

Puedes usar asн, pero lo que te recomiendo serнa, que en cada vez que el player obtenga un arma en йse momento le metas en las variables, y asi mismo cuando deja el arma, y en onplayerdisconnect allн si, pones sin bucles.
PHP код:
public OnPlayerDisconnect(playeridreason)
            {
            
//save de sistemas
            
new INI:File INI_Open(UserPath(playerid)),weapons[13][2];
            
INI_SetTag(File,"data");
            
INI_WriteInt(File,"bolsillo",PlayerInfo[playerid][pBol][0]);
            
INI_WriteInt(File,"bolsillo1",PlayerInfo[playerid][pBol][1]);
            
INI_WriteInt(File,"bolsillo2",PlayerInfo[playerid][pBol][2]);
            
INI_WriteInt(File,"bolsillo3",PlayerInfo[playerid][pBol][3]);
            
INI_WriteInt(File,"bolsillo4",PlayerInfo[playerid][pBol][4]);
            
INI_WriteInt(File,"bolsillo5",PlayerInfo[playerid][pBol][5]);
            
INI_WriteInt(File,"bolsillo6",PlayerInfo[playerid][pBol][6]);
            
INI_WriteInt(File,"bolsillo7",PlayerInfo[playerid][pBol][7]);
            
INI_WriteInt(File,"Manoizq",PlayerInfo[playerid][pManoIzq]);
            
INI_WriteInt(File,"Espalda",PlayerInfo[playerid][pEspalda]);
            
INI_WriteInt(File,"ManoizqCant",PlayerInfo[playerid][pManoIzqCant]);
            
INI_WriteInt(File,"EspaldaCant",PlayerInfo[playerid][pEspaldaCant]);
            for (new 
0<= 12i++)
            {
                
GetPlayerWeaponData(playeridiweapons[i][0], weapons[i][1]);
                if(
weapons[i][0] > 0)
                {
                    
PlayerInfo[playerid][pManoDer] = weapons[i][0];
                    
PlayerInfo[playerid][pManoDerCant] = weapons[i][1];
                }
            }
            
INI_WriteInt(File,"ManoDer",PlayerInfo[playerid][pManoDer]);
            
INI_WriteInt(File,"ManoDerCant",PlayerInfo[playerid][pManoDerCant]);
            
INI_WriteInt(File,"bolcant",PlayerInfo[playerid][pBolCant][0]);
            
INI_WriteInt(File,"bolcant1",PlayerInfo[playerid][pBolCant][1]);
            
INI_WriteInt(File,"bolcant2",PlayerInfo[playerid][pBolCant][2]);
            
INI_WriteInt(File,"bolcant3",PlayerInfo[playerid][pBolCant][3]);
            
INI_WriteInt(File,"bolcant4",PlayerInfo[playerid][pBolCant][4]);
            
INI_WriteInt(File,"bolcant5",PlayerInfo[playerid][pBolCant][5]);
            
INI_WriteInt(File,"bolcant6",PlayerInfo[playerid][pBolCant][6]);
            
INI_WriteInt(File,"bolcant7",PlayerInfo[playerid][pBolCant][7]);
                                
INI_Close(File); 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)