Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import es
- import popuplib
- import cPickle
- import playerlib
- import os.path
- import gamethread
- import cfglib
- ##################################### START of Options #####################################################################################
- scriptlanguage = "de"
- admins = ["steamid1", "steamid2", "steamid3"]
- say_cmd = "!kd"
- kd_begrenzusp = 2.0
- kd_begrenz1 = 3.0
- kd_begrenz2 = 3.5
- kd_push = 0.15
- kd_slap1 = 25
- kd_slap2 = 50
- kd_kills = 100
- kd_power = 30
- popupstart = 1
- ##################################### END of Options #######################################################################################
- playerlist = {}
- info = es.AddonInfo()
- info.basename = 'kdhandicap'
- info.name = 'Handicap max. KD'
- info.author = 'Desa'
- info.version = '2.0'
- es.ServerVar('kdhandicap', info.version).makepublic()
- file = es.getAddonPath('kdhandicap') # + '/kdhandicap.db'
- def load():
- global playerlist
- if os.path.isfile(file):
- file_players = open(file)
- playerlist = cPickle.load(file_players)
- file_players.close()
- save_dictionary()
- say_timer()
- def player_death(ev):
- thesteamid1 = ev["es_attackersteamid"]
- thesteamid2 = ev["es_steamid"]
- if thesteamid1 != "BOT":
- if ev["es_userteam"] != ev["es_attackerteam"]:
- if playerlist.has_key(thesteamid1):
- playerlist[thesteamid1]['kills'] = playerlist[thesteamid1]['kills'] + 1
- else:
- playerlist[thesteamid1] = {}
- playerlist[thesteamid1]['kills'] = 1
- playerlist[thesteamid1]['deaths'] = 0
- if thesteamid2 != "BOT":
- if ev["es_userteam"] != ev["es_attackerteam"]:
- if playerlist.has_key(thesteamid2):
- playerlist[thesteamid2]['deaths'] = playerlist[thesteamid2]['deaths'] + 1
- else:
- playerlist[thesteamid2] = {}
- playerlist[thesteamid2]['kills'] = 0
- playerlist[thesteamid2]['deaths'] = 1
- def player_activate(ev):
- theuserid = ev["userid"]
- thesteamid = ev["es_steamid"]
- gamethread.delayed(10, popupsend,(theuserid, thesteamid))
- def item_pickup(ev):
- theuserid = ev["userid"]
- thesteamid = ev["es_steamid"]
- if playerlist.has_key(thesteamid):
- kills = playerlist[thesteamid]['kills']
- deaths = playerlist[thesteamid]['deaths']
- if deaths != 0:
- kd = float(float(kills)/float(deaths))
- else:
- kd = float(kills)
- if kills >= kd_kills:
- if kd >= kd_begrenzusp:
- if thesteamid not in admins:
- if ev['item'] != 'usp':
- es.sexec(theuserid, 'use weapon_%s' % ev['item'])
- es.sexec(theuserid, 'drop')
- if kd >= kd_begrenz1:
- if thesteamid not in admins:
- if ev['item'] != 'usp':
- es.sexec(theuserid, 'use weapon_%s' % ev['item'])
- es.sexec(theuserid, 'drop')
- if kd >= kd_begrenz2:
- if thesteamid not in admins:
- if ev['item'] != 'usp':
- es.sexec(theuserid, 'use weapon_%s' % ev['item'])
- es.sexec(theuserid, 'drop')
- def player_spawn(ev):
- theuserid1 = ev["userid"]
- thesteamid1 = ev["es_steamid"]
- player = playerlib.getPlayer(theuserid1)
- prim = player.getPrimary()
- sec = player.getSecondary()
- kills = playerlist[thesteamid1]['kills']
- deaths = playerlist[thesteamid1]['deaths']
- if deaths != 0:
- kd = float(float(kills)/float(deaths))
- else:
- kd = float(kills)
- if kills >= kd_kills:
- if kd >= kd_begrenzusp:
- if thesteamid1 not in admins:
- if prim:
- es.sexec(theuserid1, 'use %s' % prim)
- es.sexec(theuserid1, 'drop')
- if sec:
- es.sexec(theuserid1, 'use %s' % sec)
- es.sexec(theuserid1, 'drop')
- gamethread.delayed(0.3, es.server.queuecmd,('es_give %s weapon_usp' % theuserid1))
- if scriptlanguage == "en":
- es.msg('#multi', '#lightgreenYour KD is #greentoo high#lightgreen now you have only#green a pistole')
- if scriptlanguage == "de":
- es.msg('#multi', '#lightgreenDeine KD ist #greenzu hoch#lightgreen jetzt hast du nur#green eine pistole')
- if kd >= kd_begrenz1:
- if thesteamid1 not in admins:
- if es.getplayerprop(theuserid1, 'CCSPlayer.baseclass.pl.deadflag') == 0:
- lasthealth = es.getplayerprop(theuserid1, 'CCSPlayer.baseclass.m_iHealth')
- newhealth = lasthealth - kd_slap1
- es.setplayerprop(theuserid1, 'CCSPlayer.baseclass.m_iHealth', newhealth)
- if prim:
- es.sexec(theuserid1, 'use %s' % prim)
- es.sexec(theuserid1, 'drop')
- if sec:
- es.sexec(theuserid1, 'use %s' % sec)
- es.sexec(theuserid1, 'drop')
- gamethread.delayed(0.3, es.server.queuecmd,('es_give %s weapon_usp' % theuserid1))
- if scriptlanguage == "en":
- es.msg('#multi', '#lightgreenYour KD is #greentoo high#lightgreen now you have only#green a pistole and lose Hp')
- if scriptlanguage == "de":
- es.msg('#multi', '#lightgreenDeine KD ist #greenzu hoch#lightgreen jetzt hast du nur#green eine pistole und verlierst Hp')
- if kd >= kd_begrenz2:
- if thesteamid1 not in admins:
- if es.getplayerprop(theuserid1, 'CCSPlayer.baseclass.pl.deadflag') == 0:
- lasthealth = es.getplayerprop(theuserid1, 'CCSPlayer.baseclass.m_iHealth')
- newhealth = lasthealth - kd_slap2
- es.setplayerprop(theuserid1, 'CCSPlayer.baseclass.m_iHealth', newhealth)
- if prim:
- es.sexec(theuserid1, 'use %s' % prim)
- es.sexec(theuserid1, 'drop')
- if sec:
- es.sexec(theuserid1, 'use %s' % sec)
- es.sexec(theuserid1, 'drop')
- gamethread.delayed(0.3, es.server.queuecmd,('es_give %s weapon_usp' % theuserid1))
- if scriptlanguage == "en":
- es.msg('#multi', '#lightgreenYour KD is #greentoo high#lightgreen now you have only#green a pistole and lose Hp')
- if scriptlanguage == "de":
- es.msg('#multi', '#lightgreenDeine KD ist #greenzu hoch#lightgreen jetzt hast du nur#green eine pistole und verlierst Hp')
- if kd >= kd_push:
- if thesteamid1 not in admins:
- if es.getplayerprop(theuserid1, 'CCSPlayer.baseclass.pl.deadflag') == 0:
- lasthealth = es.getplayerprop(theuserid1, 'CCSPlayer.baseclass.m_iHealth')
- newhealth = lasthealth + kd_power
- es.setplayerprop(theuserid1, 'CCSPlayer.baseclass.m_iHealth', newhealth)
- if scriptlanguage == "en":
- es.msg('#multi', '#lightgreenYour KD is #greentoo low#lightgreen now you become#green 30 HP ')
- if scriptlanguage == "de":
- es.msg('#multi', '#lightgreenDeine KD ist #greenzu schwach#lightgreen jetzt bekommst du#green 30Hp dazu')
- def popupsend(theuserid, thesteamid):
- if playerlist.has_key(thesteamid):
- kills = playerlist[thesteamid]['kills']
- deaths = playerlist[thesteamid]['deaths']
- if deaths != 0:
- kd = float(float(kills)/float(deaths))
- else:
- kd = float(kills)
- if popupstart == 1:
- if scriptlanguage == "de":
- startpopup = popuplib.create('startpopup')
- startpopup.addline("Deine KD Info")
- startpopup.addline("-----------------------------------------")
- startpopup.addline("Du hast %i Kills" % kills )
- startpopup.addline("Du hast %i Deaths" % deaths )
- startpopup.addline("Du hast eine KD von %.2f" % kd )
- startpopup.addline("Maximale KD ist %.2f beginnent mit %i Kills" % (kd_begrenzusp,kd_kills))
- startpopup.addline("-----------------------------------------")
- startpopup.addline("->0. Schliessen")
- startpopup.send(theuserid)
- gamethread.delayed(10, popuplib.unsendname, ("startpopup", theuserid))
- if scriptlanguage == "en":
- startpopup = popuplib.create('startpopup')
- startpopup.addline("Your KD Info")
- startpopup.addline("-----------------------------------------")
- startpopup.addline("You have %i Kills" % kills )
- startpopup.addline("You have %i Deaths" % deaths )
- startpopup.addline("You have a KD of %.2f" % kd )
- startpopup.addline("Maximal KD is %.2f beginning with %i Kills" % (kd_begrenzusp,kd_kills))
- startpopup.addline("-----------------------------------------")
- startpopup.addline("->0. Close")
- startpopup.send(theuserid)
- gamethread.delayed(10, popuplib.unsendname, ("startpopup", theuserid))
- def unload():
- save_dictionary()
- def round_start(ev):
- save_dictionary()
- def player_say(ev):
- steam = es.getplayersteamid(ev['userid'])
- if ev['text'] == say_cmd:
- if playerlist.has_key(steam):
- kills = playerlist[steam]['kills']
- deaths = playerlist[steam]['deaths']
- if deaths != 0:
- kd = float(float(kills)/float(deaths))
- else:
- kd = float(kills)
- if scriptlanguage == "de":
- startpopup = popuplib.create('startpopup')
- startpopup.addline("Deine KD Info")
- startpopup.addline("-----------------------------------------")
- startpopup.addline("Du hast %i Kills" % kills )
- startpopup.addline("Du hast %i Deaths" % deaths )
- startpopup.addline("Du hast eine KD von %.2f" % kd )
- startpopup.addline("Maximale KD ist %.2f beginnent mit %i Kills" % (kd_begrenzusp,kd_kills))
- startpopup.addline("-----------------------------------------")
- startpopup.addline("->0. Schliessen")
- startpopup.send(ev['userid'])
- if scriptlanguage == "en":
- startpopup = popuplib.create('startpopup')
- startpopup.addline("Your KD Info")
- startpopup.addline("-----------------------------------------")
- startpopup.addline("You have %i Kills" % kills )
- startpopup.addline("You have %i Deaths" % deaths )
- startpopup.addline("You have a KD of %.2f" % kd )
- startpopup.addline("Maximal KD is %.2f beginning with %i Kills" % (kd_begrenzusp,kd_kills))
- startpopup.addline("-----------------------------------------")
- startpopup.addline("->0. Close")
- startpopup.send(ev['userid'])
- def save_dictionary():
- file_players = open(file, 'wb')
- cPickle.dump(playerlist, file_players)
- file_players.close()
- def say_timer():
- if scriptlanguage == "en":
- es.msg('#multi', '#lightgreenThis Server has a #greenKD Handicap#lightgreen when your KD is too high#green you have only a pistole')
- if scriptlanguage == "de":
- es.msg('#multi', '#lightgreenDieser Server hat ein #greenKD Handicap#lightgreen wenn deine KD zu hoch ist#green dann hast du nur eine pistole')
- gamethread.delayed(500, say_timer,())
Add Comment
Please, Sign In to add comment