Skocz do zawartości
Roboterminator©

Problem z zapisem

Rekomendowane odpowiedzi

Witam panowie mam pewny problem :/ Chodzi o to ze napisalem sobie zapis statystyk graczy. Narazie zrobilem sobie to na komende ze testnac czy chodzi i tutaj niestety problem. Nie wywala errorow z crashdetect i ogolnie tylko nie zapisuje do bazy danych 

SavePlayer(x)
{
if(Zarejestrowany[x] && Player[x][Logged] && savees[x])
{
new string[900];
format(string, sizeof string, "UPDATE SavePlayer SET Kills = '%d',Cos = '%d',Kierowca='%d',Deaths = '%d',Exp = '%d',BankMoney = '%d',Visits = '%d',PlayingTime = '%d',Hitman = '%d',Messages = '%d', Jail = '%d',DriftPkt = '%d',FrgDe = '%d',FrgWA = '%d',FrgMI = '%d',FrgSN = '%d',FrgSO = '%d',FrgRpg = '%d',FrgDM = '%d',FrgSH = '%d',FrgHE = '%d',Zlpor = '%d',WalizkaUP = '%d',KodWin = '%d',LogWin = '%d',RegCz = '%d',MaraWin = '%d',FshWin = '%d',MuteCz = '%d',SK = '%d' WHERE Nick = '%s' ",
Player[x][Kills], Player[x][kask], Player[x][Rider], Player[x][Deaths], Player[x][Exp], Player[x][BankMoney], Player[x][Visits], Player[x][PlayingTime], Player[x][Hitman], Player[x][Messages], Player[x][InJail], Player[x][DriftPkt], Player[x][FrgDe], Player[x][FrgWA], Player[x][FrgMI], Player[x][FrgSN], Player[x][FrgSO], Player[x][FrgRpg],
Player[x][FrgDM], Player[x][FrgSH], Player[x][FrgHE], Player[x][Zlpor], Player[x][WalizkaUP], Player[x][KodWin], Player[x][LogWin], Player[x][RegCz], Player[x][MaraWin], Player[x][FshWin], Player[x][MuteCz], PlayerName2(x));
mysql_query(string);
}
}

Wiadomo ze gdy sobie gram na serwerze to chodzi ale po wyjsciu juz mi nie aktualizuje wszystkiego w bazie danych

 

a tak zrobilem komende 

CMD:zapisz(playerid)
{
new strx[255];
format(strx, sizeof strx, "SELECT 1 FROM SavePlayer WHERE Nick = '%s'", PlayerName2(playerid));
mysql_query(strx);
mysql_store_result();
 
if(mysql_num_rows() == 0)
return SendClientMessage(playerid, COLOR_RED2, "›› |błąd| Nie jesteś zarejestrowany(na) !.");
 
SavePlayer(playerid);
SendClientMessage(playerid, COLOR_Fioletowy, "›› |info| Twoje Staty Zapisano. !");
return 1;
}

Z góry dzieki za pomoc 

Edytowane przez Roboterminator©

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Spróbuj tak: 

SavePlayer(x)
{
new strx[255];
format(strx, sizeof strx, "SELECT 1 FROM SavePlayer WHERE Nick = '%s'", PlayerName2(x));
mysql_query(strx);
mysql_store_result();
 
if(mysql_num_rows() == 0)
{
SendClientMessage(x, COLOR_RED2, "›› |błąd| Nie jesteś zarejestrowany(na) !.");
}else{
new string[900];
format(string, sizeof string, "UPDATE SavePlayer SET Kills = '%d',Cos = '%d',Kierowca='%d',Deaths = '%d',Exp = '%d',BankMoney = '%d',Visits = '%d',PlayingTime = '%d',Hitman = '%d',Messages = '%d', Jail = '%d',DriftPkt = '%d',FrgDe = '%d',FrgWA = '%d',FrgMI = '%d',FrgSN = '%d',FrgSO = '%d',FrgRpg = '%d',FrgDM = '%d',FrgSH = '%d',FrgHE = '%d',Zlpor = '%d',WalizkaUP = '%d',KodWin = '%d',LogWin = '%d',RegCz = '%d',MaraWin = '%d',FshWin = '%d',MuteCz = '%d',SK = '%d' WHERE Nick = '%s' ",
Player[x][Kills], Player[x][kask], Player[x][Rider], Player[x][Deaths], Player[x][Exp], Player[x][BankMoney], Player[x][Visits], Player[x][PlayingTime], Player[x][Hitman], Player[x][Messages], Player[x][InJail], Player[x][DriftPkt], Player[x][FrgDe], Player[x][FrgWA], Player[x][FrgMI], Player[x][FrgSN], Player[x][FrgSO], Player[x][FrgRpg],
Player[x][FrgDM], Player[x][FrgSH], Player[x][FrgHE], Player[x][Zlpor], Player[x][WalizkaUP], Player[x][KodWin], Player[x][LogWin], Player[x][RegCz], Player[x][MaraWin], Player[x][FshWin], Player[x][MuteCz], PlayerName2(x));
mysql_query(string);
SendClientMessage(x, COLOR_RED2, "›› |WIELbłąd| Staty zapisano pomyślnie!.");
}
}
CMD:zapisz(playerid, params[])
{
#pragma unused params
SavePlayer(playerid);
return 1;
}

EDIT: Ja zrozumiałem to tak, że funkcja nie chodzi ale jak grasz to chodzi tylko jak wyjdziesz to nie chodzi(?)

Edytowane przez Mr.R

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Mr.R twoj sposob niestety nie dziala :/ chodzilo mi o to ze do zmiennych dodaje ale nic nie robi w bazie danych. 

 

Teraz zaczolem sobie to printowac w konsoli i wyszly mi takie logi (bardzo dziwne)

 

[01:27:49] zapisano UPDATE SavePlayer SET Kills = '0',Cos = '0',Kierowca='0',Deaths = '0',Exp = '0',BankMoney = '0',Visits = '1',PlayingTime = '9',Hitman = '0',Messages = '1', Jail = '0',DriftPkt = '0',FrgDe = '0',FrgWA = '0',FrgMI = '0',FrgSN = '0',FrgSO = '0',FrgRpg = '0',FrgDM = '0',FrgSH = '0',FrgHE = '0',Zlpor = '0',WalizkaUP = '0',KodWin = '0',LogWin = '0',RegCz = '0',MaraWin = '0',FshWin = '0',MuteCz = '0',SK = '0' WHERE Nick = ''

 

Jak widac po Nick nie ma nicku gracza co jest dziwne 

 

taki mam stock od pobierania nicku. Cos w nim moze nie grac ?

 

stock PlayerName2(playerid){
new Name2[MAX_PLAYER_NAME];
GetPlayerName(playerid, Name2, sizeof(Name2));
return Name2;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A to Query działa poprawnie?

format(strx, sizeof strx, "SELECT 1 FROM SavePlayer WHERE Nick = '%s'", PlayerName2(x));

EDIT: zwiększ jeszcze tablice, może jest za krótka 

new string[1024];
Edytowane przez Mr.R

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

taaak tez zprintowalem dla pewnosci i o to wynik 

[01:47:26] test SELECT 1 FROM SavePlayer WHERE Nick = 'kolos'

@edit z rozmiarem tablicy tez kombinowalem i to na marne. Nic nie daje

Edytowane przez Roboterminator©

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak robilem to i nic nie dalo mi bo tez nie zapisywalo niestety :/

 

Teraz gdy dodalem 

mysql_store_result();

pokauje to w logach (gdyby to bylo wazne)

[Wed Mar 04 15:43:34 2015] Error (0): Failed to store result.

@edit Zobacze jeszcze to podzielic na polowe chociaz bo myysle ze tylko w tym problem lezy

Edytowane przez Roboterminator©

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
@up dodalem wlasnie
 
No teraz patrzylem w taki sposob ze dalem osobno ale w jednym bo pomyslow mi juz brakuje... 
 

SavePlayer(x)
{
if(Zarejestrowany[x] && Player[x][Logged] && savees[x])
{
new string[2600];
format(string, sizeof string, "UPDATE SavePlayer SET  Deaths = '%d',FrgMI = '%d',FrgDe = '%d',FrgWA = '%d',FrgSN = '%d',FrgSO = '%d',FrgRpg = '%d',FrgDM = '%d',FrgSH = '%d',FrgHE = '%d',KodWin = '%d',LogWin = '%d',RegCz = '%d',MaraWin = '%d',FshWin = '%d',MuteCz = '%d',SK = '%d' WHERE Nick = '%s'",
Player[x][Deaths],Player[x][FrgMI], Player[x][FrgDe], Player[x][FrgWA],Player[x][FrgSN], Player[x][FrgSO], Player[x][FrgRpg], Player[x][FrgDM], Player[x][FrgSH], Player[x][FrgHE], Player[x][KodWin], Player[x][LogWin], Player[x][RegCz], Player[x][MaraWin], Player[x][FshWin], Player[x][MuteCz], Player[x][SkillP], Player[x][WygrZm], PlayerName2(x));
printf("zapisano %s", string);
printf("Statystki gracza Zapisane poprawnie.", string);
 
format(string, sizeof string, "UPDATE SavePlayer SET Kills = '%d',Cos = '%d',Kierowca='%d',Deaths = '%d',Exp = '%d',BankMoney = '%d',Visits = '%d', Jail = '%d',DriftPkt = '%d',Skin = '%d',Zlpor = '%d',WalizkaUP = '%d',PlayingTime = '%d',Hitman = '%d' WHERE Nick = '%s'",
Player[x][Kills], Player[x][kask], Player[x][Rider], Player[x][Deaths], Player[x][Exp], Player[x][BankMoney], Player[x][Visits], Player[x][InJail], Player[x][DriftPkt],Player[x][SavedSkin], Player[x][Zlpor], Player[x][WalizkaUP], Player[x][PlayingTime], Player[x][Hitman], PlayerName2(x));
mysql_query(string);
mysql_store_result();
mysql_free_result();
printf("zapisano %s", string);
}
else
{
new stringT[255];
printf("Statystki gracza nie zostaly zapisane (NO REGISTER).", stringT);
}
}
 
no i w konsoli otrzymuje rownie dziwny wynik 
[21:05:36] zapisano UPDATE SavePlayer SET  Deaths = '0',FrgMI = '0',FrgDe = '0',FrgWA = '0',FrgSN = '0',FrgSO = '0',FrgRpg = '0',FrgDM = '0',FrgSH = '0',FrgHE = '0',KodWin = '0',LogWin = '0',RegCz = '0',MaraWin = '0',FshWin = '0',MuteCz = '0',SK = '0' WHERE Nick = ''
[21:05:36] Statystki gracza Zapisane poprawnie.
[21:05:36] [MySQL] Error (0): Failed to store result.
[21:05:36] zapisano UPDATE SavePlayer SET Kills = '0',Cos = '0',Kierowca='0',Deaths = '0',Exp = '12',BankMoney = '0',Visits = '5', Jail = '0',DriftPkt = '0',Skin = '29',Zlpor = '0',WalizkaUP = '0',PlayingTime = '28',Hitman = '0' WHERE Nick = 'Cwel[HWDP]'
[21:05:36] [part] Facet[xD] has left the server (0:1)

W tej gornej czesci brakuje znow nicku gracza 

Edytowane przez Roboterminator©

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

mysql_query(string);

mysql_store_result();

mysql_free_result();

printf("zapisano %s", string);

W przypadku zapytań które nie wymagają wyniku nie używaj ani store_result ani free_result.

Edytowane przez eider

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×