hlmod.hu

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



Jelenlévő felhasználók

Jelenleg 221 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 219 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], MateaBoss 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  [ 20 hozzászólás ]  Oldal 1 2 Következő
Szerző Üzenet
 Hozzászólás témája: SQL Save
HozzászólásElküldve: 2013.04.24. 14:50 
Offline
Fanatikus

Csatlakozott: 2013.03.07. 14:30
Hozzászólások: 158
Megköszönt másnak: 13 alkalommal
Megköszönték neki: 9 alkalommal
Tiszteletem!

Van valaki aki ért azz SQL-hez ?

Találtam egy tutorialt az SQL mentéshez, ez ment is áttudtam írni azt benne ami nekem kell, de a mentés stemid-re szol.
Na szoval valaki aki ért hozzá ( IrOn , stb. ) tudna segíteni abban hogy átírja névre szólóra ?

Itt az Sma:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <sqlx>
  3.  
  4. #define PLUGIN "Tutorial"
  5. #define VERSION "1.0"
  6. #define AUTHOR "Grim"
  7.  
  8. // Ur Mysql Information
  9. new Host[] = "hostname"
  10. new User[] = "username"
  11. new Pass[] = "password"
  12. new Db[] = "database"
  13.  
  14.  
  15. new Handle:g_SqlTuple
  16. new g_Error[512]
  17.  
  18.  
  19. new iExp[33]
  20.  
  21. // Pcvar's
  22. new cKill
  23. new cHeadshot
  24. new cDeath
  25.  
  26. public plugin_init() {
  27. register_plugin(PLUGIN, VERSION, AUTHOR)
  28.  
  29. register_event("DeathMsg", "Event_DeathMsg", "a") // Register death event
  30.  
  31. // register the Pcvar's
  32. cKill = register_cvar("exp_kill", "2")
  33. cHeadshot = register_cvar("exp_headshot", "4")
  34. cDeath = register_cvar("exp_death", "1")
  35.  
  36. set_task(1.0, "MySql_Init") // set a task to activate the mysql_init
  37. }
  38.  
  39. public MySql_Init()
  40. {
  41. // we tell the API that this is the information we want to connect to,
  42. // just not yet. basically it's like storing it in global variables
  43. g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)
  44.  
  45. // ok, we're ready to connect
  46. new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error))
  47. if(SqlConnection == Empty_Handle)
  48. // stop the plugin with an error message
  49. set_fail_state(g_Error)
  50.  
  51. new Handle:Queries
  52. // we must now prepare some random queries
  53. Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS tutorial (steamid varchar(32),exp INT(11))")
  54.  
  55. if(!SQL_Execute(Queries))
  56. {
  57. // if there were any problems
  58. SQL_QueryError(Queries,g_Error,charsmax(g_Error))
  59. set_fail_state(g_Error)
  60.  
  61. }
  62.  
  63. // close the handle
  64. SQL_FreeHandle(Queries)
  65.  
  66. // you free everything with SQL_FreeHandle
  67. SQL_FreeHandle(SqlConnection)
  68. }
  69.  
  70. public plugin_end()
  71. {
  72. // free the tuple - note that this does not close the connection,
  73. // since it wasn't connected in the first place
  74. SQL_FreeHandle(g_SqlTuple)
  75. }
  76.  
  77. public Load_MySql(id)
  78. {
  79. new szSteamId[32], szTemp[512]
  80. get_user_authid(id, szSteamId, charsmax(szSteamId))
  81.  
  82. new Data[1]
  83. Data[0] = id
  84.  
  85. //we will now select from the table `tutorial` where the steamid match
  86. format(szTemp,charsmax(szTemp),"SELECT * FROM `tutorial` WHERE (`tutorial`.`steamid` = '%s')", szSteamId)
  87. SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1)
  88. }
  89.  
  90. public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  91. {
  92. if(FailState == TQUERY_CONNECT_FAILED)
  93. {
  94. log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
  95. }
  96. else if(FailState == TQUERY_QUERY_FAILED)
  97. {
  98. log_amx("Load Query failed. [%d] %s", Errcode, Error)
  99. }
  100.  
  101. new id
  102. id = Data[0]
  103.  
  104. if(SQL_NumResults(Query) < 1)
  105. {
  106. //.if there are no results found
  107.  
  108. new szSteamId[32]
  109. get_user_authid(id, szSteamId, charsmax(szSteamId)) // get user's steamid
  110.  
  111. // if its still pending we can't do anything with it
  112. if (equal(szSteamId,"ID_PENDING"))
  113. return PLUGIN_HANDLED
  114.  
  115. new szTemp[512]
  116.  
  117. // now we will insturt the values into our table.
  118. format(szTemp,charsmax(szTemp),"INSERT INTO `tutorial` ( `steamid` , `exp`)VALUES ('%s','0');",szSteamId)
  119. SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
  120. }
  121. else
  122. {
  123. // if there are results found
  124. iExp[id] = SQL_ReadResult(Query, 1)
  125. }
  126.  
  127. return PLUGIN_HANDLED
  128. }
  129.  
  130. public Save_MySql(id)
  131. {
  132. new szSteamId[32], szName[32], szTemp[512]
  133. get_user_authid(id, szSteamId, charsmax(szSteamId))
  134.  
  135. // Here we will update the user hes information in the database where the steamid matches.
  136. format(szTemp,charsmax(szTemp),"UPDATE `tutorial` SET `exp` = '%i' WHERE `tutorial`.`steamid` = '%s';",iExp[id], szSteamId)
  137. SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
  138. }
  139.  
  140. public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  141. {
  142. SQL_FreeHandle(Query)
  143.  
  144. return PLUGIN_HANDLED
  145. }
  146.  
  147. public client_putinserver(id)
  148. {
  149. Load_MySql(id)
  150. }
  151.  
  152. public client_disconnect(id)
  153. {
  154. Save_MySql(id)
  155. }
  156.  
  157. public Event_DeathMsg()
  158. {
  159. new iKiller = read_data(1) // read the data to get the killer and victim
  160. new iVictim = read_data(2)
  161.  
  162. if(is_user_alive(iKiller)) // Check if the killer is alive in case he killed himself
  163. {
  164. if(read_data(3))
  165. {
  166. iExp[iKiller] += get_pcvar_num(cHeadshot) // Add the amount of the Pcvar to iExp
  167. }
  168. else
  169. {
  170. iExp[iKiller] += get_pcvar_num(cKill)
  171. }
  172. }
  173. iExp[iVictim] -= get_pcvar_num(cDeath) // Decrease the amount of the Pcvar from iExp
  174. }


Ha sikerül természetesen dobok egy Like-t.
Előre is nagyon köszönném.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: SQL Save
HozzászólásElküldve: 2013.04.24. 14:52 
Offline
Tiszteletbeli

Csatlakozott: 2010.02.04. 19:12
Hozzászólások: 3528
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 180 alkalommal
cseréld ki ezeket a sorokat:
SMA Forráskód: [ Mindet kijelol ]
  1. get_user_authid(id, szSteamId, charsmax(szSteamId))

erre:
SMA Forráskód: [ Mindet kijelol ]
  1. get_user_name(id, szSteamId, charsmax(szSteamId))

_________________
http://www.ebateam.eu/

Ők köszönték meg IrOn nek ezt a hozzászólást: Show1337 (2013.04.24. 14:57)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: SQL Save
HozzászólásElküldve: 2013.04.24. 14:55 
tessék

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <sqlx>
  3.  
  4. #define PLUGIN "Tutorial"
  5. #define VERSION "1.0"
  6. #define AUTHOR "Grim"
  7.  
  8. // Ur Mysql Information
  9. new Host[] = "hostname"
  10. new User[] = "username"
  11. new Pass[] = "password"
  12. new Db[] = "database"
  13.  
  14.  
  15. new Handle:g_SqlTuple
  16. new g_Error[512]
  17.  
  18.  
  19. new iExp[33]
  20.  
  21. // Pcvar's
  22. new cKill
  23. new cHeadshot
  24. new cDeath
  25.  
  26. public plugin_init() {
  27. register_plugin(PLUGIN, VERSION, AUTHOR)
  28.  
  29. register_event("DeathMsg", "Event_DeathMsg", "a") // Register death event
  30.  
  31. // register the Pcvar's
  32. cKill = register_cvar("exp_kill", "2")
  33. cHeadshot = register_cvar("exp_headshot", "4")
  34. cDeath = register_cvar("exp_death", "1")
  35.  
  36. set_task(1.0, "MySql_Init") // set a task to activate the mysql_init
  37. }
  38.  
  39. public MySql_Init()
  40. {
  41. // we tell the API that this is the information we want to connect to,
  42. // just not yet. basically it's like storing it in global variables
  43. g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)
  44.  
  45. // ok, we're ready to connect
  46. new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error))
  47. if(SqlConnection == Empty_Handle)
  48. // stop the plugin with an error message
  49. set_fail_state(g_Error)
  50.  
  51. new Handle:Queries
  52. // we must now prepare some random queries
  53. Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS tutorial (steamid varchar(32),exp INT(11))")
  54.  
  55. if(!SQL_Execute(Queries))
  56. {
  57. // if there were any problems
  58. SQL_QueryError(Queries,g_Error,charsmax(g_Error))
  59. set_fail_state(g_Error)
  60.  
  61. }
  62.  
  63. // close the handle
  64. SQL_FreeHandle(Queries)
  65.  
  66. // you free everything with SQL_FreeHandle
  67. SQL_FreeHandle(SqlConnection)
  68. }
  69.  
  70. public plugin_end()
  71. {
  72. // free the tuple - note that this does not close the connection,
  73. // since it wasn't connected in the first place
  74. SQL_FreeHandle(g_SqlTuple)
  75. }
  76.  
  77. public Load_MySql(id)
  78. {
  79. new szname[32], szTemp[512]
  80. get_user_name(id, szname, charsmax(szname))
  81.  
  82. new Data[1]
  83. Data[0] = id
  84.  
  85. //we will now select from the table `tutorial` where the steamid match
  86. format(szTemp,charsmax(szTemp),"SELECT * FROM `tutorial` WHERE (`tutorial`.`name` = '%s')", szname)
  87. SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1)
  88. }
  89.  
  90. public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  91. {
  92. if(FailState == TQUERY_CONNECT_FAILED)
  93. {
  94. log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
  95. }
  96. else if(FailState == TQUERY_QUERY_FAILED)
  97. {
  98. log_amx("Load Query failed. [%d] %s", Errcode, Error)
  99. }
  100.  
  101. new id
  102. id = Data[0]
  103.  
  104. if(SQL_NumResults(Query) < 1)
  105. {
  106. //.if there are no results found
  107.  
  108. new szname[32]
  109. get_user_name(id, szname, charsmax(szname)) // get user's name
  110.  
  111. new szTemp[512]
  112.  
  113. // now we will insturt the values into our table.
  114. format(szTemp,charsmax(szTemp),"INSERT INTO `tutorial` ( `name` , `exp`)VALUES ('%s','0');",szname)
  115. SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
  116. }
  117. else
  118. {
  119. // if there are results found
  120. iExp[id] = SQL_ReadResult(Query, 1)
  121. }
  122.  
  123. return PLUGIN_HANDLED
  124. }
  125.  
  126. public Save_MySql(id)
  127. {
  128. new szname[32], szTemp[512]
  129. get_user_name(id, szname, charsmax(szname))
  130.  
  131. // Here we will update the user hes information in the database where the steamid matches.
  132. format(szTemp,charsmax(szTemp),"UPDATE `tutorial` SET `exp` = '%i' WHERE `tutorial`.`name` = '%s';",iExp[id], szname)
  133. SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
  134. }
  135.  
  136. public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
  137. {
  138. SQL_FreeHandle(Query)
  139.  
  140. return PLUGIN_HANDLED
  141. }
  142.  
  143. public client_putinserver(id)
  144. {
  145. Load_MySql(id)
  146. }
  147.  
  148. public client_disconnect(id)
  149. {
  150. Save_MySql(id)
  151. }
  152.  
  153. public Event_DeathMsg()
  154. {
  155. new iKiller = read_data(1) // read the data to get the killer and victim
  156. new iVictim = read_data(2)
  157.  
  158. if(is_user_alive(iKiller)) // Check if the killer is alive in case he killed himself
  159. {
  160. if(read_data(3))
  161. {
  162. iExp[iKiller] += get_pcvar_num(cHeadshot) // Add the amount of the Pcvar to iExp
  163. }
  164. else
  165. {
  166. iExp[iKiller] += get_pcvar_num(cKill)
  167. }
  168. }
  169. iExp[iVictim] -= get_pcvar_num(cDeath) // Decrease the amount of the Pcvar from iExp
  170. }


A hozzászólást 1 alkalommal szerkesztették, utoljára csaba1998 2013.04.24. 14:57-kor.

Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: SQL Save
HozzászólásElküldve: 2013.04.24. 14:56 
Offline
Tiszteletbeli

Csatlakozott: 2010.02.04. 19:12
Hozzászólások: 3528
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 180 alkalommal
ha már így szépíted, akkor minek 2x?
SMA Forráskód: [ Mindet kijelol ]
  1. new szname[32], szName[32]

_________________
http://www.ebateam.eu/


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: SQL Save
HozzászólásElküldve: 2013.04.24. 14:57 
IrOn123 írta:
ha már így szépíted, akkor minek 2x?
SMA Forráskód: [ Mindet kijelol ]
  1. new szname[32], szName[32]


Nemtom :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: SQL Save
HozzászólásElküldve: 2013.04.25. 17:28 
Offline
Fanatikus

Csatlakozott: 2013.03.07. 14:30
Hozzászólások: 158
Megköszönt másnak: 13 alkalommal
Megköszönték neki: 9 alkalommal
Öm nemtudom, nemhiszem hogy ez lehetséges de nekem még mindig idre mentis pedig átirtam mindenhol amit írtál. Ötlet ?

Helyesbítek, elmenti de minden neven amin fenvoltam ugyan annyi volt, havernak meg a másik steam id-n amikor neveket váltott megmaradt az övé is.

Esetleg ez mi ? Ezzel valamit, hogy menjen ? 'if (equal(szName,"ID_PENDING"))'

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: SQL Save
HozzászólásElküldve: 2013.04.25. 17:51 
Offline
Tiszteletbeli

Csatlakozott: 2010.02.04. 19:12
Hozzászólások: 3528
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 180 alkalommal
Show1337 írta:
Öm nemtudom, nemhiszem hogy ez lehetséges de nekem még mindig idre mentis pedig átirtam mindenhol amit írtál. Ötlet ?

Helyesbítek, elmenti de minden neven amin fenvoltam ugyan annyi volt, havernak meg a másik steam id-n amikor neveket váltott megmaradt az övé is.

Esetleg ez mi ? Ezzel valamit, hogy menjen ? 'if (equal(szName,"ID_PENDING"))'

nem befolyásolja, amúgy azért menti ugyan azt mivel a szerveren ha átírod közbe a neved akkor attól még az xp megmarad, mivel azt a szerver adta ID-re adja ideiglenesen, szóval névváltáskor lemész, utána felmész és azzal az új névvel játszasz akkor már nem annyi xp-d lesz mint előzővel.

_________________
http://www.ebateam.eu/


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: SQL Save
HozzászólásElküldve: 2013.04.25. 18:33 
Offline
Fanatikus

Csatlakozott: 2013.03.07. 14:30
Hozzászólások: 158
Megköszönt másnak: 13 alkalommal
Megköszönték neki: 9 alkalommal
Megnéztem, volt 10 Xp-m "asdasdasd" névvel, lementem átirtam "asd"-ra és mindig 10 Xp-m volt. Nem a szerveren írtam át.
Akkor valami más ötlet, vagy megoldás, hogy meglegyen?

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: SQL Save
HozzászólásElküldve: 2013.04.25. 18:36 
Offline
Signore Senior
Avatar

Csatlakozott: 2011.09.09. 17:39
Hozzászólások: 4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
Csinálj ID mezőt és adatbázis ID szerint kezeld az adatait, ez a legegyszerűbb megoldás szerintem.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: SQL Save
HozzászólásElküldve: 2013.04.25. 18:38 
Offline
Fanatikus

Csatlakozott: 2013.03.07. 14:30
Hozzászólások: 158
Megköszönt másnak: 13 alkalommal
Megköszönték neki: 9 alkalommal
Silent írta:
Csinálj ID mezőt és adatbázis ID szerint kezeld az adatait, ez a legegyszerűbb megoldás szerintem.


:)) Öm, ez mit jelent ? Ki tudnád fejteni, vagy elmagyaráznád ?

_________________
Kép


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  [ 20 hozzászólás ]  Oldal 1 2 Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 33 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