CSGO: after up csgo client knife round is not working

Please post any questions about developing your plugin here. Please use the search function before posting!
nullable
Senior Member
Posts: 137
Joined: Sat Nov 08, 2014 7:22 pm

CSGO: after up csgo client knife round is not working

Postby nullable » Sat Sep 19, 2015 7:58 pm

Hello,

After update csgo client knife round is not working now.

Code: Select all

[SP] Caught an Exception:
Traceback (most recent call last):
  File '../addons/source-python/packages/source-python/listeners/tick/delays.py', line 60, in __call__
    self.callback(*self.args, **self.kwargs)
  File '../addons/source-python/packages/source-python/listeners/tick/repeat.py', line 296, in _execute
    self.callback(*self.args, **self.kwargs)
  File '../addons/source-python/plugins/test/test.py', line 81, in decorator
    f(*args, **kwargs)
  File '../addons/source-python/plugins/test/test.py', line 238, in weapon_check
    for weapon_index in player.weapon_indexes(not_filters='knife'):
  File '../addons/source-python/packages/source-python/players/weapons/__init__.py', line 342, in weapon_indexes
    weapon_class = edict_from_index(index).get_class_name()
 
ValueError: Unable to get an Edict instance from the given index (304).


Please help me to fix it.
nullable
Senior Member
Posts: 137
Joined: Sat Nov 08, 2014 7:22 pm

Postby nullable » Sat Sep 19, 2015 8:05 pm

The code bellow:

Syntax: Select all

def weapon_check():
for player in PlayerIter(return_types='player'):
player.cash = 0
for weapon in WeaponEdictIter(return_types='weapon'):
if weapon.current_owner is None:
weapon.remove()
for weapon_index in player.weapon_indexes(not_filters='knife'):
weapon = Entity(weapon_index)
player.drop_weapon(weapon.pointer, None, None)
remove_entity(weapon.index)
nullable
Senior Member
Posts: 137
Joined: Sat Nov 08, 2014 7:22 pm

Postby nullable » Sun Sep 20, 2015 9:19 am

Is it possible to fix? Or maybe good idea is to rewrite code from sourcepython to sourcemod for example?
User avatar
Ayuto
Project Leader
Posts: 2193
Joined: Sat Jul 07, 2012 8:17 am
Location: Germany

Postby Ayuto » Sun Sep 20, 2015 6:56 pm

Please be patient. We all have reallife and won't be able to work on SP 24/7.

Some additional information would help: when does this error happen? How can we reproduce it? The exception you get is obviously the same like this one (you are just using a newer version): http://forums.sourcepython.com/showthread.php?868-weapon-giver-on-activate-bms&p=5767&viewfull=1
nullable
Senior Member
Posts: 137
Joined: Sat Nov 08, 2014 7:22 pm

Postby nullable » Sun Sep 20, 2015 7:05 pm

Ok. For reproduce use the code bellow:

Syntax: Select all

@Event('player_activate')
def player_activate(game_event):
player = PlayerEntity(index_from_userid(game_event.get_int('userid')))
player.cash = 0
for weapon in WeaponEdictIter(return_types='weapon'):
if weapon.current_owner is None:
weapon.remove()
for weapon_index in player.weapon_indexes(not_filters='knife'):
weapon = Entity(weapon_index)
player.drop_weapon(weapon.pointer, None, None)
remove_entity(weapon.index)


env:
OS: Ubuntu
SourcePython: last version
Game: CS:GO
nullable
Senior Member
Posts: 137
Joined: Sat Nov 08, 2014 7:22 pm

Postby nullable » Thu Sep 24, 2015 11:17 am

You can try next code:

Syntax: Select all

def weapon_check():
for player in PlayerIter(return_types='player'):
player.cash = 0
# Remove from map
for weapon in WeaponEdictIter(return_types='weapon'):
if weapon.current_owner is None:
weapon.remove()
# Remove from player
for weapon_index in player.weapon_indexes(not_filters='knife'):
weapon = Entity(weapon_index)
player.drop_weapon(weapon.pointer, None, None)
remove_entity(weapon.index)


I mean first block (remove from map) is working correct, but other one is not (remove from player). Please help to resolve this issue.
nullable
Senior Member
Posts: 137
Joined: Sat Nov 08, 2014 7:22 pm

Postby nullable » Thu Sep 24, 2015 2:36 pm

I found solution:

Syntax: Select all

def weapon_check():
for player in PlayerIter(return_types='player'):
player.cash = 0
for weapon in WeaponEdictIter(return_types='weapon'):
if weapon.class_name != 'weapon_knife':
weapon.remove()


But now problem is the player don't have any weapons in hands. And I need to set knife as active weapon. How can I do it?
nullable
Senior Member
Posts: 137
Joined: Sat Nov 08, 2014 7:22 pm

Postby nullable » Sun Sep 27, 2015 10:56 am

The problem has been resolved after fix this https://github.com/Source-Python-Dev-Team/Source.Python/issues/72
Thanks

Return to “Plugin Development Support”

Who is online

Users browsing this forum: No registered users and 27 guests