Jump to content

Question

Posted

Salut..am 'incercat' sa fac un fs cu sqlite..sa salveze bani,score,deaths..mam inspirat din mai multe scripturi cu sqlite..pn aici tot bine.nu am errori/warn.totul e perfect..dar cand intru in fisierul DB.nu imi arata coloanele.

cu coloane:

http://postimage.org/image/cbm39bcb5/

fara coloane

http://postimage.org/image/nktwgag4v/

uitati si scriptul

http://pastebin.com/f0P6zfY6

nu stiu de ce nu imi arata coloanele??...'cred' ca am facut totul bine..

ce trebuie sa mai pun in script ca sa imi arate coloanele??

merci

plQ8h9B.jpg

4 answers to this question

Recommended Posts

Posted

Schimba asta

db_free_result(db_query(Database,"CREATE TABLE IF NOT EXISTS `Database`(`Key`INTEGER PRIMARY KEY AUTOINCREMENT,\
                                                                                                                         `Nume`TEXT,\
                                                                                                                         `Bani`NUMERIC,\
                                                                                                                         `Score`NUMERIC,\
                                                                                                                         `Deaths`NUMERIC)"));
cu asta:
db_query(Database,"CREATE TABLE IF NOT EXISTS `Database`(`Key`INTEGER PRIMARY KEY AUTOINCREMENT,\
                                                                                                                         `Nume`VARCHAR(10),\
                                                                                                                         `Bani`INT(10),\
                                                                                                                         `Score`INT(10),\
                                                                                                                         `Deaths`INT(10)");

3r4AlPA.png

Posted

Acum m-am uitat mai atent la tot scriptul tau si pot spune ca e cam aiurea...

Schimba asta:

public OnPlayerConnect(playerid)
{
new nume[30],DBResult:Rezultat;
GetPlayerName(playerid,nume,30);
format(Query,2048,"SELECT `Key`,`Bani`,`Score`,`Deaths` FROM `Database` WHERE `nume` = '%s'",nume);
Rezultat = db_query(Database,Query);
if(db_num_rows(Rezultat) == 1 )
{
new field[2048];
db_get_field_assoc(Rezultat,"Bani",field,2048);
db_get_field_assoc(Rezultat,"Score",field,2048);
db_get_field_assoc(Rezultat,"Deaths",field,2048);
P_DATA[playerid][Bani] = strval(field);
P_DATA[playerid][Score] = strval(field);
P_DATA[playerid][Deaths] = strval(field);
}
else
{
format(Query,2048,"INSERT INTO `Database` VALUES (NULL,'%s','%d','%d','%d')",nume,P_DATA[playerid][Bani] = 0,P_DATA[playerid][Score] = 0,P_DATA[playerid][Deaths] = 0);
}
db_free_result(Rezultat);
return 1;
}
In asta:
public OnPlayerConnect(playerid)
{
new nume[30],DBResult:Rezultat;
GetPlayerName(playerid,nume,30);
format(Query,2048,"SELECT `Key`,`Bani`,`Score`,`Deaths` FROM `Database` WHERE `nume` = '%s'",nume);
Rezultat = db_query(Database,Query);
if(db_num_rows(Rezultat) == 1 )
{
new field[2048];
db_get_field_assoc(Rezultat,"Bani",field,2048);
P_DATA[playerid][Bani] = strval(field);
db_get_field_assoc(Rezultat,"Score",field,2048);
P_DATA[playerid][Score] = strval(field);
db_get_field_assoc(Rezultat,"Deaths",field,2048);
P_DATA[playerid][Deaths] = strval(field);
}
else
{
format(Query,2048,"INSERT INTO `Database` (`nume`, `Bani`, `Score`, `Deaths`) VALUES (%s','%d','%d','%d')",nume, P_DATA[playerid][Bani] = 0,P_DATA[playerid][Score] = 0,P_DATA[playerid][Deaths] = 0);
}
db_free_result(Rezultat);
return 1;
}
Spre exemplu aici:
db_get_field_assoc(Rezultat,"Bani",field,2048);
db_get_field_assoc(Rezultat,"Score",field,2048);
db_get_field_assoc(Rezultat,"Deaths",field,2048);
P_DATA[playerid][Bani] = strval(field);
P_DATA[playerid][Score] = strval(field);
P_DATA[playerid][Deaths] = strval(field);
Preiei rezultatele din baza de date intr-o variabila numita "field" ce e inlocuita cu o noua valoare de fiecare data cand preiei o data din baza de data prin "db_get_field_assoc(Rezultat,"Bani",field,2048);" asta insemnand ca variabilelele "P_Data" v-or avea toate valoarea de la "Deaths". Ar mai fi de mentionat ca nu ai nevoie de un string atat de mare... poti folosii unul de 100... Cum ar trebuii sa arate codul de mai sus e astfel:
new field[100];
db_get_field_assoc(Rezultat,"Bani",field,100);
P_DATA[playerid][Bani] = strval(field);
db_get_field_assoc(Rezultat,"Score",field,100);
P_DATA[playerid][Score] = strval(field);
db_get_field_assoc(Rezultat,"Deaths",field,100);
P_DATA[playerid][Deaths] = strval(field);
In al doilea rand aici:
public OnPlayerDisconnect(playerid, reason)
{
new nume[30];
GetPlayerName(playerid,nume,30);
format(Query,2048,"UPDATE `Database` SET `nume` = '%s',`Bani` = '%d',`Score` = '%d',`Deaths` = '%d'",nume,P_DATA[playerid][Bani],P_DATA[playerid][Score],P_DATA[playerid][Deaths]);
db_free_result(db_query(Database,Query));
return 1;
}
Tu mai sus prin statement-ul "UPDATE" actualizezi date din baza de date... greseala pe care o faci e ca actualizezi si numele din baza de date de fiecare data cand un jucator se deconecteaza ceea ce nu vrei sa se intample... Mai jos e cum ar trebuii sa fie...
public OnPlayerDisconnect(playerid, reason)
{
new nume[30];
GetPlayerName(playerid,nume,30);
format(Query,2048,"UPDATE `Database` SET `Bani` = '%d',`Score` = '%d',`Deaths` = '%d' WHERE `nume` = '%s'", P_DATA[playerid][Bani],P_DATA[playerid][Score],P_DATA[playerid][Deaths], name);
db_free_result(db_query(Database,Query));
return 1;
}

Dupa cum vezi in acest "Query" apare si statement-ul "WHERE" care in traducere inseamna "Unde" ce ii spune server-ului sa actualizeze (UPDATE) datele din baza de date acolo unde numele este egal cu numele jucatorului.

3r4AlPA.png

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • 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.