예제 #1
0
async def equip(cmd):
    response = ""
    user_data = EwUser(member=cmd.message.author)

    if cmd.message.channel.name != ewcfg.channel_dojo:
        response = "You must go to the #{} to change your equipment.".format(
            ewcfg.channel_dojo)
    elif user_data.life_state == ewcfg.life_state_corpse:
        response = "Ghosts can't equip weapons."
    elif user_data.life_state == ewcfg.life_state_juvenile:
        response = "Juvies can't equip weapons."
    else:
        value = None
        if cmd.tokens_count > 1:
            value = cmd.tokens[1]
            value = value.lower()

        weapon = ewcfg.weapon_map.get(value)
        if weapon != None:
            response = weapon.str_equip
            try:
                conn_info = ewutils.databaseConnect()
                conn = conn_info.get('conn')
                cursor = conn.cursor()

                user_skills = ewutils.weaponskills_get(
                    member=cmd.message.author)

                user_data.weapon = weapon.id_weapon
                weaponskillinfo = user_skills.get(weapon.id_weapon)
                if weaponskillinfo == None:
                    user_data.weaponskill = 0
                    user_data.weaponname = ""
                else:
                    user_data.weaponskill = weaponskillinfo.get('skill')
                    user_data.weaponname = weaponskillinfo.get('name')

                user_data.persist()

                conn.commit()
            finally:
                cursor.close()
                ewutils.databaseClose(conn_info)
        else:
            response = "Choose your weapon: {}".format(
                ewutils.formatNiceList(names=ewcfg.weapon_names,
                                       conjunction="or"))

    # Send the response to the player.
    await cmd.client.send_message(
        cmd.message.channel, ewutils.formatMessage(cmd.message.author,
                                                   response))
예제 #2
0
async def equip(cmd):
    resp = await ewcmd.start(cmd)
    response = ""

    if cmd.message.channel.name != ewcfg.channel_dojo:
        response = "You must go to the #{} to change your equipment.".format(
            ewcfg.channel_dojo)
    else:
        value = None
        if cmd.tokens_count > 1:
            value = cmd.tokens[1]

        weapon = ewcfg.weapon_map.get(value)
        if weapon != None:
            response = weapon.str_equip
            try:
                conn = ewutils.databaseConnect()
                cursor = conn.cursor()

                user_data = EwUser(member=cmd.message.author,
                                   conn=conn,
                                   cursor=cursor)
                user_skills = ewutils.weaponskills_get(
                    member=cmd.message.author, conn=conn, cursor=cursor)

                user_data.weapon = weapon.id_weapon
                weaponskillinfo = user_skills.get(weapon.id_weapon)
                if weaponskillinfo == None:
                    user_data.weaponskill = 0
                    user_data.weaponname = ""
                else:
                    user_data.weaponskill = weaponskillinfo.get('skill')
                    user_data.weaponname = weaponskillinfo.get('name')

                user_data.persist(conn=conn, cursor=cursor)

                conn.commit()
            finally:
                cursor.close()
                conn.close()
        else:
            response = "Choose your weapon: {}".format(
                ewutils.formatNiceList(names=ewcfg.weapon_names,
                                       conjunction="or"))

    # Send the response to the player.
    await cmd.client.edit_message(
        resp, ewutils.formatMessage(cmd.message.author, response))
예제 #3
0
파일: ew.py 프로젝트: seaniman/endless-war
	def __init__(self, member = None, id_user = None, id_server = None, data_level = 0):

		self.combatant_type = ewcfg.combatant_type_player

		if(id_user == None) and (id_server == None):
			if(member != None):
				id_server = member.server.id
				id_user = member.id

		# Retrieve the object from the database if the user is provided.
		if(id_user != None) and (id_server != None):
			self.id_server = id_server
			self.id_user = id_user

			try:
				conn_info = ewutils.databaseConnect()
				conn = conn_info.get('conn')
				cursor = conn.cursor()

				# Retrieve object


				cursor.execute("SELECT {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} FROM users WHERE id_user = %s AND id_server = %s".format(

					ewcfg.col_slimes,
					ewcfg.col_slimelevel,
					ewcfg.col_hunger,
					ewcfg.col_totaldamage,
					ewcfg.col_bounty,
					ewcfg.col_weapon,
					ewcfg.col_trauma,
					ewcfg.col_slimecoin,
					ewcfg.col_time_lastkill,
					ewcfg.col_time_lastrevive,
					ewcfg.col_id_killer,
					ewcfg.col_time_lastspar,
					ewcfg.col_time_lasthaunt,
					ewcfg.col_time_lastinvest,
					ewcfg.col_inebriation,
					ewcfg.col_faction,
					ewcfg.col_poi,
					ewcfg.col_life_state,
					ewcfg.col_busted,
					ewcfg.col_time_last_action,
					ewcfg.col_weaponmarried,
					ewcfg.col_time_lastscavenge,
					ewcfg.col_bleed_storage,
					ewcfg.col_time_lastenter,
					ewcfg.col_time_lastoffline,
					ewcfg.col_time_joined,
					ewcfg.col_poi_death,
					ewcfg.col_slime_donations,
					ewcfg.col_poudrin_donations,
					ewcfg.col_arrested,
					ewcfg.col_splattered_slimes,
					ewcfg.col_time_expirpvp,
					ewcfg.col_time_lastenlist,
					ewcfg.col_apt_zone,
					ewcfg.col_visiting,
					ewcfg.col_active_slimeoid,
					ewcfg.col_has_soul,
					ewcfg.col_sap,
					ewcfg.col_hardened_sap,
					ewcfg.col_festivity,
					ewcfg.col_festivity_from_slimecoin,
					ewcfg.col_slimernalia_kingpin,
					ewcfg.col_manuscript,
					ewcfg.col_swear_jar,
					ewcfg.col_degradation,
					ewcfg.col_time_lastdeath,
					ewcfg.col_gambit,
					ewcfg.col_credence,
					ewcfg.col_credence_used,
					ewcfg.col_race,
					ewcfg.col_time_racialability,
				), (
					id_user,
					id_server
				))
				result = cursor.fetchone();

				if result != None:
					# Record found: apply the data to this object.
					self.slimes = result[0]
					self.slimelevel = result[1]
					self.hunger = result[2]
					self.totaldamage = result[3]
					self.bounty = result[4]
					self.weapon = result[5]
					self.trauma = result[6]
					self.slimecoin = result[7]
					self.time_lastkill = result[8]
					self.time_lastrevive = result[9]
					self.id_killer = result[10]
					self.time_lastspar = result[11]
					self.time_lasthaunt = result[12]
					self.time_lastinvest = result[13]
					self.inebriation = result[14]
					self.faction = result[15]
					self.poi = result[16]
					self.life_state = result[17]
					self.busted = (result[18] == 1)
					self.time_last_action = result[19]
					self.weaponmarried = (result[20] == 1)
					self.time_lastscavenge = result[21]
					self.bleed_storage = result[22]
					self.time_lastenter = result[23]
					self.time_lastoffline = result[24]
					self.time_joined = result[25]
					self.poi_death = result[26]
					self.slime_donations = result[27]
					self.poudrin_donations = result[28]
					self.arrested = (result[29] == 1)
					self.splattered_slimes = result[30]
					self.time_expirpvp = result[31]
					self.time_lastenlist = result[32]
					self.apt_zone = result[33]
					self.visiting = result[34]
					self.active_slimeoid = result[35]
					self.has_soul = result[36]
					self.sap = result[37]
					self.hardened_sap = result[38]
					self.festivity = result[39]
					self.festivity_from_slimecoin = result[40]
					self.slimernalia_kingpin = (result[41] == 1)
					self.manuscript = result[42]
					self.swear_jar = result[43]
					self.degradation = result[44]
					self.time_lastdeath = result[45]
					self.gambit = result[46]
					self.credence = result[47]
					self.credence_used = result[48]
					self.race = result[49]
					self.time_racialability = result[50]
				else:
					self.poi = ewcfg.poi_id_downtown
					self.life_state = ewcfg.life_state_juvenile
					# Create a new database entry if the object is missing.
					cursor.execute("REPLACE INTO users(id_user, id_server, poi, life_state) VALUES(%s, %s, %s, %s)", (
						id_user,
						id_server,
						self.poi,
						self.life_state
					))
					
					conn.commit()

				if (self.time_joined == 0) and (member != None) and (member.joined_at != None):
					self.time_joined = int(member.joined_at.timestamp())

				# Get the skill for the user's current weapon.
				if self.weapon != None and self.weapon >= 0:
					skills = ewutils.weaponskills_get(
						id_server = id_server,
						id_user = id_user
					)

					weapon_item = ewitem.EwItem(id_item = self.weapon)

					skill_data = skills.get(weapon_item.item_props.get("weapon_type"))
					if skill_data != None:
						self.weaponskill = skill_data['skill']
					else:
						self.weaponskill = 0

					if self.weaponskill == None:
						self.weaponskill = 0
				else:
					self.weaponskill = 0

				if data_level > 0:
					cursor.execute("SELECT {}, {}, {} FROM fashion_stats WHERE id_user = %s AND id_server = %s".format(
						ewcfg.col_attack,
						ewcfg.col_defense,
						ewcfg.col_speed,
					), (

						id_user,
						id_server,
					))
					result = cursor.fetchone()

					if result != None:
						self.attack = result[0]
						self.defense = result[1]
						self.speed = result[2]
	
					cursor.execute("SELECT {} FROM freshness WHERE id_user = %s AND id_server = %s".format(
						ewcfg.col_freshness,
					),(
						id_user,
						id_server
					))

					result = cursor.fetchone()

					if result != None:
						self.freshness = result[0]

					self.move_speed = ewutils.get_move_speed(self)

				self.limit_fix()
			finally:
				# Clean up the database handles.
				cursor.close()
				ewutils.databaseClose(conn_info)
예제 #4
0
    def __init__(self,
                 member=None,
                 conn=None,
                 cursor=None,
                 id_user=None,
                 id_server=None):
        if (id_user == None) and (id_server == None):
            if (member != None):
                id_server = member.server.id
                id_user = member.id

        # Retrieve the object from the database if the user is provided.
        if (id_user != None) and (id_server != None):
            self.id_server = id_server
            self.id_user = id_user

            our_cursor = False
            our_conn = False

            try:
                # Get database handles if they weren't passed.
                if (cursor == None):
                    if (conn == None):
                        conn = ewutils.databaseConnect()
                        our_conn = True

                    cursor = conn.cursor()
                    our_cursor = True

                # Retrieve object
                cursor.execute(
                    "SELECT {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} FROM users WHERE id_user = %s AND id_server = %s"
                    .format(ewcfg.col_slimes, ewcfg.col_slimelevel,
                            ewcfg.col_stamina, ewcfg.col_totaldamage,
                            ewcfg.col_bounty, ewcfg.col_kills,
                            ewcfg.col_weapon, ewcfg.col_trauma,
                            ewcfg.col_slimecredit, ewcfg.col_time_lastkill,
                            ewcfg.col_time_lastrevive, ewcfg.col_id_killer,
                            ewcfg.col_time_lastspar, ewcfg.col_time_expirpvp,
                            ewcfg.col_time_lasthaunt,
                            ewcfg.col_time_lastinvest, ewcfg.col_slimepoudrins,
                            ewcfg.col_weaponname, ewcfg.col_ghostbust,
                            ewcfg.col_inebriation, ewcfg.col_faction),
                    (id_user, id_server))
                result = cursor.fetchone()

                if result != None:
                    # Record found: apply the data to this object.
                    self.slimes = result[0]
                    self.slimelevel = result[1]
                    self.stamina = result[2]
                    self.totaldamage = result[3]
                    self.bounty = result[4]
                    self.kills = result[5]
                    self.weapon = result[6]
                    self.trauma = result[7]
                    self.slimecredit = result[8]
                    self.time_lastkill = result[9]
                    self.time_lastrevive = result[10]
                    self.id_killer = result[11]
                    self.time_lastspar = result[12]
                    self.time_expirpvp = result[13]
                    self.time_lasthaunt = result[14]
                    self.time_lastinvest = result[15]
                    self.slimepoudrins = result[16]
                    self.weaponname = result[17]
                    self.ghostbust = (result[18] == 1)
                    self.inebriation = result[19]
                    self.faction = result[20]
                else:
                    # Create a new database entry if the object is missing.
                    cursor.execute(
                        "REPLACE INTO users(id_user, id_server) VALUES(%s, %s)",
                        (id_user, id_server))

                    conn.commit()

                # Get the skill for the user's current weapon.
                if self.weapon != None and self.weapon != "":
                    skills = ewutils.weaponskills_get(id_server=id_server,
                                                      id_user=id_user,
                                                      conn=conn,
                                                      cursor=cursor)
                    skill_data = skills.get(self.weapon)
                    if skill_data != None:
                        self.weaponskill = skill_data['skill']
                        self.weaponname = skill_data['name']
                    else:
                        self.weaponskill = 0
                        self.weaponname = ""

                    if self.weaponskill == None:
                        self.weaponskill = 0
                        self.weaponname = ""
                else:
                    self.weaponskill = 0
                    self.weaponname = ""

                self.limit_fix()
            finally:
                # Clean up the database handles.
                if (our_cursor):
                    cursor.close()
                if (our_conn):
                    conn.close()
예제 #5
0
    def __init__(self, member=None, id_user=None, id_server=None):
        if (id_user == None) and (id_server == None):
            if (member != None):
                id_server = member.server.id
                id_user = member.id

        # Retrieve the object from the database if the user is provided.
        if (id_user != None) and (id_server != None):
            self.id_server = id_server
            self.id_user = id_user

            try:
                conn_info = ewutils.databaseConnect()
                conn = conn_info.get('conn')
                cursor = conn.cursor()

                # Retrieve object
                cursor.execute(
                    "SELECT {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} FROM users WHERE id_user = %s AND id_server = %s"
                    .format(ewcfg.col_slimes, ewcfg.col_slimelevel,
                            ewcfg.col_hunger, ewcfg.col_totaldamage,
                            ewcfg.col_bounty, ewcfg.col_weapon,
                            ewcfg.col_trauma, ewcfg.col_slimecredit,
                            ewcfg.col_time_lastkill, ewcfg.col_time_lastrevive,
                            ewcfg.col_id_killer, ewcfg.col_time_lastspar,
                            ewcfg.col_time_lasthaunt,
                            ewcfg.col_time_lastinvest, ewcfg.col_weaponname,
                            ewcfg.col_ghostbust, ewcfg.col_inebriation,
                            ewcfg.col_faction, ewcfg.col_poi,
                            ewcfg.col_life_state, ewcfg.col_busted,
                            ewcfg.col_rrchallenger), (id_user, id_server))
                result = cursor.fetchone()

                if result != None:
                    # Record found: apply the data to this object.
                    self.slimes = result[0]
                    self.slimelevel = result[1]
                    self.hunger = result[2]
                    self.totaldamage = result[3]
                    self.bounty = result[4]
                    self.weapon = result[5]
                    self.trauma = result[6]
                    self.slimecredit = result[7]
                    self.time_lastkill = result[8]
                    self.time_lastrevive = result[9]
                    self.id_killer = result[10]
                    self.time_lastspar = result[11]
                    self.time_lasthaunt = result[12]
                    self.time_lastinvest = result[13]
                    self.weaponname = result[14]
                    self.ghostbust = (result[15] == 1)
                    self.inebriation = result[16]
                    self.faction = result[17]
                    self.poi = result[18]
                    self.life_state = result[19]
                    self.busted = (result[20] == 1)
                    self.rr_challenger = result[21]
                else:
                    # Create a new database entry if the object is missing.
                    cursor.execute(
                        "REPLACE INTO users(id_user, id_server, poi, life_state) VALUES(%s, %s, %s, %s)",
                        (id_user, id_server, ewcfg.poi_id_downtown,
                         ewcfg.life_state_juvenile))

                    conn.commit()

                # Get the skill for the user's current weapon.
                if self.weapon != None and self.weapon != "":
                    skills = ewutils.weaponskills_get(id_server=id_server,
                                                      id_user=id_user)
                    skill_data = skills.get(self.weapon)
                    if skill_data != None:
                        self.weaponskill = skill_data['skill']
                        self.weaponname = skill_data['name']
                    else:
                        self.weaponskill = 0
                        self.weaponname = ""

                    if self.weaponskill == None:
                        self.weaponskill = 0
                        self.weaponname = ""
                else:
                    self.weaponskill = 0
                    self.weaponname = ""

                self.limit_fix()
            finally:
                # Clean up the database handles.
                cursor.close()
                ewutils.databaseClose(conn_info)