Advertisement
Guest User

RoaRec_v2.0_R2_REPAIRED

a guest
Nov 14th, 2011
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.70 KB | None | 0 0
  1. #if defined _ROA_REC_
  2. ================================================================================
  3.                            RoaRec by Roach
  4. ================================================================================
  5.    - Credits to Zh3r0 from some ideeas and councils.
  6.    - Credits to stuntman from some ideeas and councils.
  7.    - Credits to Ryder_RO and AirKite for the Ideea.
  8.    - Credits to Y_Less for foreach and all the YSI Library.
  9.    
  10. ================================================================================
  11.                            Log RoaRec v2.0
  12. ================================================================================
  13.   - [Added]: Some SQLite Defines.
  14.   - [Added]: foreach, but with a new Iterator.
  15.   - [Added]: Two more stocks( GLOBALS ), g_date and g_hour.
  16.   - [Added]: It will print in the Console:
  17.                 » Record Type.
  18.                 » Recorder Name.
  19.                 » Record Date.
  20.                 » Record Hour.
  21.                 » Record Number.
  22.  
  23.   - [Update]: Modifyed FormatMSG Define.
  24.   - [Removed]: Some Variables.
  25.   - [Removed]: The INI System.
  26.  
  27.   - [UPDATE]: Now all the Record System is on SQLite.
  28.   - [INFO]: The system should be more faster than last Version...
  29.   - [INFO]: I''ve rewrited all the code for some reasons...
  30. ================================================================================
  31. #endif
  32. //==============================================================================//
  33. //                              Includes                                        //
  34. //==============================================================================//
  35. #include < a_samp> // Credits to the SA:MP - Developement Team
  36. #include <foreach> // Credits to Y_Less
  37. #include <  ZCMD > // Credits to ZeeX
  38.  
  39. //==============================================================================//
  40. //                              RoaRec Timer Time                                   //
  41. //==============================================================================//
  42. #define r_Time          2 * 1000 // You can Modify this( in Miliseconds, of course )
  43.  
  44. //==============================================================================//
  45. //                          Repleaced/Shorcuts                                  //
  46. //==============================================================================//
  47. #define Public:%0(%1)\
  48.             forward %0(%1);\
  49.                 public %0(%1)
  50.  
  51. #define FormatMSG(%0,%1,%2,%3,%4)\
  52.         do\
  53.         {\
  54.             format( %0, sizeof(%0), (%3), %4 );\
  55.             SendClientMessage((%1),(%2), %0);\
  56.         }\
  57.         while ( False )
  58.  
  59. #define db_query_set(%0,%1,%2,%3)\
  60.         do\
  61.         {\
  62.             format(%1, sizeof(%1), (%2), %3);\
  63.             db_free_result(db_query(%0, %1));\
  64.         }\
  65.         while ( False )
  66.        
  67. #define db_query_get(%0,%1,%2,%3)\
  68.         do\
  69.         {\
  70.             format(%1, sizeof(%1), "SELECT `%s` FROM `records`", %3);\
  71.             db_get_field(db_query(%0, %1), 0, %2, sizeof(%2) );\
  72.             db_free_result(db_query(%0, %1));\
  73.         }\
  74.         while ( False )
  75.        
  76. #define DEFAULT_COLUMNS "`Name` TEXT, `Number` INTEGRER, `Date` TEXT, `Hour` TEXT"
  77. //------------------------------------------------------------------------------//
  78.  
  79. new
  80.     DB: DB_Record,
  81.     Iterator:ON_Player< MAX_PLAYERS >,
  82.  
  83.    
  84.     s_Name[ MAX_PLAYER_NAME ] = "No-One",
  85.    
  86.     i_Number[ 3 ] = "0",
  87.    
  88.     s_Date[ 100 ] = "2012.12.12",
  89.     s_Hour[ 100 ] = "00:00"
  90. ;
  91.  
  92. stock
  93.    bool:False = false
  94. ;
  95.  
  96. public OnFilterScriptInit( )
  97. {
  98.     DB_Record = db_open( #DB_Record.db );
  99.     db_query( DB_Record, "CREATE TABLE IF NOT EXISTS `records` ( " DEFAULT_COLUMNS " )" );
  100.    
  101.     r_LoadRec( );
  102.    
  103.     print ( "                                         "                 );
  104.     print ( " ======================================= "                 );
  105.     print ( " |                                     | "                 );
  106.     print ( " | Record Type: OLD                    | "                 );
  107.     printf( " | Recorder Name: %s                |    ", s_Name         );
  108.     printf( " | Record Date: %s             |         ", s_Date         );
  109.     printf( " | Record Hour: %s                  |    ", s_Hour         );
  110.     printf( " | Record Number: %03d Players          |", strval(i_Number));
  111.     print ( " |                                     | "                 );
  112.     print ( " ======================================= "                 );
  113.     print ( "                                         "                 );
  114.     return ( 1 );
  115. }
  116.  
  117. public OnFilterScriptExit( )
  118. {
  119.     db_close( DB: DB_Record );
  120.     return ( 1 );
  121. }
  122.  
  123. public OnPlayerConnect( playerid )
  124. {
  125.     Iter_Add(ON_Player, playerid);
  126.  
  127.     SetTimerEx( "r_Record", r_Time, ( false ), "i", playerid );
  128.     return ( 1 );
  129. }
  130.  
  131. public OnPlayerDisconnect( playerid, reason )
  132. {
  133.     Iter_Remove(ON_Player, playerid);
  134.     return( 1 );
  135. }
  136.  
  137. //------------------------------------------------------------------------------//
  138.  
  139. //==============================================================================
  140. // Usage: ---
  141. // Function: To check if is a new record or the Old.
  142. //==============================================================================
  143. Public:r_Record( playerid )
  144. {
  145.    
  146.     if( strval(i_Number) )
  147.     {
  148.         new o_Rec[ 250 ];
  149.         FormatMSG( o_Rec, playerid, -1, "» Record for Online Players: {97FA17}%d{FFFFFF}, fixed by {97FA17}%s{FFFFFF}, on {97FA17}%s{FFFFFF}, at {97FA17}%s{FFFFFF}.", strval(i_Number), s_Name, s_Date, s_Hour );
  150.         return ( 0 );
  151.     }
  152.    
  153.     if( strval(i_Number) < Iter_Count(ON_Player) )
  154.     {
  155.         new n_Rec[ 250 ];
  156.         format( s_Name, sizeof s_Name, "%s", p_Name( playerid ) );
  157.        
  158.         format( i_Number, sizeof i_Number, "%d", Iter_Count(ON_Player) );
  159.        
  160.         r_SaveRec( ); r_LoadRec( );
  161.        
  162.         format( n_Rec, 250, "» New record for Online Players: {97FA17}%d{FFFFFF}, fixed by {97FA17}%s{FFFFFF}, on {97FA17}%s{FFFFFF}, at {97FA17}%s{FFFFFF}.", Iter_Count(ON_Player), p_Name( playerid ), g_date( #. ), g_hour( #: ) );
  163.         SendClientMessage( playerid, -1, n_Rec );
  164.        
  165.         print ( "                                         "                 );
  166.         print ( " ======================================= "                 );
  167.         print ( " |                                     | "                 );
  168.         print ( " | Record Type: NEW                    | "                 );
  169.         printf( " | Recorder Name: %s                |    ", s_Name         );
  170.         printf( " | Record Date: %s             |         ", s_Date         );
  171.         printf( " | Record Hour: %s                  |    ", s_Hour         );
  172.         printf( " | Record Number: %03d Players          | ", strval(i_Number));
  173.         print ( " |                                     | "                 );
  174.         print ( " ======================================= "                 );
  175.         print ( "                                         "                 );
  176.     }
  177.     return ( 1 );
  178. }
  179.  
  180. CMD:add( ) return Iter_Add(ON_Player, random( 500 ) );
  181.  
  182.  
  183. //==============================================================================
  184. // Usage: r_SaveRec( );
  185. // Function: To write( with SQLite ) in the Datebase file.
  186. //==============================================================================
  187. r_SaveRec( )
  188. {
  189.     new s_DB[ 500 ];
  190.     db_query_set( DB:DB_Record, s_DB, "DELETE FROM `records`", 0 );
  191.     db_query_set( DB:DB_Record, s_DB, "INSERT INTO `records` ( `Name`, `Number`, `Date`, `Hour` ) VALUES ( '%s', '%d', '%s', '%s' )", s_Name, Iter_Count(ON_Player), g_date( #. ), g_hour( #: ) );
  192.     return ( 1 * 1 );
  193. }
  194.  
  195. //==============================================================================
  196. // Usage: r_LoadRec( );
  197. // Function: To load( SQLite ) the Rec that is in the Datebase file.
  198. //==============================================================================
  199. r_LoadRec( )
  200. {
  201.     new s_DB[ 500 ];
  202.     db_query_get( DB:DB_Record, s_DB, s_Name,   "Name"      );
  203.     db_query_get( DB:DB_Record, s_DB, i_Number, "Number"    );
  204.     db_query_get( DB:DB_Record, s_DB, s_Date,   "Date"      );
  205.     db_query_get( DB:DB_Record, s_DB, s_Hour,   "Hour"      );
  206.     return ( 1 * 1 );
  207. }
  208.  
  209. //==============================================================================
  210. // Usage: p_Name( playerid );
  211. // Function: Used to get the name of a player.
  212. //==============================================================================
  213. p_Name( p )
  214. {
  215.     new NAME[ MAX_PLAYER_NAME ];
  216.     GetPlayerName( p, NAME, MAX_PLAYER_NAME );
  217.     return ( NAME );
  218. }
  219.  
  220. //==============================================================================
  221. // Usage: g_date( character ) / g_hour( character, *g_Sec = true/false )
  222. // Function: Used to get the Date/Hour.
  223. // * = Optional.
  224. //==============================================================================
  225. stock g_date( g_char[ ] )
  226. {
  227.     new
  228.         g_s_date[ 50 char ],
  229.         g_d_date[ 3 ]
  230.     ;
  231.     getdate( g_d_date[ 0 ], g_d_date[ 1 ], g_d_date[ 2 ] );
  232.    
  233.     format( g_s_date, sizeof g_s_date, "%02d%s%02d%s%02d", g_d_date[ 0 ], g_char, g_d_date[ 1 ], g_char, g_d_date[ 2 ] );
  234.     return ( g_s_date );
  235. }
  236.  
  237. stock g_hour( g_char[ ], bool:g_Sec = false )
  238. {
  239.     new
  240.         g_s_hour[ 50 char ],
  241.         g_d_hour[ 3 ]
  242.     ;
  243.     if( !g_Sec )
  244.     {
  245.         gettime( g_d_hour[ 0 ], g_d_hour[ 1 ] );
  246.        
  247.         format( g_s_hour, sizeof g_s_hour, "%02d%s%02d", g_d_hour[ 0 ], g_char, g_d_hour[ 1 ] );
  248.     }
  249.     else
  250.     {
  251.         gettime( g_d_hour[ 0 ], g_d_hour[ 1 ], g_d_hour[ 2 ] );
  252.        
  253.         format( g_s_hour, sizeof g_s_hour, "%02d%s%02d%s%02d", g_d_hour[ 0 ], g_char, g_d_hour[ 1 ], g_char, g_d_hour[ 2 ] );
  254.     }
  255.     return ( g_s_hour );
  256. }
  257.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement