def changerace_successful(userid, race): if es.getplayerprop(userid, "CCSPlayer.baseclass.pl.deadflag") == 0: es.server.queuecmd("es wcs_dealdamage %s %s 9999" % (userid, userid)) es.server.queuecmd("es wcs_saveplayer %s" % userid) player_race = es.keygetvalue("wcsuserdata", userid, "race") command_buffer = es.keygetvalue("wcsraces", player_race, "onchange") es.server.queuecmd("es_xset wcs_userid %s" % userid) es.server.queuecmd(command_buffer) es.server.queuecmd("es_keysetvalue \"wcsuserdata\" %s \"race\" %s" % (userid, race)) es.server.queuecmd("es wcs_keysetvalue \"%s\" \"race\" %s" % (es.getplayersteamid(userid), race)) es.server.queuecmd("es_xset wcs_id \"%s\"" % es.getplayersteamid(userid)) es.server.queuecmd("es_xdoblock wcs/wcsfunctions/wcs_playercheck") es.server.queuecmd("es wcs_getplayer %s" % userid) es.server.queuecmd( "es_keysetvalue \"wcsuserdata\" %s \"skillcheck\" \"1\"" % userid) es.tell( userid, "#multi", "#lightgreenYou changed your race to#green " + es.keygetvalue("wcsraces", race, "name")) old_name = es.keygetvalue("wcsraces", player_race, "name") new_name = es.keygetvalue("wcsraces", race, "name") es.event('initialize', "wcs_changerace") es.event('setint', "wcs_changerace", "userid", int(userid)) es.event('setstring', "wcs_changerace", "oldrace", str(old_name)) es.event('setstring', "wcs_changerace", "newrace", str(new_namead)) es.event('fire', "wcs_changerace")
def __enter__(self): """Utilized when the EventContextManager is entered. Used to initialize the event. """ es.dbgmsg(1, "es.event('initialize', '%s')" % self._name) es.event('initialize', self._name) return self
def __enter__(self): """Utilized when the EventContextManager is entered. Used to initialize the event. """ es.dbgmsg(1, "es.event('initialize', '%s')" % self._name) es.event("initialize", self._name) return self
def __init__(self, name, **kw): # Set the event name attribute super(QuickEvent, self).__setattr__('name', name) # Initialize the event es.event('initialize', name) # Iterate through keyword arguments and set the event variable/value for name, value in kw.iteritems(): self.set_event_var(name, value)
def __init__(self, name, **kw): # Set the event name attribute super(QuickEvent, self).__setattr__("name", name) # Initialize the event es.event("initialize", name) # Iterate through keyword arguments and set the event variable/value for name, value in kw.iteritems(): self.set_event_var(name, value)
def set(self, field, value): """Sets the event variable values dynamically for es.event().""" if not type(value) in DATATYPES: raise ESEventError( "Unsupported type: %s. Expected" % type(value).__name__ + " float, int, or str" + " type." ) # Set the event variable es.dbgmsg(1, ("es.event('%s', '%s', '%s', %s)" % (DATATYPES[type(value)], self._name, field, value))) es.event(DATATYPES[type(value)], self._name, field, value)
def set(self, field, value): """Sets the event variable values dynamically for es.event().""" if not type(value) in DATATYPES: raise ESEventError('Unsupported type: %s. Expected' % type(value).__name__ + ' float, int, or str' + ' type.') # Set the event variable es.dbgmsg(1, ("es.event('%s', '%s', '%s', %s)" % (DATATYPES[type(value)], self._name, field, value))) es.event(DATATYPES[type(value)], self._name, field, value)
def __exit__(self, exc_type, exc_value, traceback): """Utilized when the EventContextManager is exited. Used to fire the event if there were no errors while setting the values. If any tracebacks were generated between the entering of the EventContextManager and the exit, the event will be cancelled. """ # Check if there is a traceback, then fire or cancel the event if not traceback: # Fire the event es.dbgmsg(1, "es.event('fire', '%s')" % self._name) es.event('fire', self._name) return True # Cancel the event es.dbgmsg(1, "es.event('cancel', '%s')" % self._name) es.event('cancel', self._name) return False
def __exit__(self, exc_type, exc_value, traceback): """Utilized when the EventContextManager is exited. Used to fire the event if there were no errors while setting the values. If any tracebacks were generated between the entering of the EventContextManager and the exit, the event will be cancelled. """ # Check if there is a traceback, then fire or cancel the event if not traceback: # Fire the event es.dbgmsg(1, "es.event('fire', '%s')" % self._name) es.event("fire", self._name) return True # Cancel the event es.dbgmsg(1, "es.event('cancel', '%s')" % self._name) es.event("cancel", self._name) return False
def set_event_var(self, item, value): """Sets the event variable by its type. If the type is not found, the type is assumed to be string. """ if isinstance(value, int): es.event("setint", self.name, item, value) elif isinstance(value, float): es.event("setfloat", self.name, item, value) else: es.event("setstring", self.name, item, str(value))
def set_event_var(self, item, value): """Sets the event variable by its type. If the type is not found, the type is assumed to be string. """ if isinstance(value, int): es.event('setint', self.name, item, value) elif isinstance(value, float): es.event('setfloat', self.name, item, value) else: es.event('setstring', self.name, item, str(value))
def executePlayerOption(self, userid, choice, popupid): target = popupid.replace("sourcerpg_player", "") if choice == 1: """ Give experience """ popupName = "sourcerpg_addxp_player%s" % target self.createAmountMenu(popupName, self.addXp, popupid).send(userid) elif choice == 2: """ Give levels """ popupName = "sourcerpg_addlevel_player%s" % target self.createAmountMenu(popupName, self.addLevels, popupid).send(userid) elif choice == 3: """ Give credits """ popupName = "sourcerpg_addcredit_player%s" % target self.createAmountMenu(popupName, self.addCredits, popupid).send(userid) elif choice == 4: """ Upgrade a skill """ self.buildPlayerSkillsMenu("sourcerpg_upgrade_player%s" % target, target, self.upgradeSkill, popupid, True).send(userid) elif choice == 5: """ Downgrade a skill """ self.buildPlayerSkillsMenu("sourcerpg_downgrade_player%s" % target, target, self.downgradeSkill, popupid, False).send(userid) elif choice == 6: """ Max all skills """ if self.isOnline(target): """ Player is online, assign all levels to the player's PlayerObject instance """ targetid = es.getuserid(target) for skill in sourcerpg.skills: sourcerpg.players[targetid][skill.name] = int(skill.maxLevel) es.event("initialize", "sourcerpg_skillupgrade") es.event("setint", "sourcerpg_skillupgrade", "userid", targetid) es.event("setint", "sourcerpg_skillupgrade", "level", int(skill.maxLevel)) es.event("setint", "sourcerpg_skillupgrade", "cost", 0) es.event("setstring", "sourcerpg_skillupgrade", "skill", str(skill.name)) es.event("fire", "sourcerpg_skillupgrade") self.chosenPlayer(userid, target, "sourcerpg_onlineplayers") else: """ The player is offline so ensure that all the new values are assigned """ query = "SELECT UserID FROM Player WHERE steamid=?" sourcerpg.database.execute(query, target) dbuserid = sourcerpg.database.fetchone() for skill in sourcerpg.skills: query = "SELECT SkillID FROM Skill WHERE UserID=? AND name=?" sourcerpg.database.execute(query, dbuserid, skill.name) dbskillid = sourcerpg.database.fetchone() if dbskillid is None: query = "INSERT INTO Skill (name, level, UserID) VALUES (?, ?, ?)" sourcerpg.database.execute(query, skill.name, int(skill.maxLevel), dbuserid) else: query = "UPDATE Skill SET level=? WHERE SkillID=?" sourcerpg.database.execute(query, int(skill.maxLevel, dbskillid)) self.chosenPlayer(userid, target, "sourcerpg_offlineplayers") tell(userid, 'maxed skills') elif choice == 8: """ Reset skills """ if self.isOnline(target): player = es.getuserid(target) sourcerpg.players[player].resetSkills() else: """ Because the player is offline, the next time they join . they'll be added to the database """ sourcerpg.database.execute("SELECT UserID FROM Player WHERE steamid=?", target) targetid = sourcerpg.database.fetchone() sourcerpg.database.execute("DELETE FROM Player WHERE UserID=?", targetid) sourcerpg.database.execute("DELETE FROM Skill WHERE UserID=?", targetid)
def fire(self): """Fires the event.""" es.event("fire", self.name)
def cancel(self): """Cancels the event.""" es.event("cancel", self.name)
def cancel(self): """Cancels the event.""" es.event('cancel', self.name)
def event(argv): es.event(*argv)
def fire(self): """Fires the event.""" es.event('fire', self.name)
def executePlayerOption(self, userid, choice, popupid): target = popupid.replace("sourcerpg_player", "") if choice == 1: """ Give experience """ popupName = "sourcerpg_addxp_player%s" % target self.createAmountMenu(popupName, self.addXp, popupid).send(userid) elif choice == 2: """ Give levels """ popupName = "sourcerpg_addlevel_player%s" % target self.createAmountMenu(popupName, self.addLevels, popupid).send(userid) elif choice == 3: """ Give credits """ popupName = "sourcerpg_addcredit_player%s" % target self.createAmountMenu(popupName, self.addCredits, popupid).send(userid) elif choice == 4: """ Upgrade a skill """ self.buildPlayerSkillsMenu("sourcerpg_upgrade_player%s" % target, target, self.upgradeSkill, popupid, True).send(userid) elif choice == 5: """ Downgrade a skill """ self.buildPlayerSkillsMenu("sourcerpg_downgrade_player%s" % target, target, self.downgradeSkill, popupid, False).send(userid) elif choice == 6: """ Max all skills """ if self.isOnline(target): """ Player is online, assign all levels to the player's PlayerObject instance """ targetid = es.getuserid(target) for skill in sourcerpg.skills: sourcerpg.players[targetid][skill.name] = int( skill.maxLevel) es.event("initialize", "sourcerpg_skillupgrade") es.event("setint", "sourcerpg_skillupgrade", "userid", targetid) es.event("setint", "sourcerpg_skillupgrade", "level", int(skill.maxLevel)) es.event("setint", "sourcerpg_skillupgrade", "cost", 0) es.event("setstring", "sourcerpg_skillupgrade", "skill", str(skill.name)) es.event("fire", "sourcerpg_skillupgrade") self.chosenPlayer(userid, target, "sourcerpg_onlineplayers") else: """ The player is offline so ensure that all the new values are assigned """ query = "SELECT UserID FROM Player WHERE steamid=?" sourcerpg.database.execute(query, target) dbuserid = sourcerpg.database.fetchone() for skill in sourcerpg.skills: query = "SELECT SkillID FROM Skill WHERE UserID=? AND name=?" sourcerpg.database.execute(query, dbuserid, skill.name) dbskillid = sourcerpg.database.fetchone() if dbskillid is None: query = "INSERT INTO Skill (name, level, UserID) VALUES (?, ?, ?)" sourcerpg.database.execute(query, skill.name, int(skill.maxLevel), dbuserid) else: query = "UPDATE Skill SET level=? WHERE SkillID=?" sourcerpg.database.execute( query, int(skill.maxLevel, dbskillid)) self.chosenPlayer(userid, target, "sourcerpg_offlineplayers") tell(userid, 'maxed skills') elif choice == 8: """ Reset skills """ if self.isOnline(target): player = es.getuserid(target) sourcerpg.players[player].resetSkills() else: """ Because the player is offline, the next time they join . they'll be added to the database """ sourcerpg.database.execute( "SELECT UserID FROM Player WHERE steamid=?", target) targetid = sourcerpg.database.fetchone() sourcerpg.database.execute("DELETE FROM Player WHERE UserID=?", targetid) sourcerpg.database.execute("DELETE FROM Skill WHERE UserID=?", targetid)