Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2016-12-29, 18:35


ptstruck







Wiek: 30
Na forum: 3510 dni
Posty: 9



Respekt: 50

Witam

Mam problem z pobieraniem pieni?dzy z bazy danych,
tj. pieni?dze przy wychodzeniu z serwera zapisuj? si? do niej, ale przy wchodzeniu si? resetuj?.
Gdy usun??em funkcj? ResetPlayerMoney(playerid); przy wchodzeniu na serwer pieni?dze si? ju? nie usuwa?y, ale mno?y?y za ka?dym razem x2.
O co mo?e chodzi??

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-12-29, 18:56


WWilk1







Wiek: 30
Na forum: 4699 dni
Posty: 116
Nick w MP: eep.Wilk

Piwa: 147

Respekt: 130
Respekt: 130

Je?li zapisujesz ilo?? pieni?dzy to mo?esz resetowa? w dialogu logowania, a p??niej po wczytaniu przypisywa? graczowi.
Mo?e zamiast przypisywa? do tablicy w kt?rej przechowujesz ilo?? pieni?dzy to j? dodajesz i to powoduje ten problem
Bez kodu ci??ko cokolwiek powiedzie?.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-12-29, 19:03


ptstruck







Wiek: 30
Na forum: 3510 dni
Posty: 9



Respekt: 50

Nie jestem pewien czy o to chodzi ;v
Kod:

stock CheckClient(playerid)
{

new string2[128];

format(string2, sizeof(string2), "select id, score, cash, skin, visits, color from gd_players where nick = '%s'", pInfo[playerid][player_name]);
mysql_query(string2);
mysql_store_result();

if(mysql_num_rows() == 0)return false;

mysql_fetch_row(string2, "|");
mysql_free_result();

sscanf(string2, "p<|>dddddd", pInfo[playerid][player_id], pInfo[playerid][player_score], pInfo[playerid][player_cash], pInfo[playerid][player_skin], pInfo[playerid][player_visits], pInfo[playerid][player_color]);
ResetPlayerMoney(playerid);

GivePlayerMoney(playerid, pInfo[playerid][player_cash]);
SetPlayerScore(playerid, pInfo[playerid][player_score]);

SetPlayerSkin(playerid, pInfo[playerid][player_skin]);
SetPlayerColor(playerid, pInfo[playerid][player_color]);

pInfo[playerid][player_register] = true;
pInfo[playerid][player_logged] = false;

return true;
}


Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-12-29, 19:21


WWilk1







Wiek: 30
Na forum: 4699 dni
Posty: 116
Nick w MP: eep.Wilk

Piwa: 147

Respekt: 130
Respekt: 130

Tutaj wychodzi ?e wszystko jest ok. Podaj tre?? callbacka OnPlayerConnect.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-12-29, 19:28


ptstruck







Wiek: 30
Na forum: 3510 dni
Posty: 9



Respekt: 50

Prosz? bardzo
Kod:

{
playerSession[playerid] = GetTickCount();

if (handlePlayers < playerid)
handlePlayers = playerid;

//------------------------------------------------------

TextDrawHideForPlayer(playerid, PunktyZaDrift[playerid]);
TextDrawHideForPlayer(playerid, PieniadzeZaDrift[playerid]);

TextDrawSetString(PunktyZaDrift[playerid], " ");
TextDrawSetString(PieniadzeZaDrift[playerid], " ");

PlayerUseDriftCounter[playerid] = 1;

PlayerMoney[playerid] = 0;
PlayerScore[playerid] = 0;

PlayerPositionX[playerid] = 0.0;
PlayerPositionY[playerid] = 0.0;
PlayerPositionZ[playerid] = 0.0;

KillTimer(TimerGracza[playerid]);

//------------------------------------------------------

SavePlayer(playerid);
Enum_Clean(pInfo[playerid], enum_pInfo);

pInfo[playerid][player_connectedupdate] = gettime();

new color = random(255*255*255);
SetPlayerColor(playerid, color);
pInfo[playerid][player_color] = color;

new data[32];
GetPlayerName(playerid, data, sizeof(data));
mysql_real_escape_string(data, pInfo[playerid][player_name]);

GetPlayerIp(playerid, data, sizeof(data));
mysql_real_escape_string(data, pInfo[playerid][player_ip]);

if(CheckClient(playerid))
{
ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, "›Login", "Witaj", "Dalej", "Kick");
}


Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-12-29, 19:34


WWilk1







Wiek: 30
Na forum: 4699 dni
Posty: 116
Nick w MP: eep.Wilk

Piwa: 147

Respekt: 130
Respekt: 130

Masz SavePlayer(playerid); podaj tre?? tego callbacka/stocka, bo jestem ciekaw czy on nie s?u?y do zapisywania danych do konta.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-12-29, 19:43


ptstruck







Wiek: 30
Na forum: 3510 dni
Posty: 9



Respekt: 50

Oto i on :D
Kod:

stock SavePlayer(playerid)
{
if(pInfo[playerid][player_id])
{
new time = gettime() - pInfo[playerid][player_connectedupdate];

if(time < 0) time = 0;

new string2[256];

format(string2, sizeof(string2), "update gd_players set score=%d, cash=%d, skin=%d, online=online+%d, color=%d where id=%d", GetPlayerScore(playerid), GetPlayerMoney(playerid), pInfo[playerid][player_skin], time, pInfo[playerid][player_color], pInfo[playerid][player_id]);
mysql_query(string2);

pInfo[playerid][player_connectedupdate] = gettime();
}
}


Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-12-29, 19:46


WWilk1







Wiek: 30
Na forum: 4699 dni
Posty: 116
Nick w MP: eep.Wilk

Piwa: 147

Respekt: 130
Respekt: 130

Tak jak my?la?em s?u?y do zapisu. Usu? SavePlayer(playerid); z callbacka OnPlayerConnect.

Ostatnio zmieniony przez WWilk1 2016-12-29, 20:06, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-12-29, 19:59


ptstruck







Wiek: 30
Na forum: 3510 dni
Posty: 9



Respekt: 50

usuwaj?c SavePlayer(playerid); z OnPlayerConnect nic si? nie zmieni?o, jakie s? jeszcze mo?liwo?ci?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-12-29, 20:23


WWilk1







Wiek: 30
Na forum: 4699 dni
Posty: 116
Nick w MP: eep.Wilk

Piwa: 147

Respekt: 130
Respekt: 130

Podaj tre?? dialogu DIALOG_LOG. W stock CheckClient(playerid) masz
Pawn
if(mysql_num_rows() == 0)return false
tam te? powinno si? zerowa? bufor skoro zamykasz callback. Powinno tak wygl?da?
Pawn
if(mysql_num_rows() == 0)
{
    mysql_free_result(); 
    return false; 
}


Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-12-29, 20:41


ptstruck







Wiek: 30
Na forum: 3510 dni
Posty: 9



Respekt: 50

znowu brak zmian ;/

dialog log rozumiem to?
Kod:


case DIALOG_LOG:
{
if(!response) Kick(playerid);

if(!inputtext[0]){
ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, "›", "{53A9FF}____________________________________________________\n\n{FFFFFF}Witaj na {FFA346}serwerze xxx!\n{FF2020}Poda?e? b??dne has?o\n{FFFFFF}Aby wej?? na serwer musisz poda? has?o:\n\n{53A9FF}____________________________________________________\n\n", "Dalej", "Kick");
return true;
}
if(!PasswordCorrect(inputtext))
{
ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, "›", "{53A9FF}____________________________________________________\n\n{FFFFFF}Witaj na {FFA346}serwerze xxx!\n{FF2020}Poda?e? b??dne has?o\n{FFFFFF}Aby wej?? na serwer musisz poda? has?o:\n\n{53A9FF}____________________________________________________\n\n", "Dalej", "Kick");
return true;
}
new password[34];
mysql_real_escape_string(inputtext, password);

new string2[94];

format(string2, sizeof(string2), "select 1 from gd_players where id=%d and password = md5(md5('%s'))", pInfo[playerid][player_id], password);
mysql_query(string2);
mysql_store_result();

if(mysql_num_rows() == 0)
{
mysql_free_result();
ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, "›", "Poda?e? b??dne has?o\nTwoje konto jest zarejestrowane. \nAby gra? dalej musisz si? zalogowa? :) ", "Dalej", "Kick");
return true;
}
mysql_free_result();
SendClientMessage(playerid, 0xFFCCDDFF, " * Zosta?es zalogowany pomyslnie.");

format(string2, sizeof(string2), "update gd_players set visits=visits+1 where id=%d", pInfo[playerid][player_id]);
mysql_query(string2);

pInfo[playerid][player_logged] = true;
}


Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-12-29, 21:15


WWilk1







Wiek: 30
Na forum: 4699 dni
Posty: 116
Nick w MP: eep.Wilk

Piwa: 147

Respekt: 130
Respekt: 130

My?la?em ?e w dialogu logowania drugi raz wczytujesz, ale jednak nie. Nie polecam Ci wczytywa? danych przed poprawnym zalogowaniem si? do konta. Przez wczytanie wszystkich danych w CheckClient(playerid) mo?e osoba omijaj?ca dialog to wykorzysta? na gre na czyim? koncie.

Wstaw printf("Krok 1: %d", GetPlayerMoney(playerid)); w kilku miejscach(OnPlayerConnect, logowaniu, OnPlayerSpawn)zmieniaj?c w tre?ci cyfre, a wtedy logi powiedz? Ci co gdzie ?le zrobi?e?.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-12-29, 21:33


ptstruck







Wiek: 30
Na forum: 3510 dni
Posty: 9



Respekt: 50

Kod:

case DIALOG_LOG:
{
printf("Krok 3: %d", GetPlayerMoney(playerid));
if(!response) Kick(playerid);


Kod:

public OnPlayerConnect(playerid)
{
printf("Krok 1: %d", GetPlayerMoney(playerid));


Kod:

public OnPlayerSpawn(playerid)
{
printf("Krok 2: %d", GetPlayerMoney(playerid));
for (new i = 0; i < MAX_TD; i++)


co? w ten dese?? wy?o?y?e? mnie tym poleceniem tak szczerze ;/
je?li dobrze wstawi?em, to:
[21:21] Krok 2: 0
[21:21] Krok 3: 0
[21:21] Krok 1: 0

Postaw piwo autorowi tego posta
 

 
Tagi: wczytywanie :: pieniędzy :: bazy :: danych
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN » Wczytywanie pieniędzy z bazy danych Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku