Guest User

Untitled

a guest
May 22nd, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.78 KB | None | 0 0
  1. import es
  2. import msglib
  3. import cfglib
  4. import serverlib
  5. ## from logging import write
  6. from cmdlib import registerServerCommand, unregisterServerCommand
  7. from popuplib import easymenu
  8. from configobj import ConfigObj
  9. from os.path import join
  10.  
  11.  
  12.  
  13. ##################################################################################################################
  14.  
  15. ## (++INITIALIZE++)
  16.  
  17. ## Getting Available Databases
  18.  
  19. ## Getting INI Path
  20. AddonPath = es.getAddonPath('killstreaks')
  21. KillstreaksINI = (AddonPath+'/ini')
  22. KillstreaksCFG = (AddonPath+'/config')
  23.  
  24. ## Connection to Commands.INIs
  25. KSCommands = ConfigObj(join(KillstreaksINI, 'commands.ini'))
  26. KSKillstreaks = ConfigObj(join(KillstreaksINI, 'killstreaks.ini'))
  27.  
  28. ## Creating Database
  29. playerdata = {}
  30.  
  31. ## Adding Addon Info
  32. info = es.AddonInfo()
  33. info.name = 'Killstreaks'
  34. info.version = '2.4'
  35. info.url = ''
  36. info.basename = 'killstreaks'
  37. info.author = 'Predz'
  38. es.ServerVar('killstreaks-version',info.version,'Killstreaks: Made By Predz').makepublic()
  39.  
  40. ## Creating Config
  41. config = cfglib.AddonCFG(KillstreaksCFG+"/killstreaks.cfg")
  42.  
  43. config.text("Killstreaks Config")
  44. config.text("+ Make Sure You Configure the Killstreaks.INI to your liking.")
  45. config.text("+ Do not edit the Commands.INI unless you nkow what you are doing.")
  46. config.text("+ Make Sure All the Information in this is Correct or KS will not work!")
  47.  
  48. config.text("Source Python Extensions")
  49. spe                 = config.cvar('ks_spe',         0, 'Do you have SPE Installed on your Server?')
  50. spehooks            = config.cvar('ks_hooks',       0, 'If SPE is Installed do you have SPE Hooks?')
  51.  
  52. config.text("Statistics")
  53. session             = config.cvar('ks_session',     0, 'Is Killstreak Session Stats Enabled?')
  54.  
  55. config.write()
  56.  
  57.  
  58. ##################################################################################################################
  59.  
  60. ## (++CLASSES++)v
  61.  
  62. ## PlayerData
  63. class fakeDict(dict):
  64.     def __getitem__(self, att):
  65.         if not att in self:
  66.             self[att] = 0
  67.  
  68.         return dict.__getitem__(self, att)
  69.  
  70. class fakePlayers(dict):
  71.     def __getitem__(self, att):
  72.         if not att in self:
  73.             self[att] = fakeDict()
  74.  
  75.         return dict.__getitem__(self, att)
  76.  
  77. players = fakePlayers()
  78.  
  79.  
  80. ##################################################################################################################
  81.  
  82. ## (++LOADING++)
  83.  
  84. ## Loading Event
  85. def load():
  86.     ## Getting Addon Path
  87.     AddonPath = es.getAddonPath('killstreaks')
  88.    
  89.     ## Loading Config
  90.     config.execute()
  91.  
  92.     ## Setting all Variables to 0
  93.     Killstreaks_File = open(AddonPath+'/config/variables.txt')
  94.     for line in Killstreaks_File:
  95.         es.ServerVar('line').set(0)
  96.     Killstreaks_File.close()
  97.    
  98.     ## Loading Sub Sections
  99.     es.load('killstreaks/tools')
  100.    
  101.     ## Loading Message
  102.     es.msg('#multi', '#green[#defaultKillstreaks#green]#darkgreen: #defaultLoaded')
  103.  
  104. ## Unloading Event
  105. def unload():
  106.     ## Getting Addon Path
  107.     AddonPath = es.getAddonPath('killstreaks')
  108.    
  109.     ## Unloading All Tools
  110.     Killstreaks_Tools = open(AddonPath+'/config/tools.cfg')
  111.     for line in Killstreaks_Tools:
  112.         try:
  113.             es.unload('killstreaks/tools/'+line)
  114.         except:
  115.             write('Error [1.0.0b]')
  116.     Killstreaks_Tools.close()
  117.    
  118.     ## Unloading Sub Sections
  119.     es.unload('killstreaks/tools')
  120.    
  121.     ## Unloading Message
  122.     es.msg('#multi', '#green[#defaultKillstreaks#green]#darkgreen: #defaultUnloaded')
  123.    
  124.  
  125. ##################################################################################################################
  126.  
  127. ## (++EVENTS++)
  128.  
  129. ## On Player Connect
  130. def player_connect(ev):
  131.     userid = ev['userid']
  132.     players[userid]['killstreak'] = 0
  133.     players[userid]['kills'] = 0
  134.     players[userid]['session_deaths'] = 0
  135.     players[userid]['session_kills'] = 0
  136.    
  137. ## On Player Death
  138. def player_death(ev):
  139.     ## Getting Event Variables, So That They Do not get replaced.
  140.     if not ev['es_attackername'] == ev['es_username']:
  141.         userid = ev['attacker']
  142.         username = ev['es_attackername']
  143.         victim = ev['userid']
  144.         ks_kills = players[userid]['kills']
  145.         players[userid]['kills'] = ks_kills+1
  146.         ks_session = players[userid]['session_kills']
  147.         players[userid]['session_kills'] = ks_session+1
  148.         players[victim]['kills'] = 0
  149.         ks_deaths = players[victim]['session_deaths']
  150.         players[victim]['session_deaths'] = ks_deaths+1
  151.         for ks_name in KSKillstreaks['Killstreaks']:
  152.             ks_tmp3 = KSKillstreaks['Killstreaks'][ks_name]['msg']
  153.             ks_tmp = KSKillstreaks['Killstreaks'][ks_name]['kills']
  154.             ks_tmp2 = KSKillstreaks['Killstreaks'][ks_name]['command']
  155.             ks_tmp4 = players[userid]['killstreak']
  156.             if int(ks_kills+1) == int(ks_tmp):
  157.                 es.set('ks_userid', userid)
  158.                 es.server.queuecmd(ks_tmp2)
  159.                 es.tell(userid,'#multi','#green[#defaultKillstreaks#green]#darkgreen:#default '+ks_tmp3+'.')
  160.                 es.msg('#multi', '#green[#defaultKillstreaks#green]#darkgreen: #default'+username+' has a #green'+str(ks_kills+1)+' #lightgreenKillstreak.')
  161.             if int(ks_kills+1) > int(ks_tmp4):
  162.                 players[userid]['killstreak'] = ks_kills+1
  163.  
  164.  
  165. ## On Player Type
  166. def player_say(ev):
  167.     userid = ev['userid']
  168.     if ev['text'] == "!ks":
  169.         KS_CMDMenu.send(userid)
  170.     if ev['text'] == "!info":
  171.         KS_InfoMenu.send(userid)
  172.     if ev['text'] == '!session':
  173.         if stats == 1:
  174.             currentkills = players[userid]['kills']
  175.             killstreak = players[userid]['killstreak']
  176.             sessionkills = players[userid]['session_kills']
  177.             sessiondeaths = players[userid]['session_deaths']
  178.             KS_StatsMenu = easymenu('killstreaks_stats', None, StatsHandler)
  179.             KS_StatsMenu.c_titleformat = 'Killstreaks Session Statistics'
  180.             KS_StatsMenu.c_beginsep = ' '
  181.             KS_StatsMenu.c_pagesep = ' '
  182.             KS_StatsMenu.addoption(currentkills, 'Current Killstreak: '+str(currentkills)+'')
  183.             KS_StatsMenu.addoption(killstreak, 'Highest Killstreak: '+str(killstreak)+'')
  184.             KS_StatsMenu.addoption(currentkills, 'Kills: '+str(sessionkills)+'')
  185.             KS_StatsMenu.addoption(currentkills, 'Deaths: '+str(sessiondeaths)+'')
  186.             KS_StatsMenu.send(userid)  
  187.             KS_StatsMenu.delete()
  188.         else:
  189.             es.tell(userid,'#multi','#green[#defaultKillstreaks#green]#darkgreen:#default Session Statistics have been Disabled.')
  190.     if ev['text'] == "!kills":
  191.         ks_kills = players[userid]['kills']
  192.         es.tell(userid,'#multi','#green[#defaultKillstreaks#green]#darkgreen:#default You have a '+str(ks_kills)+' Killstreak.')
  193.  
  194.  
  195. ##################################################################################################################
  196.  
  197. ## (++CALLABLES++)
  198.  
  199. def MainHandler(userid, popupChoice, popupName):
  200.     if popupChoice == 'info':
  201.         KS_InfoMenu.send(userid)
  202.        
  203.     elif popupChoice == 'stats':
  204.         es.tell(userid, '#multi', '#green[#defaultKillstreaks#green]#darkgreen:#default Type #green!session')
  205.        
  206.     elif popupChoice == 'current':
  207.         es.tell(userid, '#multi', '#green[#defaultKillstreaks#green]#darkgreen:#default Type #green!kills')
  208.     return
  209.  
  210. def InfoHandler(userid, popupChoice, popupName):
  211.     return
  212.    
  213. def StatsHandler(userid, popupChoice, popupName):
  214.     return
  215.    
  216.  
  217.  
  218. ##################################################################################################################
  219.  
  220.  
  221. ## (++INITIALIZE++)
  222.  
  223. ## Creating the Menu
  224. KS_CMDMenu = easymenu('killstreaks_cmdmenu', None, MainHandler)
  225. KS_CMDMenu.c_titleformat = 'Killstreaks Commands'
  226. KS_CMDMenu.c_beginsep = ' '
  227. KS_CMDMenu.c_pagesep = ' '
  228. for command in KSCommands['cmd']:
  229.     for commandLang in KSCommands['cmd'][command]:
  230.         KS_CMDMenu.addoption(command, KSCommands['cmd'][command][commandLang], lang=commandLang)
  231. KS_InfoMenu = easymenu('killstreaks_infomenu', None, InfoHandler)
  232. KS_InfoMenu.c_titleformat = 'Killstreaks Info'
  233. KS_InfoMenu.c_beginsep = ' '
  234. KS_InfoMenu.c_pagesep = ' '
  235. for ks_name in KSKillstreaks['Killstreaks']:
  236.     ks_tmp2 = KSKillstreaks['Killstreaks'][ks_name]['name']
  237.     ks_tmp = KSKillstreaks['Killstreaks'][ks_name]['kills']
  238.     KS_InfoMenu.addoption(ks_tmp2, ''+ks_tmp+' Kills - '+ks_tmp2+'')
Add Comment
Please, Sign In to add comment