Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import es
- import msglib
- import cfglib
- import serverlib
- ## from logging import write
- from cmdlib import registerServerCommand, unregisterServerCommand
- from popuplib import easymenu
- from configobj import ConfigObj
- from os.path import join
- ##################################################################################################################
- ## (++INITIALIZE++)
- ## Getting Available Databases
- ## Getting INI Path
- AddonPath = es.getAddonPath('killstreaks')
- KillstreaksINI = (AddonPath+'/ini')
- KillstreaksCFG = (AddonPath+'/config')
- ## Connection to Commands.INIs
- KSCommands = ConfigObj(join(KillstreaksINI, 'commands.ini'))
- KSKillstreaks = ConfigObj(join(KillstreaksINI, 'killstreaks.ini'))
- ## Creating Database
- playerdata = {}
- ## Adding Addon Info
- info = es.AddonInfo()
- info.name = 'Killstreaks'
- info.version = '2.4'
- info.url = ''
- info.basename = 'killstreaks'
- info.author = 'Predz'
- es.ServerVar('killstreaks-version',info.version,'Killstreaks: Made By Predz').makepublic()
- ## Creating Config
- config = cfglib.AddonCFG(KillstreaksCFG+"/killstreaks.cfg")
- config.text("Killstreaks Config")
- config.text("+ Make Sure You Configure the Killstreaks.INI to your liking.")
- config.text("+ Do not edit the Commands.INI unless you nkow what you are doing.")
- config.text("+ Make Sure All the Information in this is Correct or KS will not work!")
- config.text("Source Python Extensions")
- spe = config.cvar('ks_spe', 0, 'Do you have SPE Installed on your Server?')
- spehooks = config.cvar('ks_hooks', 0, 'If SPE is Installed do you have SPE Hooks?')
- config.text("Statistics")
- session = config.cvar('ks_session', 0, 'Is Killstreak Session Stats Enabled?')
- config.write()
- ##################################################################################################################
- ## (++CLASSES++)v
- ## PlayerData
- class fakeDict(dict):
- def __getitem__(self, att):
- if not att in self:
- self[att] = 0
- return dict.__getitem__(self, att)
- class fakePlayers(dict):
- def __getitem__(self, att):
- if not att in self:
- self[att] = fakeDict()
- return dict.__getitem__(self, att)
- players = fakePlayers()
- ##################################################################################################################
- ## (++LOADING++)
- ## Loading Event
- def load():
- ## Getting Addon Path
- AddonPath = es.getAddonPath('killstreaks')
- ## Loading Config
- config.execute()
- ## Setting all Variables to 0
- Killstreaks_File = open(AddonPath+'/config/variables.txt')
- for line in Killstreaks_File:
- es.ServerVar('line').set(0)
- Killstreaks_File.close()
- ## Loading Sub Sections
- es.load('killstreaks/tools')
- ## Loading Message
- es.msg('#multi', '#green[#defaultKillstreaks#green]#darkgreen: #defaultLoaded')
- ## Unloading Event
- def unload():
- ## Getting Addon Path
- AddonPath = es.getAddonPath('killstreaks')
- ## Unloading All Tools
- Killstreaks_Tools = open(AddonPath+'/config/tools.cfg')
- for line in Killstreaks_Tools:
- try:
- es.unload('killstreaks/tools/'+line)
- except:
- write('Error [1.0.0b]')
- Killstreaks_Tools.close()
- ## Unloading Sub Sections
- es.unload('killstreaks/tools')
- ## Unloading Message
- es.msg('#multi', '#green[#defaultKillstreaks#green]#darkgreen: #defaultUnloaded')
- ##################################################################################################################
- ## (++EVENTS++)
- ## On Player Connect
- def player_connect(ev):
- userid = ev['userid']
- players[userid]['killstreak'] = 0
- players[userid]['kills'] = 0
- players[userid]['session_deaths'] = 0
- players[userid]['session_kills'] = 0
- ## On Player Death
- def player_death(ev):
- ## Getting Event Variables, So That They Do not get replaced.
- if not ev['es_attackername'] == ev['es_username']:
- userid = ev['attacker']
- username = ev['es_attackername']
- victim = ev['userid']
- ks_kills = players[userid]['kills']
- players[userid]['kills'] = ks_kills+1
- ks_session = players[userid]['session_kills']
- players[userid]['session_kills'] = ks_session+1
- players[victim]['kills'] = 0
- ks_deaths = players[victim]['session_deaths']
- players[victim]['session_deaths'] = ks_deaths+1
- for ks_name in KSKillstreaks['Killstreaks']:
- ks_tmp3 = KSKillstreaks['Killstreaks'][ks_name]['msg']
- ks_tmp = KSKillstreaks['Killstreaks'][ks_name]['kills']
- ks_tmp2 = KSKillstreaks['Killstreaks'][ks_name]['command']
- ks_tmp4 = players[userid]['killstreak']
- if int(ks_kills+1) == int(ks_tmp):
- es.set('ks_userid', userid)
- es.server.queuecmd(ks_tmp2)
- es.tell(userid,'#multi','#green[#defaultKillstreaks#green]#darkgreen:#default '+ks_tmp3+'.')
- es.msg('#multi', '#green[#defaultKillstreaks#green]#darkgreen: #default'+username+' has a #green'+str(ks_kills+1)+' #lightgreenKillstreak.')
- if int(ks_kills+1) > int(ks_tmp4):
- players[userid]['killstreak'] = ks_kills+1
- ## On Player Type
- def player_say(ev):
- userid = ev['userid']
- if ev['text'] == "!ks":
- KS_CMDMenu.send(userid)
- if ev['text'] == "!info":
- KS_InfoMenu.send(userid)
- if ev['text'] == '!session':
- if stats == 1:
- currentkills = players[userid]['kills']
- killstreak = players[userid]['killstreak']
- sessionkills = players[userid]['session_kills']
- sessiondeaths = players[userid]['session_deaths']
- KS_StatsMenu = easymenu('killstreaks_stats', None, StatsHandler)
- KS_StatsMenu.c_titleformat = 'Killstreaks Session Statistics'
- KS_StatsMenu.c_beginsep = ' '
- KS_StatsMenu.c_pagesep = ' '
- KS_StatsMenu.addoption(currentkills, 'Current Killstreak: '+str(currentkills)+'')
- KS_StatsMenu.addoption(killstreak, 'Highest Killstreak: '+str(killstreak)+'')
- KS_StatsMenu.addoption(currentkills, 'Kills: '+str(sessionkills)+'')
- KS_StatsMenu.addoption(currentkills, 'Deaths: '+str(sessiondeaths)+'')
- KS_StatsMenu.send(userid)
- KS_StatsMenu.delete()
- else:
- es.tell(userid,'#multi','#green[#defaultKillstreaks#green]#darkgreen:#default Session Statistics have been Disabled.')
- if ev['text'] == "!kills":
- ks_kills = players[userid]['kills']
- es.tell(userid,'#multi','#green[#defaultKillstreaks#green]#darkgreen:#default You have a '+str(ks_kills)+' Killstreak.')
- ##################################################################################################################
- ## (++CALLABLES++)
- def MainHandler(userid, popupChoice, popupName):
- if popupChoice == 'info':
- KS_InfoMenu.send(userid)
- elif popupChoice == 'stats':
- es.tell(userid, '#multi', '#green[#defaultKillstreaks#green]#darkgreen:#default Type #green!session')
- elif popupChoice == 'current':
- es.tell(userid, '#multi', '#green[#defaultKillstreaks#green]#darkgreen:#default Type #green!kills')
- return
- def InfoHandler(userid, popupChoice, popupName):
- return
- def StatsHandler(userid, popupChoice, popupName):
- return
- ##################################################################################################################
- ## (++INITIALIZE++)
- ## Creating the Menu
- KS_CMDMenu = easymenu('killstreaks_cmdmenu', None, MainHandler)
- KS_CMDMenu.c_titleformat = 'Killstreaks Commands'
- KS_CMDMenu.c_beginsep = ' '
- KS_CMDMenu.c_pagesep = ' '
- for command in KSCommands['cmd']:
- for commandLang in KSCommands['cmd'][command]:
- KS_CMDMenu.addoption(command, KSCommands['cmd'][command][commandLang], lang=commandLang)
- KS_InfoMenu = easymenu('killstreaks_infomenu', None, InfoHandler)
- KS_InfoMenu.c_titleformat = 'Killstreaks Info'
- KS_InfoMenu.c_beginsep = ' '
- KS_InfoMenu.c_pagesep = ' '
- for ks_name in KSKillstreaks['Killstreaks']:
- ks_tmp2 = KSKillstreaks['Killstreaks'][ks_name]['name']
- ks_tmp = KSKillstreaks['Killstreaks'][ks_name]['kills']
- KS_InfoMenu.addoption(ks_tmp2, ''+ks_tmp+' Kills - '+ks_tmp2+'')
Add Comment
Please, Sign In to add comment