GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: Gabor.. - 2012. február 17. - 20:45:38

Cím: MySQL Regisztráció számoló
Írta: Gabor.. - 2012. február 17. - 20:45:38
Sziasztok!
Valaki tudna nekem, egy olyan MySQL-es scriptet adni táblával együtt, ami számolja, és kiírja az összes játékosnak SendClientMessageToAll-ba, hogy xy játékos regisztrált, és utána, hogy összesen mennyien regisztráltak?
Elõre is köszönöm!
Cím: MySQL Regisztráció számoló
Írta: Casamiro - 2012. február 17. - 22:18:33
Ha csak számláló kell:
[pawn]new str[64], eredmeny;
mysql_query(\"SELECT * FROM `tabla_neve`\");
mysql_store_result();
eredmeny = mysql_num_rows();
mysql_free_result();
format(str, sizeof str, \"%d játékos regisztrált\", eredmeny);
SendClientMessage(playerid, -1, str);[/pawn]
Cím: MySQL Regisztráció számoló
Írta: skyLine - 2012. február 17. - 22:23:26
[*code][*/code]
Tagokat használj, mert így elképzelhetõ, hogy hibás.
Cím: MySQL Regisztráció számoló
Írta: Gabor.. - 2012. február 18. - 06:51:02
Köszi! :D És ezt a regisztrációs rendszerembe rakjam bele? És ha igen, akkor milyen függvény alá, vagy csak simán a script végére?
Cím: MySQL Regisztráció számoló
Írta: DriftBoY - 2012. február 18. - 06:53:55
nálam megyen beraktam magamnak
Cím: MySQL Regisztráció számoló
Írta: Casamiro - 2012. február 18. - 11:20:06
Rakd egy parancsba, vagy ahol használni szeretnéd, akár timer, például parancs:
 

CMD:jatekosok(playerid, params[])
{
      new str[64], eredmeny;
      mysql_query(\"SELECT * FROM `tabla_neve`\");
      mysql_store_result();
      eredmeny = mysql_num_rows();
      mysql_free_result();
      format(str, sizeof str, \"%d játékos regisztrált\", eredmeny);
      SendClientMessage(playerid, -1, str);
      return 1;
}
Cím: MySQL Regisztráció számoló
Írta: Gabor.. - 2012. február 18. - 13:31:39
De én úgy szeretném, hogy ha valaki regisztrált, akkor autómatikusan kiírja mindenkinek, hogy xy nevû játékos regisztrált, és ha ez megvan, akkor azt is írja ki mindenkinek, hogy xy játékos regisztrált összesen
Cím: MySQL Regisztráció számoló
Írta: Casamiro - 2012. február 18. - 14:14:38
Akkor a regisztrációs kódhoz:
 
new name[24], str[64];
GetPlayerName(playerid, name, 24);
format(str, sizeof str, \"%s regisztrált\", name);
SendClientMessageToAll(-1, str);
new eredmeny;
mysql_query(\"SELECT * FROM `tabla_neve`\");
mysql_store_result();
eredmeny = mysql_num_rows();
mysql_free_result();
format(str, sizeof str, \"Összesen %d játékos regisztrált\", eredmeny);
SendClientMessage(playerid, -1, str);
Cím: MySQL Regisztráció számoló
Írta: Gabor.. - 2012. február 18. - 15:35:29
Köszi! :D És azt hogyan tudom megoldani, hogy ne parancsba építsem bele, hanem csak simán bele a scriptbe?
Cím: MySQL Regisztráció számoló
Írta: Casamiro - 2012. február 18. - 18:13:30
Hát ahol beszúrja a MySQL táblába a játékos adatait, oda beteszed a kódot
Cím: MySQL Regisztráció számoló
Írta: Gabor.. - 2012. február 18. - 19:41:41
Nemértem O_O Nekem vagy egy mysql-es regisztrációs rendszerem, és akkor abba a scriptbe rakjam bele? Mert ha igen, akkor nemjó, mert errorozik. Légyszives megmondanád egy mysql nagyon kezdõ nyelvén? Köszi! :)
Cím: MySQL Regisztráció számoló
Írta: Casamiro - 2012. február 18. - 21:38:08
Másold be a kódot és az errorokat
Cím: MySQL Regisztráció számoló
Írta: Gabor.. - 2012. február 18. - 22:42:24
Most jó, nem errorozik, de akárki regisztrál kiírjka, hogy regiszterált stb.. De ha beakar loginolni, akkor megint bejön a regisztrációs dialóg, mintha még nem regisztrált volna. És ezelõtt jóvolt. Ide raktam be, mert ítt láttam, olyan regisztrációs részt a scriptben és ne  autologin-t:
 
public OnPlayerRequestClass(playerid, classid)
{
    if(!GetPVarInt(playerid, \"LoggedIn\")) // Ha nincs bejelentkezve, ez a lekérés ide nagyon fontos mert minden gobnyomásnál felmutatná a skiválasztóban.
    {
format(query, sizeof(query), \"SELECT * FROM `players` WHERE `name` = \'%s\'\", pName(playerid)); // Kiválasztjuk, a játékos nevét
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() != 0) // Ha a sorok száma nem 0 ( nem üres )
{
   LoginDialog(playerid); // Akkor login
}
else // Ellentétben
{
        RegisterDialog(playerid); // Register
        new name[24], str[64];
                GetPlayerName(playerid, name, 24);
                format(str, sizeof str, \"%s regisztrált\", name);
                SendClientMessageToAll(-1, str);
                new eredmeny;
                mysql_query(\"SELECT * FROM `players`\");
                mysql_store_result();
                eredmeny = mysql_num_rows();
                mysql_free_result();
               format(str, sizeof str, \"Összesen %d játékos regisztrált\", eredmeny);
               SendClientMessage(playerid, -1, str);
}
mysql_free_result();
}
return 1;
}
Cím: MySQL Regisztráció számoló
Írta: Casamiro - 2012. február 19. - 09:17:48
OnDialogResponse függvényt másold be, de csak azt a részt, ahol a regisztrációs dialogot ellenõrzi
Cím: MySQL Regisztráció számoló
Írta: Gabor.. - 2012. február 19. - 11:12:48
Ez csakl az a része: [pawn]case DIALOG_REGISTER:
   {
      if(!response)
         return RegisterDialog(playerid);
      if(isnull(inputtext))
      {
         SendClientMessage(playerid, COLOR_RED, \"Nem írtál be semilyen jelszót!\");
         RegisterDialog(playerid);
         return 1;
      }
            new
                len = strlen(inputtext);
      if(!(3 <= len <= 20))
      {
         SendClientMessage(playerid, COLOR_RED, \"Rossz jelszó hosszúság! 3 - 20\");
         RegisterDialog(playerid);
         return 1;
      }
      for(new i; i < len; i++)
       {
         if(inputtext == \'|\') return SendClientMessage(playerid, COLOR_RED, \"Ezt a jelet {\" #XCOLOR_BLUE \"}| {\" #XCOLOR_RED \"}nem használhatod, mert ez a MySQL elválasztó!\");

      }


      format(query, sizeof(query), \"SELECT `reg_id` FROM `players` WHERE `name` = \'%s\'\", pName(playerid));


      mysql_query(query);


      mysql_store_result();


      if(mysql_num_rows() != 0)


      {


         SendClientMessage(playerid, COLOR_RED, \"MySQL sorok száma nem 0, valami hiba történt a kiválasztás közben!\");


         SendClientMessage(playerid, COLOR_RED, \"Ezt a hibát jelezd a tulajdonosnak! Kickelve lettél, mert ebbol hiba keletkezhet!\");


         mysql_free_result();


         Kick(playerid);


         return 1;


      }


      mysql_free_result();


      getdate(year, month, day);


      gettime(hour, minute, second);


      GetPlayerIp(playerid, ip, sizeof(ip));


      mysql_real_escape_string(inputtext, tmp); // Ez arra van, hogy ha speciális karatereket tartalmaz, akk azt átcsinálja az SQL-nek értheto\"re


      // A jeszavak nincsenek titkosítva...


      format(query, sizeof(query), \"INSERT INTO `players`(reg_id, name, ip, pass, reg_date, laston) VALUES(0, \'%s\', \'%s\', \'%s\', \'%02d.%02d.%02d/%02d.%02d.%02d\', \'%02d.%02d.%02d/%02d.%02d.%02d\')\", pName(playerid), ip, tmp, year, month, day, hour, minute, second, year, month, day, hour, minute, second);


      mysql_query(query);


      SetPVarInt(playerid, \"RegID\", mysql_insert_id()); // Játékos Regisztrációs ID-jét beállítuk arra, ameik sorba írtunk elo\"bb ( INSERT INTO )


      SetPVarInt(playerid, \"LoggedIn\", 1);


      format(i_str, sizeof(i_str), \"Sikeresen regisztráltál! A jelszavad: {\" #XCOLOR_RED \"}%s. {\" #XCOLOR_GREEN \"}Felhasználó ID: {\" #XCOLOR_BLUE \"}%d\", tmp, GetPVarInt(playerid, \"RegID\"));


      SendClientMessage(playerid, COLOR_GREEN, i_str);


      SendClientMessage(playerid, COLOR_PINK, \"Ennyi lenne a MySQL regisztáció {\" #XCOLOR_BLUE \"}:D\");


   }[/pawn]
Cím: MySQL Regisztráció számoló
Írta: Casamiro - 2012. február 19. - 20:49:25
case DIALOG_REGISTER:
{
   if(!response)
      return RegisterDialog(playerid);
   if(isnull(inputtext))
   {
      SendClientMessage(playerid, COLOR_RED, \"Nem írtál be semilyen jelszót!\");
      RegisterDialog(playerid);
      return 1;
   }
            new
                len = strlen(inputtext);
   if(!(3 <= len <= 20))
   {
      SendClientMessage(playerid, COLOR_RED, \"Rossz jelszó hosszúság! 3 - 20\");
      RegisterDialog(playerid);
      return 1;
   }
   for(new i; i < len; i++)
    {
      if(inputtext == &#039;|\') return SendClientMessage(playerid, COLOR_RED, \"Ezt a jelet {\" #XCOLOR_BLUE \"}| {\" #XCOLOR_RED \"}nem használhatod, mert ez a MySQL elválasztó!\");
   }
   format(query, sizeof(query), \"SELECT `reg_id` FROM `players` WHERE `name` = &#039;%s\'\", pName(playerid));
   mysql_query(query);
   mysql_store_result();
   if(mysql_num_rows() != 0)
   {
      SendClientMessage(playerid, COLOR_RED, \"MySQL sorok száma nem 0, valami hiba történt a kiválasztás közben!\");
      SendClientMessage(playerid, COLOR_RED, \"Ezt a hibát jelezd a tulajdonosnak! Kickelve lettél, mert ebbol hiba keletkezhet!\");
      mysql_free_result();
      Kick(playerid);
      return 1;
   }
   mysql_free_result();
   getdate(year, month, day);
   gettime(hour, minute, second);
   GetPlayerIp(playerid, ip, sizeof(ip));
   mysql_real_escape_string(inputtext, tmp); // Ez arra van, hogy ha speciális karatereket tartalmaz, akk azt átcsinálja az SQL-nek értheto\"re
   // A jeszavak nincsenek titkosítva...
   format(query, sizeof(query), \"INSERT INTO `players`(reg_id, name, ip, pass, reg_date, laston) VALUES(0, &#039;%s\', \'%s\', \'%s\', \'%02d.%02d.%02d/%02d.%02d.%02d\', \'%02d.%02d.%02d/%02d.%02d.%02d\')\", pName(playerid), ip, tmp, year, month, day, hour, minute, second, year, month, day, hour, minute, second);
   mysql_query(query);
   SetPVarInt(playerid, \"RegID\", mysql_insert_id()); // Játékos Regisztrációs ID-jét beállítuk arra, ameik sorba írtunk elo\"bb ( INSERT INTO )
   SetPVarInt(playerid, \"LoggedIn\", 1);
   format(i_str, sizeof(i_str), \"Sikeresen regisztráltál! A jelszavad: {\" #XCOLOR_RED \"}%s. {\" #XCOLOR_GREEN \"}Felhasználó ID: {\" #XCOLOR_BLUE \"}%d\", tmp, GetPVarInt(playerid, \"RegID\"));
   SendClientMessage(playerid, COLOR_GREEN, i_str);
   SendClientMessage(playerid, COLOR_PINK, \"Ennyi lenne a MySQL regisztáció {\" #XCOLOR_BLUE \"}:D\");
                        new name[24], str[64];
                GetPlayerName(playerid, name, 24);
                format(str, sizeof str, \"%s regisztrált\", name);
                SendClientMessageToAll(-1, str);
                new eredmeny;
                mysql_query(\"SELECT * FROM `players`\");
                mysql_store_result();
                eredmeny = mysql_num_rows();
                mysql_free_result();
               format(str, sizeof str, \"Összesen %d játékos regisztrált\", eredmeny);
               SendClientMessage(playerid, -1, str);
}
Cím: MySQL Regisztráció számoló
Írta: Gabor.. - 2012. február 20. - 15:56:33
Köszi a segítséget! Megy a +! :)
Zárok!