I have issue make switch all players to ct and keep infected one t.
Here is the code
Syntax: Select all
import os
import random
import path
from events import Event
from listeners.tick import Delay
from players.entity import Player
from players.helpers import index_from_userid
from filters.players import PlayerIter
from entities.entity import Entity
from engines.precache import Model
from stringtables.downloads import Downloadables
from engines.server import queue_command_string
from events.hooks import PreEvent
from events.hooks import EventAction
from messages import SayText2
from messages import HintText
from filters.weapons import WeaponClassIter
weapons = [weapon.basename for weapon in WeaponClassIter(not_filters='knife')]
def hint(attacker, userid):
hudhint(attacker, 'Name: %s \nHp: %s' % (Player(index_from_userid(userid)).name, Player(index_from_userid(userid)).health))
def hudhint(userid, text):
HintText(message=text).send(index_from_userid(userid))
@PreEvent('server_cvar', 'player_team', 'player_connect', 'player_disconnect', 'player_connect_client')
def pre_player_team(game_event):
return EventAction.STOP_BROADCAST
def tell(userid, text):
SayText2(message='' + text).send(index_from_userid(userid))
__FILEPATH__ = path.path(__file__).dirname()
DOWNLOADLIST_PATH = os.path.join(__FILEPATH__ + '/materials.txt')
def server_command(cmd):
queue_command_string(cmd)
def player_list():
for i in PlayerIter.iterator():
yield i.userid
def load():
server_command('bot_quota 20')
server_command('bot_quota_mode fill')
server_command('mp_roundtime 5')
setDl()
def ct_count():
return len(PlayerIter(['all', 'ct']))
def round_checker():
if ct_count() == 0:
Entity.find_or_create('info_map_parameters').fire_win_condition(3)
def setDl():
downloadables = Downloadables()
with open(DOWNLOADLIST_PATH) as f:
for line in f:
line = line.strip()
if not line:
continue
downloadables.add(line)
@Event('player_spawn')
def player_spawn(args):
userid = args.get_int('userid')
Player(index_from_userid(userid)).gravity = 1 # Should restore old gravity
if Player(index_from_userid(userid)).team == 2:
Player(index_from_userid(userid)).restrict_weapons(*weapons)
if random.randint(1, 20) <= 1:
infect(userid)
@Event('player_hurt')
def player_hurt(args):
if args.get_string('weapon') == 'knife':
userid = args.get_int('userid')
attacker = args.get_int('attacker')
if attacker > 0:
if not Player(index_from_userid(userid)).team == Player(index_from_userid(attacker)).team:
infect(userid)
@Event('player_hurt')
def player_hurt(args):
userid = args.get_int('userid')
attacker = args.get_int('attacker')
if attacker > 0:
if not Player(index_from_userid(userid)).team == Player(index_from_userid(attacker)).team:
if not Player(index_from_userid(attacker)).is_bot():
Delay(2, hint, (attacker, userid))
def infect(userid):
Player(index_from_userid(userid)).switch_team(2)
Player(index_from_userid(userid)).set_noblock(True)
Player(index_from_userid(userid)).health = 10000
Player(index_from_userid(userid)).speed = 1.5 # Should make 50% faster walk
Player(index_from_userid(userid)).gravity = 0.75 # Should make 25% less have gravity
chance = random.randint(1, 4)
if chance == 1:
Player(index_from_userid(userid)).set_model(Model('models/player/zh/zh_charple001.mdl'))
elif chance == 2:
Player(index_from_userid(userid)).set_model(Model('models/player/zh/zh_corpse002.mdl'))
elif chance == 3:
Player(index_from_userid(userid)).set_model(Model('models/player/zh/zh_zombie003.mdl'))
elif chance == 4:
Player(index_from_userid(userid)).set_model(Model('models/player/ics/hellknight_red/t_guerilla.mdl'))
for i in player_list():
tell(i, '\x04%s has infected to zombie!' % (Player(index_from_userid(userid)).name))
Delay(0.1, round_checker)
@Event('item_pickup')
def item_pickup(args):
userid = args.get_int('userid')
if Player(index_from_userid(userid)).team == 2:
Player(index_from_userid(userid)).restrict_weapons(*weapons)