Jump to content
  • 0

pomoc MySQL a banka


SilientNinja

Dotaz

Popis problému:

Čaute,

prosím o radu, mám problém v tom, že když například hráč 1 uloží peníze do banky, tak se v mysql přepíše a uloží všem hráčům, stejně tak s výběrem. Takže když třeba hráč 2 chce vybrat peníze, tak vybírá z těch co uložil hráč 1.

Pro lepší pochopení posílám screen :-D

 

V kódu jsem přiložil stock od uložení bankovního účtu, a uložení peněz na bankovní účet. Protože předpokládám že s tím výběrem bude stejnej problém, tak nemá cenu ho posílat. :-D

 

Screen: https://imgur.com/a/xcUuP

 

Chyby/varování kompilátoru a při běhu:

--

 

Kód:

 

Přikládám stock uložení peněz:[code=auto:0]
stock UlozitPenizeBanka(playerid,castka)
{
	if(castka <= 0) return SCM(playerid,"~b~~h~~h~Nemate u sebe zadne penize na ulozeni");
    new string[90];
	DatPenize(playerid,-castka);
	InfoHrace[playerid][BANKA_PENIZE] += castka;
	UlozitBankovniUcet(playerid);
	format(string,sizeof(string),"~b~~h~~h~Ulozil si na konto ~w~%s$~b~~h~~h~, stav konta ~w~%s$",CisloSMezerami(castka),CisloSMezerami(InfoHrace[playerid][BANKA_PENIZE]));
	SCM(playerid,string);
	return 1;
}
[/code]
Přikládám stock Uložení bankovního účtu:[code=:0]
stock UlozitBankovniUcet(playerid)
{
	new query[80];
	if(InfoHrace[playerid][BANKA_PENIZE] != -1)
	{
		format(query,sizeof(query),"UPDATE konta SET Penize=%d,Pojisteni=%d,Posilani=%d WHERE Vlastnik='%s'",InfoHrace[playerid][BANKA_PENIZE],InfoHrace[playerid][BANKA_POJISTENI],InfoHrace[playerid][BANKA_POSILANI],PlayerName(playerid));
		mysql_q(query,false);
	}
	format(query,sizeof(query),"UPDATE ucty SET Penize=%d WHERE Username='%s'",GetMoney(playerid),PlayerName(playerid));
	mysql_q(query,false);
}
[/code]

 

 

 

Dodatečné poznámky:

--

Link to comment
Share on other sites

8 odpovědí na tuto otázku

Recommended Posts

  • 0

Asi jsi to zvetsil malo.

Naco updatovat udaje, ktere se nezmenily

format(query,sizeof(query),"UPDATE konta SET Penize=%d WHERE Vlastnik='%s'",InfoHrace[playerid][BANKA_PENIZE],PlayerName(playerid));
print(query);//skontroluj si spravnost prikazu

Jinak bych rozhodne pro druhou tabulku pouzil cizi klic k tabulce prvni. Uchovavat stejnou hodnotu na dve mista. To smrdi nekonzistentnosti dat.

Edited by ATomas
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

Zkusil jsem to zvětšit i na nelogickou hodnotu. Stále nic. :-/
 
A zjistil jsem, že to s tím uložením účtu nemá nic společnýho, páč jsem zkusil smazat to uložení (následovně)

 
 

stock UlozitPenizeBanka(playerid,castka)
{
	if(castka <= 0) return SCM(playerid,"~b~~h~~h~Nemate u sebe zadne penize na ulozeni");
    new string[200];
	DatPenize(playerid,-castka);
	InfoHrace[playerid][BANKA_PENIZE] += castka;
        format(string,sizeof(string),"~b~~h~~h~Ulozil si na konto ~w~%s$~b~~h~~h~, stav konta ~w~%s$",CisloSMezerami(castka),CisloSMezerami(InfoHrace[playerid][BANKA_PENIZE]));
	SCM(playerid,string);
	return 1;
}

V čem může bejt problém potom?

Edited by SilientNinja
Link to comment
Share on other sites

  • 0

Zkusil jsem to zvětšit i na nelogickou hodnotu. Stále nic. :-/

 

A zjistil jsem, že to s tím uložením účtu nemá nic společnýho, páč jsem zkusil smazat to uložení (následovně)

 

 

stock UlozitPenizeBanka(playerid,castka)
{
	if(castka <= 0) return SCM(playerid,"~b~~h~~h~Nemate u sebe zadne penize na ulozeni");
    new string[200];
	DatPenize(playerid,-castka);
	InfoHrace[playerid][BANKA_PENIZE] += castka;
        format(string,sizeof(string),"~b~~h~~h~Ulozil si na konto ~w~%s$~b~~h~~h~, stav konta ~w~%s$",CisloSMezerami(castka),CisloSMezerami(InfoHrace[playerid][BANKA_PENIZE]));
	SCM(playerid,string);
	return 1;
}

V čem může bejt problém potom?

 

Vôbec nechápem teraz čo riešiš... Skús sa vyjadrovať poriadne!

 

Čo sleduješ tým že si zmazal query? Teraz to logicky s databázou nič nespraví...

+ ATomas ti n apísal že si tam máš dať print toho query, aby si vedel či ti tam nepíše nejaké ptákoviny

Link to comment
Share on other sites

  • 0

Jak psal ATomas

 

Naco updatovat udaje, ktere se nezmenily format(query,sizeof(query),"UPDATE konta SET Penize=%d WHERE Vlastnik='%s'",InfoHrace[playerid][bANKA_PENIZE],PlayerName(playerid)); print(query);//skontroluj si spravnost prikazu

 

Ty údaje se mění, ten stock uložení účtu používám pro více věcí, nejen pro vklady a výběry.

Tím myslím to, že když si někdo zařídí např. pojištění účtu, tak se to neuloží do mysql hned, ale až po odpojení (při odpojení je tam to uložení všeho.)
 

 

A tím odebráním toho " UlozitBankovniUcet(playerid); " jak jsem psal.. z " stock UlozitPenizeBanka(playerid,castka) " jsem chtěl zjistit, jestli to na to nemá nějaký vliv.wacko.png

Link to comment
Share on other sites

  • 0

Už to mám! icon_e_wink.gif

 

Díky za pomoc, problém byl v tom, že se to ukládalo podle nějaké hodnoty, kterou měli všichni stejnou, a né podle jména.

To print(query); mi docela dost pomohlo.

 

Ještě jednou děkuju. :)

 

oboum +rep

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...