Jump to content

Mic ajutor pentru trecerea la R40


Sinner.PWN

Recommended Posts

Pentru a va face mai usoara trecerea de la versiunea R33+ la R40 a plugin-ului MySQL creat de BlueG si continuat de maddinat0r va voi ajuta cu doua "functii" relativ simple dar foarte utile pentru a evita rescrierea in totalitate a liniilor de cod.

  • Pentru valorile intregi vom folosi urmatorul stock:
  • stock cache_get_field_content_int(row, field_name[], MySQL:connectionHandle ) // Vechea forma din R33+
    {
        #pragma unused connectionHandle // Ignoram connectionHandle care este folosit in prezent
        new retval = cellmin; // Dam aceasta valoare in caz de eroare.
        cache_get_value_name_int(row, field_name, retval); // Folosim aici noua functie din R40 si stocam valoarea in variabila "retval"
        return retval; // Returnam valoarea din baza de date
    }
  • Pentru valorile float vom folosi urmatoarea functie:
    #define function%0(%1) \
    		forward%0(%1); public%0(%1) // Ne folosim de acest define pentru a evita crearea unui forward pentru fiecare public necesar.
    
    function Float:cache_get_field_content_float(row, field_name[], MySQL:connectionHandle ) // Vechea forma din R33+
    {
        #pragma unused connectionHandle // La fel ca in stock-ul de mai sus
        new Float:retval = cellmin; // Aici singura diferenta este valoarea definita ca Float
        cache_get_value_name_float(row, field_name, retval); // La fel ca in stock-ul de mai sus
        return retval; // La fel ca in stock-ul de mai sus
    }

     

Pentru alte nelamuriri si informatii nu ezitati sa postati aici. Aceste functii sunt create cu ajutorul lui Spmn.
 

 

  • Like 1
  • Upvote 1

Sinner.png

Link to comment
Share on other sites

19 minutes ago, SoNNy.sys said:

Pentru a va face mai usoara trecerea de la versiunea R33+ la R40 a plugin-ului MySQL creat de BlueG si continuat de maddinat0r va voi ajuta cu doua "functii" relativ simple dar foarte utile pentru a evita rescrierea in totalitate a liniilor de cod.

  • Pentru valorile intregi vom folosi urmatorul stock:
  • stock cache_get_field_content_int(row, field_name[], MySQL:connectionHandle ) // Vechea forma din R33+
    {
        #pragma unused connectionHandle // Ignoram connectionHandle care este folosit in prezent
        new retval = cellmin; // Dam aceasta valoare in caz de eroare.
        cache_get_value_name_int(row, field_name, retval); // Folosim aici noua functie din R40 si stocam valoarea in variabila "retval"
        return retval; // Returnam valoarea din baza de date
    }
  • Pentru valorile float vom folosi urmatoarea functie:
    #define function%0(%1) \
    		forward%0(%1); public%0(%1) // Ne folosim de acest define pentru a evita crearea unui forward pentru fiecare public necesar.
    
    function Float:cache_get_field_content_float(row, field_name[], MySQL:connectionHandle ) // Vechea forma din R33+
    {
        #pragma unused connectionHandle // La fel ca in stock-ul de mai sus
        new Float:retval = cellmin; // Aici singura diferenta este valoarea definita ca Float
        cache_get_value_name_float(row, field_name, retval); // La fel ca in stock-ul de mai sus
        return retval; // La fel ca in stock-ul de mai sus
    }

     

Pentru alte nelamuriri si informatii nu ezitati sa postati aici. Aceste functii sunt create cu ajutorul lui Spmn.
 

 

Folositor pentru începători, dar nu crezi ca ar fi mai ușor să înveți direct funcțiile și parametri? De cat sa te chinui cu stock.uri, callback.uri s.a.m.d

**********************************

Servicii Scripting de calitate:

*********************************

Future Project: ExpertGame

*********************************

Link to comment
Share on other sites

12 minutes ago, SoNNy.sys said:

Sincer si eu le folosesc pentru ca nu am timp sa rescriu 200 linii de cod. Daca iti faci viata mai usoara nu inseamna ca nu inveti functiile. Le-am analizat foarte bine si le stiu doar ca imi vine mai usor asa. :D

Așa e, depinde de fiecare, cum îi e mai ușor

**********************************

Servicii Scripting de calitate:

*********************************

Future Project: ExpertGame

*********************************

Link to comment
Share on other sites

14 minutes ago, SoNNy.sys said:

Sincer si eu le folosesc pentru ca nu am timp sa rescriu 200 linii de cod. Daca iti faci viata mai usoara nu inseamna ca nu inveti functiile. Le-am analizat foarte bine si le stiu doar ca imi vine mai usor asa. :D

exista ctrl+h si nu e grea deloc trecerea la r40

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

Transforma urmatoarea chestie cu ctrl+h:

playerVariables[ playerid ][ pGasCan ] = cache_get_field_content_int( i, "playerGasCan", g_Handle );

// Sau asta:
cachet_get_data( Rows, Fields, g_Handle );

// In asta:
cache_get_row_count( Rows );
cache_get_field_count( Fields );

Se pare ca n-ai trecut cu privirea deloc prin R40 daca zici ca e usor sa treci in R40 cu CTRL+H.

Sinner.png

Link to comment
Share on other sites

new value = cache_get_field_content_int(0, "integer");

sunt mai multe feluri in care poti modifica

De fapt am mutat gmul in r40 in vreo 5-10  minute pentru ca nu gaseam numele functiilor\

EDIT: macar stii ce face ctrl+h?

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

 

2 hours ago, Mister said:
new value = cache_get_field_content_int(0, "integer");

sunt mai multe feluri in care poti modifica

De fapt am mutat gmul in r40 in vreo 5-10  minute pentru ca nu gaseam numele functiilor\

EDIT: macar stii ce face ctrl+h?

 

Nu stiu pe ce versiune ai trecut tu, dar te asigur ca R40+ nu mai stie de functiile cache_get_field_content* sau cache_get_row*, iar inlocuitoarele nu mai returneaza valoarea direct, ci returneaza prin referinta(ca GetPlayerHealth(playerid, &health)).

Deci, un CTRL+R nu te prea ajuta in cazul asta.

 

@SoNNy.sys, io nu inteleg doua lucruri:

  1. de ce ai modificat din stock in forward+public pentru ca nu am pus degeaba acel keyword si nu altul; in unele cazuri vei primi warning la compilare, si anume cand functia e definita dupa apelarea ei, ex: http://pastebin.com/zpDZMBUx
  2. de ce ai modificat headerul functiilor, adaugand tagul MySQL: in fata la connectionHandle si, respectiv, stergand valoarea implicita (= 1)? In versiunile pre-R40, nu exista tagul MySQL:, deci in unele cazuri codul modificat de tine poate provoca warninguri, ex: http://pastebin.com/TX11bDhc

In concluzie, daca ai copiat functia respectiva de pe SA-MP.com si nu stii de ce am pus anumiti parametri sau modifieri, lasa-i asa, nu-i schimba.

Edited by Spman
Link to comment
Share on other sites

1 hour ago, Spmn said:

 

 

Nu stiu pe ce versiune ai trecut tu, dar te asigur ca R40+ nu mai stie de functiile cache_get_field_content* sau cache_get_row*, iar inlocuitoarele nu mai returneaza valoarea direct, ci returneaza prin referinta(ca GetPlayerHealth(playerid, &health)).

Deci, un CTRL+R nu te prea ajuta in cazul asta.

De unde scoateti prostiile astea frate? Nici macar nu va interesati inainte sa faceti post.

Asa e ai dreptate eu am intrat pe un alt github numit tot blueg mysql r40 si am descarcat aceasi versiune care o aveam inainte deaia se compileaza perfect iar functiile imi returneaza corect desi imi avea numele noilor functii.Intereseaza te sa vezi ca exista

cache_get_value_name (da am pus eu gresit ca ma perturbati cu prostiile voastre)

Eu nu am copiat codul din cap

Si unde vezi tu ca am zis eu ca get_row e la fel nu e redenumita?

Toti stiti totul si de toate. 

Asa e cum zici tu codul asta

cachet_get_data( Rows, Fields, g_Handle ); // e schimbat In asta: cache_get_row_count( Rows ); cache_get_field_count( Fields );

Si ai dreptate asta nu mai returneaza ce returna inainte a vrut el asa sa il schimbe sa returneze altceva asa de dragu tau returneaza acum prin referinta ca daca asa zici tu.

Nu ma intereseaza ce mai comentezi oricum ne am abatut de la subiect.

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

@Spmn am pus tag-ul MySQL pentru ca asa sunt definite in R40, fara tag imi da warning peste tot deoarece acum vine new MySQL:g_Handle; si am scos valoarea implicita pentru ca nu imi da voie sa o folosesc de cand cu noul tag. Cat despre public l-am facut asa pentru ca am eu un fix cu returnarea valorilor float. Eu mi-am facut functiile dupa ideea ta si dupa necesitatile mele ;) Daca tu ai facut asa nu inseamna ca trebuie sa fac si eu la fel nu?

@Mister ai probleme de comportament? Faci pe dracu' in patru doar ca sa te scremi sa ai dreptate atunci cand nu ai? Spmn stie ce zice acolo si R40 functioneaza asa cum zice el. Daca tu ti-ai facut GM-ul in R40 cu new value = inseamna ca nu prea ai ce cauta ca moderator pe aceasta sectiune fara suparare.

Edited by SoNNy.sys

Sinner.png

Link to comment
Share on other sites

10 minutes ago, SoNNy.sys said:

Spmn am pus tag-ul MySQL pentru ca asa sunt definite in R40, fara tag imi da warning peste tot deoarece acum vine new MySQL:g_Handle; si am scos valoarea implicita pentru ca nu imi da voie sa o folosesc de cand cu noul tag. Cat despre public l-am facut asa pentru ca am eu un fix cu returnarea valorilor float. Eu mi-am facut functiile dupa ideea ta si dupa necesitatile mele ;) Daca tu ai facut asa nu inseamna ca trebuie sa fac si eu la fel nu?

@Mister ai probleme de comportament? Faci pe dracu' in patru doar ca sa te scremi sa ai dreptate atunci cand nu ai? Spmn stie ce zice acolo si R40 functioneaza asa cum zice el. Daca tu ti-ai facut GM-ul in R40 cu new value = inseamna ca nu prea ai ce cauta ca moderator pe aceasta sectiune fara suparare.

frumos nu am ce zice, acelasi lucru fiecare se crede a tot stiutor. Ai scris eu ca folosesc new value = cache_get_velue_name ?

cititeste aici tu scripterule http://forum.sa-mp.com/showthread.php?t=616103

Si care e problema ta ca am moderator? daca esti moderator te bazezi pe administrare, eu sunt moderator sa inchid topicurile celor destepti care posteaza gresit si sa fac ordine in categoria mea, da trebuie sa stiu si scripting si nu am de ce sa te conving pe tine ca stiu.

Oricum e o prostie cum folosesti tu r40 de ce mai sunt functiile asa daca pui tu stock 

 

Probleme de comportament? ti se pare ca am injurat sau jignit pe cineva ba puta, eu cred ca nu ai vazut cum fac alti? Si nu mai face tu pe al dracu si da pe aici etichete ca eu normal ca o sa comentez cand stiu ca am dreptate, daca maddinator a spus ca funcita se foloseste nu esti tu mai destept decat el, tu ai facut un edit la un gm, aplauze el a facut pluginul mysql

auzi la el   "Daca tu ti-ai facut GM-ul in R40 cu new value = inseamna ca nu prea ai ce cauta ca moderator pe aceasta sectiune fara suparare." care e legatura tu nu face ca ala de a creat pluginul tu fa ca mine ca daca nu nu ai ce cauta moderator, what??? wtf???

 

Untitled.png

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

19 minutes ago, DaEdRiC-FoX said:

T/C prea multă cearta pe aici degeaba, aveți pm. 

Nu inca.

@Mister maddinator a scris gresit in acel topic, poate a vrut sa zica

cache_get_value_name(0, "string", dest);
new success = cache_get_value_name(0, "string", dest);

Nu te lua dupa ce zice acolo, i-am dat un PM sa editeze. M-am uitat si in codul sursa si este cum este pe wiki (http://wiki.sa-mp.com/wiki/MySQL/R40).

Acum incetati cu cearta.

Link to comment
Share on other sites

Pentru cultura ta generala un stock iti face viata mai usoara dar de unde sa stii tu asa ceva...GM-ul meu are toate sistemele dinamice bazate pe gvar si un stock ca cel al lui @Spmn ma scuteste de cateva sute de linii de cod :) Daca 3 oameni iti spun ca ai gresit eu cred ca ar trebui sa te potolesti. Ai vazut @Spmn ca degeaba faci stock-uri? Nici nu stiu de ce le-ai mai facut. Oricum respect din partea mea si a lui stuntman ;)

Edited by SoNNy.sys

Sinner.png

Link to comment
Share on other sites

 

11 hours ago, Mister said:

Si ai dreptate asta nu mai returneaza ce returna inainte a vrut el asa sa il schimbe sa returneze altceva asa de dragu tau returneaza acum prin referinta ca daca asa zici tu.

Nu faci diferenta intre valoare returnata de o functie si parametru transmis prin referinta. Functiile de preluare a informatiilor din R40 nu mai returneaza direct valoarea din baza de date ca in versiunile precedente cand un apel precum "new val = cache_get_row(0,0);" era perfect valid, ci returneaza in schimb un cod de eroare/succes, iar valoarea propriu-zisa este transmisa prin referinta, adica noul apel ar arata in felul urmator: "new val; cache_get_value_index_int(0, 0, val);"

Asadar, functiile repostate de @SoNNy.sys NU MAI RETURNEAZA prin referinta, ci returneaza direct, exact ca in versiunile pana in R39, inclusiv.

P.S: Nu am nimic cu tine sau cu ceilalti, dar in postarea pe care am citat-o data trecuta erai (si inca esti) prea intepat sustinandu-ti ideea care de la bun inceput era gresita, chiar daca in primul post,  in comentariile din cod, este scris succint ce am prezentat eu anterior.

P.P.S: Acum vad ca in postarea de aseara am avut o atitudine ostila, imi pare rau daca am suparat pe cineva.

@WopsSTopicul de pe .com este corect, dar redactat ambiguu. La inceput este o rubrica unde se explica faptul ca functiile au fost redenumite, iar mai jos este alta rubrica in care se prezinta schimbarea parametrilor, ceea ce poate (si deja vad ca a facut-o in unele cazuri) conduce la confuzie.

 

@SoNNy.sysNu e paguba, nu este ca si cum as fi scris sute de linii de cod. E doar o functie de 3 randuri.

Edited by Spmn
post-post-scriptum
Link to comment
Share on other sites

5 minutes ago, Spmn said:

@WopsSTopicul de pe .com este corect, dar redactat ambiguu. La inceput este o rubrica unde se explica faptul ca functiile au fost redenumite, iar mai jos este alta rubrica in care se prezinta schimbarea parametrilor, ceea ce poate (si deja vad ca a facut-o in unele cazuri) conduce la confuzie.

Ah, gresala mea, trebuia sa-l citesc cap-coada. Merci de atentionare.

Link to comment
Share on other sites

8 minutes ago, Spmn said:

@MisterNu am nimic cu tine, nici 

Nu faci diferenta intre valoare returnata de o functie si parametru transmis prin referinta. Functiile de preluare a informatiilor din R40 nu mai returneaza direct valoarea din baza de date ca in versiunile precedente cand un apel precum "new val = cache_get_row(0,0);" era perfect valid, ci returneaza in schimb un cod de eroare/succes, iar valoarea propriu-zisa este transmisa prin referinta, adica noul apel ar arata in felul urmator: "new val; cache_get_value_index_int(0, 0, val);"

 

Imi poti explica unde am gresit de la inceput?

Adica el a spus ca   cache_get_field_content_int( )  a fost schimbat cu cache_get_value_name_int, si bun nu am zis decat ca: la fel de bine eu inloc sa fac un stock am dat ctrl+h  si am inlocuit tot din gm cu numele cache_get_field_content_int in cache_get_value_name instant, fara stock, ce am gresit aici?

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

Aici ai exact definitia functiei cache_get_value_name_int luata din github repo. Daca ai da replace din cache_get_field_content_int in cache_get_value_name_int, atunci codul nu ar mai functiona corect (dar sunt sanse sa se compileze fara erori) deoarece valoarea din baza de date nu ar fi stocata nicaieri intrucat inainte nu exista parametrul destination.

Acelasi principiu se aplica la bool si float, mica exceptie facand stringurile cu o singura dimensiune (sau toate stringurile daca se compileaza sursa cu zeex compiler)

 

Daca nici acum nu intelegi diferenta, atunci ma retrag din discutie.

Link to comment
Share on other sites

@SpmnI-ai dat bluescreen :)))

Apropo eu am facut acea functie cu forward pentu float pentru ca din cate imi amintesc daca o faci pe stock trebuie sa il pui mai sus de functiile in care il folosesti si eu am un fix cu aranjarea scriptului si am facut un public :)) 

Sinner.png

Link to comment
Share on other sites

16 minutes ago, Spmn said:

Aici ai exact definitia functiei cache_get_value_name_int luata din github repo. Daca ai da replace din cache_get_field_content_int in cache_get_value_name_int, atunci codul nu ar mai functiona corect (dar sunt sanse sa se compileze fara erori) deoarece valoarea din baza de date nu ar fi stocata nicaieri intrucat inainte nu exista parametrul destination.

Acelasi principiu se aplica la bool si float, mica exceptie facand stringurile cu o singura dimensiune (sau toate stringurile daca se compileaza sursa cu zeex compiler)

 

Daca nici acum nu intelegi diferenta, atunci ma retrag din discutie.

Pai da, uite aici a fost problema de la bun inceput eu nu am spus ca am inlocuit totul cu cache_get_value_name_int  eu am spus ca am inlocuit  totul cu cache_get_value_name. Banuiesc ca de la asta a plecat cearta, ati inteles  cache_get_value_name_int   inloc de  cache_get_value_name

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

15 minutes ago, SoNNy.sys said:

@SpmnI-ai dat bluescreen :)))

Apropo eu am facut acea functie cu forward pentu float pentru ca din cate imi amintesc daca o faci pe stock trebuie sa il pui mai sus de functiile in care il folosesti si eu am un fix cu aranjarea scriptului si am facut un public :)) 

Nu, e fix invers. Cu forward trebuie sa pui deasupra, cu stock nu conteaza.

Link to comment
Share on other sites

1 hour ago, SoNNy.sys said:

@Spmnmi-ai dat bluescreen :)))

Posibil de la placa de baza nu sunt compatibile componentele intre ele de aceea iei blue screen cand citesti un comentariu, sau pur si simplu ai un pc vechi

EDIT: Eram sigur :))) asa se intampla cand nu stii ca esti luat la sto

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

1 oră în urmă, Mister a spus:

Posibil de la placa de baza nu sunt compatibile componentele intre ele de aceea iei blue screen cand citesti un comentariu, sau pur si simplu ai un pc vechi

Mai citeste pana iti dai seama ca scrie "Spmn i-ai dat Bluescreen".

Sinner.png

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.