CSGO: default weapon
CSGO: default weapon
Please help me to resolve problem with Source.Python. I need to set default weapon like game is starting. How can I do it?
Try this (untested):
Syntax: Select all
from events import Event
from entities.entity import Entity
from filters.players import PlayerIter
from listeners import LevelInit
from listeners.tick import tick_delays
last_winner = 0
default_weapons = {
't': ['weapon_glock', 'weapon_knife'],
'ct': ['weapon_hkp2000', 'weapon_knife']
}
@LevelInit
def map_start(mapname):
global last_winner
last_winner = 0
@Event('round_end')
def round_end(game_event):
global last_winner
if game_event.get_int('reason') in (9,15):
last_winner = 0
return
last_winner = game_event.get_int('winner')
@Event('round_start')
def round_start(game_event):
global last_winner
if not last_winner:
return
team = 't' if last_winner == 2 else 'ct'
for player in PlayerIter(team, return_types='player'):
tick_delays.delay(0.1, remove_weapons, player)
tick_delays.delay(0.2, give_weapons, player, team)
def remove_weapons(player):
for index in player.weapon_indexes():
entity = Entity(index)
player.drop_weapon(entity.pointer, None, None)
entity.remove()
def give_weapons(player, team):
for weapon in default_weapons[team]:
player.give_named_item(weapon, 0, None, False)
It's not working. I understood that give_named_item not working in csgo now. Code for reproduce.
Syntax: Select all
@Event('player_activate')
def player_activate(game_event):
player = PlayerEntity(index_from_userid(game_event.get_int('userid')))
player.give_named_item('weapon_shotgun', 0, None, False)
If you use this code for reference that it's not working, then I'm not surprised. player_activate fires when the player has finished loading the map, but still is in the loading screen. You can't give a weapon to a player that did not spawn yet.
Use player_spawned event for that.
But did you test my code? Are the players not getting a weapon?
Use player_spawned event for that.
But did you test my code? Are the players not getting a weapon?
That is really odd.. Can you try this code please:
Syntax: Select all
from events import Event
from entities.entity import Entity
from filters.players import PlayerIter
from listeners import LevelInit
from listeners.tick import tick_delays
last_winner = 0
default_weapons = {
't': ['weapon_glock', 'weapon_knife'],
'ct': ['weapon_hkp2000', 'weapon_knife']
}
@LevelInit
def map_start(mapname):
global last_winner
last_winner = 0
@Event('round_end')
def round_end(game_event):
global last_winner
if game_event.get_int('reason') in (9,15):
last_winner = 0
return
last_winner = game_event.get_int('winner')
@Event('round_start')
def round_start(game_event):
global last_winner
if not last_winner:
return
team = 't' if last_winner == 2 else 'ct'
for player in PlayerIter(team, return_types='player'):
tick_delays.delay(0.1, remove_weapons, player)
tick_delays.delay(0.2, give_weapons, player, team)
def remove_weapons(player):
for index in player.weapon_indexes():
entity = Entity(index)
player.drop_weapon(entity.pointer, None, None)
entity.remove()
def give_weapons(player, team):
for weapon in default_weapons[team]:
player.give_named_item(weapon, 0, None, False)
Update your offsets in \addons\source-python\data\source-python\entities\csgo\CBasePlayer.ini which I posted here: https://github.com/Source-Python-Dev-Team/Source.Python/issues/72
Or wait for an official upate.
The code is working now, I've tested it, but you need to take my latest edit because I fixed a NameError. I upated both my posts to have the working version now.
Or wait for an official upate.
The code is working now, I've tested it, but you need to take my latest edit because I fixed a NameError. I upated both my posts to have the working version now.
Return to “Plugin Development Support”
Who is online
Users browsing this forum: No registered users and 107 guests