Jump to content
Autentificarea cu Google și Facebook nu mai este disponibilă. ×

Question

Posted

 

Deci, vr sa fac un sistem de skin-uri, aici vreau sa testez daca insereaza in baza de date, vreau sa fac sa insereze de exeplu |25|36| dar nu pot nici 25 sa inserez, ma puteti ajuta va rog frumos sau sa mi dai o alta idee de facut acest sistem. Multumesc

5 answers to this question

Recommended Posts

  • 0
Posted

Eu zic ca aceste functii sunt destul de complicate pentru tine, te sfatuiesc sa incepi cu ceva usor pentru inceput.

Daca ai dat return deja nu mai trebuie sa deschizi acoladele pentru ca nu are logica. Elimina acoladele care contin queryul in care schimbi valorile de la premiumskin + ca query-ul este gresit complet... Eu zic sa imi asculti sfatul!

  • 0
Posted (edited)

Modalitatea asta de salvare e veche si ineficienta. Modalitatea ce mai buna e sa faci un alt tabel in baza "PremiumSkin" sau ceva gen in care sa inserezi fiecare skin cumparat de player. Si astfel la login ii incarci skinurile intr-un array si el doar scrie un numar(index) si primeste skin din array respectiv la index x. 

Structura tabelului: 

CREATE TABLE PremiumSkin(
    id int NOT NULL,
    player_id int NOT NULL,
    skin int NOT NULL,
    UNIQUE (skin),
    PRIMARY KEY(id)
);

Ca sa salvezi(inserezi un skin): 

new query[129];
mysql_format(SQL, query, sizeof(query), "INSERT INTO PremiumSkin (player_id, skin) VALUES (%i, %i)", pSQLID, skin);
mysql_tquery(SQL, query);

Ca sa schimbi un anumit skin(playerului poate nu-i place skin x si vrea skin y): 

new query[129];
mysql_format(SQL, query, sizeof(query), "UPDATE PremiumSkin SET skin = %i WHERE player_id = %i AND skin = %i", skindorit, pSQLID, skinactual);
mysql_tquery(SQL, query);

Ca sa incarci skinurile: 

//OnPlayerLogin
new query[90];
mysql_format(SQL, query, sizeof(query), "SELECT * FROM Premiumskin WHEREE player_id = %i", pSQLID);
new Cache: queryResult = mysql_query(SQL, query, true);
if(cache_num_rows())
{
    new rows = cache_num_rows();
    for(new row = 0; row < rows;  row++)
    {
        PlayerInfo[playerid][Skins][row] = cache_get_field_content_int(row, "skin");
    }
}
cache_delete(queryResult);

Cand ai de a face cu multiple variabile de gne: skin1, skin2, skin3 etc sau orice o fi e mult mai bine sa faci un tabel separat pentru ele decat sa incarci tabelul de users/players cu ele

Edited by Banditul
  • 0
Posted (edited)
Acum 9 ore, Mister a spus:

 

Tutorialul tau este ineficient in acest caz. N-ai de unde stii cate skin-uri are jucatorul sau din cate numere este format-ul id-ul skin-ului de pe locul x din sirul 25|56|123|301|2|1... E posibil, insa necesita verificari multe si nu e optim.

image.thumb.png.06ae8cdc9199c8e975c64504e18272ea.png

Un tutorial de pe sa-mp.com facut de Emmet_ iti arata cum poti folosi sscanf delimiter. In linii generale este simplu, insa va trebui sa pui capul in miscare, sa te gandesti cum sa incarci datele.

Edited by L0K3D_Hokage
  • 0
Posted
3 hours ago, Banditul said:

Modalitatea asta de salvare e veche si ineficienta. Modalitatea ce mai buna e sa faci un alt tabel in baza "PremiumSkin" sau ceva gen in care sa inserezi fiecare skin cumparat de player. Si astfel la login ii incarci skinurile intr-un array si el doar scrie un numar(index) si primeste skin din array respectiv la index x. 

Structura tabelului: 


CREATE TABLE PremiumSkin(
    id int NOT NULL,
    player_id int NOT NULL,
    skin int NOT NULL,
    UNIQUE (skin),
    PRIMARY KEY(id)
);

Ca sa salvezi(inserezi un skin): 


new query[129];
mysql_format(SQL, query, sizeof(query), "INSERT INTO PremiumSkin (player_id, skin) VALUES (%i, %i)", pSQLID, skin);
mysql_tquery(SQL, query);

Ca sa schimbi un anumit skin(playerului poate nu-i place skin x si vrea skin y): 


new query[129];
mysql_format(SQL, query, sizeof(query), "UPDATE PremiumSkin SET skin = %i WHERE player_id = %i AND skin = %i", skindorit, pSQLID, skinactual);
mysql_tquery(SQL, query);

Ca sa incarci skinurile: 


//OnPlayerLogin
new query[90];
mysql_format(SQL, query, sizeof(query), "SELECT * FROM Premiumskin WHEREE player_id = %i", pSQLID);
new Cache: queryResult = mysql_query(SQL, query, true);
if(cache_num_rows())
{
    new rows = cache_num_rows();
    for(new row = 0; row < rows;  row++)
    {
        PlayerInfo[playerid][Skins][row] = cache_get_field_content_int(row, "skin");
    }
}
cache_delete(queryResult);

Cand ai de a face cu multiple variabile de gne: skin1, skin2, skin3 etc sau orice o fi e mult mai bine sa faci un tabel separat pentru ele decat sa incarci tabelul de users/players cu ele

Voi incerca. Multumesc

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...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.