示例#1
0
    def _load_configs(self):
        '''Loads all "main", "included", and "custom" addon config files'''

        # Print a message that the base cfg files
        # and the Included Addon cfg files are being loaded
        es.dbgmsg(0, langstring('Load_Configs'))

        # Loop through all base _config.py files
        for cfgfile in ConfigTypeDictionary.main:

            # Load the file
            self._load_config(cfgfile)

        # Loop through all Included Addon _config.py files
        for cfgfile in ConfigTypeDictionary.included:

            # Load the file
            self._load_config(cfgfile)

        # Print a message that the Custom Addon cfg files are being loaded
        es.dbgmsg(0, langstring('Load_CustomConfigs'))

        # Loop through all Custom Addon _config.py files
        for cfgfile in ConfigTypeDictionary.custom:

            # Load the file
            self._load_config(cfgfile)

        # Execute all cfg files in one tick
        delayed(0, self._execute_cfg_files)
示例#2
0
def bot_configs():
    if int(sv('hostport')) != 27100:
        es.ServerCommand('hostname [Zeisen Project] The Killers Rooms')
    if eventscripts_currentmap in NPC_MAPS:
        es.ServerCommand('mp_ignore_round_win_conditions 1')
        es.ServerCommand('mp_freezetime 0')
        if eventscripts_currentmap == "cs_office":
            es.ServerCommand('bot_quota 0')
            est.remove("hostage_entity")
    else:
        es.ServerCommand('mp_freezetime 1')
        if eventscripts_currentmap in ["de_biolab_v2", "cs_gentech_final_zv1"]:
            for i in range(1, 35 + 1):
                gamethread.delayed(i * 0.05, es.ServerCommand,
                                   ('bot_add "Gangsters - %s"' % (i)))
        if ONLINE:
            es.ServerCommand('mp_ignore_round_win_conditions 1')
        else:
            es.ServerCommand('mp_ignore_round_win_conditions 1')
    es.ServerCommand('mp_round_restart_delay 4')
    es.ServerCommand('bot_all_weapons')
    es.ServerCommand('bot_eco_limit 16001')
    es.ServerCommand('ammo_338mag_max 0')
    es.ServerCommand('ammo_357sig_max 0')
    es.ServerCommand('ammo_45acp_max 0')
    es.ServerCommand('ammo_50AE_max  0')
    es.ServerCommand('ammo_556mm_box_max 0')
    es.ServerCommand('ammo_556mm_max  0')
    es.ServerCommand('ammo_57mm_max  0')
    es.ServerCommand('ammo_762mm_max 0')
    es.ServerCommand('ammo_9mm_max  0')
    es.ServerCommand('ammo_buckshot_max 0')
示例#3
0
    def end_warmup(self):
        """Ends the current Warmup Round"""

        # Is Warmup Round currently active?
        if not info.name in PriorityAddon:

            # If not, there is no need to end the Warmup Round
            return

        # Send stop command to repeat loop
        self.repeat.stop()

        # Send hudhint to players that Warmup has ended
        hudhint("#human", self.message)

        # Remove Priority Addons
        self.priorities.clear()

        # Reset the number of extensions
        self.extensions = 0

        # Reset mp_freezetime
        mp_freezetime.set(self.freezetime)

        # Execute the End Warmup Round cfg file
        es.mexec("gungame51/" + str(warmup_end_file))

        # Restart the game
        es.server.queuecmd("mp_restartgame 1")

        # Set all living players godmode value to True
        self.set_all_players_godmode(True)

        # After a 1 second delay, clean up this Warmup Round
        delayed(1, self.clean_up)
示例#4
0
def voteSendcmd(userid, args):
    # If the map vote isn't running, then stop here
    ggRepeat = repeat.find('gg_map_vote')
    if not ggRepeat:
        return

    # Make sure the popup exists
    if not ggVote:
        return

    # Make sure the player is eligable to vote
    if userid not in voteUserids:
        return

    # Make sure the player has not recently used the cmd (prevent spam)
    if userid in voteCmdUserids:
        return

    # Add userid to list of cmd ussage
    voteCmdUserids.append(userid)

    # Remove from list in 3 seconds
    gamethread.delayed(3, voteCmdUserids.remove, userid)

    # Send the menu to the player
    ggVote.send(userid)
示例#5
0
def gg_win(event_var):
    # Store the winner's name
    name = event_var["es_attackername"]

    # Store the winner's index
    index = int(event_var["es_attackerindex"])

    # Send chat message for player winning the match
    saytext2("#human", index, "PlayerWon", {"player": name})

    # We want to loop, so we send a message every second for 3 seconds
    for x in xrange(4):

        # Send centermsgs to players about the winner
        delayed(x, centermsg, ("#human", "PlayerWon_Center", {"player": name}))

    # Was the winner a Terrorist?
    if int(event_var["es_attackerteam"]) == 2:

        # Store color for Terrorists
        color = "#red"

    # Was the winner a CT?
    else:

        # Store color for CTs
        color = "#blue"

    # Send toptext message to players about the winner
    toptext("#human", 10, color, "PlayerWon_Center", {"player": name})
def genRaceinfoPop(popupname, callback, userid, race):
    checkPop(popupname)
    raceinfop = popuplib.create("raceinfo_menu_%s" % userid)
    raceinfop.menuselect = raceinfo_handler
    raceinfop.addline("->%s. %s (%s levels/%s skills)" %
                      (race, es.keygetvalue("wcsraces", race, "name"),
                       es.keygetvalue("wcsraces", race, "numberoflevels"),
                       es.keygetvalue("wcsraces", race, "numberofskills")))
    raceinfop.addline("Credits: %s" %
                      es.keygetvalue("wcsraces", race, "author"))
    raceinfop.addline("------------------------")
    numofskills = int(es.keygetvalue("wcsraces", race, "numberofskills"))
    counter = 1
    scounter = 0
    skillnames = es.keygetvalue("wcsraces", race, "skillnames").split("|")
    skilldescr = es.keygetvalue("wcsraces", race, "skilldescr").split("|")
    while (counter <= numofskills):
        raceinfop.addline("->%s. %s" % (counter, skillnames[scounter]))
        raceinfop.addline("%s" % skilldescr[scounter])
        scounter += 1
        counter += 1
    raceinfop.addline("------------------------")
    raceinfop.addline("->8. Back")
    raceinfop.addline("->9. Next")
    gamethread.delayed(0.0001, raceinfop.send, (userid))
    es.keysetvalue("wcsuserdata", userid, "raceinfo", race)
示例#7
0
    def teleport(self, x, y, z, eyeangle0=0, eyeangle1=0):
        '''
        Teleport the player.

        Recalculates the player's location automatically for the scripter.
        '''
        # Make sure player is on a team
        if es.getplayerteam(self.userid) < 2:
            raise ValueError('Unable to teleport player (%s): not on a team.'
                % self.userid)

        # Make sure the player is alive
        if getPlayer(userid).isdead:
            raise ValueError('Unable to teleport player (%s): not alive.'
                % self.userid)

        # Set position
        es.server.queuecmd('es_xsetpos %d %s %s %s' % (self.userid, x, y, z))

        # Set eye angles
        if eyeangle0 != 0 or eyeangle1 != 0:
            es.server.queuecmd('es_xsetang %d %s %s' % (self.userid, eyeangle0,
                                                       eyeangle1))

        # Reset player AFK calculation
        gamethread.delayed(0.1, self.reset, ())
示例#8
0
def wcs_ulti_roots():
	userid = int(es.ServerVar('wcs_userid'))
	count = 0

	if es.getplayerteam(userid) >= 2:
		if playerlib.getUseridList('#alive'):
			usermsg.fade(userid, 0, 1, 1, 10, 55, 5, 200)
			x,y,z = es.getplayerlocation(userid)
			radius = float(es.ServerVar('wcs_radius'))
			time = float(es.ServerVar('wcs_freezetime'))

			for user in playerlib.getUseridList('#alive,#'+['ct','t'][es.getplayerteam(userid)-2]):
				x1,y1,z1 = es.getplayerlocation(user)

				if ((x1 - x) ** 2 + (y1 - y) ** 2 + (z1 - z) ** 2) ** 0.5 <= radius:
					#check for wall between...

					if not tools.wcsgroup.wcsgroup.getUser(user, 'ulti_immunity'):
						playerlib.getPlayer(user).freeze = 1
						gamethread.delayed(time, reset, (user, 'freeze', 0))
						count += 1

					else:
						es.tell(user, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.')
						es.tell(userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.')

	if count:
		es.centertell('Entangling Roots: %s' % (count))
	else:
		es.tell(userid, '#multi','#lightgreenEntangling Roots #greenfailed#lightgreen, because no enemy is close enough.')
		es.server.queuecmd('es wcs_reset_cooldown %s' % (userid))
示例#9
0
def bonusMenu_select(userid, choice, popupid):
    if (es.getplayerteam(userid) == 1): return
    for a in range(1, 4):
        if (choice == '%s' % a):
            entities = es.createentitylist('info_teleport_destination')
            for b in entities:
                if (es.entitygetvalue(b, 'targetname') == "timer_bonus%s" % a):
                    x = es.getplayerprop(
                        userid,
                        "CBasePlayer.localdata.m_vecVelocity[0]") * -1 / 2
                    y = es.getplayerprop(
                        userid,
                        "CBasePlayer.localdata.m_vecVelocity[1]") * -1 / 2
                    z = es.getplayerprop(
                        userid,
                        "CBasePlayer.localdata.m_vecVelocity[2]") * -1 / 2
                    es.setplayerprop(
                        userid, "CBasePlayer.localdata.m_vecBaseVelocity",
                        es.createvectorstring(x, y, z))
                    gamethread.delayed(
                        0.01, es.setplayerprop,
                        (userid, "CBasePlayer.localdata.m_vecBaseVelocity",
                         es.createvectorstring(x, y, z)))
                    startPos = es.entitygetvalue(b, 'origin').split(' ')
                    startAng = es.entitygetvalue(b, 'angles').split(' ')
                    es.setpos(userid, startPos[0], startPos[1], startPos[2])
                    es.setang(userid, startAng[0], startAng[1], startAng[2])
示例#10
0
def voteSendcmd(userid, args):
    # If the map vote isn't running, then stop here
    ggRepeat = repeat.find("gg_map_vote")
    if not ggRepeat:
        return

    # Make sure the popup exists
    if not ggVote:
        return

    # Make sure the player is eligable to vote
    if userid not in voteUserids:
        return

    # Make sure the player has not recently used the cmd (prevent spam)
    if userid in voteCmdUserids:
        return

    # Add userid to list of cmd ussage
    voteCmdUserids.append(userid)

    # Remove from list in 3 seconds
    gamethread.delayed(3, voteCmdUserids.remove, userid)

    # Send the menu to the player
    ggVote.send(userid)
示例#11
0
def es_map_start(event_var):
    global map_list
    global startTime
    global change_map
    change_map = None
    gameDir = str(es.ServerVar('eventscripts_gamedir')).replace('\\',
                                                                '/') + '/'
    mapfilename = gameDir + str(vote_map_file)
    if os.path.exists(mapfilename):
        map_file = open(mapfilename, 'r')
        map_lines = map(lambda x: x.strip(), map_file.readlines())
        map_file.close()
        map_lines = filter(lambda x: not x.startswith('//') and len(x),
                           map_lines)
        map_list = filter(
            lambda x: os.path.isfile(gameDir + 'maps/%s.bsp' % x), map_lines)
    else:
        es.dbgmsg(
            0,
            "xavote.py: Note: Cannot find maplist file '" + mapfilename + "'")

    gamethread.cancelDelayed('votemap_timer')
    round_count.clear()
    round_count['round_counting'] = 0
    round_count['t_wins'] = 0
    round_count['c_wins'] = 0
    round_count['frag_kills'] = 0
    startTime = time.time()
    if int(time_before_end_of_map_vote):
        gamethread.delayed(10, DelayTimer)
    previousMaps.append(event_var['mapname'])
    if len(previousMaps) and len(previousMaps) > int(ignore_last_map_amount):
        previousMaps.remove(previousMaps[0])
示例#12
0
    def start_warmup(self):
        '''Called when Warmup Round needs to start'''

        # Add Warmup Round to PriorityAddon
        self.priorities.add(info.name)

        # Set the Warmup Message
        self.message = 'Timer_Ended'

        # Store a backup of mp_freezetime
        self.freezetime = int(mp_freezetime)

        # Set Freeze Time to 0
        mp_freezetime.set(0)

        # Execute the Start Warmup Round cfg
        es.mexec('gungame51/' + str(warmup_start_file))

        # Get the Warmup Weapon
        self.weapon = self.set_warmup_weapon()

        # Start the count down
        self.repeat.start(1, int(warmup_timer))

        # Loop through all living players
        for player in getPlayerList('#alive'):

            # Give the player the warmup weapon
            self.give_warmup_weapon(player.userid)

        # Wait until adding other PriortyAddons
        delayed(0.1, self.add_priority_addons)
示例#13
0
    def start_warmup(self):
        """Called when Warmup Round needs to start"""

        # Add Warmup Round to PriorityAddon
        self.priorities.add(info.name)

        # Set the Warmup Message
        self.message = "Timer_Ended"

        # Store a backup of mp_freezetime
        self.freezetime = int(mp_freezetime)

        # Set Freeze Time to 0
        mp_freezetime.set(0)

        # Execute the Start Warmup Round cfg
        es.mexec("gungame51/" + str(warmup_start_file))

        # Get the Warmup Weapon
        self.weapon = self.set_warmup_weapon()

        # Start the count down
        self.repeat.start(1, int(warmup_timer))

        # Loop through all living players
        for player in getPlayerList("#alive"):

            # Give the player the warmup weapon
            self.give_warmup_weapon(player.userid)

        # Wait until adding other PriortyAddons
        delayed(0.1, self.add_priority_addons)
示例#14
0
def gg_leveldown(event_var):
    userid = int(event_var['userid'])

    # Player leveled down to nade ?
    if not check_bonus(userid):
        return

    # Using weapon list ?
    if not using_weapon_list():
        return

    oldlevel = int(event_var['old_level'])

    # Was Player on nade ?
    if get_level_weapon(oldlevel) == 'hegrenade':

        # Reset bonus levels
        Player(userid).nadeBonusMulti = 0
        Player(userid).nadeBonusLevel = 1

    # Giving bonus (delayed more for bots)
    if es.isbot(userid):
        gamethread.delayed(0.50, give_bonus, userid)
        return

    gamethread.delayed(0.10, give_bonus, userid)
示例#15
0
    def end_warmup(self):
        '''Ends the current Warmup Round'''

        # Is Warmup Round currently active?
        if not info.name in PriorityAddon:

            # If not, there is no need to end the Warmup Round
            return

        # Send stop command to repeat loop
        self.repeat.stop()

        # Send hudhint to players that Warmup has ended
        hudhint('#human', self.message)

        # Remove Priority Addons
        self.priorities.clear()

        # Reset the number of extensions
        self.extensions = 0

        # Reset mp_freezetime
        mp_freezetime.set(self.freezetime)

        # Execute the End Warmup Round cfg file
        es.mexec('gungame51/' + str(warmup_end_file))

        # Restart the game
        es.server.queuecmd('mp_restartgame 1')

        # Set all living players godmode value to True
        self.set_all_players_godmode(True)

        # After a 1 second delay, clean up this Warmup Round
        delayed(1, self.clean_up)
示例#16
0
def speed_set(userid):
    userid = str(userid)
    player = playerlib.getPlayer(userid)
    if not playerlib.getPlayer(userid).isdead:
        if gusers[userid]['crawl'] != 0:
            player.set("speed", 1.0)
            gamethread.delayed(0.2, speed_set, userid)
def power():
    userid = str(es.getcmduserid())
    player = playerlib.getPlayer(userid)
    if not playerlib.getPlayer(userid).isdead:
        if int(time.time()) >= int(gusers[userid]['nc_cooldown']):
            es.server.queuecmd('es_xsetplayerprop %s "CBaseEntity.movetype" 8' % userid)
            if not 'speed' in gusers[userid]: 
                gusers[userid]['speed'] = 1.0
            player.set("speed", 1.0)
            gusers[userid]['nc_cooldown'] = int(time.time()) + 10
            es.centertell(userid,'Noclip activated, do not get Stuck!')
            es.tell(userid,'#multi','#green[SH]#lightgreen Nightcrawler is partially blinded. You now are aswell.')
            gusers[userid]['crawl'] = 1
            fade(userid, 1, 0.5, 2.8, 0, 0, 0, 254)
            speed_set(userid)
            #es.server.cmd('ezrestrict %s #all' % userid)
            #es.server.cmd('ezrestrict_removeidle #all')
            #es.server.cmd('ezunrestrict %s knife' % userid)
            gamethread.delayed(0.1, es.server.queuecmd, 'es_xgive %s weapon_knife' % userid)
            es.delayed(1,'es_centertell %s 6 seconds left...' % userid)
            es.delayed(2,'es_centertell %s 5 seconds left...' % userid)
            es.delayed(3,'es_centertell %s 4 seconds left...' % userid)
            es.delayed(4,'es_centertell %s 3 seconds left...' % userid)
            es.delayed(5,'es_centertell %s 2 seconds left...' % userid)
            es.delayed(6,'es_centertell %s 1 seconds left...' % userid)
            gamethread.delayed(7,undo,(player))
        else:
            es.tell(userid,'#multi','#green[SH]#lightgreen Cannot activate Nightcrawler #green',int(gusers[userid]['nc_cooldown'])-int(time.time()),'#lightgreenseconds left')
def speed_set(userid):
    userid = str(userid)
    player = playerlib.getPlayer(userid)
    if not playerlib.getPlayer(userid).isdead:
        if gusers[userid]['crawl'] != 0:
            player.set("speed", 1.0)
            gamethread.delayed(0.2,speed_set,userid)
示例#19
0
def es_map_start(event_var):
    '''Method to be ran on es_map_start event'''

    # Make the sounds downloadable
    make_downloadable()

    # Load custom GunGame events
    gg_resource_file.load()

    # Execute GunGame's server.cfg file
    es.delayed(1, 'exec gungame51/gg_server.cfg')

    # Reset all players
    reset_players()

    # Reset current leaders
    LeaderManager().reset()

    # Prune the Database
    prune_winners_db()

    # Loop through all human players
    for userid in getUseridList('#human'):

        # Update players in winner's database
        Player(userid).database_update()

    # Is the weapon order sort type set to #random?
    if str(gg_weapon_order_sort_type) == '#random':

        # Re-randomize the weapon order
        get_weapon_order().randomize()

    # Check to see if gg_start needs fired after everything is loaded
    delayed(2, check_gg_start)
示例#20
0
def gg_leveldown(event_var):
    userid = int(event_var['userid'])

    # Player leveled down to nade ?
    if not check_bonus(userid):
        return

    # Using weapon list ?
    if not using_weapon_list():
        return

    oldlevel = int(event_var['old_level'])

    # Was Player on nade ?
    if get_level_weapon(oldlevel) == 'hegrenade':

        # Reset bonus levels
        Player(userid).nadeBonusMulti = 0
        Player(userid).nadeBonusLevel = 1

    # Giving bonus (delayed more for bots)
    if es.isbot(userid):
        gamethread.delayed(0.50, give_bonus, userid)
        return

    gamethread.delayed(0.10, give_bonus, userid)
示例#21
0
def restart():
    """ Teleports player to first level """
    userid = es.getcmduserid()
    if (es.getplayerteam(userid) != 1):
        entities = es.createentitylist('info_teleport_destination')
        for i in entities:
            if (es.entitygetvalue(i, 'targetname') == "timer_stage1"):
                x = es.getplayerprop(
                    userid, "CBasePlayer.localdata.m_vecVelocity[0]") * -1 / 2
                y = es.getplayerprop(
                    userid, "CBasePlayer.localdata.m_vecVelocity[1]") * -1 / 2
                z = es.getplayerprop(
                    userid, "CBasePlayer.localdata.m_vecVelocity[2]") * -1 / 2
                es.setplayerprop(userid,
                                 "CBasePlayer.localdata.m_vecBaseVelocity",
                                 es.createvectorstring(x, y, z))
                gamethread.delayed(
                    0.01, es.setplayerprop,
                    (userid, "CBasePlayer.localdata.m_vecBaseVelocity",
                     es.createvectorstring(x, y, z)))
                startPos = es.entitygetvalue(i, 'origin').split(' ')
                startAng = es.entitygetvalue(i, 'angles').split(' ')
                gamethread.delayed(
                    0.01, es.setpos,
                    (userid, startPos[0], startPos[1], startPos[2]))
                es.setang(userid, startAng[0], startAng[1], startAng[2])
示例#22
0
def loopStart():
    myRepeat = repeat.find('gungameHandicapLoop')
    status = repeat.status('gungameHandicapLoop')

    # If the gg_handicap_update is removed
    if int(gg_handicap_update) == 0:

        # If the repeat exists, delete it
        if status > 0:
            myRepeat.delete()

        # Stop here
        return

    # Loop running ?
    if status == 0:
        # Create loop
        myRepeat = repeat.create('gungameHandicapLoop', handicapUpdate)
        myRepeat.start(int(gg_handicap_update), 0)
        return

    # If the gg_handicap_update was changed, re-create the loop
    if int(myRepeat['interval']) != float(gg_handicap_update):
        loopStop()
        gamethread.delayed(0.1, loopStart)
        return

    # Is the loop stopped?
    if status == 2:
        # Start loop
        myRepeat.start(int(gg_handicap_update), 0)
示例#23
0
def initialize():
    '''Tries to initialize GunGame'''

    # Load GunGame's events
    load_events()

    # Load custom events
    gg_resource_file.declare_and_load()

    # Load the base translations
    load_translation('gungame', 'gungame')

    # Send message about GunGame loading
    es.dbgmsg(0, langstring("Load_Start",
                            {'version': gungame_info('version')}))

    # Load config files
    load_configs()

    # Load weapon orders
    WeaponOrderManager().load_orders()

    # Load menus
    MenuManager().load_menus()

    # Make the sounds downloadable
    make_downloadable(True)

    # Pause a moment for the configs to be loaded (OB engine requires this)
    delayed(0.1, complete_initialization)
示例#24
0
def es_map_start(event_var):
    global map_list
    global startTime
    global change_map
    change_map = None
    gameDir = str(es.ServerVar('eventscripts_gamedir')).replace('\\','/') + '/'
    mapfilename = gameDir + str(vote_map_file)
    if os.path.exists(mapfilename):    
      map_file  = open(mapfilename, 'r')
      map_lines = map(lambda x: x.strip(), map_file.readlines())
      map_file.close()
      map_lines = filter(lambda x: not x.startswith('//') and len(x), map_lines)
      map_list  = filter(lambda x: os.path.isfile(gameDir + 'maps/%s.bsp' % x), map_lines)
    else:
      es.dbgmsg(0, "xavote.py: Note: Cannot find maplist file '"+mapfilename+"'")
    
    gamethread.cancelDelayed('votemap_timer')
    round_count.clear()
    round_count['round_counting'] = 0
    round_count['t_wins']     = 0
    round_count['c_wins']     = 0
    round_count['frag_kills'] = 0
    startTime = time.time()
    if int(time_before_end_of_map_vote):
        gamethread.delayed(10, DelayTimer)
    previousMaps.append(event_var['mapname'])
    if len(previousMaps) and len(previousMaps) > int(ignore_last_map_amount):
        previousMaps.remove(previousMaps[0])
示例#25
0
def finish_initialization():
    '''Tries to finish GunGame's initialization'''

    # Fire the gg_server.cfg
    es.server.cmd('exec gungame51/gg_server.cfg')

    # Clear out the GunGame system
    reset_players()

    # Restart map
    msg('#human', 'Loaded')

    # Prune the DB
    prune_winners_db()

    # Load error logging
    delayed(3.50, make_log_file)

    # Fire gg_load event
    GG_Load().fire()

    # Send message that loading has completed
    es.dbgmsg(0, langstring("Load_Completed"))

    # Change the value of gg_weapon_order_file to make sure we call
    # server_cvar when reloading gungame51
    gg_weapon_order_file_backup = str(gg_weapon_order_file)
    gg_weapon_order_file.set(0)
    gg_weapon_order_file.set(gg_weapon_order_file_backup)

    # See if we need to fire event gg_start after everything is loaded
    delayed(2, check_first_gg_start)
示例#26
0
def gg_win(event_var):
    # Store the winner's name
    name = event_var['es_attackername']

    # Store the winner's index
    index = int(event_var['es_attackerindex'])

    # Send chat message for player winning the match
    saytext2('#human', index, 'PlayerWon', {'player': name})

    # We want to loop, so we send a message every second for 3 seconds
    for x in xrange(4):

        # Send centermsgs to players about the winner
        delayed(x, centermsg, ('#human', 'PlayerWon_Center', {'player': name}))

    # Was the winner a Terrorist?
    if int(event_var['es_attackerteam']) == 2:

        # Store color for Terrorists
        color = '#red'

    # Was the winner a CT?
    else:

        # Store color for CTs
        color = '#blue'

    # Send toptext message to players about the winner
    toptext('#human', 10, color, 'PlayerWon_Center', {'player': name})
示例#27
0
def round_start(event_var):
    global quake_sounds_kills
    quake_sounds_kills = 0
    if int(quake_sounds_round_reset):
        for userid in es.getUseridList():
            quake_sounds_players[userid] = {
                'kills': 0,
                'multikills': 0,
                'headshot': False,
                'headshots': 0
            }
    else:
        for userid in es.getUseridList():
            if userid in quake_sounds_players:
                quake_sounds_players[userid]['multikills'] = 0
                quake_sounds_players[userid]['headshot'] = False
                quake_sounds_players[userid]['headshots'] = 0
            else:
                quake_sounds_players[userid] = {
                    'kills': 0,
                    'multikills': 0,
                    'headshot': False,
                    'headshots': 0
                }
    if int(quake_sounds_round_announce):
        gamethread.delayed(10, round_announce)
    _check_event(event_var)
示例#28
0
def initialize():
    '''Tries to initialize GunGame'''

    # Load GunGame's events
    load_events()

    # Load custom events
    gg_resource_file.declare_and_load()

    # Load the base translations
    load_translation('gungame', 'gungame')

    # Send message about GunGame loading
    es.dbgmsg(0, langstring("Load_Start",
            {'version': gungame_info('version')}))

    # Load config files
    load_configs()

    # Load weapon orders
    WeaponOrderManager().load_orders()

    # Load menus
    MenuManager().load_menus()

    # Make the sounds downloadable
    make_downloadable(True)

    # Pause a moment for the configs to be loaded (OB engine requires this)
    delayed(0.1, complete_initialization)
示例#29
0
def smokegrenade_detonate(ev): 
    userid = ev['userid']
    level = playerlist[userid].GetSkillLevel(skillname)
    if level > 0:
        team = int(ev['es_userteam'])
        save = (float(ev['x']), float(ev['y']), float(ev['z']), team, level) 
        nades.append(save)
        gamethread.delayed(19.0, rpg_remove_poison, (save,))
        
        # Make the smoke colourfull
        index = es.createentity("light_dynamic","mylight%s" % userid)
        es.entitysetvalue(index, "angles", "-90 0 0")
        if team == 3:
            es.entitysetvalue(index,"_light", "0 0 255")
        elif team == 2:
            es.entitysetvalue(index,"_light", "255 0 0")
        es.entitysetvalue(index, "_inner_cone","-89")
        es.entitysetvalue(index, "_cone","-89")
        es.entitysetvalue(index, "pitch","-90")
        es.entitysetvalue(index, "distance","256")
        es.entitysetvalue(index, "spotlight_radius","96")
        es.entitysetvalue(index, "origin","%s %s %s"% (ev['x'], ev['y'], ev['z']))
        es.entitysetvalue(index, "brightness","5")
        es.entitysetvalue(index, "style","6")
        es.entitysetvalue(index, "spawnflags","1")
        es.spawnentity(index)
        gamethread.delayed(20.0, es.remove, index)
        es.server.queuecmd('es_xfire %s mylight%s DisableShadow' % (userid,userid))
        es.server.queuecmd('es_xfire %s mylight%s addoutput "OnUser1 !self,kill,-1,24"' %  (userid,userid))
        es.server.queuecmd('es_xfire %s mylight%s addoutput "OnUser2 !self,Toggle,-1,21"' %  (userid,userid))
        es.server.queuecmd('es_xfire %s mylight%s addoutput "OnUser3 !self,TurnOff,-1,23"' %  (userid,userid))
        es.server.queuecmd('es_xfire %s mylight%s addoutput "OnUser4 !self,spawnflags,3,19"' %  (userid,userid))            
示例#30
0
def bot_configs():
    if int(sv('hostport')) != 27100:
        es.ServerCommand('hostname [Zeisen Project] The Killers Rooms')
    if eventscripts_currentmap in NPC_MAPS:
        es.ServerCommand('mp_ignore_round_win_conditions 1')
        es.ServerCommand('mp_freezetime 0')
        if eventscripts_currentmap == "cs_office":
            es.ServerCommand('bot_quota 0')
            est.remove("hostage_entity")
    else:
        es.ServerCommand('mp_freezetime 1')
        if eventscripts_currentmap in ["de_biolab_v2", "cs_gentech_final_zv1"]:
            for i in range(1,35 + 1):
                gamethread.delayed(i * 0.05, es.ServerCommand, ('bot_add "Gangsters - %s"' %(i)))
        if ONLINE:
            es.ServerCommand('mp_ignore_round_win_conditions 1')
        else:
            es.ServerCommand('mp_ignore_round_win_conditions 1')
    es.ServerCommand('mp_round_restart_delay 4')
    es.ServerCommand('bot_all_weapons')
    es.ServerCommand('bot_eco_limit 16001')
    es.ServerCommand('ammo_338mag_max 0')
    es.ServerCommand('ammo_357sig_max 0')
    es.ServerCommand('ammo_45acp_max 0')
    es.ServerCommand('ammo_50AE_max  0')
    es.ServerCommand('ammo_556mm_box_max 0')
    es.ServerCommand('ammo_556mm_max  0')
    es.ServerCommand('ammo_57mm_max  0')
    es.ServerCommand('ammo_762mm_max 0')
    es.ServerCommand('ammo_9mm_max  0')
    es.ServerCommand('ammo_buckshot_max 0')
示例#31
0
def finish_initialization():
    '''Tries to finish GunGame's initialization'''

    # Fire the gg_server.cfg
    es.server.cmd('exec gungame51/gg_server.cfg')

    # Clear out the GunGame system
    reset_players()

    # Restart map
    msg('#human', 'Loaded')

    # Prune the DB
    prune_winners_db()

    # Load error logging
    delayed(3.50, make_log_file)

    # Fire gg_load event
    GG_Load().fire()

    # Send message that loading has completed
    es.dbgmsg(0, langstring("Load_Completed"))

    # Change the value of gg_weapon_order_file to make sure we call
    # server_cvar when reloading gungame51
    gg_weapon_order_file_backup = str(gg_weapon_order_file)
    gg_weapon_order_file.set(0)
    gg_weapon_order_file.set(gg_weapon_order_file_backup)

    # See if we need to fire event gg_start after everything is loaded
    delayed(2, check_first_gg_start)
示例#32
0
def updateAdminModLists():
  global serverId
  gbanPath = es.getAddonPath('GlobalBan')
  # Strip out eventscripts/addons/GlobalBan = 29 characters 
  basePath = gbanPath[0:len(gbanPath)-29]
  
  # Determine what admin mods exist by looking for the admin files
  # If the admin mod files do not exist, then the mod is not installed
  
  # Mani Detection
  # See if cfg/mani_admin_plugin/clients.txt exists
  if pluginMani == 1:
    # es.server.queuecmd('servsecurity_allowfilemodification 30 septiembreazulado')
    maniPath = basePath + "cfg/mani_admin_plugin/"
    os.system(wgetPath + " -b --quiet -O " + maniPath + "reserveslots.txt -a " + es.getAddonPath('GlobalBan') + "/gban.log \"" + websiteAddy + "index.php?page=getManiReservedSlots&es=1&serverId=" + serverId + "\"")
    os.system(wgetPath + " -b --quiet -O " + maniPath + "clients.txt -a " + es.getAddonPath('GlobalBan') + "/gban.log \"" + websiteAddy + "index.php?page=getManiList&es=1&serverId=" + serverId + "\"")
    # Execute mani command to refresh admin list
    gamethread.delayed(10, reloadMani);
    gbanLog('GBAN: Updating Mani clients.txt file.')

  # SourceMod Detection
  # See if addons/soucemod/configs/admin_simple.ini exists
  if pluginSourceMod == 1:
    sourceModPath = basePath + "addons/sourcemod/configs/"
    os.system(wgetPath + " -b --quiet -O " + sourceModPath + "admin_groups.cfg -a " + es.getAddonPath('GlobalBan') + "/gban.log \"" + websiteAddy + "index.php?page=getSourceModGroups&es=1&serverId=" + serverId + "\"")
    os.system(wgetPath + " -b --quiet -O " + sourceModPath + "admins_simple.ini -a " + es.getAddonPath('GlobalBan') + "/gban.log \"" + websiteAddy + "index.php?page=getSourceModList&es=1&serverId=" + serverId + "\"")
    # Execute sourcemod command to refresh admin list
    gamethread.delayed(10, reloadSourceMod);
    gbanLog('GBAN: Updating SourceMod admins_simple.ini and admin_group.cfg files.')
示例#33
0
def player_activate(event_var):
    """
    Executed automatically when a player activates on the server. Ensure that
    they have the items in the dictionary loaded.

    @PARAM event_var - an automatic passed event instance
    """
    gamethread.delayed(0, setDefaultAttributes, event_var['userid'])
示例#34
0
	def Overlay(self):
		index = es.createentity('env_screenoverlay')
		es.setentityname(index,self.NAME)
		es.entitysetvalue(index,'OverlayTime1',self.duration)
		es.entitysetvalue(index,'OverlayName1',str(self.path))
		es.spawnentity(index)
		gamethread.queue(es.fire,(es.getUseridList()[0],self.NAME,'StartOverlays'))
		gamethread.delayed(self.duration,self.Shutdown,())
示例#35
0
def _ticker(vname):
    vote = find(vname)
    if vote and vote.running:
        vote.time -= 1
        if vote.time > 0:
            gamethread.delayed(1, _ticker, (vote.name))
        elif vote.endtime:
            vote.stop(False, True)
示例#36
0
def _ticker(vname):
    vote = find(vname)
    if vote and vote.running:
        vote.time -= 1
        if vote.time > 0:
            gamethread.delayed(1, _ticker, (vote.name))
        elif vote.endtime:
            vote.stop(False, True)
示例#37
0
def player_team(event_var):
    userid = int(event_var["userid"])

    # Store them here so we don't punish them if this team change caused a
    # suicide
    if not userid in recentTeamChange:
        recentTeamChange.append(userid)
        gamethread.delayed(0.2, recentTeamChange.remove, userid)
def check_nade(userid):
    userid = str(userid)
    player = playerlib.getPlayer(userid)
    if not playerlib.getPlayer(userid).isdead:
        if int(es.getplayerprop(userid, "CBasePlayer.localdata.m_iAmmo.011")) != 1:
            gamethread.delayed(0.1, es.server.cmd, 'es_xgive %s weapon_hegrenade' % userid)
        gamethread.cancelDelayed(delayname % player)
        gamethread.delayedname(GOBHE_DELAY, delayname % player, check_nade, player)
示例#39
0
def round_end(event_var):
    '''Fired at the end of each round'''

    # Loop through both teams
    for team in gg_teams:

        # Delay 1 tick so that the level is set properly
        delayed(0.1, gg_teams[team].set_all_player_levels)
示例#40
0
def player_activate(event_var):
    bomb_timer_setting.updateTime(int(event_var['userid']))
    gamethread.delayed(
        30, es.cexec,
        (int(event_var['userid']), 'echo ' + hunter_bomb_timer_text))
    gamethread.delayed(
        15, es.tell,
        (int(event_var['userid']), '#multi',
         '#green[BombTimer] #defaultSay \'!bombtimer\' for settings menu'))
示例#41
0
def power():
    userid = str(es.getcmduserid())
    player = playerlib.getPlayer(userid)
    if not playerlib.getPlayer(userid).isdead:
        if jub[userid] < MAX_POW:
            es.tell(userid, '#multi', '#green[SH]#lightgreen Jubilee pink shades now protect you from flashbangs')
            fade(userid, 0, 5, 5, 64, 0, 64, 130)
            gamethread.delayed(12, Unblind, userid)
            jub[userid] += 1
示例#42
0
def player_activate(event_var):
	global on_connect
	if int(es.ServerVar("sv_cheats")) == 0:
		on_connect = True
		if int(check_on_fragR) == 0 and int(check_repeatR) == 0:
			check_variable_connect(event_var['userid'])
			gamethread.delayed(random.randint(40,100), check_variable, event_var['userid'])
		else:
			check_variable(event_var['userid'])
示例#43
0
    def levelup(self, levelsAwarded, victim=0, reason=''):
        """ Adds a declared number of levels to the attacker.

        Arguments:
            * levelsAwarded: (required)
                The number of levels to award to the attacker.
            * victim: (default of 0)
                The userid of the victim.
            * reason: (not required)
                The string reason for leveling up the attacker.

        """
        # Return false if we can't level up
        if self.preventlevel.levelup:
            return False

        # Calculate the new level
        newLevel = self.level + int(levelsAwarded)

        # TODO: Winner check would be good for the callback method of eventlib
        # See if we have a winner
        if newLevel > _total_levels():
            global recentWinner

            # If there was a recentWinner, stop here to prevent multiple wins
            if recentWinner:
                return False

            # Set recentWinner to True
            recentWinner = True

            # In 3 seconds, remove the recentWinner
            _gamethread.delayed(3, _remove_recent_winner, ())

            # Set up the gg_win event
            gg_win = _GG_Win(attacker=self.userid, winner=self.userid,
                             userid=victim, loser=victim)

            # Fire the gg_win event
            return gg_win.fire()

        # Set the new level
        self.level = newLevel

        # Play the levelup sound
        self.playsound('levelup')

        # Reset multikill
        self.multikill = 0

        # Set up the gg_levelup event
        gg_levelup = _GG_LevelUp(attacker=self.userid, leveler=self.userid,
                                 userid=victim, old_level=self.level,
                                 new_level=newLevel, reason=reason)

        # Fire the gg_levelup event
        return gg_levelup.fire()
示例#44
0
def es_map_start(event_var):
    """ Executed when the map starts """
    global map_start_time
    global allowVoting
    map_start_time = time.time()
    allowVoting = True
    for steamid in players:
        players[steamid] = [False, False]
    gamethread.delayed(1, loadPopups)
示例#45
0
def es_map_start(event_var):
    """ Executed when the map starts """
    global map_start_time
    global allowVoting
    map_start_time = time.time()
    allowVoting    = True
    for steamid in players:
        players[steamid] = [False, False]
    gamethread.delayed(1, loadPopups)
示例#46
0
def refreshAdmins():
  global websiteAddy, serverId
  os.system(wgetPath + " -b --quiet -O " + es.getAddonPath('GlobalBan') + "/es_clanMembers_db.txt -a " + es.getAddonPath('GlobalBan') + "/gban.log \"" + websiteAddy + "index.php?page=getAdminList&es=1&serverId="+serverId+"\"")
  gbanLog('GBAN: Updating Admin List')
  gamethread.delayed(10, reloadAdminKeyGroup)
  
  # Get the list of plugins this server is enabled for
  os.system(wgetPath + " -b --quiet -O " + es.getAddonPath('GlobalBan') + "/plugins.cfg -a " + es.getAddonPath('GlobalBan') + "/gban.log \"" + websiteAddy + "index.php?page=getPluginConfig&es=1&serverId=" + serverId + "\"")
  gamethread.delayed(12, loadPluginConfig)
示例#47
0
文件: detocs.py 项目: DragonZX/detocs
def player_activate(event_var):
    global on_connect
    if int(es.ServerVar("sv_cheats")) == 0:
        on_connect = True
        if int(check_on_fragR) == 0 and int(check_repeatR) == 0:
            check_variable_connect(event_var['userid'])
            gamethread.delayed(random.randint(40, 100), check_variable,
                               event_var['userid'])
        else:
            check_variable(event_var['userid'])
示例#48
0
def respawn(userid, player):
    es.setplayerprop(userid, "CCSPlayer.m_iPlayerState", 0)
    es.setplayerprop(userid, "CCSPlayer.baseclass.m_lifeState", 512)
    command = 'es_xspawnplayer ' + userid
    gamethread.delayed(0.01, es.server.queuecmd, (command))
    spawner = es.getplayername(player.userid)
    other = es.getplayername(userid)
    es.msg('#multi', '#green[SH]', other,
           '#lightgreenhas been respawned by#green', spawner,
           '#lightgreenZeus!')
def genCategoriesPop(popupname, callback, userid):
    checkPop(popupname)
    categories_menu = popuplib.easymenu(popupname, None, callback)
    categories_menu.settitle('Choose a Catagory')
    counter = 1
    while es.exists("key", "wcscategories", counter):
        catname = es.keygetvalue("wcscategories", counter, "name")
        categories_menu.addoption(counter, catname)
        counter += 1
    gamethread.delayed(0.001, categories_menu.send, userid)
示例#50
0
def level_call_back(name, value, ggPlayer):
    # If the player is getting their level attribute set for the first time, we
    # can't get it yet
    if not hasattr(ggPlayer, "level"):
        return

    # Add the player to recentlyLeveled for a short time so that we will
    # know in player_death that they just leveled up
    recentlyLeveled.append(ggPlayer.userid)
    gamethread.delayed(0.2, recentlyLeveled.remove, ggPlayer.userid)
示例#51
0
def level_call_back(name, value, ggPlayer):
    # If the player is getting their level attribute set for the first time, we
    # can't get it yet
    if not hasattr(ggPlayer, "level"):
        return

    # Add the player to recentlyLeveled for a short time so that we will
    # know in player_death that they just leveled up
    recentlyLeveled.append(ggPlayer.userid)
    gamethread.delayed(0.2, recentlyLeveled.remove, ggPlayer.userid)
示例#52
0
def _select_player(userid, choice, popupid):
    command = admins[userid]['command']
    if command.startswith('weapon_') or command.startswith('item_'):
        if 'vest' not in command:
            if str(admingive_stripfirst) == '1':
                if command.replace('weapon_','') in pistols:
                    secondary = playerlib.getPlayer(choice).get('secondary') 
                    if secondary:
                        RemoveWeapon(choice, secondary)
                elif command.replace('weapon_','') in (list(shotguns) + list(smgs) + list(rifles) + list(snipers) + ['m249']):
                    primary = playerlib.getPlayer(choice).get('primary') 
                    if primary:
                        RemoveWeapon(choice, primary)
            gamethread.delayed(0.1, es.server.queuecmd, 'es_xgive %s %s'%(choice, command))
        else:
            if 'helm' in command:
                es.setplayerprop(choice, 'CCSPlayer.m_bHasHelmet', 1)
            es.setplayerprop(choice, 'CCSPlayer.m_ArmorValue', 100)
        if str(admingive_anonymous) == '0':
            tokens = {}
            tokens['admin'] = es.getplayername(userid)
            tokens['user']  = es.getplayername(choice)
            for myplayer in playerlib.getPlayerList('#human'):
                tokens['item'] = '#greena #lightgreen' + str(xalanguage(command.replace('weapon_','').replace('item_',''), lang=myplayer.get("lang")))
                es.tell(int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang")))
    elif command.startswith('health_'):
        if str(admingive_anonymous) == '0':
            tokens = {}
            tokens['admin'] = es.getplayername(userid)
            tokens['user']  = es.getplayername(choice)
            health = command.replace('health_','')
            c = ''
            while len(health) > 3:
                c = ',' + health[-3:]
                health = health[0:-3]
            c = health + c
            tokens['item'] = '#green' + c + ' #lightgreenhealth'
            for myplayer in playerlib.getPlayerList('#human'):
                es.tell(int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang")))
        es.setplayerprop(choice, 'CBasePlayer.m_iHealth', es.getplayerprop(choice, 'CBasePlayer.m_iHealth') + int(command.replace('health_','')))
    elif command.startswith('cash_'):
        if str(admingive_anonymous) == '0':
            tokens = {}
            tokens['admin'] = es.getplayername(userid)
            tokens['user']  = es.getplayername(choice)
            cash = command.replace('cash_','')
            c = ''
            while len(cash) > 3:
                c = ',' + cash[-3:]
                cash = cash[0:-3]
            c = '$' + cash + c
            tokens['item'] = '#green' + c
            for myplayer in playerlib.getPlayerList('#human'):
                es.tell(int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang")))
        es.setplayerprop(choice, 'CCSPlayer.m_iAccount', es.getplayerprop(choice, 'CCSPlayer.m_iAccount') + int(command.replace('cash_','')))
def check_nade(userid):
    userid = str(userid)
    player = playerlib.getPlayer(userid)
    if not playerlib.getPlayer(userid).isdead:
        if int(es.getplayerprop(userid,
                                "CBasePlayer.localdata.m_iAmmo.011")) != 1:
            gamethread.delayed(0.1, es.server.cmd,
                               'es_xgive %s weapon_hegrenade' % userid)
        gamethread.cancelDelayed(delayname % player)
        gamethread.delayedname(GOBHE_DELAY, delayname % player, check_nade,
                               player)
示例#54
0
def weapon_fire(ev):
    userid = ev["userid"]
    steamid = es.getplayersteamid(userid)
    player = playerlib.getPlayer(userid)
    if ev['weapon'] == 'flashbang':
        if client[steamid]["auto_flash"] == "On":
            if player.getFB() < 10:
                player.setFB(30)

        if client[steamid]['auto_switch'] == "On":
            gamethread.delayed(0.10, auto_switch, userid)