hlmod.hu
https://hlmod.hu/

Player Infó
https://hlmod.hu/viewtopic.php?f=93&t=15182
Oldal: 1 / 1

Szerző:  Anonymous1337 [ 2014.03.29. 16:59 ]
Hozzászólás témája:  Player Infó

Üdv!


Egy egyszerű kérdést szeretnék feltenni kedves motomoto.


Hogyan tudok kiírni Játékos infót játékosoknak?


PL.: Mindenki saját magának lássa az Infóit.

Infók amiket le kellene kérni:

Játékos neve: xy
Steam ID: xy
User ID: xy
KM/h: xy
Mennyi métert tettem meg?: xy
Ölések: xy
Lövések: xy
Fejlövés: xy
Késsel öltem: xy
Hányszor ugrottam?: xy
Hányszor álltam spectatorba?: xy

Ezek kellenének bele.
A hely mindegy, csak fehérrel írja ezeket az infókat. Ahogy hallottam, értesz EventScripthez, ez sem fog problémát okozni. :)

Köszönöm előre is :)

Szerző:  DeteCT0R [ 2014.03.29. 17:33 ]
Hozzászólás témája:  Re: Player Infó

Fingom sincs miez de hasonlit a kep szerint amit kertel :)

Eventscripts Forráskód: [ Mindet kijelol ]
  1. from es import AddonInfo, ServerVar, addons, getplayerhandle, getplayerprop, getplayersteamid, getplayername, getplayerlocation, getuserid, doblock
  2. from repeat import create as repeat_create
  3. from usermsg import keyhint
  4. from playerlib import getUseridList
  5. from cfglib import AddonCFG
  6.  
  7. class PlayerInfo(object):
  8. def __init__(self, userid):
  9. self.userid = int(userid)
  10. self.name = getplayername(self.userid)
  11. self.steamid = getplayersteamid(self.userid)
  12. self.resetAttributes()
  13. def resetAttributes(self):
  14. self.kills = 0
  15. self.shots = 0
  16. self.headshots = 0
  17. self.knife_kills = 0
  18. self.jumps = 0
  19. self.max_speed = 0
  20. self.walked_distance = 0
  21. self._old_location = None
  22. def calculateDistance(self):
  23. new_location = getplayerlocation(self.userid)
  24. if not self._old_location:
  25. self._old_location = new_location
  26. return
  27. if new_location == self._old_location:
  28. return
  29. self.walked_distance += getDistance(self._old_location, new_location)
  30. self._old_location = new_location
  31. def getSpeed(self):
  32. self._x = getplayerprop(self.userid,'CBasePlayer.localdata.m_vecVelocity[0]')
  33. self._y = getplayerprop(self.userid,'CBasePlayer.localdata.m_vecVelocity[1]')
  34. self._z = getplayerprop(self.userid,'CBasePlayer.localdata.m_vecVelocity[2]')
  35. self._speed = int(round((self._x*self._x + self._y*self._y + self._z*self._z)**0.5, 2) / float(37) * 1.6)
  36. if self._speed > self.max_speed:
  37. self.max_speed = self._speed
  38. return "%s Km/h" %self._speed
  39. def getSpecs(self):
  40. return getSpecs(self.userid)
  41. def getPlayerInfo(self):
  42. self._player_info_dict = {
  43. "player" : self.name,
  44. "steamid" : self.steamid,
  45. "userid" : self.userid,
  46. "speed" : self.speed,
  47. "max_speed" : "%s Km/h" %self.max_speed,
  48. "walked_distance" : "%s Meters" %round(self.walked_distance, 2),
  49. "specs" : self.specs,
  50. "kills" : self.kills,
  51. "shots" : self.shots,
  52. "headshots" : self.headshots,
  53. "knife_kills" : self.knife_kills,
  54. "jumps" : self.jumps
  55. }
  56. return self._player_info_dict
  57. specs = property(getSpecs)
  58. speed = property(getSpeed)
  59. player_info_dict = property(getPlayerInfo)
  60.  
  61.  
  62. info = AddonInfo()
  63. info.name = 'Info Display'
  64. info.version = 1.3
  65. info.basename = 'info_display'
  66. info.url = 'http://addons.eventscripts.com/addons/view/info_display'
  67. info.author = 'Dead Man Walker'
  68.  
  69. player_info = {}
  70.  
  71. PLAYER_INFO_ITEMS = [
  72. "player",
  73. "steamid",
  74. "userid",
  75. "speed",
  76. "max_speed",
  77. "walked_distance",
  78. "specs",
  79. "kills",
  80. "shots",
  81. "headshots",
  82. "knife_kills",
  83. "jumps"
  84. ]
  85.  
  86. def load():
  87. global loop_players
  88. createCfg()
  89. doblock('corelib/noisy_on')
  90. loop_players = repeat_create('loop_players', loopPlayers)
  91. loop_players.start(LOOP_INTERVAL, 0)
  92. for userid in getUseridList('#alive'):
  93. player_info[userid] = PlayerInfo(userid)
  94.  
  95. def unload():
  96. if DISPLAYED_ITEMS:
  97. if "walked_distance" in DISPLAYED_ITEMS:
  98. addons.unregisterTickListener(loopDistance)
  99. loop_players.delete()
  100. doblock('corelib/noisy_off')
  101.  
  102. def es_map_start(event_var):
  103. if DISPLAYED_ITEMS:
  104. if "walked_distance" in DISPLAYED_ITEMS:
  105. addons.unregisterTickListener(loopDistance)
  106. createCfg()
  107. player_info.clear()
  108.  
  109. def player_spawn(event_var):
  110. userid = int(event_var['userid'])
  111. player_info[userid] = PlayerInfo(userid)
  112.  
  113. def round_start(event_var):
  114. for inst in player_info.values():
  115. inst.resetAttributes()
  116.  
  117. def weapon_fire(event_var):
  118. if event_var['weapon'] != "knife":
  119. userid = int(event_var['userid'])
  120. player_info[userid].shots += 1
  121.  
  122. def player_hurt(event_var):
  123. victim = int(event_var['userid'])
  124. attacker = int(event_var['attacker'])
  125. from es import msg
  126. if attacker not in (victim, 0) and getplayerprop(victim, "CCSPlayer.baseclass.pl.deadflag"):
  127. player_info[attacker].kills += 1
  128. if event_var['hitgroup'] == '1':
  129. player_info[attacker].headshots += 1
  130. if event_var['weapon'] == 'knife':
  131. player_info[attacker].knife_kills += 1
  132.  
  133. def player_jump(event_var):
  134. userid = int(event_var['userid'])
  135. player_info[userid].jumps += 1
  136.  
  137. def player_changename(event_var):
  138. player_info[int(event_var['userid'])].name = event_var['newname']
  139.  
  140.  
  141. def getDistance(loc1, loc2):
  142. return (sum((loc1[x] - loc2[x]) ** 2 for x in xrange(3)) ** 0.5)* 0.0254
  143.  
  144. def getSpec(index):
  145. for userid in filter(lambda temp: not getplayerprop(temp, "CCSPlayer.baseclass.pl.deadflag"), getUseridList('#all')):
  146. if getplayerhandle(userid) == index:
  147. return userid
  148. return -1
  149.  
  150. def getSpecs(player):
  151. specs = set()
  152. for userid in getUseridList('#human,#dead'):
  153. if getplayerprop(userid, 'CBasePlayer.m_hObserverTarget'):
  154. speced_userid = getuserid(getplayerprop(userid, 'CBasePlayer.m_hObserverTarget'))
  155. if player == speced_userid:
  156. specs.add(getplayername(userid))
  157. specs_str = ""
  158. for name in specs:
  159. specs_str += "\n - " + name
  160. if not specs_str:
  161. specs_str = 0
  162. return specs_str
  163.  
  164. def display(display_player, player):
  165. if not DISPLAYED_ITEMS:
  166. return
  167. if player not in player_info:
  168. return
  169. player_info_string = ""
  170. for item in DISPLAYED_ITEMS:
  171. player_info_string += '\n%s: %s' %(item.replace('_', ' ').capitalize(), player_info[player].player_info_dict[item])
  172. keyhint(display_player, player_info_string)
  173.  
  174. def loopPlayers():
  175. userid_list = getUseridList('#all')
  176. if not userid_list:
  177. return
  178. for player in userid_list:
  179. if getplayerprop(player, "CCSPlayer.baseclass.pl.deadflag"):
  180. target = getSpec(getplayerprop(player, 'CBasePlayer.m_hObserverTarget'))
  181. if target == -1:
  182. continue
  183. display(player, target)
  184. else:
  185. display(player, player)
  186.  
  187. def loopDistance():
  188. for inst in player_info.values():
  189. inst.calculateDistance()
  190.  
  191. def createCfg():
  192. global LOOP_INTERVAL, DISPLAYED_ITEMS
  193. LOOP_INTERVAL = 0.1
  194. cfg = AddonCFG(ServerVar('eventscripts_gamedir') + "/cfg/" + info.basename + ".cfg")
  195. cfg.text("*****************************************************************")
  196. cfg.text("*** Info Display Config")
  197. cfg.text("*****************************************************************")
  198. cfg.text(' ')
  199. CFG_DISPLAYED_ITEMS = str(cfg.cvar('displayed_items', "", 'Type in the chosen items of the list below in the order at which they will be displayed. Seperate with a semicolon (;)'))
  200. LOOP_INTERVAL = float(cfg.cvar('loop_interval', 0.2, 'Interval to refresh the display'))
  201. cfg.text(' ')
  202. cfg.text('List of items:')
  203. for item in PLAYER_INFO_ITEMS:
  204. cfg.text('-' + item)
  205. cfg.write()
  206. cfg.execute()
  207.  
  208. if CFG_DISPLAYED_ITEMS.strip():
  209. DISPLAYED_ITEMS = CFG_DISPLAYED_ITEMS.strip().split(';')
  210. for item in DISPLAYED_ITEMS:
  211. if not item:
  212. DISPLAYED_ITEMS.remove(item)
  213. continue
  214. if item not in PLAYER_INFO_ITEMS:
  215. DISPLAYED_ITEMS.remove(item)
  216. if "walked_distance" in DISPLAYED_ITEMS:
  217. addons.registerTickListener(loopDistance)
  218. else:
  219. DISPLAYED_ITEMS = False
  220.  
  221.  
  222.  

Szerző:  Alnilam [ 2014.03.29. 20:12 ]
Hozzászólás témája:  Re: Player Infó

Öcsém mennyi baromságot kértél... állítom neked, hogy ez csak amolyan "mit tud motomoto" féle kérdés.
User ID Steam ID egy kutya.
Nem hiszem hogy az ilyen specis eszement dolgokat lehet eventel számoltatni.

Szerző:  motomoto [ 2014.05.10. 21:06 ]
Hozzászólás témája:  Re: Player Infó

Na tehát először is bocsánat, hogy sokáig nem válaszolok csak mostanában nem is nagyon cs-tem de most itt vagyok és irkálok :)
amit tudok megteszek megnézem, az infókat hogy szeretnéd? táblába vagy chat-be?

Szerző:  motomoto [ 2014.05.10. 21:15 ]
Hozzászólás témája:  Re: Player Infó

név: es_tell event_var(name)
steam id: es_tell event_var(networkid)
useridvel mit akarsz? azt meg sem lehet jeleníteni, mivel az akkor kell ha a játékossal akarsz kezdeni valamit azt maga a játékos nem láthatja
km: http://addons.eventscripts.com/addons/view/tempoadvert
hányszor ugrottam: ez megint érdekes. Nem is tudom, hogy minek meg meg se tudom csinálni szint úgy a lövések száma.
fejlövés: azt is meglehet csinálni :)
késsel ölés azt is meglehet
hányszor álltam specbe: ez is furcsa és ezt se tudom sajna :)
ölések: ezt is meglehet.
de tulajdon képen mit szeretnél ezekkel mert igazából sokkal egyszerűbb leszedni egy multi menüt vagy a mani_admin_plugin-nak az adottságait ki használni amiket kértél 70%- a benne van :)

Szerző:  Anonymous1337 [ 2014.05.11. 00:21 ]
Hozzászólás témája:  Re: Player Infó

Megírtam.


Tárgytalan.

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/