Guest User

Untitled

a guest
Jan 23rd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.87 KB | None | 0 0
  1. import es
  2. import popuplib
  3. import cPickle
  4. import playerlib
  5. import os.path
  6. import gamethread
  7. import cfglib
  8.  
  9. ##################################### START of Options #####################################################################################
  10. scriptlanguage = "de"
  11. admins = ["steamid1", "steamid2", "steamid3"]
  12. say_cmd = "!kd"
  13. kd_begrenzusp = 2.0
  14. kd_begrenz1 = 3.0
  15. kd_begrenz2 = 3.5
  16. kd_push = 0.15
  17. kd_slap1 = 25
  18. kd_slap2 = 50
  19. kd_kills = 100
  20. kd_power = 30
  21. popupstart = 1
  22. ##################################### END of Options #######################################################################################
  23.  
  24. playerlist = {}
  25.  
  26. info = es.AddonInfo()
  27. info.basename = 'kdhandicap'
  28. info.name     = 'Handicap max. KD'
  29. info.author   = 'Desa'
  30. info.version  = '2.0'
  31.  
  32. es.ServerVar('kdhandicap', info.version).makepublic()
  33. file = es.getAddonPath('kdhandicap') # + '/kdhandicap.db'
  34.  
  35. def load():
  36.     global playerlist
  37.     if os.path.isfile(file):
  38.         file_players = open(file)
  39.         playerlist = cPickle.load(file_players)
  40.         file_players.close()
  41.         save_dictionary()
  42.         say_timer()
  43.  
  44. def player_death(ev):
  45.     thesteamid1 = ev["es_attackersteamid"]
  46.     thesteamid2 = ev["es_steamid"]
  47.     if thesteamid1 != "BOT":
  48.         if ev["es_userteam"] != ev["es_attackerteam"]:
  49.             if playerlist.has_key(thesteamid1):
  50.                 playerlist[thesteamid1]['kills'] = playerlist[thesteamid1]['kills'] + 1
  51.             else:
  52.                 playerlist[thesteamid1] = {}
  53.                 playerlist[thesteamid1]['kills'] = 1
  54.                 playerlist[thesteamid1]['deaths'] = 0
  55.     if thesteamid2 != "BOT":
  56.         if ev["es_userteam"] != ev["es_attackerteam"]:
  57.             if playerlist.has_key(thesteamid2):
  58.                 playerlist[thesteamid2]['deaths'] = playerlist[thesteamid2]['deaths'] + 1
  59.             else:
  60.                 playerlist[thesteamid2] = {}
  61.                 playerlist[thesteamid2]['kills'] = 0
  62.                 playerlist[thesteamid2]['deaths'] = 1
  63.                
  64. def player_activate(ev):
  65.     theuserid = ev["userid"]
  66.     thesteamid = ev["es_steamid"]
  67.     gamethread.delayed(10, popupsend,(theuserid, thesteamid))
  68.  
  69. def item_pickup(ev):
  70.     theuserid = ev["userid"]
  71.     thesteamid = ev["es_steamid"]
  72.     if playerlist.has_key(thesteamid):
  73.         kills = playerlist[thesteamid]['kills']
  74.         deaths = playerlist[thesteamid]['deaths']
  75.         if deaths != 0:
  76.             kd = float(float(kills)/float(deaths))
  77.         else:
  78.             kd = float(kills)
  79.         if kills >= kd_kills:
  80.             if kd >= kd_begrenzusp:
  81.                 if thesteamid not in admins:
  82.                     if ev['item'] != 'usp':
  83.                         es.sexec(theuserid, 'use weapon_%s' % ev['item'])
  84.                         es.sexec(theuserid, 'drop')
  85.             if kd >= kd_begrenz1:
  86.                 if thesteamid not in admins:
  87.                     if ev['item'] != 'usp':
  88.                         es.sexec(theuserid, 'use weapon_%s' % ev['item'])
  89.                         es.sexec(theuserid, 'drop')
  90.             if kd >= kd_begrenz2:
  91.                 if thesteamid not in admins:
  92.                     if ev['item'] != 'usp':
  93.                         es.sexec(theuserid, 'use weapon_%s' % ev['item'])
  94.                         es.sexec(theuserid, 'drop')
  95.  
  96. def player_spawn(ev):
  97.     theuserid1 = ev["userid"]
  98.     thesteamid1 = ev["es_steamid"]
  99.     player = playerlib.getPlayer(theuserid1)
  100.     prim = player.getPrimary()
  101.     sec = player.getSecondary()
  102.     kills = playerlist[thesteamid1]['kills']
  103.     deaths = playerlist[thesteamid1]['deaths']
  104.     if deaths != 0:
  105.         kd = float(float(kills)/float(deaths))
  106.     else:
  107.         kd = float(kills)
  108.     if kills >= kd_kills:
  109.         if kd >= kd_begrenzusp:
  110.             if thesteamid1 not in admins:
  111.                 if prim:
  112.                     es.sexec(theuserid1, 'use %s' % prim)
  113.                     es.sexec(theuserid1, 'drop')
  114.                 if sec:
  115.                     es.sexec(theuserid1, 'use %s' % sec)
  116.                     es.sexec(theuserid1, 'drop')
  117.                 gamethread.delayed(0.3, es.server.queuecmd,('es_give %s weapon_usp' % theuserid1))
  118.                 if scriptlanguage == "en":
  119.                     es.msg('#multi', '#lightgreenYour KD is #greentoo high#lightgreen now you have only#green a pistole')
  120.                 if scriptlanguage == "de":
  121.                     es.msg('#multi', '#lightgreenDeine KD ist #greenzu hoch#lightgreen jetzt hast du nur#green eine pistole')
  122.             if kd >= kd_begrenz1:
  123.                 if thesteamid1 not in admins:
  124.                     if es.getplayerprop(theuserid1, 'CCSPlayer.baseclass.pl.deadflag') == 0:
  125.                         lasthealth = es.getplayerprop(theuserid1, 'CCSPlayer.baseclass.m_iHealth')
  126.                         newhealth = lasthealth - kd_slap1
  127.                         es.setplayerprop(theuserid1, 'CCSPlayer.baseclass.m_iHealth', newhealth)
  128.                     if prim:
  129.                         es.sexec(theuserid1, 'use %s' % prim)
  130.                         es.sexec(theuserid1, 'drop')
  131.                     if sec:
  132.                         es.sexec(theuserid1, 'use %s' % sec)
  133.                         es.sexec(theuserid1, 'drop')
  134.                         gamethread.delayed(0.3, es.server.queuecmd,('es_give %s weapon_usp' % theuserid1))
  135.                     if scriptlanguage == "en":
  136.                         es.msg('#multi', '#lightgreenYour KD is #greentoo high#lightgreen now you have only#green a pistole and lose Hp')
  137.                     if scriptlanguage == "de":
  138.                         es.msg('#multi', '#lightgreenDeine KD ist #greenzu hoch#lightgreen jetzt hast du nur#green eine pistole und verlierst Hp')
  139.             if kd >= kd_begrenz2:
  140.                 if thesteamid1 not in admins:
  141.                     if es.getplayerprop(theuserid1, 'CCSPlayer.baseclass.pl.deadflag') == 0:
  142.                         lasthealth = es.getplayerprop(theuserid1, 'CCSPlayer.baseclass.m_iHealth')
  143.                         newhealth = lasthealth - kd_slap2
  144.                         es.setplayerprop(theuserid1, 'CCSPlayer.baseclass.m_iHealth', newhealth)
  145.                     if prim:
  146.                         es.sexec(theuserid1, 'use %s' % prim)
  147.                         es.sexec(theuserid1, 'drop')
  148.                     if sec:
  149.                         es.sexec(theuserid1, 'use %s' % sec)
  150.                         es.sexec(theuserid1, 'drop')
  151.                         gamethread.delayed(0.3, es.server.queuecmd,('es_give %s weapon_usp' % theuserid1))
  152.                     if scriptlanguage == "en":
  153.                         es.msg('#multi', '#lightgreenYour KD is #greentoo high#lightgreen now you have only#green a pistole and lose Hp')
  154.                     if scriptlanguage == "de":
  155.                         es.msg('#multi', '#lightgreenDeine KD ist #greenzu hoch#lightgreen jetzt hast du nur#green eine pistole und verlierst Hp')
  156.             if kd >= kd_push:
  157.                 if thesteamid1 not in admins:
  158.                     if es.getplayerprop(theuserid1, 'CCSPlayer.baseclass.pl.deadflag') == 0:
  159.                         lasthealth = es.getplayerprop(theuserid1, 'CCSPlayer.baseclass.m_iHealth')
  160.                         newhealth = lasthealth + kd_power
  161.                         es.setplayerprop(theuserid1, 'CCSPlayer.baseclass.m_iHealth', newhealth)
  162.                     if scriptlanguage == "en":
  163.                         es.msg('#multi', '#lightgreenYour KD is #greentoo low#lightgreen now you become#green 30 HP ')
  164.                     if scriptlanguage == "de":
  165.                         es.msg('#multi', '#lightgreenDeine KD ist #greenzu schwach#lightgreen jetzt bekommst du#green 30Hp dazu')
  166.  
  167. def popupsend(theuserid, thesteamid):
  168.     if playerlist.has_key(thesteamid):
  169.         kills = playerlist[thesteamid]['kills']
  170.         deaths = playerlist[thesteamid]['deaths']
  171.         if deaths != 0:
  172.             kd = float(float(kills)/float(deaths))
  173.         else:
  174.             kd = float(kills)
  175.         if popupstart == 1:
  176.             if scriptlanguage == "de":
  177.                 startpopup = popuplib.create('startpopup')
  178.                 startpopup.addline("Deine KD Info")
  179.                 startpopup.addline("-----------------------------------------")
  180.                 startpopup.addline("Du hast %i Kills" % kills )
  181.                 startpopup.addline("Du hast %i Deaths" % deaths )
  182.                 startpopup.addline("Du hast eine KD von %.2f" % kd )
  183.                 startpopup.addline("Maximale KD ist %.2f beginnent mit %i Kills" % (kd_begrenzusp,kd_kills))
  184.                 startpopup.addline("-----------------------------------------")
  185.                 startpopup.addline("->0. Schliessen")
  186.                 startpopup.send(theuserid)
  187.                 gamethread.delayed(10, popuplib.unsendname, ("startpopup", theuserid))
  188.             if scriptlanguage == "en":
  189.                 startpopup = popuplib.create('startpopup')
  190.                 startpopup.addline("Your KD Info")
  191.                 startpopup.addline("-----------------------------------------")
  192.                 startpopup.addline("You have %i Kills" % kills )
  193.                 startpopup.addline("You have %i Deaths" % deaths )
  194.                 startpopup.addline("You have a KD of %.2f" % kd )
  195.                 startpopup.addline("Maximal KD is %.2f beginning with %i Kills" % (kd_begrenzusp,kd_kills))
  196.                 startpopup.addline("-----------------------------------------")
  197.                 startpopup.addline("->0. Close")
  198.                 startpopup.send(theuserid)
  199.                 gamethread.delayed(10, popuplib.unsendname, ("startpopup", theuserid))
  200.  
  201. def unload():
  202.     save_dictionary()
  203.  
  204. def round_start(ev):
  205.     save_dictionary()
  206.  
  207. def player_say(ev):
  208.     steam = es.getplayersteamid(ev['userid'])
  209.     if ev['text'] == say_cmd:
  210.         if playerlist.has_key(steam):
  211.             kills = playerlist[steam]['kills']
  212.             deaths = playerlist[steam]['deaths']
  213.             if deaths != 0:
  214.                 kd = float(float(kills)/float(deaths))
  215.             else:
  216.                 kd = float(kills)
  217.             if scriptlanguage == "de":
  218.                 startpopup = popuplib.create('startpopup')
  219.                 startpopup.addline("Deine KD Info")
  220.                 startpopup.addline("-----------------------------------------")
  221.                 startpopup.addline("Du hast %i Kills" % kills )
  222.                 startpopup.addline("Du hast %i Deaths" % deaths )
  223.                 startpopup.addline("Du hast eine KD von %.2f" % kd )
  224.                 startpopup.addline("Maximale KD ist %.2f beginnent mit %i Kills" % (kd_begrenzusp,kd_kills))
  225.                 startpopup.addline("-----------------------------------------")
  226.                 startpopup.addline("->0. Schliessen")
  227.                 startpopup.send(ev['userid'])
  228.             if scriptlanguage == "en":
  229.                 startpopup = popuplib.create('startpopup')
  230.                 startpopup.addline("Your KD Info")
  231.                 startpopup.addline("-----------------------------------------")
  232.                 startpopup.addline("You have %i Kills" % kills )
  233.                 startpopup.addline("You have %i Deaths" % deaths )
  234.                 startpopup.addline("You have a KD of %.2f" % kd )
  235.                 startpopup.addline("Maximal KD is %.2f beginning with %i Kills" % (kd_begrenzusp,kd_kills))
  236.                 startpopup.addline("-----------------------------------------")
  237.                 startpopup.addline("->0. Close")
  238.                 startpopup.send(ev['userid'])
  239.  
  240. def save_dictionary():
  241.     file_players = open(file, 'wb')
  242.     cPickle.dump(playerlist, file_players)
  243.     file_players.close()
  244.  
  245. def say_timer():
  246.     if scriptlanguage == "en":
  247.         es.msg('#multi', '#lightgreenThis Server has a #greenKD Handicap#lightgreen when your KD is too high#green you have only a pistole')
  248.     if scriptlanguage == "de":
  249.         es.msg('#multi', '#lightgreenDieser Server hat ein #greenKD Handicap#lightgreen wenn deine KD zu hoch ist#green dann hast du nur eine pistole')
  250.     gamethread.delayed(500, say_timer,())
Add Comment
Please, Sign In to add comment