hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 16:57



Jelenlévő felhasználók

Jelenleg 211 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 210 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Google [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: MYSQL regisztráció - Sourcemod
HozzászólásElküldve: 2018.07.27. 22:24 
Offline
Fanatikus

Csatlakozott: 2017.02.14. 23:05
Hozzászólások: 193
Megköszönt másnak: 6 alkalommal
Megköszönték neki: 18 alkalommal
Sziasztok!

Ez Maxxi menüje a TUT Menük topicból... Szeretnék, egy olyan regisztrációs rendszert készíteni, ami ilyen menüs. De sajnos semmi ötletem nincs, hogyan lehetne. Sql-esként szeretném. Ez valamiért nem jön össze, tehát igazából egy olyan kis rendszert szeretnék, ahol be tudnak regisztrálni és ha lehet loginolni is. Ezért elég lenne, ha csak a felhasználónevet és a jelszót tárolná. Mert a többit már én bele írnám. Azt nem részletezném, hogy miért kell, viszont nagyon szükségem volna rá. Bejelentkezés után elég, ha csak 1 kijelentkezés meg 1 példa volna benne(példasor).
Előre is köszönöm a segítséget!
Fontos, hogy ez NEM amxx, ez Sourcemod!

  1. #include <sourcemod> //szükséges függvénykönyvtár
  2.  
  3. #pragma semicolon 1    //sortörés szigoritása
  4.     //------ if{ data[3] }
  5.     //>
  6. public OnClientPutInServer(client) //Akkor lép érvénybe ha egy player feljön a szerverre
  7. {
  8.     new Handle:menu_handle = CreateMenu(Menu_CallBack); //maga a menü megalkotása, Handle megadása, Menu visszahivásainak megadása.
  9.     SetMenuTitle(menu_handle, "Ez egy menu"); //menü cime (Meg lehet oldani format-al is ha valaki ugy szeretné)
  10.     AddMenuItem(menu_handle, "func1", "Elso Funkcio"); //Itemek
  11.     AddMenuItem(menu_handle, "func2", "Masodik Funkcio"); //Itemek2
  12.     SetMenuPagination(menu_handle, 7);
  13.     SetMenuExitButton(menu_handle, true); //Engedélyezzük az exit gombot
  14.     DisplayMenu(menu_handle, client, 200); //Végül megjelenitjük, a 200 az másodpercben van megadva és annyit tesz, hogy ha letelik 200 mp item kiválasztás nélkül, akkor egyszerűen kilép.
  15. }
  16. public Menu_CallBack(Handle:menu_handle, MenuAction:action, Client, Position) //Menü handle
  17. {
  18.     if(action == MenuAction_Select) //Ha kiválasztott egy itemet
  19.     {
  20.         decl String:Item[20];    //Item meghatározása
  21.         GetMenuItem(menu_handle, Position, Item, sizeof(Item));    //.
  22.         //>>
  23.         if(StrEqual(Item, "func1"))    //Ha a kiválasztott item egyenlő a "func1"-el a 10. sorban
  24.         {
  25.             PrintToChat(Client, "Kivalasztottad az elso funkciot"); //Akkor kiiratjuk
  26.         } else if(StrEqual(Item, "func2"))    //...
  27.         {
  28.             PrintToChat(Client, "Kivalasztottad a masodik funkciot"); //.. e helyett persze akármi mehet.. (pl CS_RespawnPlayer(client);) ha eddig nem lett volna egyértelmű
  29.          }
  30.     } else if(action == MenuAction_End) //Ha nem választott ki egy itemet sem, vagy exit-elt
  31.     {
  32.         CloseHandle(menu_handle); //bezárjuk menünket
  33.     }
  34.     /*
  35.     *    Megj, nem kell handle, continue maga a pluginnak.
  36.     */
  37. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: MYSQL regisztráció - Sourcemod
HozzászólásElküldve: 2018.07.28. 20:33 
Offline
Fanatikus

Csatlakozott: 2017.02.14. 23:05
Hozzászólások: 193
Megköszönt másnak: 6 alkalommal
Megköszönték neki: 18 alkalommal
Az már nagy gáz, ha egy ilyenért valaki pénzt kér...
Mivel nem egy egész mód... meg semmi...
Meg már sok embernek segítettem én is... itt is...
De hát, mit is gondoltam... magyar mentalitás...

  1. #include <sourcemod>
  2.  
  3. #pragma semicolon 1
  4.  
  5. Database g_hDatabase;
  6.  
  7. char g_sSteamid[MAXPLAYERS + 1][32];
  8.  
  9. char g_sName[MAXPLAYERS + 1][256];
  10. char g_sPassword[MAXPLAYERS + 1][256];
  11. char g_sEmail[MAXPLAYERS + 1][256];
  12.  
  13. bool g_bRegister;
  14.  
  15. public void OnPluginStart()
  16. {
  17. Database.Connect(SQL_Connection, "vipsystem");
  18. }
  19.  
  20. public void SQL_Connection(Database hDatabase, const char[] sError, int iData)
  21. {
  22. if (hDatabase == null)
  23. ThrowError(sError);
  24.  
  25. else
  26. {
  27. g_hDatabase = hDatabase;
  28.  
  29. g_hDatabase.Query(SQL_Error, "CREATE TABLE IF NOT EXISTS players (steam_id VARCHAR(32) NOT NULL PRIMARY KEY, account_name VARCHAR(32) NOT NULL, account_password VARCHAR(32) NOT NULL, account_email VARCHAR(32) NOT NULL)");
  30. }
  31. }
  32.  
  33. public void SQL_Error(Database hDatabase, DBResultSet hResults, const char[] sError, int iData)
  34. {
  35. if (hResults == null)
  36. ThrowError(sError);
  37. }
  38.  
  39. public void OnClientPostAdminCheck(int iClient)
  40. {
  41. if (IsValidClient(iClient))
  42. {
  43. GetClientAuthId(iClient, AuthId_Steam2, g_sSteamid[iClient], sizeof(g_sSteamid[]));
  44.  
  45. Menu hMenu = new Menu(Menu_Authorization);
  46.  
  47. hMenu.SetTitle("Choose Your Option.");
  48.  
  49. hMenu.AddItem("", "Login");
  50. hMenu.AddItem("", "Register");
  51.  
  52. hMenu.Display(iClient, MENU_TIME_FOREVER);
  53. }
  54. }
  55.  
  56. public int Menu_Authorization(Menu hMenu, MenuAction hAction, int iClient, int iParam)
  57. {
  58. switch (hAction)
  59. {
  60. case MenuAction_Select:
  61. {
  62. switch (iParam)
  63. {
  64. case 0:
  65. {
  66. char sQuery[256];
  67. //Format(sQuery, sizeof(sQuery), "SELECT * FROM players WHERE steam_id = \"%s\"", g_sSteamid[iClient]);
  68. Format(sQuery, sizeof(sQuery), "SELECT * FROM players WHERE steam_id = '%s'", g_sSteamid[iClient]);
  69.  
  70. g_hDatabase.Query(SQL_Authorization, sQuery, GetClientUserId(iClient));
  71.  
  72. }
  73.  
  74. case 1:
  75. g_bRegister = true;
  76. }
  77. }
  78.  
  79. case MenuAction_End:
  80. delete hMenu;
  81. }
  82. //char sQuery[256];
  83. //SQL_TQuery(g_hDatabase, SQL_ErrorCheckCallBack, sQuery);
  84. }
  85.  
  86. public void SQL_Authorization(Database hDatabase, DBResultSet hResults, const char[] sError, int iData)
  87. {
  88. if (hResults == null)
  89. ThrowError(sError);
  90.  
  91. int iClient = GetClientOfUserId(iData);
  92.  
  93. if (IsValidClient(iClient))
  94. {
  95. if (hResults.RowCount != 0)
  96. {
  97. hResults.FetchRow();
  98.  
  99. hResults.FetchString(1, g_sSteamid[iClient], sizeof(g_sSteamid[]));
  100. hResults.FetchString(2, g_sName[iClient], sizeof(g_sName[]));
  101. hResults.FetchString(3, g_sPassword[iClient], sizeof(g_sPassword[]));
  102. //hResults.FetchString(4, g_sEmail[iClient], sizeof(g_sEmail[]));
  103. }
  104.  
  105. else
  106. PrintToChat(iClient, "Your account wasn't found! You may register.");
  107. }
  108. //SQL_TQuery(g_hDatabase, SQL_ErrorCheckCallBack, sQuery);
  109. SQL_TQuery(g_hDatabase, SQL_ErrorCheckCallBack, hResults.FetchRow());
  110. }
  111.  
  112. public Action OnClientSayCommand(int iClient, const char[] sCommand, const char[] sArgs)
  113. {
  114. if (g_bRegister)
  115. {
  116. char sName[64], sPassword1[64], sPassword2[64], sEmail[64];
  117.  
  118. GetCmdArg(1, sName, sizeof(sName));
  119. GetCmdArg(2, sPassword1, sizeof(sPassword1));
  120. GetCmdArg(3, sPassword2, sizeof(sPassword2));
  121. GetCmdArg(4, sEmail, sizeof(sEmail));
  122.  
  123. if (sPassword1[0] != sPassword2[0])
  124. {
  125. PrintToChat(iClient, "Invalid password confirmation.");
  126.  
  127. return Plugin_Handled;
  128. }
  129.  
  130. char sQuery[256];
  131. //Format(sQuery, sizeof(sQuery), "INSERT INTO players (steam_id, account_name, account_password, account_email) VALUES (\"%s\", \"%s\", \"%s\", \"%s\")", g_sSteamid[iClient], sName, sPassword1, sEmail);
  132. Format(sQuery, sizeof(sQuery), "INSERT INTO players (steam_id, account_name, account_password, account_email) VALUES ('%s', '%s', '%s', '%s')", g_sSteamid[iClient], sName, sPassword1, sEmail);
  133.  
  134. g_hDatabase.Query(SQL_Error, sQuery);
  135.  
  136. g_bRegister = false;
  137.  
  138. return Plugin_Handled;
  139. }
  140.  
  141. return Plugin_Continue;
  142. }
  143.  
  144. public SQL_ErrorCheckCallBack(Handlewner, Handle:hDatabase, const String:error[], any:data)
  145. {
  146. // This is just an errorcallback for function who normally don't return any data
  147. if(hDatabase == INVALID_HANDLE)
  148. {
  149. SetFailState("Query failed! %s", error);
  150. }
  151. }
  152.  
  153. stock bool IsValidClient(int iClient)
  154. {
  155. if (!(0 < iClient <= MaxClients) || !IsClientInGame(iClient) || IsFakeClient(iClient))
  156. return false;
  157.  
  158. return true;
  159. }


Regisztrációnál ezt írja: L 08/20/2018 - 13:28:57: [SM] Exception reported: No command callback available
L 08/20/2018 - 13:28:57: [SM] Blaming: Regandlogin.smx
L 08/20/2018 - 13:28:57: [SM] Call stack trace:
L 08/20/2018 - 13:28:57: [SM] [0] GetCmdArg
L 08/20/2018 - 13:28:57: [SM] [1] Line 118, Regandlogin.sp::OnClientSayCommand

loginnál meg nincs hiba, de sajna nem megy!


Ez a teljesen eredeti egyébként:

  1. #include <sourcemod>
  2.  
  3. #pragma semicolon 1
  4.  
  5. Database g_hDatabase;
  6.  
  7. char g_sSteamid[MAXPLAYERS + 1][32];
  8.  
  9. char g_sName[MAXPLAYERS + 1][256];
  10. char g_sPassword[MAXPLAYERS + 1][256];
  11. char g_sEmail[MAXPLAYERS + 1][256];
  12.  
  13. bool g_bRegister;
  14.  
  15. public void OnPluginStart()
  16. {
  17.     Database.Connect(SQL_Connection, "loginsystem");
  18. }
  19.  
  20. public void SQL_Connection(Database hDatabase, const char[] sError, int iData)
  21. {
  22.     if (hDatabase == null)
  23.         ThrowError(sError);
  24.    
  25.     else
  26.     {
  27.         g_hDatabase = hDatabase;
  28.        
  29.         g_hDatabase.Query(SQL_Error, "CREATE TABLE IF NOT EXISTS players (steam_id VARCHAR(32) NOT NULL PRIMARY KEY, account_name VARCHAR(32) NOT NULL, account_password VARCHAR(32) NOT NULL, account_email VARCHAR(32) NOT NULL)");
  30.     }
  31. }
  32.  
  33. public void SQL_Error(Database hDatabase, DBResultSet hResults, const char[] sError, int iData)
  34. {
  35.     if (hResults == null)
  36.         ThrowError(sError);
  37. }
  38.  
  39. public void OnClientPostAdminCheck(int iClient)
  40. {
  41.     if (IsValidClient(iClient))
  42.     {
  43.         GetClientAuthId(iClient, AuthId_Steam2, g_sSteamid[iClient], sizeof(g_sSteamid[]));
  44.        
  45.         Menu hMenu = new Menu(Menu_Authorization);
  46.        
  47.         hMenu.SetTitle("Choose Your Option.");
  48.        
  49.         hMenu.AddItem("", "Login");
  50.         hMenu.AddItem("", "Register");
  51.        
  52.         hMenu.Display(iClient, MENU_TIME_FOREVER);
  53.     }
  54. }
  55.  
  56. public int Menu_Authorization(Menu hMenu, MenuAction hAction, int iClient, int iParam)
  57. {
  58.     switch (hAction)
  59.     {
  60.         case MenuAction_Select:
  61.         {
  62.             switch (iParam)
  63.             {
  64.                 case 0:
  65.                 {
  66.                     char sQuery[256];
  67.                     Format(sQuery, sizeof(sQuery), "SELECT * FROM stats WHERE steam_id = \"%s\"", g_sSteamid[iClient]);
  68.                    
  69.                     g_hDatabase.Query(SQL_Authorization, sQuery, GetClientUserId(iClient));
  70.                 }
  71.                
  72.                 case 1:
  73.                     g_bRegister = true;
  74.             }
  75.         }
  76.        
  77.         case MenuAction_End:
  78.             delete hMenu;
  79.     }
  80. }
  81.  
  82. public void SQL_Authorization(Database hDatabase, DBResultSet hResults, const char[] sError, int iData)
  83. {
  84.     if (hResults == null)
  85.         ThrowError(sError);
  86.    
  87.     int iClient = GetClientOfUserId(iData);
  88.    
  89.     if (IsValidClient(iClient))
  90.     {
  91.         if (hResults.RowCount != 0)
  92.         {
  93.             hResults.FetchRow();
  94.            
  95.             hResults.FetchString(2, g_sName[iClient], sizeof(g_sName[]));
  96.             hResults.FetchString(3, g_sPassword[iClient], sizeof(g_sPassword[]));
  97.             hResults.FetchString(4, g_sEmail[iClient], sizeof(g_sEmail[]));
  98.         }
  99.        
  100.         else
  101.             PrintToChat(iClient, "Your account wasn't found! You may register.");
  102.     }
  103. }
  104.  
  105. public Action OnClientSayCommand(int iClient, const char[] sCommand, const char[] sArgs)
  106. {
  107.     if (g_bRegister)
  108.     {
  109.         char sName[64], sPassword1[64], sPassword2[64], sEmail[64];
  110.        
  111.         GetCmdArg(1, sName, sizeof(sName));
  112.         GetCmdArg(2, sPassword1, sizeof(sPassword1));
  113.         GetCmdArg(3, sPassword2, sizeof(sPassword2));
  114.         GetCmdArg(4, sEmail, sizeof(sEmail));
  115.        
  116.         if (sPassword1[0] != sPassword2[0])
  117.         {
  118.             PrintToChat(iClient, "Invalid password confirmation.");
  119.            
  120.             return Plugin_Handled;
  121.         }
  122.        
  123.         char sQuery[256];
  124.         Format(sQuery, sizeof(sQuery), "INSERT INTO players (steam_id, account_name, account_password, account_email) VALUES (\"%s\", \"%s\", \"%s\", \"%s\")", g_sSteamid[iClient], sName, sPassword1, sEmail);
  125.        
  126.         g_hDatabase.Query(SQL_Error, sQuery);
  127.        
  128.         g_bRegister = false;
  129.        
  130.         return Plugin_Handled;
  131.     }
  132.    
  133.     return Plugin_Continue;
  134. }
  135.  
  136. stock bool IsValidClient(int iClient)
  137. {
  138.     if (!(0 < iClient <= MaxClients) || !IsClientInGame(iClient) || IsFakeClient(iClient))
  139.         return false;
  140.    
  141.     return true;
  142. }


De ugyanaz a hiba.


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 2 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole