Szerző Téma: Mysql  (Megtekintve 2333 alkalommal)

Nem elérhető Game94

  • 405
    • Profil megtekintése
Mysql
« Válasz #15 Dátum: 2010. október 14. - 16:44:05 »
0 Show voters
Amint lesz kedvem, idõm és türlemem, kiadom a sajátom Tongue ( Mert sztem az összes publikált közül az a legjobb/legegyszerûbb )[/quote]
Légyszíves akkor siess , mert már nagyon kéne a mysql :D
Egyébként én is csak beraktam a server mappába

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Mysql
« Válasz #16 Dátum: 2010. október 14. - 21:08:01 »
0 Show voters
Idézetet írta: Game94 date=1287067445\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"3630\" data-ipsquote-contentclass=\"forums_Topic

Amint lesz kedvem, idõm és türlemem, kiadom a sajátom Tongue ( Mert sztem az összes publikált közül az a legjobb/legegyszerûbb )
Légyszíves akkor siess , mert már nagyon kéne a mysql :D
Egyébként én is csak beraktam a server mappába
 
[/quote]
Na megvan! Már csak tesztelnem kell, hogy megy-e és holnap kiadom.
« Utoljára szerkesztve: 2010. október 14. - 21:54:12 írta kurta999 »

Nem elérhető Game94

  • 405
    • Profil megtekintése
Mysql
« Válasz #17 Dátum: 2010. október 15. - 12:57:27 »
0 Show voters
Rendben , köszönöm szépen  :amazed:

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Mysql
« Válasz #18 Dátum: 2010. október 15. - 14:09:26 »
0 Show voters
De akk a wamphoz kicsit értesz, nem ? xD
More, most meg nemmegy a wampom :@
Ittvan, elvileg menni kéne, a módomból szedtem ki:
 

#include <a_samp>
#include <a_mysql> // http://forum.sa-mp.com/showthread.php?t=56564
#include <sscanf2> // http://forum.sa-mp.com/showthread.php?t=120356
#include <zcmd>
new year,
month,
day,
hour,
minute,
second;
// Stringeket egyszer hozom csak létre, hogy kevesebb meriát fogyassztjon.
new query[128],
line[128],
//i_str[128],
tmp[128],
name[24],
ip[16];
// MySQL regisztrációs rendszer By kurta999
/*
    mysql_query             Egy megadott \'parancs\' elküldése
    mysql_store_result          Ez akkor kell, hogy ha ezeket használjuk: SELECT, INSERT INTO
    mysql_free_result();        Ez a store_result után kell, \'szabad eltérés\' xD
mysql_num_rows             SQL sorok száma
    mysql_fetch_row             A kiválasztott sort beleírjuk egy megadott karakterláncba, egy megadott elválasztóval, alapból ez: |
*/
// MySQL beállítások, alapból ezek azok a wamp-nál, csak a tábla nevét módosítsd arra, amilyen néven létrehoztad, nekem itt a \'samp\'
#define MYSQL_HOST       \"localhost\"
#define MYSQL_USER       \"root\"
#define MYSQL_PASS       \"\"
#define MYSQL_DB         \"samp\"
#define COLOR_GREY 0x375FFFFF
#define COLOR_GREEN 0x33FF33AA
#define COLOR_RED 0xFF0000AA
#define COLOR_YELLOW 0xFF9900AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_BLUE 0x33CCFFAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_BASIC 0x0066FFAA
#define COLOR_SYSTEM 0xEFEFF7AA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_PINK 0xFF66FFAA
public OnFilterScriptInit()
{
       // MySQL
print(\"MySQL Kapcsolódás erre a címre \" MYSQL_HOST \" \" MYSQL_USER \" nevû felhasználóval. Adatbázis neve: \" MYSQL_DB \".\");
mysql_debug(1);
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PASS);
if(mysql_ping() != 1)
{
    print(\"MySQL Kapcsolódás sikertelen! (\" MYSQL_HOST \")\");
        print(\"MySQL Újrakapcsolódás! (\" MYSQL_HOST \")\");
        mysql_reconnect();
return 1;
}
print(\"MySQL Kapcsolódás elfogadva!\" MYSQL_HOST \"\");
print(\"MySQL Adatbázis \" MYSQL_DB \" kiválasztva!\");
     return 1;
}
public OnFilterScriptExit()
{
mysql_close();
     return 1;
}
public OnPlayerConnect(playerid)
{
    SetPVarInt(playerid, \"LoggedIn\", 0);
    SetPVarInt(playerid, \"RegID\", -1);
   
// Automatikus bejelentkezés
    if(!IsPlayerNPC(playerid))
{
new MyRegID;
GetPlayerIp(playerid, ip, sizeof(ip));
       
// Autologin
format(query, sizeof(query), \"SELECT * FROM `players` WHERE `name` = \'%s\' AND `ip` = \'%s\'\", pName(playerid), ip);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() != 0) // Ha a sor nem üres
{
   mysql_fetch_row(line);
   mysql_free_result();
   sscanf(line, \"p<|>{ds[24]s[20]s[30]s[30]}d\", MyRegID);
            SetPVarInt(playerid, \"RegID\", MyRegID);
           
    LoginPlayer(playerid, line);
   SendClientMessage(playerid, COLOR_GREEN, \"Automatikusan bejelentkeztél.\");
}
}
     return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(GetPVarInt(playerid, \"LoggedIn\"))
{
SavePlayer(playerid);
    }
     return 1;
}
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
}
mysql_free_result();
    }
     return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new Pass[32], MyRegID;
    if(dialogid == 1)
    {
        if(response)
        {
   if(GetPVarInt(playerid, \"LoggedIn\"))
   {
      SendClientMessage(playerid, COLOR_RED, \"Már be vagy jelentkezve.\");
      return 1;
   }
          if(!strlen(inputtext[0]))
   {
      SendClientMessage(playerid, COLOR_RED, \"Nem írtál be semilyen jelszót!\");
      LoginDialog(playerid);
      return 1;
   }
   format(query, sizeof(query), \"SELECT * FROM `players` WHERE `name` = \'%s\'\", pName(playerid));
   mysql_query(query);
   mysql_store_result();
   mysql_fetch_row(line);
            mysql_free_result();
   sscanf(line, \"p<|>d{s[24]s[20]}s[30]{s[30]s[30]d}\", MyRegID, Pass);
            SetPVarInt(playerid, \"RegID\", MyRegID);
           
   if(!strcmp(inputtext, Pass))
   {
      LoginPlayer(playerid, Pass);
   }
            else
            {
      SendClientMessage(playerid, COLOR_RED, \"HIBA: Rossz jelszó.\");
      return 1;
   }
   // Az IP-t beállítjuk a jelenlegi IP-re, hogy az autologin menjen. A GetPlayerIp OnPlayerDisconnect-nél nem mûködik ( szarsággal tér vissza )
            GetPlayerIp(playerid, ip, sizeof(ip));
            format(query, sizeof(query), \"UPDATE `players` SET `ip` = \'%s\' WHERE `reg_id` = %d\", ip, GetPVarInt(playerid, \"RegID\"));
    mysql_query(query);
            SendClientMessage(playerid, COLOR_GREEN, \"Sikeresen bejelentkeztél.\");
    }
else
{
   LoginDialog(playerid);
}
    }
    if(dialogid == 2)
    {
        if(response)
        {
   if(!strlen(inputtext[0]))
   {
      SendClientMessage(playerid, COLOR_RED, \"Nem írtál be semilyen jelszót!\");
                RegisterDialog(playerid);
      return 1;
   }
   if(strlen(inputtext) < 3 || strlen(inputtext) > 20)
   {
      SendClientMessage(playerid, COLOR_RED, \"Rossz jelszó hosszúság! 3 - 20\");
      RegisterDialog(playerid);
      return 1;
   }
   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)
   {
      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 érthetõre
   // A jeszavak nincsenek titkosítva...
            format(query, sizeof(query), \"INSERT INTO `players`(reg_id, name, ip, pass, reg_date) VALUES(0, \'%s\', \'%s\', \'%s\', %d.%d.%d/%d.%d.%d)\", pName(playerid), ip, tmp, 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 elõbb ( INSERT INTO )
   SendClientFormatMessage(playerid, COLOR_GREEN, \"Sikeresen regisztráltál! A jelszavad: %s. Regisztráció ID: %d\", tmp, GetPVarInt(playerid, \"RegID\"));
          SendClientMessage(playerid, COLOR_PINK, \"Ennyi lenne a MySQL regisztáció :D\");
}
else
{
    RegisterDialog(playerid);
}
return 1;
    }
return 1;
}
// Statisztika felmutató
CMD:stats(playerid)
{
    SendClientFormatMessage(playerid, COLOR_GREEN, \"Név: %s, ID: %d, RegID: %d, Pénz: %d\", pName(playerid), playerid, GetPVarInt(playerid, \"RegID\"), GetPlayerMoney(playerid));
return 1;
}
stock LoginDialog(playerid)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, \"Bejelentkezés\",\"Üdvözöllek a \\n\\nMySQL teszt szerveren, \\n\\n Te már regisztálva vagy. Lentre írd be a jelszavad\", \"Bejelentkezés\", \"Mégse\");
return 1;
}
stock RegisterDialog(playerid)
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, \"Regisztráció\",\"Üdvözöllek a \\n\\nMySQL teszt szerveren, \\n\\n Itt még nem regisztráltál. Lentre írd be a jelszavad\", \"Regisztáció\", \"Mégse\");
return 1;
}
/* Bejelentkezés */
stock LoginPlayer(playerid, result_line[])
{
new PVarSet[1][MAX_PLAYERS]; // Direkt raktam rá MAX_PLAYERS értéket, mert nekem aznélkül keveredett...
sscanf(result_line,   \"p<|>{ds[24]s[20]s[30]s[30]s[30]}d\", PVarSet[0][playerid]);
GivePlayerMoney(playerid, PVarSet[0][playerid]);
    SetPVarInt(playerid, \"LoggedIn\", 1);
return 1;
}
SavePlayer(playerid)
{
    if(!GetPVarInt(playerid, \"LoggedIn\")) return 0; // Ha nincs bejelentkezve, akk nem mentjuk, ezt ajánlatos itthagyni...
if(!IsPlayerNPC(playerid))
    {
getdate(year, month, day);
gettime(hour, minute, second);
format(query, sizeof(query), \"UPDATE `players` SET `laston` = \'%s\', `money` = %d WHERE `reg_id` = %d\",
year, month, day, hour, minute, second, GetPlayerMoney(playerid),
GetPVarInt(playerid, \"RegID\") );
    mysql_query(query);
    }
return 1;
}
stock pName(playerid)
{
GetPlayerName(playerid, name, sizeof(name));
return name;
}
/*
CREATE TABLE IF NOT EXISTS `players` (
  `reg_id` smallint(7) NOT NULL auto_increment,
  `name` varchar(24) NOT NULL,
  `ip` varchar(20) NOT NULL,
  `pass` varchar(20) NOT NULL,
  `reg_date` varchar(24) NOT NULL,
  `laston` varchar(24) NOT NULL,
  `money` int(20) NOT NULL default \'50000\',
  PRIMARY KEY  (`reg_id`),
  KEY `name` (`name`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
*/
stock SendClientFormatMessage(playerid, color, const msg[], {Float,_}:...)
{
new len = strlen(msg),d=0,posArg = 3;
new dest[512];
for(new i=0;i<len;i++)
{
    if(msg == \'%\')
    {
        switch (msg[i+1])
        {
            case \'s\':
      {
               new pos,arg,tmppos;
               new str[128];
                while(getarg(posArg,pos)!=\'\\0\')
               {
                    arg=getarg(posArg,pos++);
            str[tmppos]=arg;
                     tmppos++;
                }
          strins(dest,str,d,strlen(str));
          d+=strlen(str);
         posArg++;
         i++;
      }
            case \'i\', \'d\':
      {
          new str[128];
          format(str,sizeof(str),\"%d\",getarg(posArg));
          strins(dest,str,d,strlen(str));
          d+=strlen(str);
         posArg++;
         i++;
      }
            case \'f\':
      {
          new str[128];
          format(str,sizeof(str),\"%f\",getarg(posArg));
          strins(dest,str,d,strlen(str));
          d+=strlen(str);
         posArg++;
         i++;
      }
      case \'.\':
      {
          new len2 = msg[i+2];
          if(len2 == 0)
         {
            dest[d] = msg;
            d++;
         }
         else
         {
             new str[32],formatting[5];
             formatting[0] = \'%\';
             formatting[1] = \'.\';
             formatting[2] = len2;
             formatting[3] = \'f\';
             format(str,sizeof(str),formatting,getarg(posArg));
             strins(dest,str,d,len2);
             d+=len;
            posArg++;
            i+= 2;
         }
      }
      default:
      {
         dest[d] = msg;
         d++;
      }
   }
}
else
{
   dest[d] = msg;
   d++;
}
}
return SendClientMessage(playerid,color,dest);
}
stock SendClientFormatMessageToAll(color, const msg[], {Float,_}:...)
{
new len = strlen(msg),d=0,posArg = 2;
new dest[128];
for(new i=0;i<len;i++)
{
    if(msg == \'%\')
    {
        switch (msg[i+1])
        {
            case \'s\':
      {
               new pos,arg,tmppos;
               new str[128];
                while(getarg(posArg,pos)!=\'\\0\')
               {
                    arg=getarg(posArg,pos++);
            str[tmppos]=arg;
                     tmppos++;
                }
          strins(dest,str,d,strlen(str));
          d+=strlen(str);
         posArg++;
         i++;
      }
            case \'i\', \'d\':
      {
          new str[128];
          format(str,sizeof(str),\"%d\",getarg(posArg));
          strins(dest,str,d,strlen(str));
          d+=strlen(str);
         posArg++;
         i++;
      }
            case \'f\':
      {
          new str[128];
          format(str,sizeof(str),\"%f\",getarg(posArg));
          strins(dest,str,d,strlen(str));
          d+=strlen(str);
         posArg++;
         i++;
      }
      case \'.\':
      {
          new len2 = msg[i+2];
          if(len2 == 0)
         {
            dest[d] = msg;
            d++;
         }
         else
         {
             new str[32],formatting[5];
             formatting[0] = \'%\';
             formatting[1] = \'.\';
             formatting[2] = len2;
             formatting[3] = \'f\';
             format(str,sizeof(str),formatting,getarg(posArg));
             strins(dest,str,d,len2);
             d+=len;
            posArg++;
            i+= 2;
         }
      }
      default:
      {
         dest[d] = msg;
         d++;
      }
   }
}else{
   dest[d] = msg;
   d++;
}
}
return SendClientMessageToAll(color,dest);
}
#define SendClientMessageToAll SendClientFormatMessageToAll
« Utoljára szerkesztve: 2010. október 15. - 15:06:13 írta kurta999 »

Nem elérhető Game94

  • 405
    • Profil megtekintése
Mysql
« Válasz #19 Dátum: 2010. október 15. - 15:10:25 »
0 Show voters
Még le tudnád írni azt a CREATE TABLE-s cuccot ?
Úgy hogy mûködjön az fs-el .
Szóval az fs-ben lévõ cuccokat hozza létre :)
« Utoljára szerkesztve: 2010. október 15. - 15:28:54 írta Game94 »

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Mysql
« Válasz #20 Dátum: 2010. október 15. - 15:46:59 »
0 Show voters
Itt a tábla ( Benne volt, csak lejjebb :D )
Amúgy ez egy kész FS.
 

CREATE TABLE IF NOT EXISTS `players` (
  `reg_id` smallint(7) NOT NULL auto_increment,
  `name` varchar(24) NOT NULL,
  `ip` varchar(20) NOT NULL,
  `pass` varchar(20) NOT NULL,
  `reg_date` varchar(24) NOT NULL,
  `laston` varchar(24) NOT NULL,
  `money` int(20) NOT NULL default \'50000\',
  PRIMARY KEY  (`reg_id`),
  KEY `name` (`name`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;

Nem elérhető Game94

  • 405
    • Profil megtekintése
Mysql
« Válasz #21 Dátum: 2010. október 16. - 14:26:18 »
0 Show voters
Ezt nem értem , még mindig nem megy :S:S
Így néz ki a server.cfg :
 
echo Executing Server Config...
lanmode 0
rcon_password teszt
maxplayers 500
port 7777
hostname Teszt !
gamemode0 bare
filterscripts mysql
plugins mysql
announce 1
query 1
weburl www.sa-mp.com
maxnpc 0
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000

 
Így néz ki a log :
 

----------
Loaded log file: \"server_log.txt\".
----------
SA-MP Dedicated Server
----------------------
v0.3b R2, (C)2005-2010 SA-MP Team
[14:33:25]
[14:33:25] Server Plugins
[14:33:25] --------------
[14:33:25]  Loading plugin: mysql
[14:33:26]
  > MySQL plugin R4-2 successfully loaded.
[14:33:26]   Loaded.
[14:33:26]  Loading plugin: sscanf2
[14:33:26]   Failed.
[14:33:26]  Loaded 1 plugins.
[14:33:26]
[14:33:26] Filter Scripts
[14:33:26] ---------------
[14:33:26]   Loading filter script \'mysql.amx\'...
[14:33:26]   Loaded 1 filter scripts.
[14:33:26]
----------------------------------
[14:33:26]   Bare Script
[14:33:26] ----------------------------------
[14:33:26] Number of vehicle models: 0
[14:33:28] --- Server Shutting Down.
[14:33:28]
  > MySQL plugin unloaded.

 
Az FS-be beírtam mindenhova a helyes adatot , de mégsem jó :S
okhost.eu-t használom .
Valami ötlet ?

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal