Skip to content

Commit ef2f7d0

Browse files
committed
Merge branch 'master' of github.com:Source-Python-Dev-Team/Source.Python
2 parents 465b7dc + 520cc3b commit ef2f7d0

File tree

3 files changed

+42
-5
lines changed

3 files changed

+42
-5
lines changed

addons/source-python/packages/source-python/filters/players.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ def _player_is_on_team(self, player):
9494
# =============================================================================
9595
# Register the filter functions
9696
PlayerIter.register_filter('all', lambda player: True)
97-
PlayerIter.register_filter('bot', lambda player: player.is_fake_client())
98-
PlayerIter.register_filter('human', lambda player: not player.is_fake_client())
97+
PlayerIter.register_filter('bot', lambda player: player.is_bot())
98+
PlayerIter.register_filter('human', lambda player: not player.is_bot())
9999
PlayerIter.register_filter('alive', lambda player: not player.dead)
100100
PlayerIter.register_filter('dead', lambda player: player.dead)
101101

addons/source-python/packages/source-python/players/_base.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,13 @@ def is_hltv(self):
184184
"""
185185
return self.playerinfo.is_hltv()
186186

187+
def is_bot(self):
188+
"""Return whether the player is a bot.
189+
190+
:rtype: bool
191+
"""
192+
return self.is_fake_client() or self.steamid == 'BOT'
193+
187194
def is_in_a_vehicle(self):
188195
"""Return whether the player is in a vehicle.
189196

addons/source-python/packages/source-python/translations/strings.py

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -250,11 +250,27 @@ def get_string(self, language=None, **tokens):
250250
# Possibly raise an error silently here
251251
return ''
252252

253-
# Update the stored tokens with the given ones
254-
self.tokens.update(tokens)
253+
# Expose all TranslationStrings instances in self.tokens
254+
exposed_tokens = {}
255+
256+
# Pass additional kwargs - these will be used to format the string
257+
self._update_exposed_tokens(
258+
exposed_tokens, language, self.tokens, **tokens)
259+
260+
# Don't pass any additional kwargs, each token should either
261+
# be trivial or rely on itself (self.tokens)
262+
self._update_exposed_tokens(exposed_tokens, language, tokens)
255263

256264
# Return the formatted message
257-
return self[language].format(**self.tokens)
265+
return self[language].format(**exposed_tokens)
266+
267+
@staticmethod
268+
def _update_exposed_tokens(exposed_tokens, language, tokens, **kwargs):
269+
for token_name, token in tokens.items():
270+
if isinstance(token, TranslationStrings):
271+
token = token.get_string(language, **kwargs)
272+
273+
exposed_tokens[token_name] = token
258274

259275
def get_language(self, language):
260276
"""Return the language to be used."""
@@ -291,5 +307,19 @@ def get_language(self, language):
291307
# Return None as the language, as no language has been found
292308
return None
293309

310+
def tokenized(self, **tokens):
311+
"""Create a new TranslationStrings instance and store tokens in it.
312+
313+
:param dict tokens: Tokens to store in the instance.
314+
:return: New TranslationStrings instance with tokens stored in it.
315+
:rtype: TranslationStrings
316+
"""
317+
result = TranslationStrings()
318+
result.tokens.update(tokens)
319+
320+
result.update(self)
321+
322+
return result
323+
294324
# Get the translations language strings
295325
_translation_strings = LangStrings('_core/translations_strings')

0 commit comments

Comments
 (0)