Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Pagalbos dėl saugojimo!


Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 423 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki, susidūriau su problėma saugant žaidėjo pinigus. Žaidėjui atsijungus, į duomenų bazė pinigus irašo, tik jie dauginasi. Pvz atsijungei turėdamas 10k, į duomenų bazė irašo 20k.

Kodas:

stock MySQL_Save(playerid)
{
	if( online[playerid] )
	{
	    new
            Float: pos[3], // 0,1,2 - pozicija;
			Query[512];

		printf("Išsaugoma. [%s]", GetPlayerNameEx(playerid));

		GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
	    format( Query,sizeof( Query ),"UPDATE `zaidejai` SET x = '%f', y = '%f', z = '%f' WHERE vardas = '%s'",\
		pos[0],	pos[1], pos[2], GetPlayerNameEx( playerid ));
		mysql_query( Query );


		format( Query, sizeof(Query),"UPDATE `zaidejai` SET pinigai = '%d', patirtis = '%d' WHERE vardas = '%s'",\
		playerDB[playerid][pPinigai], GetPlayerScore(playerid), GetPlayerNameEx(playerid));
		mysql_query( Query );

		format( Query, sizeof(Query),"UPDATE `zaidejai` SET Specialybe = '%i', Apsirengesuniforma = '%i', Uniformosid = '%i', Kurjeriulygis = '%i' WHERE vardas = '%s'",\
		playerDB[playerid][specialybe],playerDB[playerid][apsirengesuniforma],playerDB[playerid][uniformosid],playerDB[playerid][kurjeriulygis], GetPlayerNameEx(playerid));
		mysql_query( Query );
		
		format( Query, sizeof(Query),"UPDATE `zaidejai` SET Alga = '%i', Banke = '%i' WHERE vardas = '%s'",\
		playerDB[playerid][alga],playerDB[playerid][banke], GetPlayerNameEx(playerid));
		mysql_query( Query );

		new Float:HP, Float:ARM;
		GetPlayerArmour(playerid, ARM);
		GetPlayerHealth(playerid, HP);
		format(Query, sizeof(Query), "UPDATE `zaidejai` SET hp = '%f', armour = '%f' WHERE vardas = '%s'",\
		HP,ARM, GetPlayerNameEx(playerid));
		mysql_query(Query);
	}
	return 1;
}

Stock'ai nustatant/duodant pinigus.

stock GetPlayerMoneyEx(playerid)
{
    return playerDB[playerid][pPinigai];
}

stock GivePlayerMoneyEx(playerid, amount)
{
	playerDB[playerid][pPinigai] += amount;
	ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, playerDB[playerid][pPinigai]);
}
stock SetPlayerMoneyEx(playerid,ammount)
{
     ResetPlayerMoney(playerid);
     GivePlayerMoneyEx(playerid,ammount);
     return 1;
}

 

Nuoroda į komentarą
Dalintis per kitą puslapį

22 minutes prieš, FreeTime parašė:

po 

MySQL_Save(playerid);

eilutes, pamegink 

įdėti

playerDB[playerid][pPinigai] = 0;

 

Būtinai po, jeigu virš išvys nebesaugos nieko.

 

Saugojimas susitvarkė, dabar į mysql įrašo normaliai, bet prisijungus dvigubinasi, prieštai dvigubindavosi vos atsijungus, įrašydavo 2x, dabar prisijungus duoda 2x tiktais.

Krovimo kodas:

stock MySQL_Load(playerid)
{
	new
		Float: pos[3], // 0,1,2 - pozicija;
		fetch[16],
	    Query[256];

    format(Query, sizeof(Query), "SELECT * FROM `zaidejai` WHERE vardas = '%s'", GetPlayerNameEx(playerid));
    mysql_query(Query);
	mysql_store_result();
	mysql_retrieve_row();

	mysql_fetch_field_row( fetch, "x" );
	pos[0] = floatstr(fetch);
	mysql_fetch_field_row( fetch, "y" );
	pos[1] = floatstr(fetch);
	mysql_fetch_field_row( fetch, "z" );
	pos[2] = floatstr(fetch);

	SetPlayerPos( playerid, pos[0], pos[1], pos[2] + 0.75);

    mysql_fetch_field_row( fetch,"skin" );          playerDB[playerid][pSkin] = strval(fetch);   	playerDB[playerid][specialybe] = playerDB[playerid][uniformosid];
	mysql_fetch_field_row( fetch,"pinigai" );		playerDB[playerid][pPinigai] = strval(fetch);	GivePlayerMoneyEx(playerid,playerDB[playerid][pPinigai]);
	mysql_fetch_field_row( fetch,"patirtis" );      playerDB[playerid][pPatirtis] = strval(fetch);  SetPlayerScore(playerid, playerDB[playerid][pPatirtis]);
	mysql_fetch_field_row( fetch,"Alga" );      playerDB[playerid][alga] = strval(fetch);  playerDB[playerid][alga] = playerDB[playerid][alga];
	mysql_fetch_field_row( fetch,"Banke" );      playerDB[playerid][banke] = strval(fetch);  playerDB[playerid][banke] = playerDB[playerid][banke];
	mysql_fetch_field_row( fetch,"Specialybe" );    playerDB[playerid][specialybe] = strval(fetch); playerDB[playerid][specialybe] = playerDB[playerid][specialybe];
	mysql_fetch_field_row( fetch,"Uniformosid" );    playerDB[playerid][uniformosid] = strval(fetch); playerDB[playerid][uniformosid] = playerDB[playerid][uniformosid];
	mysql_fetch_field_row( fetch,"Kurjeriulygis" );    playerDB[playerid][kurjeriulygis] = strval(fetch); playerDB[playerid][kurjeriulygis] = playerDB[playerid][kurjeriulygis];
	mysql_fetch_field_row( fetch,"Apsirengesuniforma" );    playerDB[playerid][apsirengesuniforma] = strval(fetch); playerDB[playerid][apsirengesuniforma] = playerDB[playerid][apsirengesuniforma];
	if(playerDB[playerid][apsirengesuniforma] == 1) return SetPlayerSkin(playerid, playerDB[playerid][uniformosid]);
	

	new Float: HP,
	    Float: ARM;

    mysql_fetch_field_row( fetch,"hp" );			HP = floatstr( fetch );		SetPlayerHealth( playerid, HP);
    mysql_fetch_field_row( fetch,"armour" );		ARM = floatstr( fetch );	SetPlayerArmour( playerid, ARM);

	mysql_free_result();

	printf("Pakrautas žaidėjas. [%s]", GetPlayerNameEx(playerid));

	return 1;
}

 

Nuoroda į komentarą
Dalintis per kitą puslapį

32 minutes prieš, ALFRED. parašė:

Užkrauni pinigus į kintamąjį, ir po užkrovimo panaudoji GivePlayerMoneyEx funkciją kuri dar papildomai prideda tiek pat pinigų.

Ačiū labai, susitvarkiau.

Pridėjau stock'e viršuj šitas eilutės:

	new rmoney = GetPlayerMoney(playerid);
	if( rmoney < playerDB[playerid][pPinigai] && rmoney > -1 ) playerDB[playerid][pPinigai] = rmoney;

 

Nuoroda į komentarą
Dalintis per kitą puslapį

  • -SanTa- užrakino šią temą

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 423 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...