Advertisement
Guest User

Clan System

a guest
Oct 19th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 6.18 KB | None | 0 0
  1. //-----Clan-Stats System -----
  2. FUNCTION GetTag( strPlayer )
  3. {  
  4.     LOCAL
  5.          D_DELIM = REGEXP(@"([\[(=^<]+\w+[\])=^>]+)"),
  6.              S_DELIM = REGEXP(@"(\w.+[.*=]+)"),
  7.  
  8.          D_DELIM_res = D_DELIM.capture(strPlayer),
  9.          S_DELIM_res = S_DELIM.capture(strPlayer);
  10.  
  11.     IF ( D_DELIM_res != NULL )
  12.     {
  13.         RETURN strPlayer.slice( D_DELIM_res[ 0 ].BEGIN + 1, D_DELIM_res[ 0 ].END - 1 );
  14.     }
  15.     ELSE IF ( S_DELIM_res != NULL )
  16.     {
  17.         RETURN strPlayer.slice( S_DELIM_res[ 0 ].BEGIN, S_DELIM_res[ 0 ].END - 1 );
  18.     }
  19.         ELSE RETURN NULL;
  20. }
  21.  
  22. FUNCTION IncClanKills( Clan )
  23. {
  24.         IF ( Clan != NULL )
  25.         {
  26.                 Clan = Clan;
  27.                 LOCAL Kills = ClanKills( Clan );
  28.                 IF ( Kills != NULL )
  29.                 {
  30.                         LOCAL Calc = Kills.tointeger() + 1;
  31.                         LOCAL query1 = format( "UPDATE ClanStats SET Kills=%i WHERE Clan='" + Clan + "'",
  32.                                                         Calc );
  33.  
  34.                         ::QuerySQL( sDB, query1 );
  35.                 }
  36.                 ELSE
  37.                 {
  38.                         LOCAL Calc = 0 + 1;
  39.                         LOCAL query1 = format( "UPDATE ClanStats SET Kills=%i WHERE Clan='" + Clan + "'",
  40.                                                         Calc );
  41.  
  42.                         ::QuerySQL( sDB, query1 );
  43.                 }
  44.         }
  45. }
  46.  
  47. FUNCTION IncClanDeaths( Clan )
  48. {
  49.         IF ( Clan != NULL )
  50.         {
  51.                 Clan = Clan;
  52.                 LOCAL Deaths = ClanDeaths( Clan );
  53.                 IF ( Deaths != NULL )
  54.                 {
  55.                         LOCAL Calc = Deaths.tointeger() + 1;
  56.                         LOCAL query1 = format( "UPDATE ClanStats SET Deaths=%i WHERE Clan='" + Clan + "'",
  57.                                                         Calc );
  58.              
  59.                         ::QuerySQL( sDB, query1 );
  60.                 }
  61.                 ELSE
  62.                 {
  63.                         LOCAL Calc = 0 + 1;
  64.                         LOCAL query1 = format( "UPDATE ClanStats SET Deaths=%i WHERE Clan='" + Clan + "'",
  65.                                                        Calc );
  66.              
  67.                         ::QuerySQL( sDB, query1 );
  68.                 }
  69.         }
  70. }
  71.  
  72. FUNCTION IncClanDeads( Clan )
  73. {
  74.         IF ( Clan != NULL )
  75.         {
  76.                 Clan = Clan;
  77.                 LOCAL Deads = ClanDeads( Clan );
  78.                 IF ( Deads != NULL )
  79.                 {
  80.                         LOCAL Calc = Deads.tointeger() + 1;
  81.                         LOCAL query1 = format( "UPDATE ClanStats SET Deads=%i WHERE Clan='" + Clan + "'",
  82.                                                         Calc );
  83.              
  84.                         ::QuerySQL( sDB, query1 );
  85.                 }
  86.                 ELSE
  87.                 {
  88.                         LOCAL Calc = 0 + 1;
  89.                         LOCAL query1 = format( "UPDATE ClanStats SET Deads=%i WHERE Clan='" + Clan + "'",
  90.                                                        Calc );
  91.              
  92.                         ::QuerySQL( sDB, query1 );
  93.                 }
  94.         }
  95. }
  96.  
  97. FUNCTION ClanKills( Clan )
  98. {
  99.         IF ( Clan != NULL )
  100.         {
  101.                 Clan = Clan;
  102.                 LOCAL Answer = ::QuerySQL( sDB, "SELECT Kills FROM ClanStats WHERE Clan='" + Clan + "' COLLATE NOCASE" );
  103.                 LOCAL Kills = ::GetSQLColumnData( Answer, 0 );
  104.                 IF ( !Kills ) RETURN NULL;
  105.             ELSE RETURN Kills.tointeger();
  106.             FreeSQLQuery( Answer );
  107.         }
  108.         ELSE RETURN NULL;
  109. }
  110.  
  111. FUNCTION ClanDeaths( Clan )
  112. {
  113.         IF ( Clan != NULL )
  114.         {
  115.                 Clan = Clan;
  116.                 LOCAL Answer = ::QuerySQL( sDB, "SELECT Deaths FROM ClanStats WHERE Clan='" + Clan + "' COLLATE NOCASE" );
  117.                 LOCAL Deaths = ::GetSQLColumnData( Answer, 0 );
  118.                 IF ( !Deaths ) RETURN NULL;
  119.             ELSE RETURN Deaths.tointeger();
  120.             FreeSQLQuery( Answer );
  121.         }
  122.         ELSE RETURN NULL;
  123. }
  124.  
  125. FUNCTION ClanDeads( Clan )
  126. {
  127.         IF ( Clan != NULL )
  128.         {
  129.                 Clan = Clan;
  130.                 LOCAL Answer = ::QuerySQL( sDB, "SELECT Deads FROM ClanStats WHERE Clan='" + Clan + "' COLLATE NOCASE" );
  131.                 LOCAL Deads = ::GetSQLColumnData( Answer, 0 );
  132.                 IF ( !Deads ) RETURN NULL;
  133.             ELSE RETURN Deads.tointeger();
  134.         }
  135.         ELSE RETURN NULL;
  136. }
  137.  
  138. /////
  139.  
  140. ELSE IF ( ( cmd == "cstat" ) || ( cmd == "cstats" ) || ( cmd == "clanstats" ) )
  141.     {
  142.         (text) ? text = text : text = GetTag( plr.Name );
  143.         IF ( !text ) ::Client_Rojo( "Error, Absent ID/Name/Clan-Name", player );
  144.         ELSE
  145.         {
  146.                 LOCAL q = ::QuerySQL( sDB, "SELECT Clan, Kills, Deaths, Deads FROM ClanStats WHERE Clan='" + text + "' COLLATE NOCASE" );
  147.                 IF ( !::GetSQLColumnData( q, 0 ) ) ::Client_Rojo( "Error, " + text + "'s clan is not listed.", player );
  148.                 ELSE
  149.                 {
  150.                     LOCAL PKills = ::GetSQLColumnData( q, 1 ).tofloat(), PDeaths = ::GetSQLColumnData( q, 2 ).tofloat(), PDeads = ::GetSQLColumnData( q, 3 ).tofloat(), Ratio;
  151.                    
  152.                     IF ( ( PKills > 0 ) && ( PDeaths > 0 ) ) Ratio = PKills / PDeaths;
  153.                     IF ( Ratio ) Ratio = format ( "%.2f", Ratio );
  154.                     IF ( Ratio ) EMessage( "** " + text + "'s ClanStats - (Kills: " + PKills + ") (Deaths: " + PDeaths + ") (Deads: " + PDeads + ") (Ratio: " + Ratio + ")" );
  155.                     ELSE EMessage( "** " + text + "'s ClanStats - (Kills: " + PKills + ") (Deaths: " + PDeaths + ") (Deads: " + PDeads + ")" );
  156.                 }
  157.                 FreeSQLQuery( q );
  158.         }
  159.     }
  160.  
  161. FUNCTION onPlayerJoin( player )
  162. {
  163.     IF ( GetTag( player.Name ) ) Client_RojoB( "** Clan: " + GetTag( player.Name ), player );
  164. }
  165.  
  166. FUNCTION onPlayerKill( killer, player, weapon, bodypart )
  167. }
  168.     LOCAL KTag = GetTag( killer.Name ), DTag = GetTag( player.Name );
  169.     IF ( KTag ) IncClanKills( KTag );
  170.     IF ( DTag ) IncClanDeaths( DTag );
  171.  
  172. }
  173.  
  174. FUNCTION onPlayerDeath( player, reason )
  175. {
  176.     LOCAL Tag = GetTag( player.Name );
  177.     IF ( Tag ) IncClanDeads( Tag );
  178. }
  179.  
  180. ::QuerySQL( sDB, "CREATE TABLE IF NOT EXISTS ClanStats ( Clan TEXT, Kills LONG DEFAULT 0, Deaths LONG DEFAULT 0, Deads LONG DEFAULT 0 )" );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement