Advertisement
Guest User

Untitled

a guest
May 5th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.42 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <amxmisc>
  5. #include <sqlx>
  6.  
  7. #define PLUGIN "New Plug-In"
  8. #define VERSION "1.0"
  9. #define AUTHOR "author"
  10.  
  11. /*------------------------------------------------------------------------------------------------*/
  12. new const SQL_TABLE_NAME[ ] = "AvH_NAME";
  13.  
  14. new Handle:SqlConnection;
  15. new Handle:g_SqlTuple;
  16. new g_Error[ 512 ];
  17. new g_pcvarHost;
  18. new g_pcvaruUser;
  19. new g_pcvarPass;
  20. new g_pcvarDB;
  21. new g_iCvar_SaveXP;
  22. new g_authed[ 33 ];
  23. new g_sql_ready = false;
  24. new bool:g_loaded[ 33 ];
  25. new g_iXP[ 33 ];
  26. new g_iArtifact[ 33 ];
  27. new g_iLevel[ 33 ];
  28. new g_iMaxPlayers;
  29.  
  30. /*------------------------------------------------------------------------------------------------*/
  31.  
  32.  
  33. public plugin_init() {
  34. register_plugin(PLUGIN, VERSION, AUTHOR)
  35.  
  36. g_iMaxPlayers = get_maxplayers();
  37.  
  38. // SQL
  39. g_pcvarHost = register_cvar( "avh_sql_host", "db.tni.ro" );
  40. g_pcvaruUser = register_cvar( "avh_sql_user", "vuser359" );
  41. g_pcvarPass = register_cvar( "avh_sql_pass", "sjSE1239SLA3Sj138S" );
  42. g_pcvarDB = register_cvar( "avh_sql_db", "vuser359" );
  43.  
  44. set_task( 0.1,"SQL_Init" );
  45. // Add your code here...
  46. }
  47.  
  48. public fw_ClientDisconnect( id ) {
  49.  
  50. DB_SaveData( id );
  51. g_authed[ id ] = false;
  52. g_loaded[ id ] = false;
  53. }
  54.  
  55.  
  56. public client_authorized( id ) {
  57.  
  58. g_authed[ id ] = true;
  59.  
  60. DB_LoadData( id );
  61. }
  62.  
  63.  
  64. public DB_SaveData(id) {
  65.  
  66. if( !g_loaded[ id ] )
  67. return;
  68.  
  69. new szQuotedName[ 64 ], szName[ 32 ];
  70. get_user_name( id, szName, sizeof( szName ) - 1 );
  71. SQL_QuoteString( SqlConnection, szQuotedName, 63, szName );
  72.  
  73. new szTemp[ 512 ];
  74.  
  75. format( szTemp, charsmax( szTemp ), "UPDATE `%s` SET `XP` = '%d', `LEVEL` = '%d', `ARTIFACTS` = '%d' WHERE `%s`.`name` = '%s';", SQL_TABLE_NAME, g_iXP[ id ], g_iLevel[ id ], g_iArtifact[ id ], SQL_TABLE_NAME, szQuotedName );
  76.  
  77.  
  78. SQL_ThreadQuery( g_SqlTuple, "IgnoreHandle", szTemp );
  79. }
  80.  
  81. /*------------------------------------------------------------------------------------------------*/
  82. public IgnoreHandle( FailState, Handle:Query, Error[ ], Errcode, Data[ ], DataSize ) {
  83.  
  84. SQL_FreeHandle( Query )
  85. return PLUGIN_HANDLED;
  86. }
  87.  
  88.  
  89. /*------------------------------------------------------------------------------------------------*/
  90.  
  91. public DB_LoadData(id) {
  92.  
  93. if( !g_sql_ready )
  94. return;
  95.  
  96. if( g_SqlTuple == Empty_Handle )
  97. set_fail_state( g_Error );
  98.  
  99. new Data[ 1 ];
  100. Data[ 0 ] = id;
  101.  
  102. new szName[ 32 ];
  103. get_user_name(id, szName, sizeof( szName ) - 1 );
  104.  
  105. new szTemp[ 512 ];
  106. formatex( szTemp, charsmax( szTemp ), "SELECT * FROM `%s` WHERE (`%s`.`name` = '%s')", SQL_TABLE_NAME, SQL_TABLE_NAME, szName );
  107.  
  108. SQL_ThreadQuery( g_SqlTuple, "RegisterClient", szTemp, Data, 1 );
  109. }
  110.  
  111. public RegisterClient( FailState, Handle:Query, Error[ ], Errcode, Data[ ], DataSize ) {
  112.  
  113. if( FailState == TQUERY_CONNECT_FAILED )
  114. {
  115. log_amx( "[Error] Could not connect to SQL database: [%d] %s", Errcode, Error );
  116. return PLUGIN_HANDLED;
  117. }
  118.  
  119. else if( FailState == TQUERY_QUERY_FAILED )
  120. {
  121. log_amx( "[Error] Query failed: [%d] %s", Errcode, Error );
  122. return PLUGIN_HANDLED;
  123. }
  124.  
  125. static id; id = Data[ 0 ];
  126.  
  127.  
  128. if( SQL_NumResults( Query ) < 1 )
  129. {
  130.  
  131. new szName[ 32 ];
  132. get_user_name(id, szName, sizeof( szName ) - 1 );
  133.  
  134. new szIp[ 40 ];
  135. get_user_ip( id, szIp, sizeof ( szIp ) -1, 1 );
  136.  
  137. new authid[ 32 ];
  138. get_user_authid(id, authid, sizeof( authid ) -1 );
  139.  
  140.  
  141. new szTemp[ 512 ];
  142.  
  143. if( g_SqlTuple == Empty_Handle )
  144. set_fail_state( g_Error );
  145.  
  146. format( szTemp, charsmax( szTemp ), "INSERT INTO `%s` (`name`, `XP`, `LEVEL`, `ARTIFACTS`) VALUES ('%s', '0', '0', '0');", SQL_TABLE_NAME, szName );
  147.  
  148. SQL_ThreadQuery( g_SqlTuple, "IgnoreHandle", szTemp );
  149.  
  150. }
  151. else
  152. {
  153. g_iXP[ id ] = SQL_ReadResult( Query, 1 );
  154. g_iLevel[ id ] = SQL_ReadResult( Query, 2 );
  155. g_iArtifact[ id ] = SQL_ReadResult( Query, 3 );
  156. }
  157.  
  158. g_loaded[ id ] = true;
  159.  
  160. return PLUGIN_HANDLED;
  161. }
  162.  
  163. /*------------------------------------------------------------------------------------------------*/
  164. public SQL_Init( ) {
  165.  
  166. if( get_pcvar_num( g_iCvar_SaveXP ) != 0 ) {
  167.  
  168. new szHost[ 32 ];
  169. new szUser[ 32 ];
  170. new szPass[ 32 ];
  171. new szDB[ 32 ];
  172.  
  173. get_pcvar_string( g_pcvarHost, szHost, charsmax( szHost ) );
  174. get_pcvar_string( g_pcvaruUser, szUser, charsmax( szUser ) );
  175. get_pcvar_string( g_pcvarPass, szPass, charsmax( szPass ) );
  176. get_pcvar_string( g_pcvarDB, szDB, charsmax( szDB ) );
  177.  
  178. g_SqlTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB );
  179.  
  180. new ErrorCode;
  181. SqlConnection = SQL_Connect( g_SqlTuple, ErrorCode, g_Error, charsmax( g_Error ) );
  182.  
  183. if( SqlConnection == Empty_Handle )
  184. set_fail_state( g_Error );
  185.  
  186. new Handle:Queries;
  187.  
  188. Queries = SQL_PrepareQuery( SqlConnection, "CREATE TABLE IF NOT EXISTS %s (Name VARCHAR(64) NOT NULL,`XP` INT(10), `LEVEL` INT(20), `ARTIFACTS` INT(21) )", SQL_TABLE_NAME );
  189.  
  190. if( !SQL_Execute( Queries ) )
  191. {
  192. SQL_QueryError( Queries, g_Error, charsmax( g_Error ) );
  193. set_fail_state( g_Error );
  194. }
  195.  
  196. SQL_FreeHandle( Queries );
  197.  
  198. g_sql_ready = true;
  199. for( new i = 1; i <= g_iMaxPlayers; i++ ) {
  200.  
  201. if( g_authed[ i ] ) {
  202.  
  203. DB_LoadData( i );
  204. }
  205. }
  206. }
  207. }
  208. /*------------------------------------------------------------------------------------------------*/
  209.  
  210. public plugin_end() {
  211.  
  212. if( SqlConnection != Empty_Handle ) {
  213.  
  214. SQL_FreeHandle( SqlConnection );
  215. }
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement