hlmod.hu
https://hlmod.hu/

MYSQL regisztráció - Sourcemod
https://hlmod.hu/viewtopic.php?f=51&t=29211
Oldal: 1 / 1

Szerző:  terminator100 [ 2018.07.27. 22:24 ]
Hozzászólás témája:  MYSQL regisztráció - Sourcemod

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. }

Szerző:  terminator100 [ 2018.07.28. 20:33 ]
Hozzászólás témája:  Re: MYSQL regisztráció - Sourcemod

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.

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/