Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4182 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

(redaguota)

Sveiki, turiu stock'ą SaveStats,

stock SaveStats(playerid) // Susikursime funkciją kad krauti galėtumėme kada tik panorėjus
{
new query[100];
//Suformatuojame užklausą kuri "atnaujins" lentelę "zaidejai" kur stulpelis "ID" lygus kintamajama "pInfo[playerid][ID]"
format(query,sizeof(query),"UPDATE zaidejai SET Pinigai = %d, Patirtis = %d, Darbas = %d, Hp = %f, Lytis = %d WHERE ID = %d",
pInfo[playerid][Pinigai],pInfo[playerid][Patirtis],pInfo[playerid][Darbas],pInfo[playerid][Hp],pInfo[playerid][Lytis],pInfo[playerid][ID]);
mysql_query(query);
return 1;
} 
Į OnPlayerDisconnect įmetu SaveStats(playerid); , bet man informacijos neišsaugo, kodėl? Kas blogai?
Redaguota , nario NoyzLT

fc91872b88c890f9fac9db8369af8b8d581.png

Prisijungiau ir atsijungiau serveryje, va kodai:

[03:11:03]  

[03:11:03] ---------------------------

[03:11:03] MySQL Debugging activated (01/15/14)

[03:11:03] ---------------------------

[03:11:03]  

[03:11:03] >> mysql_ping( Connection handle: 1 )

[03:11:03] CMySQLHandler::Ping() - Connection is still alive.

[03:11:46] >> mysql_query( Connection handle: 1 )

[03:11:46] CMySQLHandler::Query(SELECT * FROM `zaidejai` WHERE `Vardas` = 'Dominic_Mallorsy') - Successfully executed.

[03:11:46] >> mysql_store_result( Connection handle: 1 )

[03:11:46] CMySQLHandler::StoreResult() - Result was stored.

[03:11:46] >> mysql_num_rows( Connection handle: 1 )

[03:11:46] CMySQLHandler::NumRows() - Returned 1 row(s)

[03:11:46] >> mysql_free_result( Connection handle: 1 )

[03:11:46] CMySQLHandler::FreeResult() - Result was successfully free'd.

[03:11:50] >> mysql_query( Connection handle: 1 )

[03:11:51] CMySQLHandler::Query(SELECT * FROM `zaidejai` WHERE `Vardas`= 'Dominic_Mallorsy' AND `Slaptazodis` = 'gaidys') - Successfully executed.

[03:11:51] >> mysql_store_result( Connection handle: 1 )

[03:11:51] CMySQLHandler::StoreResult() - Result was stored.

[03:11:51] >> mysql_num_rows( Connection handle: 1 )

[03:11:51] CMySQLHandler::NumRows() - Returned 0 row(s)

[03:11:53] >> mysql_query( Connection handle: 1 )

[03:11:53] CMySQLHandler::Query(SELECT * FROM `zaidejai` WHERE `Vardas`= 'Dominic_Mallorsy' AND `Slaptazodis` = 'sudass') - Successfully executed.

[03:11:53] >> mysql_store_result( Connection handle: 1 )

[03:11:53] CMySQLHandler::StoreResult() - Result was stored.

[03:11:53] >> mysql_num_rows( Connection handle: 1 )

[03:11:53] CMySQLHandler::NumRows() - Returned 0 row(s)

[03:12:24] >> mysql_query( Connection handle: 1 )

[03:12:24] CMySQLHandler::Query(SELECT * FROM `zaidejai` WHERE `Vardas`= 'Dominic_Mallorsy' AND `Slaptazodis` = 'asdads') - Successfully executed.

[03:12:24] >> mysql_store_result( Connection handle: 1 )

[03:12:24] CMySQLHandler::StoreResult() - Result was stored.

[03:12:24] >> mysql_num_rows( Connection handle: 1 )

[03:12:24] CMySQLHandler::NumRows() - Returned 1 row(s)

[03:12:26] >> mysql_query( Connection handle: 1 )

[03:12:26] CMySQLHandler::Query(SELECT * FROM zaidejai WHERE Vardas = 'Dominic_Mallorsy') - Successfully executed.

[03:12:26] >> mysql_store_result( Connection handle: 1 )

[03:12:26] CMySQLHandler::StoreResult() - Result was stored.

[03:12:26] >> mysql_num_rows( Connection handle: 1 )

[03:12:26] CMySQLHandler::NumRows() - Returned 1 row(s)

[03:12:26] >> mysql_fetch_field_row( Connection handle: 1 )

[03:12:26] CMySQLHandler::FetchField(ID) - You cannot call this function now. (Reason: Fields/Rows are empty.)

[03:12:26] >> mysql_fetch_field_row( Connection handle: 1 )

[03:12:26] CMySQLHandler::FetchField(Vardas) - You cannot call this function now. (Reason: Fields/Rows are empty.)

[03:12:26] >> mysql_fetch_field_row( Connection handle: 1 )

[03:12:26] CMySQLHandler::FetchField(Pinigai) - You cannot call this function now. (Reason: Fields/Rows are empty.)

[03:12:26] >> mysql_fetch_field_row( Connection handle: 1 )

[03:12:26] CMySQLHandler::FetchField(Patirtis) - You cannot call this function now. (Reason: Fields/Rows are empty.)

[03:12:26] >> mysql_fetch_field_row( Connection handle: 1 )

[03:12:26] CMySQLHandler::FetchField(Darbas) - You cannot call this function now. (Reason: Fields/Rows are empty.)

[03:12:26] >> mysql_fetch_field_row( Connection handle: 1 )

[03:12:26] CMySQLHandler::FetchField(Hp) - You cannot call this function now. (Reason: Fields/Rows are empty.)

[03:12:26] >> mysql_fetch_field_row( Connection handle: 1 )

[03:12:26] CMySQLHandler::FetchField(Lytis) - You cannot call this function now. (Reason: Fields/Rows are empty.)

[03:12:26] >> mysql_free_result( Connection handle: 1 )

[03:12:26] CMySQLHandler::FreeResult() - Result was successfully free'd.

[03:12:34] >> mysql_query( Connection handle: 1 )

[03:12:34] CMySQLHandler::Query(UPDATE zaidejai SET Pinigai = 0, Patirtis = 0, Darbas = 0, Hp = 0.000000, Lytis = 0 WHERE ID = 0) - Successfully executed.

fc91872b88c890f9fac9db8369af8b8d581.png

(redaguota)

Aš žinau kas blogai, bet nemoku paaiškint, bet pamėginsiu, pas mane kai yra kintamasis Pinigai, tai jis toks ir lieka, jis išsaugo frazę Pinigai, o ne GetPlayerMoney, todėl man nieko ir nesaugo, bet nemoku pasidaryt :D Gal supratot :D

 

EDIT:

 

GivePlayerMoney, playerid, pInfo[playerid][Pinigai]);

 

Va man taip manau reikia daryti, bet kai įdedu jį į krovimo stock'ą tada meta klaidą:

 

(380) : error 076: syntax error in the expression, or invalid function call
(380) : error 029: invalid expression, assumed zero
(380) : warning 215: expression has no effect
Redaguota , nario NoyzLT

fc91872b88c890f9fac9db8369af8b8d581.png

(redaguota)

Kodėl rašai

pInfo[playerid][Pinigai],pInfo[playerid][Patirtis]

, o ne 

GetPlayerMoney( playerid ), GetPlayerScore( playerid )

? Koks tikslas tokius dalykus saugoti į kintamąjį, jei tam yra funkcijos? :D

Redaguota , nario Martis.`
prieš 15 valandas(-ų), perestukinas maskatuoklis parašė:

koks skirtumas motyvuotas ar ne, paprasiau padaryt o uz tai repais atsiskaitysiu, kas gales tas pades. Neieskau motyvatoriu.

Kodėl rašai

pInfo[playerid][Pinigai],pInfo[playerid][Patirtis]

, o ne 

GetPlayerMoney( playerid ), GetPlayerScore( playerid )

? Koks tikslas tokius dalykus saugoti į kintamąjį, jei tam yra funkcijos? :D

 

Reiktų paklaust žmogaus kuris padarė šią pamoką : http://www.supergames.lt/topic/140890-pamokamysql-saugojimaskrovimas/ nes dariau pagal ją. :)

fc91872b88c890f9fac9db8369af8b8d581.png

Kodėl rašai

pInfo[playerid][Pinigai],pInfo[playerid][Patirtis]

, o ne 

GetPlayerMoney( playerid ), GetPlayerScore( playerid )

? Koks tikslas tokius dalykus saugoti į kintamąjį, jei tam yra funkcijos? :D

Labai svarbus tikslas. Sukčiai gali nesunkiai pakeisti pinigų skaičių rodomą, todėl kai panaudosi GetPlayerMoney, ir gausi tą "apgautą" sumą.

 

Ko sukčiai negali padaryti, tai liesti tavo kintamųjų. Todėl vien niekada neįrašyti sumos iš GetPlayerMoney, jau yra veiksmingas būdas apsisaugoti nuo pinigų sukčių.

Reikia Pawn pagalbos? Skype nerašyk.

 

 

 

 

 

 

 

Aš žinau kas blogai, bet nemoku paaiškint, bet pamėginsiu, pas mane kai yra kintamasis Pinigai, tai jis toks ir lieka, jis išsaugo frazę Pinigai, o ne GetPlayerMoney, todėl man nieko ir nesaugo, bet nemoku pasidaryt :D Gal supratot :D

 

EDIT:

 

GivePlayerMoney, playerid, pInfo[playerid][Pinigai]);

 

Va man taip manau reikia daryti, bet kai įdedu jį į krovimo stock'ą tada meta klaidą:

 

(380) : error 076: syntax error in the expression, or invalid function call
(380) : error 029: invalid expression, assumed zero
(380) : warning 215: expression has no effect

 

Tai parodyk visą eilutę.

Reikia Pawn pagalbos? Skype nerašyk.

 

 

 

 

 

 

Na aš manau, kad reikia tuos pInfo keist, bet tiksliai nežinau kaip

 

stock SaveStats(playerid) // Susikursime funkciją kad krauti galėtumėme kada tik panorėjus
{
new query[100];
//Suformatuojame užklausą kuri "atnaujins" lentelę "zaidejai" kur stulpelis "ID" lygus kintamajama "pInfo[playerid][iD]"
format(query,sizeof(query),"UPDATE zaidejai SET Pinigai = %d, Patirtis = %d, Darbas = %d, Hp = %f, Lytis = %d WHERE ID = %d",
pInfo[playerid][Pinigai],pInfo[playerid][Patirtis],pInfo[playerid][Darbas],pInfo[playerid][Hp],pInfo[playerid][Lytis],pInfo[playerid][iD]);
mysql_query(query);
return 1;
}

fc91872b88c890f9fac9db8369af8b8d581.png

Viskas čia tiesiog tobula!

 

Padarykime protingiau ir įmantriau, kodo viršuje(prie kitų define) pridėk:

stock GivePlayerMoneyC(playerid,amount)
{
    pInfo[playerid][Pinigai] += amount;
    return GivePlayerMoney(playerid,amount);
}
#if defined _ALS_GivePlayerMoney
   #undef GivePlayerMoney
#else
   #define _ALS_GivePlayerMoney
#endif
#define GivePlayerMoney GivePlayerMoneyC

stock GetPlayerMoneyC(playerid)
   return pInfo[playerid][Pinigai];
#if defined _ALS_GetPlayerMoney
   #undef GetPlayerMoney
#else
   #define _ALS_GetPlayerMoney
#endif
#define GetPlayerMoney GetPlayerMoneyC

stock ResetPlayerMoneyC(playerid)
{
   pInfo[playerid][Pinigai];
   return ResetPlayerMoney(playerid);
}
#if defined _ALS_ResetPlayerMoney
  #undef ResetPlayerMoney
#else 
  #define _ALS_ResetPlayerMoney
#endif
#define ResetPlayerMoney ResetPlayerMoneyC

Jei įdomu, tai vadinama funkcijų "hookinimu".

 

Svarbu kad tai būtų VIRŠ visų atvejų kur naudoji tas funkcijas. 

 

Ką tai padarys? Trumpai, užtikrins kad kad ir ką darysi su įprastom funkcijom, pinigų skaičius visada bus ir tam kintamajame. Todėl tavo saugojimo kodas veiks be problemų. Taipat, būsi saugus nuo pinigų sukčiavimo.

Reikia Pawn pagalbos? Skype nerašyk.

 

 

 

 

 

 

stock GivePlayerMoneyC(playerid,amount) //tikiuos šitos nereikia aiškinti
{
    pInfo[playerid][Pinigai] += amount;    // Pridedam nurodytą skaičių prie esamos kintamojo vertės
    return GivePlayerMoney(playerid,amount); //gražinam tai ką gražina "tikroji" funkcija
}
#if defined _ALS_GivePlayerMoney // Jeigu jau yra toks dalykas kaip _ALS_GivePlayerMoney
   #undef GivePlayerMoney  //Jeigu jis yra, pašalinam.
#else
   #define _ALS_GivePlayerMoney // O jei nėra, padaraom!
#endif
#define GivePlayerMoney GivePlayerMoneyC // Kompiliatorius automatiškai pakeis žodžius "GivePlayerMoney" į "GivePlayerMoneyC"

O tas "_ALS_" tėra standartas ir gilesnės prasmės neturi, jis skirtas tokiu atveju kad jeigu jau kokiam nors include'e tai padaryta, kad būtų galima padaryti antrą kartą.

Reikia Pawn pagalbos? Skype nerašyk.

 

 

 

 

 

 

(redaguota)

Bandžiau išsaugoti sukūrus stock'ą.

 

Taip atrodo stock:

stock GetPlayerMoneyA(playerid)
{
return pInfo[playerid][Pinigai];
}
 
Taip saugojimas:
stock SaveStats(playerid) // Susikursime funkciją kad krauti galėtumėme kada tik panorėjus
{
new query[100];
//Suformatuojame užklausą kuri "atnaujins" lentelę "zaidejai" kur stulpelis "ID" lygus kintamajama "pInfo[playerid][ID]"
format(query,sizeof(query),"UPDATE zaidejai SET Pinigai = %d, Patirtis = %d, Darbas = %d, Hp = %f, Lytis = %d WHERE ID = %d",
GetPlayerMoneyA(playerid),pInfo[playerid][Patirtis],pInfo[playerid][Darbas],pInfo[playerid][Hp],pInfo[playerid][Lytis],pInfo[playerid][ID]);
mysql_query(query);
return 1;
}
Ten kur pinigai dabar įmečiau stocką.
 
Čia pinigų gavimas:
if(Naujokas[playerid])
{
GivePlayerMoney(playerid, 10000);
}

Vistiek neišsaugo litų.

Redaguota , nario NoyzLT

fc91872b88c890f9fac9db8369af8b8d581.png

 

Bandžiau išsaugoti sukūrus stock'ą.

 

Taip atrodo stock:

stock GetPlayerMoneyA(playerid)
{
return pInfo[playerid][Pinigai];
}
 
Taip saugojimas:
stock SaveStats(playerid) // Susikursime funkciją kad krauti galėtumėme kada tik panorėjus
{
new query[100];
//Suformatuojame užklausą kuri "atnaujins" lentelę "zaidejai" kur stulpelis "ID" lygus kintamajama "pInfo[playerid][ID]"
format(query,sizeof(query),"UPDATE zaidejai SET Pinigai = %d, Patirtis = %d, Darbas = %d, Hp = %f, Lytis = %d WHERE ID = %d",
GetPlayerMoneyA(playerid),pInfo[playerid][Patirtis],pInfo[playerid][Darbas],pInfo[playerid][Hp],pInfo[playerid][Lytis],pInfo[playerid][ID]);
mysql_query(query);
return 1;
}
Ten kur pinigai dabar įmečiau stocką.
 
Čia pinigų gavimas:
if(Naujokas[playerid])
{
GivePlayerMoney(playerid, 10000);
}

Vistiek neišsaugo litų.

 

Nes tu duodi paprastai pinigus į kintamąjį nepridedi. Tada daryk bent taip:

if(Naujokas[playerid])
{
pInfo[playerid][Pinigai] = 10000;
}
[07:33:36] MySQL Debugging activated (01/15/14)


[07:33:36] ---------------------------


[07:33:36]  


[07:33:36] >> mysql_ping( Connection handle: 1 )


[07:33:36] CMySQLHandler::Ping() - Connection is still alive.


[07:33:54] >> mysql_query( Connection handle: 1 )


[07:33:54] CMySQLHandler::Query(SELECT * FROM `zaidejai` WHERE `Vardas` = 'kazkas_kazkoks') - Successfully executed.


[07:33:54] >> mysql_store_result( Connection handle: 1 )


[07:33:54] CMySQLHandler::StoreResult() - Result was stored.


[07:33:54] >> mysql_num_rows( Connection handle: 1 )


[07:33:54] CMySQLHandler::NumRows() - Returned 0 row(s)


[07:33:54] >> mysql_free_result( Connection handle: 1 )


[07:33:54] CMySQLHandler::FreeResult() - Result was successfully free'd.


[07:33:59] >> mysql_query( Connection handle: 1 )


[07:33:59] CMySQLHandler::Query(INSERT INTO `zaidejai` (Vardas, Slaptazodis) VALUES ('kazkas_kazkoks','sudelis')) - Successfully executed.


[07:34:05] >> mysql_query( Connection handle: 1 )


[07:34:05] CMySQLHandler::Query(SELECT * FROM zaidejai WHERE Vardas = 'kazkas_kazkoks') - Successfully executed.


[07:34:05] >> mysql_store_result( Connection handle: 1 )


[07:34:05] CMySQLHandler::StoreResult() - Result was stored.


[07:34:05] >> mysql_num_rows( Connection handle: 1 )


[07:34:05] CMySQLHandler::NumRows() - Returned 1 row(s)


[07:34:05] >> mysql_fetch_field_row( Connection handle: 1 )


[07:34:05] CMySQLHandler::FetchField(ID) - You cannot call this function now. (Reason: Fields/Rows are empty.)


[07:34:05] >> mysql_fetch_field_row( Connection handle: 1 )


[07:34:05] CMySQLHandler::FetchField(Vardas) - You cannot call this function now. (Reason: Fields/Rows are empty.)


[07:34:05] >> mysql_fetch_field_row( Connection handle: 1 )


[07:34:05] CMySQLHandler::FetchField(Pinigai) - You cannot call this function now. (Reason: Fields/Rows are empty.)


[07:34:05] >> mysql_fetch_field_row( Connection handle: 1 )


[07:34:05] CMySQLHandler::FetchField(Patirtis) - You cannot call this function now. (Reason: Fields/Rows are empty.)


[07:34:05] >> mysql_fetch_field_row( Connection handle: 1 )


[07:34:05] CMySQLHandler::FetchField(Darbas) - You cannot call this function now. (Reason: Fields/Rows are empty.)


[07:34:05] >> mysql_fetch_field_row( Connection handle: 1 )


[07:34:05] CMySQLHandler::FetchField(Hp) - You cannot call this function now. (Reason: Fields/Rows are empty.)


[07:34:05] >> mysql_fetch_field_row( Connection handle: 1 )


[07:34:05] CMySQLHandler::FetchField(Lytis) - You cannot call this function now. (Reason: Fields/Rows are empty.)


[07:34:05] >> mysql_free_result( Connection handle: 1 )


[07:34:05] CMySQLHandler::FreeResult() - Result was successfully free'd.


[07:34:29] >> mysql_query( Connection handle: 1 )


[07:34:29] CMySQLHandler::Query(UPDATE zaidejai SET Pinigai = 0, Patirtis = 0, Darbas = 0, Hp = 0.000000, Lytis = 0 WHERE ID = 0) - Successfully executed.

Va debug.

fc91872b88c890f9fac9db8369af8b8d581.png

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4182 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...