Advertisement
Bebras

BlueG MySQL R33 ORM tutorial

Sep 10th, 2013
859
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.26 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_mysql>
  3.  
  4. #define DIALOG_REGISTER 1
  5. #define DIALOG_LOGIN 2
  6.  
  7. enum playerinfo {
  8.     ORM:ORM_ID,
  9.     SQL_ID,
  10.     Name[MAX_PLAYER_NAME],
  11.     Password[129],
  12.     Money,
  13.     Xp,
  14.     AdminLvl,
  15.     Float:SpawnX,
  16.     Float:SpawnY,
  17.     Float:SpawnZ
  18. };
  19.  
  20. new pInfo[MAX_PLAYERS][playerinfo];
  21.  
  22.  
  23. new DbHandle;
  24.  
  25. main() {}
  26.  
  27.  
  28.  
  29. public OnGameModeInit()
  30. {
  31.     mysql_log();
  32.     DbHandle = mysql_connect("localhost","root","testas","");
  33.     AddPlayerClass(0,0,0,3,0,0,0,0,0,0,0);
  34.     return 1;
  35. }
  36. public OnPlayerConnect(playerid)
  37. {
  38.     GetPlayerName(playerid,pInfo[playerid][Name],24); // Gauname žaidėjo vardą, nestebuklas.
  39.     pInfo[playerid][ORM_ID] = orm_create("zaidejai",DbHandle); // Sukuriame ryšį su lentele "zaidejai"
  40.     orm_addvar_int(pInfo[playerid][ORM_ID],pInfo[playerid][SQL_ID],"SQL_ID"); //Pridedame integer tipo kintamajį "SQL_ID" prie duombazės lentelės stulpelio pavadinimu "SQL_ID"
  41.     orm_addvar_string(pInfo[playerid][ORM_ID],pInfo[playerid][Name],24,"Name");// Pridedame string tipo "Name" prie duomenų bazės stulpelio "Name"
  42.     orm_addvar_string(pInfo[playerid][ORM_ID],pInfo[playerid][Password],129,"Password");
  43.     orm_addvar_int(pInfo[playerid][ORM_ID],pInfo[playerid][Money],"Money");
  44.     orm_addvar_int(pInfo[playerid][ORM_ID],pInfo[playerid][Xp],"Xp");
  45.     orm_addvar_int(pInfo[playerid][ORM_ID],pInfo[playerid][AdminLvl],"AdminLvl");
  46.     orm_addvar_float(pInfo[playerid][ORM_ID],pInfo[playerid][SpawnX],"SpawnX"); //Pridedame float tipo kintamąjį prie duomenų bazės stulpelio "SpawnX"
  47.     orm_addvar_float(pInfo[playerid][ORM_ID],pInfo[playerid][SpawnY],"SpawnY");
  48.     orm_addvar_float(pInfo[playerid][ORM_ID],pInfo[playerid][SpawnZ],"SpawnZ");
  49.    
  50.     // Dabar jau galėtume siųsti įprastas užklausas į duomenų bazę...Bet jie dar nežinos į kieno eilutę įrašinėti duomenis
  51.    
  52.     orm_setkey(pInfo[playerid][ORM_ID],"Name"); //Nurodome kad įašinėtų ten kur vardas bus lygus kintamajam "pInfo[playerid][Name]"
  53.     orm_select(pInfo[playerid][ORM_ID],"OnPlayerCheck","d",playerid); // Išsiunčiame užklausą į duomenų bazę kuri parinks visus duomenis ir iškvies "OnPlayerCheck" funckiją su rezultatu
  54.     return 1;
  55. }
  56. forward OnPlayerCheck(playerid);
  57. public OnPlayerCheck(playerid)
  58. {
  59.     switch(orm_errno(pInfo[playerid][ORM_ID]))
  60.     {
  61.         //Jeigu nebuvo jokių klaidų siunčiant užklausą.
  62.         case ERROR_OK: ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Prisijungimas","Įveskite savo slaptažodį žemiau","Prisijungti","Išeiti");
  63.         //Jeigu gauta "nėra duomenų" klaida. Reiškia žaidėjo nėra duomenų bazėje.
  64.         case ERROR_NO_DATA: ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registracija","Įvesktie savo slaptažodį žemiau","Registruotis","Išeiti");
  65.     }
  66.     // Nurodome kad eilutes nuo dabar skirsime pagal "SQL_ID".
  67.     orm_setkey(pInfo[playerid][ORM_ID],"SQL_ID");
  68.     return 1;
  69. }
  70. public OnPlayerDisconnect(playerid,reason)
  71. {
  72.     if(pInfo[playerid][SQL_ID] != 0) orm_update(pInfo[playerid][ORM_ID]); // Jeigu žaidėjo informacija buvo užkrauta, išsaugom visus duomenis.
  73.     orm_destroy(pInfo[playerid][ORM_ID]); // Pašalinam ryšt su lentele tam žaidėjui.
  74.     return 1;
  75. }
  76. public OnPlayerCommandText(playerid,cmdtext[])
  77. {
  78.     if(!strcmp(cmdtext,"/test"))
  79.     {
  80.         printf("SQLID:%d",pInfo[playerid][SQL_ID]);
  81.         printf("Name:%s",pInfo[playerid][Name]);
  82.         printf("Password:%s",pInfo[playerid][Password]);
  83.         printf("Money:%d",pInfo[playerid][Money]);
  84.         return 1;
  85.     }
  86.     return 0;
  87. }
  88. public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
  89. {
  90.     if(dialogid == DIALOG_REGISTER) // Jeigu tai regsitracijos lentelė
  91.     {
  92.         if(!response) return Kick(playerid); // Jeigu paspaudė "Išeiti", išmetame jį lauk.
  93.         if(strlen(inputtext) < 6)  // Jeigu įvesto slaptažodis trumpesnis už 6.
  94.         {
  95.             SendClientMessage(playerid,-1,"Slaptažodį turi sudaryti bent 6 simboliai");
  96.             ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registracija","Įvesktie savo slaptažodį žemiau","Registruotis","Išeiti");
  97.             return 1;
  98.         }
  99.         strins(pInfo[playerid][Password],inputtext,0); // Įrašom į kintamajį "pInfo[playerid][Password]" žaidėjo slaptažodį.
  100.         orm_insert(pInfo[playerid][ORM_ID],"OnPlayerRegister","d",playerid); // Įrašome į lentelę naują eilutę skirta žaidėjui.
  101.         return 1;
  102.     }
  103.     else if(dialogid == DIALOG_LOGIN) // Jeigu tai prisijungimo lentelė.
  104.     {
  105.         if(!response) return Kick(playerid); // Jeigu žaidėjas paspaudė "Išeiti" - išmetam.
  106.         if(strlen(inputtext) < 6)
  107.         {
  108.             SendClientMessage(playerid,-1,"Slaptažodį turi sudaryti bent 6 simboliai");
  109.             ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Prisijungimas","Įveskite savo slaptažodį žemiau","Prisijungti","Išeiti");
  110.             return 1;
  111.         }
  112.         if(!strcmp(pInfo[playerid][Password],inputtext)) //Jeigu įvestas slaptažodis yra lygus įrašytam duomenų bazėje(jau užkrautas jis buvo, prisijungiant)
  113.         {
  114.             SendClientMessage(playerid,-1,"Sėkmingai prisijungėte, gero žaidimo!");
  115.             return 1;
  116.         }
  117.         else SendClientMessage(playerid,-1,"Slaptažodis neteisingas");
  118.     }
  119.     return 0;
  120. }
  121. forward OnPlayerRegister(playerid);
  122. public OnPlayerRegister(playerid)
  123. {
  124.     if(orm_errno(pInfo[playerid][ORM_ID]) == ERROR_OK) // Jeigu nebuvo klaidų siunčiant užklausą.
  125.     {
  126.         SendClientMessage(playerid,-1,"Registracija sėkminga! Gero žaidimo");
  127.     }
  128.     return 1;
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement