Arxero

Untitled

Dec 11th, 2017
480
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cromchat>
  4. #include <cstrike>
  5.  
  6. #define PLUGIN_VERSION "1.0"
  7.  
  8. enum
  9. {
  10.     SECTION_NONE = 0,
  11.     SECTION_SETTINGS,
  12.     SECTION_ADVANTAGES
  13. }
  14.  
  15. enum _:Settings
  16. {
  17.     CsTeams:ADVANTAGE_TEAM,
  18.     ADVANTAGE_FLAGS[32],
  19.     bool:ADVANTAGE_USE_FLAGS,
  20.     MAX_MONEY,
  21.     bool:PLAYER_MESSAGE
  22. }
  23.  
  24. new g_eSettings[Settings]
  25.  
  26. new Array:g_aLoses,
  27.     Array:g_aMoney,
  28.     bool:g_bRoundEnd,
  29.     g_iLoses[CsTeams:3],
  30.     g_iAdvantages
  31.  
  32. public plugin_init()
  33. {
  34.     register_plugin("Team Advantage", PLUGIN_VERSION, "OciXCrom")
  35.     register_cvar("CRXTeamAdvantage", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
  36.     register_dictionary("TeamAdvantage.txt")
  37.     register_logevent("OnFirstRound", 2, "0=World triggered", "1&Restart_Round_")
  38.     register_logevent("OnFirstRound", 2, "0=World triggered", "1=Game_Commencing")
  39.     register_logevent("OnRoundStart", 2, "0=World triggered", "1=Round_Start")
  40.     register_event("SendAudio", "OnTeamWin", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin")
  41.     g_aLoses = ArrayCreate(5)
  42.     g_aMoney = ArrayCreate(8)
  43.     ReadFile()
  44. }
  45.  
  46. public plugin_end()
  47. {
  48.     ArrayDestroy(g_aLoses)
  49.     ArrayDestroy(g_aMoney)
  50. }
  51.  
  52. public OnFirstRound()
  53. {
  54.     g_iLoses[CS_TEAM_CT] = 0
  55.     g_iLoses[CS_TEAM_T] = 0
  56. }
  57.  
  58. public OnRoundStart()
  59.     g_bRoundEnd = false
  60.  
  61. public OnTeamWin()
  62. {
  63.     if(g_bRoundEnd)
  64.         return
  65.        
  66.     g_bRoundEnd = true
  67.    
  68.     new szTeam[9]
  69.     read_data(2, szTeam, charsmax(szTeam))
  70.    
  71.     new CsTeams:iWinTeam = szTeam[7] == 'c' ? CS_TEAM_CT : CS_TEAM_T,
  72.         CsTeams:iLoseTeam = iWinTeam == CS_TEAM_CT ? CS_TEAM_T : CS_TEAM_CT
  73.    
  74.     g_iLoses[iLoseTeam]++
  75.     g_iLoses[iWinTeam] = 0
  76.    
  77.     if(g_eSettings[ADVANTAGE_TEAM] != CS_TEAM_UNASSIGNED && g_eSettings[ADVANTAGE_TEAM] != iLoseTeam)
  78.         return
  79.    
  80.     new iMoney
  81.    
  82.     for(new i; i < g_iAdvantages; i++)
  83.     {
  84.         if(g_iLoses[iLoseTeam] == ArrayGetCell(g_aLoses, i))
  85.         {
  86.             iMoney = ArrayGetCell(g_aMoney, i)
  87.             break
  88.         }
  89.     }
  90.    
  91.     if(!iMoney)
  92.         return
  93.        
  94.     new iPlayers[32], iPnum
  95.     get_players(iPlayers, iPnum, "e", iLoseTeam == CS_TEAM_CT ? "CT" : "TERRORIST")
  96.            
  97.    
  98.     for(new iPlayer, i; i < iPnum; i++)
  99.     {
  100.         iPlayer = iPlayers[i]
  101.        
  102.         if(g_eSettings[ADVANTAGE_USE_FLAGS] && !has_all_flags(iPlayer, g_eSettings[ADVANTAGE_FLAGS]))
  103.             continue
  104.            
  105.         cs_set_user_money(iPlayers[i], clamp(cs_get_user_money(iPlayer) + iMoney, .max = g_eSettings[MAX_MONEY]))
  106.        
  107.     }
  108. }
  109.  
  110. ReadFile()
  111. {
  112.     new szConfigsName[256], szFilename[256]
  113.     get_configsdir(szConfigsName, charsmax(szConfigsName))
  114.     formatex(szFilename, charsmax(szFilename), "%s/TeamAdvantage.ini", szConfigsName)
  115.    
  116.     new iFilePointer = fopen(szFilename, "rt")
  117.    
  118.     if(iFilePointer)
  119.     {
  120.         new szData[64], szKey[32], szValue[32], iNum, iSection = SECTION_NONE
  121.        
  122.         while(!feof(iFilePointer))
  123.         {
  124.             fgets(iFilePointer, szData, charsmax(szData))
  125.             trim(szData)
  126.            
  127.             switch(szData[0])
  128.             {
  129.                 case EOS, ';': continue
  130.                 case '[':
  131.                 {
  132.                     iNum = strlen(szData)
  133.                    
  134.                     if(szData[iNum - 1] == ']')
  135.                     {
  136.                         switch(szData[1])
  137.                         {
  138.                             case 'S', 's': iSection = SECTION_SETTINGS
  139.                             case 'A', 'a': iSection = SECTION_ADVANTAGES
  140.                         }
  141.                     }
  142.                     else continue
  143.                 }
  144.                 default:
  145.                 {
  146.                     strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
  147.                     trim(szKey); trim(szValue)
  148.                    
  149.                     if(!szValue[0])
  150.                         continue
  151.                        
  152.                     switch(iSection)
  153.                     {
  154.                         case SECTION_SETTINGS:
  155.                         {
  156.                             if(equal(szKey, "ADVANTAGE_TEAM"))
  157.                             {
  158.                                 switch(szValue[0])
  159.                                 {
  160.                                     case 'C', 'c': g_eSettings[ADVANTAGE_TEAM] = CS_TEAM_CT
  161.                                     case 'T', 't': g_eSettings[ADVANTAGE_TEAM] = CS_TEAM_T
  162.                                     default: g_eSettings[ADVANTAGE_TEAM] = CS_TEAM_UNASSIGNED
  163.                                 }
  164.                             }
  165.                             else if(equal(szKey, "ADVANTAGE_FLAGS"))
  166.                             {
  167.                                 if(szValue[0] != '!')
  168.                                 {
  169.                                     g_eSettings[ADVANTAGE_USE_FLAGS] = true
  170.                                     copy(g_eSettings[ADVANTAGE_FLAGS], charsmax(g_eSettings[ADVANTAGE_FLAGS]), szValue)
  171.                                 }
  172.                             }
  173.                             else if(equal(szKey, "MAX_MONEY"))
  174.                                 g_eSettings[MAX_MONEY] = str_to_num(szValue)
  175.                             else if(equal(szKey, "CHAT_PREFIX"))
  176.                                 CC_SetPrefix(szValue)
  177.                             else if(equal(szKey, "PLAYER_MESSAGE"))
  178.                                 g_eSettings[PLAYER_MESSAGE] = _:clamp(str_to_num(szValue), false, true)
  179.                         }
  180.                         case SECTION_ADVANTAGES:
  181.                         {
  182.                             iNum = str_to_num(szKey)
  183.                             ArrayPushCell(g_aLoses, iNum)
  184.                            
  185.                             iNum = str_to_num(szValue)
  186.                             ArrayPushCell(g_aMoney, iNum)
  187.                            
  188.                             g_iAdvantages++
  189.                         }
  190.                     }
  191.                 }
  192.             }
  193.         }
  194.        
  195.         fclose(iFilePointer)
  196.     }
  197. }
RAW Paste Data