#1

I made registration with mysql and error:
Код:
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>
#include <a_mysql>
#include <a_sampmysql>

#define SQL_HOST "localhost" // Priėjimas iki MYSQL duomenų bazės, jeigu naudojate localhost įraљykite "localhost"
#define SQL_USER "root" // MYSQL duomenų bazės vartotojas, jeigu naudojate localhost įraљykite "root"
#define SQL_PASS "" // slaptaћodis, jeigu naudojate localhost, daћniausiai jis būna be slaptaћodћio, tada palikite ""
#define SQL_DB "vLife" // Jūsų duomenų bazės pavadinimas per kurį jungsimės.
#define TABLENAME "players" // Kad nereiktų raљinėti kas kartą lentelės, pasidarome bindą. Čia įraљykite savo lentelės pavadinimą.
//colors // spalvos
#define MAX_STRING   1024
#define MAX_RESULT   1024
#define SPALVA_ORANDZINE 0xff9b39ff
#define COLOR_WHITE 0xff9b39ff // orandћinė spalva, naudojana visoje registracijoje.
// colors end // spalvų pabaiga
new bool:Logged[MAX_PLAYERS];
new result[MAX_RESULT];

enum pInfo
{
	pSQID,
	pPass[MAX_STRING],
	bool:pIsLogin,
	pKills,
	pDeaths,
	pCash
};
new PlayerInfo[MAX_PLAYERS][pInfo];

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Blank Filterscript by your name here");
	print("--------------------------------------\n");
    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()
{
	return 1;
}



public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}

public OnGameModeExit()
{
    if(mysql_ping()) mysql_close(); // iљjungiame jungtį kartu kai iљsijungia naudojamas skriptas filterscript љiuo atviejiu.
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    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.
    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 :D
       {
           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 ? :D
            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.
   {
      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 :D , uћklausai bei vardui.
         GetPlayerName(playerid,vardas,128); // įdedame į kintamajį ћaidėjo vardą kurį naudosime atpaћinimui.
         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 :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[128], 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
           {
if(mysql_num_rows() == 1)// jeigu yra atitikmenų iљ uћklausos
            {
           format(query,sizeof(query), "SELECT * FROM `"TABLENAME"` WHERE `Name` = '%s'",GetPlayerName(playerid));
			samp_mysql_query(query);
			samp_mysql_store_result();
            if(samp_mysql_fetch_row(result))
            {
				new tmp[MAX_STRING];
				format(query,sizeof(query),"SELECT * FROM `"TABLENAME"` WHERE `Name` = '%s'",GetPlayerName(playerid));
				samp_mysql_query(query);
				samp_mysql_store_result();
				if(!samp_mysql_fetch_row(result)) return 0;
				//===========failu pakrovimai=============
				samp_mysql_get_field("Money", tmp);
				PlayerInfo[playerid][pCash] = strval(tmp);
				GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);
				samp_mysql_get_field("ID", tmp);
				PlayerInfo[playerid][pSQID] = strval(tmp);
				samp_mysql_get_field("Kills", tmp);
				PlayerInfo[playerid][pKills] = strval(tmp);
				samp_mysql_get_field("Deaths", tmp);
				PlayerInfo[playerid][pDeaths] = strval(tmp);

				PlayerInfo[playerid][pIsLogin] = true;
				SendClientMessage(playerid,COLOR_WHITE,"Sveiki prisijunge");
            }

             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;
}
Server log

Код:
[16:50:22] 

  > MySQL plugin R4-2 successfully loaded.

[16:50:22]   Loaded.
[16:50:22]  Loaded 1 plugins.

[16:50:22] 
[16:50:22] Ban list
[16:50:22] --------
[16:50:22]  Loaded: samp.ban
[16:50:22] 
[16:50:22] 
[16:50:22] Filter Scripts
[16:50:22] ---------------
[16:50:22]   Loading filter script 'regsys.amx'...
[16:50:22]   Loaded 1 filter scripts.

[16:50:22] Script[gamemodes/new.amx]: Run time error 19: "File or function is not found"
[16:50:22] Number of vehicle models: 0
[16:50:35] --- Server Shutting Down.
[16:50:35] 

  > MySQL plugin unloaded.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)