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

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3630 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

Sveiki, esu naujas ant pawno, naudoju mysql R5, žinau, kad yra geresnių, greitesnių, bet kol kas išmoksiu po biški ant R5, niekur neskubu, o problema yra tame, kad neišsaugo vartotojo ar aš prisijungiu/atsijungiu ar padarau restartą, iš naujo prisijungiant vėl meta registraciją.

 

Ir dar viena problema: Įmeta mane į registraciją, jeigu neparašau daugiau nei 6 raidžių išmeta tekstą, kad tipo reikia 6 raidžių slaptažodyje ir išmeta tekstą Jūs neprisijungęs, todėl tęsti negalite, kaip sutvarkyti šitą, kad galėčiau iš naujo vesti slaptažodį?

 


public OnPlayerRequestClass(playerid, classid)
{
SetPlayerCameraPos(playerid, 1742.91,-1860.29,13.58);
SetPlayerCameraLookAt(playerid, 1742.91,-1860.29,13.58);
if ( !Logged[ playerid ] ) // jeigu žaidėjas NE prisijungęs su savo duomenimis neleidžame jo į serverį, right ?
{
SendClientMessage(playerid,SPALVA_ORANDZINE,"Jūs neprisijungęs, todėl tęsti negalite."); // parašome klientui kas ne taip.
return 0; // neduodam nieko toliau daryti, laukiam kol prisijungs.
}
return 1;
}


public OnPlayerConnect(playerid)
{
Logged[playerid] = false; // Nustatome neigiamą reikšmę Logged kintamajam, nes kai žaidėjas prisijungia į serverį, jis nebūna prisijungęs prie savo sąskaitos, right ?

new string[128],pName[MAX_PLAYER_NAME+1],query[256]; // sukuriame kintamuosius, vardo atpažinimui, duomenims į mysql paduoti bei žinutei išreikšti.

GetPlayerName(playerid,pName,sizeof pName); // įdedame į kintamajį dabartinį žaidėjo vardą, jį naudosime teisingai MYSQL eilutei surasti.
MySQLCheck();// Atnaujiname MYSQL jungtį jeigu kartais serveris ją pamiršo.
format(query,sizeof(query),"SELECT * FROM `"TABLENAME"` WHERE Vardas = '%s'",pName); // Sudedame apklausą kurią siūsime užklausai gauti visai informacijai apie žaidėją.
mysql_query(query); // siunčiame užklausą kurią sūdėjome į query

if(IsPlayerConnected(playerid)) // patikriname jeigu žaidėjas prisijunęs
{
GetPlayerName(playerid,pName,sizeof pName); // paimame dar kartą jo vardą.
mysql_store_result(); // atsikeliame iš MYSQL gautą rezultatą

if(mysql_num_rows() > 0) // Jeigu rado duomenis apie vartotoją reiškiasi jis užregistruotas. Duodame jam šansą prisijungti
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Prisijungimas","Įveskite savo sąskaitos prisijungimo slaptažodį:","Tęsti","Išeiti"); // parodome DIALOG langą, kad būtų kur suvesti sąskaitos slaptažodį, o gal naudojame komanda ?
format(string,sizeof(string),"Sąskaita su vardu - (%s) yra užregistruota. Prašome įvesti sąskaitos slaptažodį norėdami prisijungti.",pName); // formatuojame textą
SendClientMessage(playerid,SPALVA_ORANDZINE,string); // parašome suformatuotą textą.
}
else // jeigu nerado nieko apie vartotoją reiškiasi jis neregistruotas, so we dump
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Registracija","Registracijai įveskite slaptažodį kurį naudosite kas kartą prisijungiant prie sąskaitos","Tęsti","Išeiti"); // parodome DIALOGĄ kuriame užregistruos savo slaptažodį.
format(string,sizeof(string),"Sveikas atvykęs %s, tu šiame serveryje neturi sąskaitos, įvesk slaptažodį norėdamas užregistruoti.",pName); // formatuojame žinutę, kad pasakyti žaidėjui apie neturimą sąskaitą ir reikalingą registraciją.
SendClientMessage(playerid,SPALVA_ORANDZINE,string); // Siunčiame suformatuotą žinutę klientui kuris to prašo.
}
mysql_free_result(); // paleidžiame visus paimtus duomenis, kai reiks vėl pasiimsime.
}

return 1;
}


public OnPlayerDisconnect(playerid, reason)
{
new query[300],pName[MAX_PLAYER_NAME]; // kintamieji užklausoms bei vardui.

GetPlayerName(playerid,pName,sizeof(pName)); // paimame žaidėjo vardą kuriam viską darysime.

if ( Logged[ playerid ] ) // jeigu žaidėjas prisijungęs, tai yra jeigu jis suvędęs savo duomenis teisingai arba ką tik užsiregistravęs ir automatiškai prijungtas.
{
MySQLCheck(); // atnaujiname jungtį
format(query,sizeof(query),"UPDATE `"TABLENAME"` SET `Pinigai`='%d' WHERE (`Vardas` = '%s')",GetPlayerMoney(playerid),pName); // išsaugome žaidėjo turimus pinigus į MYSQL duomenų bazę, kad kitą kartą atėjus jis gautu juos.
mysql_query(query); // siunčiame užklausą duomenų bazei.
}
return 1;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1) // Jeigu dialogo id 1 tai yra jeigu jis nori registruotis.
{
if(response) // Jeigu įvedė slaptažodį ir spaudžia tęsti.
{

if(strlen(inputtext) < 6) // jeigu slaptažodis sudaro nemažiau 6 simbolių. Vykdome toliau
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Registracija","Registracijai įveskite slaptažodį kurį naudosite kas kartą prisijungiant prie sąskaitos","Tęsti","Išeiti"); // rodome vėl DIALOGĄ, kad galėtų pasitaisyti neteisingai įvestą slaptažodį.
return SendClientMessage(playerid,SPALVA_ORANDZINE,"Slaptažodis tūrėtų sūdaryti nemažiau 6 simbolių, tai jūsų sąskaitos saugumui."); // pranešame žaidėjui kuris suvedė neteisingai

}
new query[256], vardas[128]; // Stringai , užklausai bei vardui.
GetPlayerName(playerid,vardas,128); // įdedame į kintamajį žaidėjo vardą kurį naudosime atpažinimui.
MySQLCheck(); // Prieš užklausą visada atnaujinome jungtį, kodėl neatnaujinti ir dabar? Gal užmiršo?
format(query,sizeof(query),"INSERT INTO `"TABLENAME"` (Vardas,Slaptazodis) VALUES ('%s',md5('%s'))",vardas,inputtext); // vykdome užklausą kurioje suvesime norimus duomenis į MYSQL duom. Taip, pat naudojamės plugino funkcijomis ir užkoduojame slaptažodį - MD5
mysql_query(query); // padarome užklausą.
Logged[playerid] = true; // Nustatome, kad žaidėjas prisijungė automatiškai. // Žaidėjui sąskaitą sukurtą, padarome kintamajį true, kad serveris jį atpažintų kaip prisijungusį.
SendClientMessage(playerid,SPALVA_ORANDZINE,"Užsiregistravote sėkmingai, jūs automatiškai prijungtas. Tęskite norint žaisti."); // Visą ką aš dabar pasakiau pranešame žaidėjui paprastaja kalba (neskriptinimo) :D
}
else if(!response) // Jei žaidėjas paspaudė buttoną išeiti, tai metam jį iš serverio, right ?
{
Kick(playerid); // Išspiriame žaidėja, todėl kad nenorėjo registruotis.
}
return 1;
}

if(dialogid == 2) // Jeigu žaidėjas užregistruotas ir norėtų prisijungti prie savo sąskaitos rodome jam dialogą id-2
{
if(response) // jai paspaus tęsti.
{

new vardas[MAX_PLAYER_NAME], query[256]; // Kintamieji vardui bei užklausai.
GetPlayerName(playerid, vardas, 128); // gaunam zaidejo pavadinimą ir įdedame į kintamajį vardas

if(IsPlayerConnected(playerid)) // jeigu žaidėjas prisijungęs
{
MySQLCheck(); // Atnaujiname jungtį, nes gali būti užmigusi.
format(query,sizeof(query),"SELECT Pinigai FROM `"TABLENAME"` WHERE Vardas = '%s' AND Slaptazodis = md5('%s') LIMIT 1",vardas,inputtext); // Paimame žaidėjo pinigus, kad būtų ką jam atiduoti.
mysql_query(query); // duodame užklausą, kad gražintų pinigus
mysql_store_result(); // Pasidedame gautą rezultatą, nes greit jį .


if(mysql_num_rows() == 1)// jeigu yra atitikmenų iš užklausos
{
PlayerMoney[playerid] = mysql_fetch_int(); // įrašome, kiek jis tūrėjo pinigų į kintamajį.
GivePlayerMoney(playerid,PlayerMoney[playerid]); // ir lygiai tiek pat atiduodame.
SendClientMessage(playerid,SPALVA_ORANDZINE,"Tu sėkmingai prijungtas prie sąskaitos. Sėkmės žaidime!"); // Pranešame ataskaitą apie atiduotus pinigus.
Logged[playerid] = true; // žaidėjo duomenis teisingi, duodame jam žaisti.
mysql_free_result(); // nebereikia paimtų duomenų, todėl juos paleidžiame.
}
else // jeigu nerado nieko tokio iš duotosios užklausos, reišiasi jis nežino sąskaitos duomenų, arba netesingai įrašė.
{
mysql_free_result(); // paleidžiame duomenis, nes neteisingai parašė.
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Prisijungimas","Įveskite savo sąskaitos prisijungimo slaptažodį:","Tęsti","Išeiti"); // DUODAME dar šansą prisijungti, kad nereiktų jungtis į serverį iš naujo.
return SendClientMessage(playerid,SPALVA_ORANDZINE,"Sąskaitos vartotojas neatpažintas, greičiausiai slaptažodis neatitiko."); // pranašame klientui kas blogai, kodėl neprijungia jo prie sąskaitos.
}
}
else // kad išvengti "commands out of sync" klaidų naudojame šitą
{
mysql_store_result(); // kad išvengti "commands out of sync" klaidų naudojame šitą
mysql_free_result(); // kad išvengti "commands out of sync" klaidų naudojame šitą
}

}
else if(!response) // Jai paspaude išeiti, nenorėjo prisijungti.
{
Kick(playerid); // Spiriame lauk iš serverio, nenori prisijungti.
return 1;
}
return 1;
}
return 1;


public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
```
**public OnFilterScriptInit()**
```
public OnFilterScriptInit()
{
mysql_connect(SQL_HOST, SQL_USER,SQL_DB, SQL_PASS); // Jungiame į MYSQL
mysql_debug(1); // įjungiame debug, jis rašys visas įvykdytas bei neįvykdytas jungtis į txt failą kurį rasite serverio direktorijoje
return 1;
}
```
**public OnFilterScriptExit()**
```
public OnFilterScriptExit()
{
if(mysql_ping()) mysql_close(); // išjungiame jungtį kartu kai išsijungia naudojamas skriptas filterscript šiuo atviejiu.
return 1;
}
MySQLCheck()// funkcija su kuria prikelsime jungtį.
{
mysql_reconnect(); // perjungiame jungtį su MYSQL
return 1;
}
forward ConnectMySQL(); //
public ConnectMySQL()
{
if(mysql_connect(SQL_HOST,SQL_USER,SQL_DB,SQL_PASS)) // Jeigu nusiusti duomenys sugražino teigiamą rezultatą, reiškiamės prisijungėme.
{
mysql_debug(1); // // įjungiame debug, jis rašys visas įvykdytas bei neįvykdytas jungtis į txt failą kurį rasite serverio direktorijoje
printf("[MYSQL]: Connection to `%s` succesful!",SQL_DB); // parašome konsolėje, kad jungtis pavyko.
}
else // įmanoma prisijungti tik vienu atvieju, todėl visi kiti neteisingi.
{
printf("[MYSQL]: [ERROR]: Connection to `%s` failed!",SQL_DB); // serverio konsolėje parašome, kad neprisijungėme.
}
return 1;
}

tumblr_n2uq30MKvh1sk6x9qo1_400.gif

    if(dialogid == 1) // Jeigu dialogo id 1 tai yra jeigu jis nori registruotis.
        {
                if(response) // Jeigu įvedė slaptažodį ir spaudžia tęsti.
                {

                        if(strlen(inputtext) < 6) // jeigu slaptažodis sudaro nemažiau 6 simbolių. Vykdome toliau
                        {
                            ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Registracija","Registracijai įveskite slaptažodį kurį naudosite kas kartą prisijungiant prie sąskaitos","Tęsti","Išeiti"); // rodome vėl DIALOGĄ, kad galėtų pasitaisyti neteisingai įvestą  slaptažodį.
                            SendClientMessage(playerid,SPALVA_ORANDZINE,"Slaptažodis tūrėtų sūdaryti nemažiau 6 simbolių, tai jūsų sąskaitos saugumui."); // pranešame žaidėjui kuris suvedė neteisingai

                        }
                        new query[256], vardas[128]; // Stringai  , užklausai bei vardui.
                        GetPlayerName(playerid,vardas,128); // įdedame į kintamajį žaidėjo vardą kurį naudosime atpažinimui.
                        MySQLCheck(); // Prieš užklausą visada atnaujinome jungtį, kodėl neatnaujinti ir dabar? Gal užmiršo?
                        format(query,sizeof(query),"INSERT INTO `"TABLENAME"` (Vardas,Slaptazodis) VALUES ('%s',md5('%s'))",vardas,inputtext); // vykdome užklausą kurioje suvesime norimus duomenis į MYSQL duom. Taip, pat naudojamės plugino funkcijomis ir užkoduojame slaptažodį - MD5
                        mysql_query(query); // padarome užklausą.
                        Logged[playerid] = true; // Nustatome, kad žaidėjas prisijungė automatiškai. // Žaidėjui sąskaitą sukurtą, padarome kintamajį true, kad serveris jį atpažintų kaip prisijungusį.
                        SendClientMessage(playerid,SPALVA_ORANDZINE,"Užsiregistravote sėkmingai, jūs automatiškai prijungtas. Tęskite norint žaisti."); // Visą ką aš dabar pasakiau pranešame žaidėjui paprastaja kalba (neskriptinimo)  :D
                }
                else if(!response) // Jei žaidėjas paspaudė buttoną išeiti, tai metam jį iš serverio, right ?
                {
                        Kick(playerid); // Išspiriame žaidėja, todėl kad nenorėjo registruotis.
                }
                return 1;
        }

o kas liečia dėl žaidėjo nesaugojimo, tai patikrink mysql_logus ir žinosi kur bėda ;)

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3630 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ą...