IosifR Posted April 17, 2021 Posted April 17, 2021 HELLO Cine imi poate zice cum pot sa fac sa salveze si bani si levelul ? Am facut sistem login register de pe tutorialul lui @WiDuAlK, am mai facut niste modificari, etc.. Dar nu salevaza bani si levelul ma ajuta cnv
Banditul Posted April 17, 2021 Posted April 17, 2021 Daca arati ce cod ai facut, poate intelegem si noi ce ai facut gresit si ce trebuie reparat
IosifR Posted April 17, 2021 Author Posted April 17, 2021 (edited) Acum 2 ore, Banditul a spus: Daca arati ce cod ai facut, poate intelegem si noi ce ai facut gresit si ce trebuie reparat E fix codul care l-a facut WiDuAIK, doar ca eu am editat putin textele.. Si cand incerc sa fac sa salveze bani si lvlul imi da o gramada de erori.. (Am incercat sa-l fac singur, sa mai ma uit in alte gmuri.. pentru ca nu am gasit nik pe net) Si.... uite ca am apelat la sa-mp.ro Edited April 17, 2021 by IosifR
Banditul Posted April 17, 2021 Posted April 17, 2021 PS: Doar ce am recitit topicul si te intrebi cum ai putea adauga un astfel de sistem. Daca te referi la acest tutorial Din pacate in topic nu specifica nimic despre bani/level care din codul prezent in topic nu ar avea cum sa fie salvate mai ales ca nici schema bazei de date nu contine aceste date. Desigur totusi ne poti arata ce ai incercat sa faci si ce erori primesti ca sa iti putem indica problemele si ce poti repara dar iti ofer un mic cod eventual care sper ca te poate ajuta. Va fi nevoie sa adaugi tu in baza date cum ti-a fost explicat si in tutorial coloana pentru bani si level enum pInfo { pParola, pID, Money, // Adaugi acestea la pInfo Level // Evident le redenumesti cum doresti }; new P_Data[MAX_PLAYERS][pInfo]; GiveMoneyToPlayer(playerid, money) { P_Data[playerid][Money] += money; mysql_format(handle, query, sizeof(query), "UPDATE conturi SET `Money` = %i WHERE ID = %i", P_Data[playerid][Money], P_Data[playerid][pID]); mysql_tquery(handle, query); ResetPlayerMoney(playerid); GivePlayerMoney(playerid, P_Data[playerid][Money]); } GivePlayerLevel(playerid, level) { P_Data[playerid][Level] += level; mysql_format(handle, query, sizeof(query), "UPDATE conturi SET `Level` = %i WHERE ID = %i", P_Data[playerid][Level], P_Data[playerid][pID]); mysql_tquery(handle, query); SetPlayerScore(playerid, P_Data[playerid][Level]) // Presupun ca level se reflecta in tabelul de score } forward OnLogin(playerid); public OnLogin(playerid) { new rows, fields,temporar[200]; cache_get_data(rows, fields); if(rows) { cache_get_field_content(0, "Parola",temporar), format(P_Data[playerid][pParola], 25, temporar); P_Data[playerid][pID] = cache_get_field_content_int(0, "ID"); P_Data[playerid][Money] = cache_get_field_content_int(0, "Money"); ResetPlayerMoney(playerid); GivePlayerMoney(playerid, P_Data[playerid][Money]); // Ii resetam bani si ii oferim ce ar in baza de date astfel incat bani pe care ii vede in joc sa fie aceiasi P_Data[playerid][Level] = cache_get_field_content_int(0, "Level"); SetPlayerScore(playerid, P_Data[playerid][Level]) SpawnPlayer(playerid); } else { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Te rog sa iti introduci parola corecta, pentru a te loga pe server.", "Logare", "Exit");// ii va da dialogul cu mesajul specific. } return 1; } Poti folosi aceste 2 functii pe care ti le-am dat pentru a oferi jucatorului bani/level acolo unde ai nevoie. Astfel incat sa nu fi nevoit sa tot copiezi acelasi cod peste tot, doar chemi functia.
IosifR Posted April 17, 2021 Author Posted April 17, 2021 Acum 27 minute, Banditul a spus: PS: Doar ce am recitit topicul si te intrebi cum ai putea adauga un astfel de sistem. Daca te referi la acest tutorial Din pacate in topic nu specifica nimic despre bani/level care din codul prezent in topic nu ar avea cum sa fie salvate mai ales ca nici schema bazei de date nu contine aceste date. Desigur totusi ne poti arata ce ai incercat sa faci si ce erori primesti ca sa iti putem indica problemele si ce poti repara dar iti ofer un mic cod eventual care sper ca te poate ajuta. Va fi nevoie sa adaugi tu in baza date cum ti-a fost explicat si in tutorial coloana pentru bani si level enum pInfo { pParola, pID, Money, // Adaugi acestea la pInfo Level // Evident le redenumesti cum doresti }; new P_Data[MAX_PLAYERS][pInfo]; GiveMoneyToPlayer(playerid, money) { P_Data[playerid][Money] += money; mysql_format(handle, query, sizeof(query), "UPDATE conturi SET `Money` = %i WHERE ID = %i", P_Data[playerid][Money], P_Data[playerid][pID]); mysql_tquery(handle, query); ResetPlayerMoney(playerid); GivePlayerMoney(playerid, P_Data[playerid][Money]); } GivePlayerLevel(playerid, level) { P_Data[playerid][Level] += level; mysql_format(handle, query, sizeof(query), "UPDATE conturi SET `Level` = %i WHERE ID = %i", P_Data[playerid][Level], P_Data[playerid][pID]); mysql_tquery(handle, query); SetPlayerScore(playerid, P_Data[playerid][Level]) // Presupun ca level se reflecta in tabelul de score } forward OnLogin(playerid); public OnLogin(playerid) { new rows, fields,temporar[200]; cache_get_data(rows, fields); if(rows) { cache_get_field_content(0, "Parola",temporar), format(P_Data[playerid][pParola], 25, temporar); P_Data[playerid][pID] = cache_get_field_content_int(0, "ID"); P_Data[playerid][Money] = cache_get_field_content_int(0, "Money"); ResetPlayerMoney(playerid); GivePlayerMoney(playerid, P_Data[playerid][Money]); // Ii resetam bani si ii oferim ce ar in baza de date astfel incat bani pe care ii vede in joc sa fie aceiasi P_Data[playerid][Level] = cache_get_field_content_int(0, "Level"); SetPlayerScore(playerid, P_Data[playerid][Level]) SpawnPlayer(playerid); } else { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Te rog sa iti introduci parola corecta, pentru a te loga pe server.", "Logare", "Exit");// ii va da dialogul cu mesajul specific. } return 1; } Poti folosi aceste 2 functii pe care ti le-am dat pentru a oferi jucatorului bani/level acolo unde ai nevoie. Astfel incat sa nu fi nevoit sa tot copiezi acelasi cod peste tot, doar chemi functia. Ms foarte multt. Fix la astea greseam: mysql_format(handle, query, sizeof(query), "UPDATE conturi SET `Money` = %i WHERE ID = %i", P_Data[playerid][Money], P_Data[playerid][pID]); in loc sa pun mysql_format am pus mysql_Query Si nu puneam handle Am sa incerc sa-l fac daca nu merge ceva bine am sa dau un edit... probabil maine
IosifR Posted April 18, 2021 Author Posted April 18, 2021 Salut, a mers ce mi-ai dat tu acolo. Dar... Am facut comanda buylevel dar cand dau buylevel nu imi updateaza nivelul, in baza de date si nici in joc. Dar, banii ii ia. RespectPoints-urile nu mi le ia. Dc? ce am facut gresit in comanda asta Citat CMD:buylevel(playerid, params[]) { new respect = (P_Data[playerid][pLevel] * 3), money = (P_Data[playerid][pLevel] * 250); if(P_Data[playerid][pRespectPoints] < respect) return SCM(playerid, color_error, "Nu ai destule respect points!"); if(GetPlayerMoney(playerid) < money) return SCM(playerid, color_error, "Nu ai destui bani!"); new string[64]; GivePlayerMoney(playerid, -money); P_Data[playerid][pRespectPoints] -= respect; P_Data[playerid][pLevel] ++; mysql_format(playerid, "UPDATE `conturi` SET `RespectPoints` = '%d', `Level` = '%d' WHERE `ID` = '%d'", P_Data[playerid][pRespectPoints], P_Data[playerid][pLevel], P_Data[playerid][pID]); format(string, sizeof(string), "Ai avansat la nivel %d!", P_Data[playerid][pLevel]); SendClientMessage(playerid, color_gray, string); return 1; }
NERS Posted April 18, 2021 Posted April 18, 2021 (edited) schimba linia cu mysql format in asta: mysql_format(handle, string, sizeof(string), "UPDATE `conturi` SET `RespectPoints` = '%d', `Level` = '%d' WHERE `ID` = '%d'", P_Data[playerid][pRespectPoints], P_Data[playerid][pLevel], P_Data[playerid][pID]); si dedesubt adauga: mysql_tquery(handle, string, "", ""); Edited April 18, 2021 by NERS
Banditul Posted April 18, 2021 Posted April 18, 2021 Edit: Si mysql_format cum a mentioant NERS Ai uitat sa pui mysql_tquery(handle, query); Dupa mysql_format, nu e de aajuns doar sa scrii query trebuie sa si executi 1
IosifR Posted April 18, 2021 Author Posted April 18, 2021 Citat error 017: undefined symbol "query" Linia: Citat mysql_tquery(handle, query);
IosifR Posted April 18, 2021 Author Posted April 18, 2021 Acum 3 minute, NERS a spus: mysql_tquery(handle, string, "", ""); nah, tot asa e: Acum 35 minute, IosifR a spus: Salut, a mers ce mi-ai dat tu acolo. Dar... Am facut comanda buylevel dar cand dau buylevel nu imi updateaza nivelul, in baza de date si nici in joc. Dar, banii ii ia. RespectPoints-urile nu mi le ia. Dc? ce am facut gresit in comanda asta
testX Posted April 18, 2021 Posted April 18, 2021 (edited) Acum 34 minute, NERS a spus: schimba linia cu mysql format in asta: mysql_format(handle, string, sizeof(string), "UPDATE `conturi` SET `RespectPoints` = '%d', `Level` = '%d' WHERE `ID` = '%d'", P_Data[playerid][pRespectPoints], P_Data[playerid][pLevel], P_Data[playerid][pID]); si dedesubt adauga: mysql_tquery(handle, string, "", ""); @IosifR Ti-a explicat el ca la ####, iti e lene sa citesti? Si oricum trebuie marit string-ul la 80-85 ca are 77 de caractere @IosifR Pune mana si uita-te pe tutoriale intai de mysql, nu ca ai facut si iti da eroare sau ca nu primeste update la baza de date Edited April 18, 2021 by iSkull
IosifR Posted April 18, 2021 Author Posted April 18, 2021 (edited) Acum 32 minute, iSkull a spus: @IosifR Ti-a explicat el ca la ####, iti e lene sa citesti? Si oricum trebuie marit string-ul la 80-85 ca are 77 de caractere @IosifR Pune mana si uita-te pe tutoriale intai de mysql, nu ca ai facut si iti da eroare sau ca nu primeste update la baza de date Cine te-a trezit din hibernare? Am facut cum mi-au zis ei doi dar tot asa e. Si eroare cu query am rezolvato dar nu imi da levelu cand dau buylevel si nu imi ia rpurile trebuiea sa pun new query[100]; sus Nu toata lumea e asa desteapta ca tine Edited April 18, 2021 by IosifR
Recommended Posts