Jump to content

[SQLite]Crearea unui V.I.P System


Rimmon

Recommended Posts

Cunostinte necesare

Tutorial

In acest tutorial va voi prezenta cum se face un sistem V.I.P deoarece am vazut pe acest site multe tutoriale despre /buyvip , as fi facut un tutorial despre register/login dar a facut Darky deci nu are rost.

Tutorialul lui darky il puteti gasi aici .

Pentru inceput va trebui sa creem o variabila noua cu prefixul DB:

[pawn]new DB:vips ;[/pawn]

Pentru a vedea ce face DB: urmariti tutorialul Tag-uri de mai sus

Ok , dupa ce am creat aceasta variabila trebuie sa creem baza de date folosind functia db_open , pentru a intelege mai bine trebuie sa cititi tutorialele de mai sus

[pawn]vips = db_open ( "Vips.db" ) ; [/pawn]

De obicei codul de mai sus se pune la public OnGameModeInit/OnFilterScriptInit

Ok , acum dupa ce am facut acest lucru , daca deschidem consola se va crea in scriptfiles automat un fisier .db pe care il puteti deschide cu programul ReadSQL.

Tot sub acelasi cod v-om verifica daca exista sau nu un tabel in db-ul(DataBase-ul) nostru...

[pawn]db_free_result ( db_query ( vips , "CREATE TABLE IF NOT EXISTS `Vips` ( `Key` INTEGER PRIMARY KEY AUTOINCREMENT , \

                                                                  `Name` TEXT ,\

                                                                  `VipL` NUMERIC  )" )  ) ;[/pawn]

Pentru a afla ce am facut mai sus va rog sa urmariti tutorialul "Clauze" si tutorialul "Functii" , dupa ce am creat acest tabel cu coloanele : Key , Name si VipL

Trebuie sa facem inca o noua variabila cu extensia [ MAX_PLAYERS ] pentru ca aceasta variabila trebuie sa fie pentru un player si nu pentru toti playerii

[pawn]new vLevel [ MAX_PLAYERS ] ;[/pawn]

De variabila de mai sus ne vom ajuta pentru a seta levelul unui player...

Acum ca am creat DB-ul trebuie sa trecem la alta parte

Crearea unui cont in tabel

Scrierea in DB este foarte simpla , scrierea se face printr-un format de obicei , folosind clauze

Mai intai v-om crea o variabila globala de tip string ( adica o punem sus in script sub include-uri )

[pawn]new Query [ 100 ] ; [/pawn]

Am creat o vaiabila noua cu numele Query si poate contine 100 de caractere , probabil am pus prea mult ( ma refer la numarul de caractere ) , dar asa sunt eu , risipitor :))

Dupa ce am facut asta , trecem la partea in care creem contul in tabel...

Dupa cum am mai spus pentru a face asta trebuie sa cititi tutorialul cu clauzele SQLite-ului

Sa trecem la treaba...

Prima data v-om verifica daca exista sau nu un cont in acea baza de date , daca exista ii vom insera acelui player levelul care il are in DB daca nu exista il vom crea si ii vom da levelul 0

new
	DBResult:result;
format ( Query , 100 , "SELECT * FROM ` Vips ` WHERE  ` Name ` = ' %s ' " , pName ( playerid ) ) ;
result = db_query ( vips , Query ) ;
Pentru a vedea ce face DBResult urmariti tutorialul Tag-uri de mai sus Cu acest format am selectat tot ( * ) din tabelul `Vips` unde numele playerului este %s , dupa cum vedeti am folosit in acest format pName , daca compilati exact cum am facut eu ve-ri primi eroare din cauza ca voi nu aveti stock-ul pName... Ca sa nu primiti eroare trebuie sa creati urmatorul stock [pawn]stock pName ( playerid ) { new i [ 24 ] ; GetPlayerName ( playerid , i , 24 ) ; return i; } [/pawn] Dupa ce facem asta ne intoarcem la codul de mai sus si v-om verifica daca exista sau nu contul in db cu functia db_num_rows Daca nu stiti ce face functia db_num_rows cititi tutorialul 'Functii'
if ( !db_num_rows ( result ) )
{
	format ( Query , 100 , "INSERT INTO `Vips` VALUES (NULL , '%s' , '%d' ) " , pName ( playerid ) , vLevel [ playerid ] = 0 ) ;
	db_query ( vips , Query ) ;
}
Cu codul de mai sus , daca nu exista acel cont ( nume ) in db-ul Vips se va crea o coloana cu numele playerului si levelul de v.i.p 0 Acum , trebuie sa facem sa ii redea levelul de vip playerului de fiecare daca cand se conecteaza [pawn]if ( db_num_rows ( result ) ) { new field [ 30 ] ; db_get_field_assoc ( result , "VipL" , field , 30 ) ; vLevel [ playerid ] = strval ( field ) ; } [/pawn] pentru a afla ce face db_get_field_assoc urmariti cu atentie tutorialul 'Functii' Codul ar arata cam asa:
public OnPlayerConnect ( playerid )
{
     new
          DBResult:result;
     format ( Query , 100 , "SELECT * FROM ` Vips ` WHERE  ` Name ` = ' %s ' " , pName ( playerid ) ) ;
     result = db_query ( vips , Query ) ;
     if ( !db_num_rows ( result ) )
     {
	  format ( Query , 100 , "INSERT INTO `Vips` VALUES (NULL , '%s' , '%d' ) " , pName ( playerid ) , vLevel [ playerid ] = 0 ) ;
          db_query ( vips , Query ) ;
     }
     else if ( db_num_rows ( result ) )
     {
	  new field [ 30 ] ;
	  db_get_field_assoc ( result , "VipL" , field , 30 ) ; vLevel [ playerid ] = strval ( field ) ;
     }
     db_free_result ( result ) ;
     return 1 ;
}
format ( Query , 100 , "UPDATE `Vips` SET `VipL` = ' %d ' WHERE `Name` = '%s' " , vLevel [ playerid ] , pName ( playerid ) ) ;
db_query ( vips , Query ) ;
 

Cam acesta este tutorialul .

Daca am gresit cevaspuneti-mi intr-un reply

Updatarea statisticilor
Pentru a updata statisticile playerilor se foloseste clauza UPDATE impreuna cu clauzele SET si WHERE folosite de obicei la OnPlayerDisconnect , pentru a afla mai multe cititi tutorialele Functii si Clauze puse mai sus

Massari e curva mea

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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