Advertisement
Guest User

Untitled

a guest
Mar 4th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.08 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <sqlx>
  4. #include <hamsandwich>
  5.  
  6.  
  7. #define flag_get(%1,%2) (%1 & (1 << (%2 & 31)))
  8. #define flag_get_boolean(%1,%2) (flag_get(%1,%2) ? true : false)
  9. #define flag_set(%1,%2) %1 |= (1 << (%2 & 31))
  10. #define flag_unset(%1,%2) %1 &= ~(1 << (%2 & 31))
  11.  
  12.  
  13. new c_SqlHost
  14. new c_SqlUser
  15. new c_SqlPass
  16. new c_SqlDB
  17. new c_SqlType
  18.  
  19. new g_Error[512]
  20.  
  21.  
  22. new Handle:g_SqlTuple
  23.  
  24. public plugin_init()
  25. {
  26. register_plugin("ZP Ammo Saving", "1.0.5", "wbyokomo")
  27.  
  28. register_event("DeathMsg", "event_death", "a")
  29. register_logevent("event_round_end", 2, "1=Round_End")
  30. register_event("TextMsg","event_round_end","a","2=#Game_Commencing","2=#Game_will_restart_in")
  31.  
  32. register_clcmd("say /achievement", "show_medal")
  33. register_clcmd("ach", "show_medal")
  34. RegisterHam(Ham_TakeDamage, "player", "HAM_TakeDamage", 1);
  35. c_SqlHost = register_cvar( "zp_ammo_bank_host", "linuxclub.ro" )
  36. c_SqlUser = register_cvar( "zp_ammo_bank_user", "darkcs_zm" )
  37. c_SqlPass = register_cvar( "zp_ammo_bank_pass", "1234567890" )
  38. c_SqlDB = register_cvar( "zp_ammo_bank_db", "darkcs_zm" )
  39. c_SqlType = register_cvar( "zp_ammo_bank_type", "mysql" )
  40.  
  41. if( !_PrepareSQL() )
  42. {
  43. set_fail_state( "[ZP Ammo Bank] Fail to prepare SQL" )
  44. return;
  45. }
  46.  
  47. //g_maxplayers = get_maxplayers()
  48. }
  49. public client_putinserver(id)
  50. {
  51. _LoadSQL(id)
  52. }
  53.  
  54. public client_disconnect(id)
  55. {
  56. _SaveSQL(id)
  57. }
  58. _PrepareSQL() {
  59.  
  60. new host[32], user[32], pass[32], db[32], type[12]
  61. get_pcvar_string( c_SqlHost, host, charsmax(host) )
  62. get_pcvar_string( c_SqlUser, user, charsmax(user) )
  63. get_pcvar_string( c_SqlPass, pass, charsmax(pass) )
  64. get_pcvar_string( c_SqlDB, db, charsmax(db) )
  65. get_pcvar_string( c_SqlType, type, charsmax(type) )
  66.  
  67. new get_type[12]
  68. SQL_GetAffinity( get_type, charsmax(get_type) )
  69.  
  70. log_amx( "[ZP Ammo Bank] SQL affinity type is %s", get_type )
  71.  
  72. if( !equali(get_type, type) )
  73. {
  74. if( !SQL_SetAffinity(type) )
  75. {
  76. log_amx( "[ZP Ammo Bank] Failed to set affinity from %s to %s", get_type, type )
  77. }
  78. }
  79.  
  80. g_SqlTuple = SQL_MakeDbTuple( host, user, pass, db )
  81.  
  82. if( g_SqlTuple == Empty_Handle )
  83. {
  84. log_amx( "[ZP Ammo Bank] Failed to create SQL tuple." )
  85. return 0;
  86. }
  87.  
  88. new const queryString[] = "CREATE TABLE IF NOT EXISTS `achievement` (\
  89. `auth` VARCHAR(64) NOT NULL,\
  90. `ZHunter` INT UNSIGNED NOT NULL,\
  91. PRIMARY KEY (`auth`) );"
  92.  
  93. new errcode, error[128];
  94. new Handle:link = SQL_Connect( g_SqlTuple, errcode, error, charsmax(error) )
  95.  
  96. if( link == Empty_Handle )
  97. {
  98. log_amx( "[ZP Ammo Bank] Failed to connect to database (%d): %s", errcode, error )
  99. return 0;
  100. }
  101.  
  102. new Handle:query = SQL_PrepareQuery( link, "%s", queryString )
  103.  
  104. if( !SQL_Execute(query) )
  105. {
  106. SQL_QueryError( query, error, charsmax(error) )
  107. log_amx( "[ZP Ammo Bank] Error creating table: %s", error )
  108.  
  109. return 0;
  110. }
  111. else
  112. {
  113. server_print( "[ZP Ammo Bank] SQL table successful create!" )
  114. }
  115.  
  116. SQL_FreeHandle(query)
  117. SQL_FreeHandle(link)
  118.  
  119. return 1;
  120. }
  121.  
  122. _MakeStringSQLSafe( output[], len ) {
  123.  
  124. replace_all( output, len, "'", "*" )
  125. replace_all( output, len, "^"", "*" ) //" - fix Sublime Text syntax highlight
  126. replace_all( output, len, "`", "*" )
  127. }
  128.  
  129. _LoadSQL(id) {
  130. new Name[64]
  131. get_user_name( id, Name, charsmax(Name) )
  132.  
  133. _MakeStringSQLSafe( Name, charsmax(Name) )
  134.  
  135. new queryString[512]
  136.  
  137. new data[2]
  138. data[0] = id
  139.  
  140. new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
  141. if(SqlConnection == Empty_Handle)
  142. set_fail_state(g_Error)
  143.  
  144. formatex( queryString, charsmax(queryString), "UPDATE `achievement` SET `ZHunter` = '1' WHERE `achievement`.`auth` = '%s';", Name)
  145. new Handle:Query = SQL_PrepareQuery(SqlConnection,queryString)
  146.  
  147. if(!SQL_Execute(Query))
  148. {
  149. SQL_QueryError(Query,g_Error,511)
  150. }
  151.  
  152. while(SQL_MoreResults(Query))
  153. {
  154.  
  155. //User [ id ] [ g_zh_kill ] = SQL_ReadResult(Query,0);
  156. SQL_NextRow(Query)
  157. }
  158.  
  159. SQL_FreeHandle(Query)
  160.  
  161. SQL_FreeHandle(SqlConnection)
  162. }
  163.  
  164. _SaveSQL(id) {
  165. new data[2]
  166. data[0] = id
  167.  
  168. new Name[64]
  169. get_user_name( id, Name, charsmax(Name) )
  170.  
  171. _MakeStringSQLSafe( Name, charsmax(Name) )
  172.  
  173. new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
  174. if(SqlConnection == Empty_Handle)
  175. set_fail_state(g_Error)
  176.  
  177. new queryString[ 1024 ];
  178.  
  179. formatex( queryString, charsmax(queryString),
  180. "INSERT INTO achievement(auth, ZHunter) VALUES ('%s',0) ON DUPLICATE KEY UPDATE auth = VALUES(auth)",
  181. Name);
  182.  
  183. new Handle:Query = SQL_PrepareQuery(SqlConnection,queryString)
  184. if(!SQL_Execute(Query))
  185. {
  186. SQL_QueryError(Query,g_Error,511)
  187. set_fail_state(g_Error)
  188. }
  189. SQL_FreeHandle(Query)
  190.  
  191. SQL_FreeHandle(SqlConnection)
  192. }
  193. public QuerySaveData( failstate, Handle:query, error[], errcode, data[], size, Float:queueTime )
  194. {
  195. if( failstate == TQUERY_CONNECT_FAILED )
  196. {
  197. log_amx( "[ZP Achievement] Failed connecting to save data (%d): %s", errcode, error )
  198. }
  199. else if( failstate == TQUERY_QUERY_FAILED )
  200. {
  201. log_amx( "[ZP Achievement] Failed query on save data (%d): %s", errcode, error )
  202. }
  203. else
  204. {
  205. }
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement