Guest User

Untitled

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