def validate_arguments(p_action, p_db, p_type, pd_cfgDict, p_debug):
    ''' Validate the input arguments   '''
    isValid = True
    errMsg = ""
    if p_action is None or p_db is None:
        errMsg = "arg=none"
        isValid = False
    if isValid == True and p_action not in pd_cfgDict['oraUserAction'][
            'valid_action_list']:
        errMsg += ",action = invalid"
        isValid = False
    if isValid == True and p_db not in pd_cfgDict['oraUserAction'][
            'valid_db_list']:
        errMsg += ",environment = invalid"
        isValid = False
    if isValid == True and p_type not in pd_cfgDict['oraUserAction'][
            'valid_type_list']:
        errMsg += ",type = invalid"
        isValid = False
    if isValid == False:
        print "ERROR: validate_arguments 1, error message {0}!".format(errMsg)
        exit(1)
    else:
        pd_cfgDict['oraUserAction']['action'] = p_action
        pd_cfgDict['oraUserAction']['db'] = p_db
        pd_cfgDict['oraUserAction']['type'] = p_type
        m.message(
            "INFO : validate_arguments 2, are {0} and {1}!".format(
                pd_cfgDict['oraUserAction']['action'],
                pd_cfgDict['oraUserAction']['db']), p_debug)
        return pd_cfgDict
示例#2
0
def register_selected_shortcut(name, old_clipboard):
    """Retrieve the text/filename from the clipboard and register it as a new command."""
    clipboard = QtGui.QApplication.clipboard()
    clipboard.dataChanged.disconnect()
    clipboard_timer.stop()

    urls = clipboard.mimeData().urls()
    text = clipboard.text()
    if list(old_clipboard.formats()):  # Check if the old clipboard MIME object contains any data
        CommandHandler.main_gui.call(clipboard.setMimeData, [old_clipboard])  # Restore the old clipboard contents

    if text:  # The clipboard contains text
        shortcut = unicode(text)
    elif urls:  # The clipboard contains a file
        shortcut = unicode(urls[0].toString())[8:].replace("/", "\\")
    else:
        message("Unable to register the selection as a shortcut", "Error")
        return

    shortcuts_dict = load_shortcuts()  # Load shortcuts from the config file
    if name.decode("utf-8") not in shortcuts_dict:
        keyword = "registered"
    else:
        keyword = "updated"
        CommandHandler.remove(name)  # Delete the existing command
    register_shortcut(name, shortcut)  # Register the new command
    shortcuts_dict.update({name.decode("utf-8"): shortcut})  # Update with new shortcut
    save_shortcuts(shortcuts_dict)  # Write back to the file
    message("Shortcut %s: [i]%s[/i]\nTarget: [i]%s[/i]" % (keyword, name.decode("utf-8"), shortcut), "Success")
示例#3
0
def previous_level():
    # advance to the previous level
    message("You go up a floor.", tcod.light_violet)
    settings.save_level_state()
    settings.dungeon_level -= 1
    settings.load_level_state()
    initialize_fov()
示例#4
0
 def prepare_next_question(self):
     if self.strategy == 'maxent':
         facet = max(self.entropy_dict, key=self.entropy_dict.get)
         data = dict()
         data['facet'] = facet
         new_message = message(cfg.AGENT, cfg.USER, cfg.ASK_FACET, data)
         self.asked_feature.append(facet)
         return new_message
     elif self.strategy == 'maxsim':
         # ask following max similarity between attributes
         for f in self.asked_feature:
             if self.sim_dict is not None and f in self.sim_dict:
                 self.sim_dict[f] = -1
         if len(self.known_feature) == 0 or self.sim_dict is None:
             facet = max(self.entropy_dict, key=self.entropy_dict.get)
         else:
             facet = max(self.sim_dict, key=self.sim_dict.get)
         data = dict()
         data['facet'] = facet
         new_message = message(cfg.AGENT, cfg.USER, cfg.ASK_FACET, data)
         self.asked_feature.append(facet)
         return new_message
     else:
         pool = [
             item for item in cfg.FACET_POOL
             if item not in self.asked_feature
         ]
         facet = np.random.choice(np.array(pool), 1)[0]
         data = dict()
         if facet in [item.name for item in cfg.cat_tree.children]:
             data['facet'] = facet
         else:
             data['facet'] = facet
         new_message = message(cfg.AGENT, cfg.USER, cfg.ASK_FACET, data)
         return new_message
示例#5
0
    def response(self, input_message):
        assert input_message.sender == cfg.AGENT
        assert input_message.receiver == cfg.USER

        # _______ update candidate _______
        if 'candidate' in input_message.data:
            self.recent_candidate_list = input_message.data['candidate']

        new_message = None
        if input_message.message_type == cfg.EPISODE_START or input_message.message_type == cfg.ASK_FACET:
            facet = input_message.data['facet']
            new_message = self.inform_facet(facet)

        if input_message.message_type == cfg.MAKE_REC:
            if self.busi_id in input_message.data['rec_list']:
                data = dict()
                data['ranking'] = input_message.data['rec_list'].index(
                    self.busi_id) + 1
                data['total'] = len(input_message.data['rec_list'])
                new_message = message(cfg.USER, cfg.AGENT, cfg.ACCEPT_REC,
                                      data)
            else:
                data = dict()
                data['rejected_item_list'] = input_message.data['rec_list']
                new_message = message(cfg.USER, cfg.AGENT, cfg.REJECT_REC,
                                      data)
        return new_message
示例#6
0
def add_data(m, connection):
    key = int(input("key:"))
    content = input("data:")
    nid = sucs(m, connection, key)
    data = (key, content)
    connection.put(
        message(None, -1, ("forward", message(nid, nid, ("adddata", data)))))
示例#7
0
def onCommand(message_in):
    if message_in.command == 'xkcd':
        if message_in.body != '':
            try:
                if int(message_in.body) < 0:
                    return message.message(body="ID `{}` is not a valid ID".
                                           format(message_in.body))
            except:
                return message.message(
                    body='Input of `{}` is not a valid number'.format(
                        message_in.body))

            data = json.loads(
                caching.getJson("https://xkcd.com/{}/info.0.json".format(
                    message_in.body.strip()),
                                caller='xkcd',
                                customName='{}.json'.format(
                                    message_in.body.strip())))
        else:
            data = json.loads(
                caching.getJson("https://xkcd.com/info.0.json",
                                caller='xkcd',
                                save=False))

        caching.downloadToCache(data['img'],
                                '{}.png'.format(data['num']),
                                caller='xkcd')

        return message.message(body='**{}/{}/{} - {}**\n_{}_'.format(
            data['month'], data['day'], data['year'], data['safe_title'],
            data['alt']),
                               file='cache/xkcd_{}.png'.format(data['num']))
示例#8
0
def rand_start(n):
    myManager.register('get_connection')
    myManager.register('get_inbox')
    myManager.register('get_guest_queue')
    m = myManager(address=('localhost', 50000), authkey=b'abc')
    m.connect()
    gq = m.get_guest_queue()
    connection = m.get_connection()

    id=None
    mysucs=None
    while(True):
        rint=randint(0,n)
        connection.put(message(GUEST,SERVER,("sucs",rint)))
        resp=gq.get()
        if resp.data[1]==False:
            id=rint
            mysucs=rint
            break
        if resp.data[1]!=rint:
            id=rint
            mysucs=resp.data[1]
            break
    connection.put(message(GUEST,SERVER,("preds",id)))
    resp=gq.get()
    #pr=Process(target=start,args=(m.get_inbox(id),connection,id,mysucs,resp.data[1],n,))
    #pr.start()
    #return pr
    start(m.get_inbox(id),connection,id,mysucs,resp.data[1],n)
def send_clients(msg, group_name, client_name, content_type, file_name=""):
    #print("sending to group members:"+group_name)
    msg_length = str(len(msg))
    msg_length = pad(msg_length)
    for client in group_info[group_name]["participants"]:
        if not client == client_name:
            print(client)
            cipher = encryption.encrypt_des3(msg_length,
                                             client_info[client][1])
            msg1 = message("SERV",
                           "GRP_MSG",
                           "TEXT",
                           cipher,
                           file_name,
                           client_name=client_name,
                           group_name=group_name)
            msg1 = pickle.dumps(msg1)
            cipher = encryption.encrypt_des3(msg, client_info[client][1])
            msg2 = message("SERV",
                           "GRP_MSG",
                           content_type,
                           cipher,
                           file_name,
                           client_name=client_name,
                           group_name=group_name)
            msg2 = pickle.dumps(msg2)
            start_new_thread(send_to_client,
                             (msg1, msg2, int(client_info[client][0])))
示例#10
0
def onCommand(message_in):
    """Do some math."""
    formula = message_in.body
    formula = formula.replace('*', 'x')

    if formula == None:
        msg = 'Usage: `{}calc [formula]`'.format('!')
        return message.message(body=msg)

    try:
        nsp = NumericStringParser()
        answer = nsp.eval(formula)
    except Exception as e:
        print("CALC PLUGIN EXCEPTION\r\n{}".format(e))
        msg = 'I couldn\'t parse "{}" :(\n\n'.format(formula)
        msg += 'I understand the following syntax:\n```\n'
        msg += "expop   :: '^'\n"
        msg += "multop  :: 'x' | '/'\n"
        msg += "addop   :: '+' | '-'\n"
        msg += "integer :: ['+' | '-'] '0'..'9'+\n"
        msg += "atom    :: PI | E | real | fn '(' expr ')' | '(' expr ')'\n"
        msg += "factor  :: atom [ expop factor ]*\n"
        msg += "term    :: factor [ multop factor ]*\n"
        msg += "expr    :: term [ addop term ]*```"
        # msg = Nullify.clean(msg)
        return message.message(body=msg)

    msg = '`{}` = `{}`'.format(formula, answer)
    # Say message
    return message.message(body=msg)
示例#11
0
def check_level_up():
    level_up_xp = settings.LEVEL_UP_BASE + settings.player.level * \
        settings.LEVEL_UP_FACTOR
    if settings.player.fighter.xp >= level_up_xp:
        settings.player.level += 1
        settings.player.fighter.xp -= level_up_xp
        message('Your battle skills grow stronger. You reached level ' +
                str(settings.player.level) + '.', color.yellow)

        choice = None
        while choice is None:
            choice = menu('Level up! Choose a stat to raise:\n',
                          ['Constitution (+20 HP, from ' +
                           str(settings.player.fighter.max_hp) + ')',
                           'Strength (+1 attack, from ' +
                           str(settings.player.fighter.power) + ')',
                           'Agility (+1 defense, from ' +
                           str(settings.player.fighter.defense) + ')'],
                          settings.LEVEL_SCREEN_WIDTH)

        if choice == 0:
            settings.player.fighter.max_hp += 20
            settings.player.fighter.hp += 20
        elif choice == 1:
            settings.player.fighter.power += 1
        elif choice == 2:
            settings.player.fighter.defense += 1
示例#12
0
def get_data(m, connection, key):
    nid = sucs(m, connection, key)
    q = m.get_guest_queue()
    connection.put(
        message(GUEST, SERVER, ("forward", message(GUEST, nid,
                                                   ("getdata", key)))))
    resp = q.get()
    return resp.data[1]
示例#13
0
def player_death(player):
	# the game ended
	message("You died!", tcod.lighter_red)
	settings.game_state = 'dead'

	# transform the player into a corpse
	settings.player.char = '%'
	settings.player.color = tcod.dark_red
示例#14
0
    def equip(self):
        old_equipment = get_equipped_in_slot(self.slot)
        if old_equipment is not None:
            old_equipment.dequip()

        self.is_equipped = True
        message.message('Equipped ' + self.owner.name + ' on ' +
                        self.slot + '.', color.light_green)
示例#15
0
def create_shortcut(name=None):
    if name is None:  # Register subcommands
        return []
    elif name == "":
        message("Press tab to enter a name for the shortcut first", "Error")
    else:
        # Call from the main thread because the function uses Qt objects
        CommandHandler.main_gui.call(get_shortcut, [name])
示例#16
0
文件: Item.py 项目: samuwen/pyrogue
 def drop(self, user):
     # add to the map and remove from the player's inventory
     settings.objects.append(self.owner)
     user.combatant.inventory.remove(self.owner)
     self.owner.x = settings.player.x
     self.owner.y = settings.player.y
     message("You dropped a " + self.owner.name + ".", tcod.yellow)
     if self.owner.equipment:
         self.owner.equipment.dequip()
示例#17
0
文件: Item.py 项目: Akhier/Py-TutMut
    def drop(self):
        if self.owner.equipment:
            self.owner.equipment.dequip()

        settings.objects.append(self.owner)
        settings.inventory.remove(self.owner)
        self.owner.x = settings.player.x
        self.owner.y = settings.player.y
        message.message('You dropped a ' + self.owner.name + '.', color.yellow)
示例#18
0
 def take_turn(self):
     if self.num_turns > 0:
         message.message('The ' + self.owner.name +
                         '\'s timer is at ' + str(self.num_turns),
                         color.red)
         self.num_turns -= 1
     else:
         self.result(self)
         self.owner.ai = None
示例#19
0
def send_sock(req):
    client = req.content.decode("utf-8")
    if (client not in client_info):
        resp = message("SERV", "ERR", "TEXT",
                       bytes(client + " not found", 'utf-8'))
    else:
        resp = message("SERV", "SOCK_RES", "TEXT",
                       bytes(client_info[client][0], 'utf-8'))
    return resp
示例#20
0
def cast_confuse(user=None, target=None, max_range=settings.CONFUSE_RANGE):
    monster = user.combatant.get_target(max_range)
    if monster == 'cancelled':
        return 'cancelled'
    old_ai = monster.ai
    monster.ai = ai.ConfusedMonster(old_ai)
    monster.ai.owner = monster
    message(monster.name + ' looks confused!', tcod.green)
    end_player_turn()
示例#21
0
def select_target(max_range):
    message("Select a target. Right click or Escape to cancel",
            tcod.light_cyan)
    settings.highlight_state = 'target'
    monster = choose_target(max_range)
    if monster is None:
        settings.highlight_state = 'play'
        return 'cancelled'
    return monster
示例#22
0
def cast_hold_in_place(user=None, target=None, max_range=settings.HOLD_RANGE):
    monster = user.combatant.get_target(max_range)
    if monster == 'cancelled':
        return 'cancelled'
    old_ai = monster.ai
    monster.ai = ai.HeldMonster(old_ai)
    monster.ai.owner = monster
    message(monster.name + ' looks unable to move!', tcod.green)
    end_player_turn()
示例#23
0
def sign_up(req):
    if (req.client_name in client_info):
        resp = message("SERV", "ERR", "TEXT",
                       bytes("username already exists", 'utf-8'))
    else:
        client_info[req.client_name] = req.content.decode('utf-8').split(",")
        resp = message("SERV", "SIGN_UP", "TEXT",
                       bytes("SIGN UP SUCCESFULL", 'utf-8'))
        print(client_info)
    return resp
示例#24
0
文件: Item.py 项目: Akhier/Py-TutMut
    def use(self):
        if self.owner.equipment:
            self.owner.equipment.toggle_equip()
            return

        if self.use_function is None:
            message.message('The ' + self.owner.name + ' cannot be used.')
        else:
            if self.use_function() != 'cancelled':
                settings.inventory.remove(self.owner)
示例#25
0
文件: ai.py 项目: samuwen/pyrogue
 def take_turn(self):
     if self.num_turns > 0:
         monster = self.owner
         if tcod.map_is_in_fov(settings.fov_map, monster.x, monster.y):
             if monster.distance_to(settings.player) < 2:
                 monster.combatant.attack(settings.player)
         self.num_turns -= 1
     else:
         self.owner.ai = self.old_ai
         message("The " + self.owner.name + " is no longer held!", tcod.red)
示例#26
0
def send_client(msg, receiving_client, file_name="", content_type="TEXT"):
    cipher = encryption.encrypt_des3(msg, str(key_info[receiving_client]))
    msg1 = message("CLI", "NORMAL_MSG", content_type, cipher, file_name, "",
                   user_name)
    msg1 = pickle.dumps(msg1)
    cipher = encryption.encrypt_des3(pad(str(len(msg1))),
                                     str(key_info[receiving_client]))
    msg2 = message("CLI", "NORMAL_MSG", "TEXT", cipher, "", "", user_name)
    msg2 = pickle.dumps(msg2)
    send_to_client(msg2, msg1, peer_info[receiving_client], "NORMAL_MSG")
示例#27
0
    def inform_facet(self, facet):
        data = dict()
        data['facet'] = facet

        if facet not in cfg.item_dict[str(self.busi_id)]['categories']:
            data['value'] = None
            return message(cfg.USER, cfg.AGENT, cfg.INFORM_FACET, data)
        else:
            data['value'] = [facet]
            return message(cfg.USER, cfg.AGENT, cfg.INFORM_FACET, data)
示例#28
0
文件: ai.py 项目: samuwen/pyrogue
 def take_turn(self):
     if self.num_turns > 0:
         # move in a random direction
         self.owner.move(tcod.random_get_int(0, -1, 1),
                         tcod.random_get_int(0, -1, 1))
         self.num_turns -= 1
     else:
         self.owner.ai = self.old_ai
         message("The " + self.owner.name + " is no longer confused!",
                 tcod.red)
示例#29
0
def explosive_death(monster):
    message('The ' + monster.name + ' is dead. You gain ' +
            str(monster.fighter.xp) + ' experiance points.',
            color.orange)
    monster.char = '*'
    monster.color = color.orange
    monster.blocks = False
    monster.fighter = None
    monster.ai = AI.CountDown(spells.cast_self_destruct)
    monster.ai.owner = monster
    monster.name = 'explosive remains of ' + monster.name
示例#30
0
def start(inbox,connection,id,sucs,preds,n):
    node=ChordNode(id,connection,inbox,n)
    connection.put(message(id,SERVER,("add",id)))
    node.send_to_node(message(id,sucs,("setpreds",id)))
    node.send_to_node(message(id, sucs, ("reqdata",None)))
    node.send_to_node(message(id, preds, ("setsucs", id)))
    node.sucs=sucs
    node.pred=preds

    #node.fillFt()
    node.run()
示例#31
0
def sign_in(req):
    if (req.client_name not in client_info):
        resp = message("SERV", "ERR", "TEXT",
                       bytes("username not found", 'utf-8'))
    elif not req.content.decode("utf-8") == client_info[req.client_name][1]:
        resp = message("SERV", "ERR", "TEXT",
                       bytes("incorrect credentials", 'utf-8'))
    else:
        resp = message("SERV", "SIGN_IN", "TEXT",
                       bytes("Succesfully signed in", 'utf-8'))
    return resp
示例#32
0
def check_level_up():
    # see if the player's exp enables them to level up
    level_up_exp = settings.LEVEL_UP_BASE + settings.player.combatant.level * settings.LEVEL_UP_FACTOR
    if settings.player.combatant.xp >= level_up_exp:
        settings.player.combatant.level_up()
        settings.player.combatant.level += 1
        # player gained a level, so gets new abilities
        settings.player.combatant.xp -= level_up_exp
        message(
            "You gained a level. You are now level: " +
            str(settings.player.combatant.level), tcod.yellow)
示例#33
0
def basic_death(monster):
    message(
        "The " + monster.name + " is dead. You gain " + str(monster.fighter.xp) + " experiance points.", color.orange
    )
    monster.char = "%"
    monster.color = color.dark_red
    monster.blocks = False
    monster.fighter = None
    monster.ai = None
    monster.name = "remains of " + monster.name
    monster.send_to_back()
示例#34
0
def next_level():
    # advance to the next level
    message('You go down a floor.', tcod.light_violet)
    settings.save_level_state()
    settings.dungeon_level += 1
    try:
        settings.load_level_state()
    except:
        print_debug("map not found. making new map")
        make_map()
        settings.save_level_state()
    initialize_fov()
示例#35
0
def monster_death(monster):
    # transform the monster into a corpse. it doesn't block, can't be attacked and can't move
    message(
        monster.name.capitalize() + ' is dead. You gained ' +
        str(monster.combatant.xp) + 'exp!', tcod.light_green)
    monster.char = '%'
    monster.color = tcod.dark_red
    monster.blocks = False
    monster.combatant = None
    monster.ai = None
    monster.name = 'remains of ' + monster.name
    monster.send_to_back()
示例#36
0
def smash(player, target, max_range):
    distance = 1
    damage = 20
    direction = prompt_user_for_direction()
    if direction == (0, 0) or type(direction) is not tuple:
        return 'fail'
    targets = fire_beam_in_direction((settings.player.x, settings.player.y),
                                     direction, distance)
    for obj in targets:
        message(obj.name.capitalize() + " takes " + str(damage) + " damage.")
        obj.combatant.take_damage(damage)
    end_player_turn()
示例#37
0
def onCommand(message_in):
    if message_in.command == 'eat':
        author = displayname.name(message_in.author)
        member = message_in.body.strip()

        # Check if we're eating nothing
        if member == "":
            nothingList = ['you sit quietly and eat *nothing*...',
                            'you\'re *sure* there was something to eat, so you just chew on nothingness...',
                            'there comes a time when you need to realize that you\'re just chewing nothing for the sake of chewing.  That time is now.']

            randnum = random.randint(0, len(nothingList) - 1)
            return message.message('*{}*, {}'.format(author, nothingList[randnum]))

        # Check if we're eating a member
        memberCheck = displayname.memberForName(member, message_in.server)
        if memberCheck:
            # We're eating a member - let's do a bot-check
            if memberCheck.id == message_in.server.me.id:
                # It's me!
                memberList = ['you try to eat *me* - but unfortunately, I saw it coming - your jaw hangs open as I deftly sidestep.',
                                'your mouth hangs open for a brief second before you realize that *I\'m* eating *you*.',
                                'I\'m a bot.  You can\'t eat me.',
                                'your jaw clamps down on... wait... on nothing, because I\'m *digital!*.',
                                'what kind of bot would I be if I let you eat me?']

            elif memberCheck.id == message_in.author.id:
                # We're eating...  ourselves?
                memberList = ['you clamp down on your own forearm - not surprisingly, it hurts.',
                                'you place a finger into your mouth, but *just can\'t* force yourself to bite down.',
                                'you happily munch away, but can now only wave with your left hand.',
                                'wait - you\'re not a sandwich!',
                                'you might not be the smartest...']

            else:
                memName = displayname.name(memberCheck)
                memberList = ['you unhinge your jaw and consume *{}* in one bite.'.format(memName),
                                'you try to eat *{}*, but you just can\'t quite do it - you spit them out, the taste of failure hanging in your mouth...'.format(memName),
                                'you take a quick bite out of *{}*.  They probably didn\'t even notice.'.format(memName),
                                'you sink your teeth into *{}\'s* shoulder - they turn to face you, eyes wide as you try your best to scurry away and hide.'.format(memName),
                                'your jaw clamps down on *{}* - a satisfying *crunch* emanates as you finish your newest meal.'.format(memName)]
            randnum = random.randint(0, len(memberList) - 1)
            return message.message('*{}*, {}'.format(author, memberList[randnum]))

        # Assume we're eating something else
        itemList = ['you take a big chunk out of *{}*. *Delicious.*'.format(member),
                        'your teeth sink into *{}* - it tastes satisfying.'.format(member),
                        'you rip hungrily into *{}*, tearing it to bits!'.format(member),
                        'you just can\'t bring yourself to eat *{}* - so you just hold it for awhile...'.format(member),
                        'you attempt to bite into *{}*, but you\'re clumsier than you remember - and fail...'.format(member),]

        randnum = random.randint(0, len(itemList) - 1)
        return message.message('*{}*, {}'.format(author, itemList[randnum]))
示例#38
0
def cast_lightning():
    # find closest enemy within a maximum range and damage it
    monster = settings.closest_monster(settings.LIGHTNING_RANGE)
    if monster is None:
        message("No enemy is close enough to strike", tcod.white)
        return 'cancelled'
    # zap it
    message(
        "A lightning bolt strikes the " + monster.name +
        " with a loud thunder! The damage is " +
        str(settings.LIGHTNING_DAMAGE) + " hit points.", tcod.light_blue)
    monster.combatant.take_damage(settings.LIGHTNING_DAMAGE)
示例#39
0
 def take_turn(self):
     if self.num_turns > 0:
         self.owner.move(libtcod.random_get_int(0, -1, 1),
                         libtcod.random_get_int(0, -1, 1))
         self.num_turns -= 1
     elif self.num_turns == -1:
         self.owner.move(libtcod.random_get_int(0, -1, 1),
                         libtcod.random_get_int(0, -1, 1))
     else:
         self.owner.ai = self.old_ai
         message.message('The ' + self.owner.name +
                         ' is no longer confused.', libtcod.red)
示例#40
0
文件: Item.py 项目: samuwen/pyrogue
 def pick_up(self, user):
     # add to the player's inventory and remove from the map
     if len(user.combatant.inventory) >= 26 and user == settings.player:
         message("Your inventory is full!", tcod.red)
     else:
         user.combatant.inventory.append(self.owner)
         settings.objects.remove(self.owner)
         message("You picked up a " + self.owner.name + ".", tcod.green)
         equipment = self.owner.equipment
         if equipment and settings.get_equipped_in_slot(
                 equipment.slot) is None:
             equipment.equip()
示例#41
0
文件: Item.py 项目: Akhier/Py-TutMut
    def pick_up(self):
        if len(settings.inventory) >= 26:
            message.message('Your inventory is full, you cannot pick up ' +
                            self.owner.name + '.', color.red)
        else:
            settings.inventory.append(self.owner)
            settings.objects.remove(self.owner)
            message.message('You picked up a ' + self.owner.name + '.',
                            color.green)

            equipment = self.owner.equipment
            if equipment and get_equipped_in_slot(equipment.slot) is None:
                equipment.equip()
示例#42
0
    def dataReceived(self, data):
        m = deserialize(data)

        if m["message"]["command"] == "verack":
            """Complete the handshake if we received both version and verack"""
            self.timeouts["verack"].cancel()
            del self.timeouts["verack"]
            if "version" not in self.timeouts:
                self.on_handshake_complete()

        elif m["message"]["command"] == "version":
            """Send the verack back"""
            # TODO: make sure this node uses NODE_NETWORK (and maybe NODE_BLOOM in the future)
            self.timeouts["version"].cancel()
            del self.timeouts["version"]
            self.transport.write(serialize(message(verack(), self.params)))
            if "verack" not in self.timeouts:
                self.on_handshake_complete()

        elif m["message"]["command"] == "inv":
            """Run through our callbacks to see if we are waiting on any of these inventory items"""
            inventory = deserialize(m["message"]["payload"], "inv")
            for item in inventory["inv"]:
                if item[1] in self.callbacks:
                    self.callbacks[item[1]](item[1])
                    del self.callbacks[item[1]]
                elif item[0] == "TX":
                    self.send_message(message(get_data(item[0], item[1]), self.params))
                print "Peer %s:%s announced new %s %s" % (self.transport.getPeer().host, self.transport.getPeer().port, item[0], item[1])

        elif m["message"]["command"] == "getdata":
            """Serve the data from inventory if we have it"""
            data_request = deserialize(m["message"]["payload"], "getdata")
            for item in data_request["getdata"]:
                if item[1] in self.inventory and item[0] == "TX":
                    transaction = tx(self.inventory[item[1]])
                    self.send_message(message(transaction, self.params))

        elif m["message"]["command"] == "tx":
            """Parse to check the script_pubkey data element against our subscriptions"""
            t = deserialize(m["message"]["payload"], "tx")
            for out in t['tx']['outs']:
                script = bitcoin.deserialize_script(out['script'])
                data_element = script[2] if len(script) == 5 else script[1]
                if data_element in self.callbacks:
                    self.callbacks[data_element](t)

        else:
            print "Received message %s from %s:%s" % (m["message"]["command"], self.transport.getPeer().host, self.transport.getPeer().port)
示例#43
0
    def send_accept(self, prop, ins, cid, value,
                    rmsg_type, rmsg_prop, rmsg_ins, rmsg_cid):
        """
            Helper function, send accept message to server, check
            returned message
            - prop: proposal number to be sent
            - ins: instance number to be sent
            - cid: client id to be sent
            - value: value to be sent
            - rmsg_type: expected returned message type
            - rmsg_prop: expected returned message proposal number
            - rmsg_ins: expected returned message instane number
            - rmsg_cid: expected returned message client id
        """
        msg = message.message(MESSAGE_TYPE.ACCEPT, prop, ins,
                              value, self.dummy_server_id, cid)
        self.message_socket.send(pickle.dumps(msg))

        rmsgs = self.acceptor_connection.recv(1000)
        rmsg = pickle.loads(rmsgs)
        assert isinstance(rmsg, message.message)

        assert rmsg.msg_type == rmsg_type
        assert rmsg.proposal == rmsg_prop
        assert rmsg.instance == rmsg_ins
        assert rmsg.client_id == rmsg_cid

        return rmsg
示例#44
0
    def test_reject_accept(self):
        """
            Test case where prepare goes through but another proposal
            fires a high proposal before accept comes through
        """
        print "\n\n[Info] ##########[SINGLE PREPARE ACCEPT TEST]##########\n"

        # send a prepare message, proposal = 6, instance = 0
        self.send_prepare(6, 0, MESSAGE_TYPE.PREPARE_ACK, 6, 0)

        # send another prepare message, proposal = 8; instance = 0
        self.send_prepare(8, 0, MESSAGE_TYPE.PREPARE_ACK, 8, 0)

        # send an accept message which should get rejected
        proposal, instance, client_id = 6, 0, 9
        msg = message.message(MESSAGE_TYPE.ACCEPT, proposal, instance,
                              None, self.dummy_server_id, client_id)
        self.message_socket.send(pickle.dumps(msg))

        self.acceptor_connection.settimeout(1.0)
        try:
            pickle.loads(self.acceptor_connection.recv(1000))
            assert(False)
        except Exception, e:
            print e
            pass
示例#45
0
 def connectionMade(self):
     """
     Send the version message and start the handshake
     """
     self.timeouts["verack"] = reactor.callLater(5, self.response_timeout, "verack")
     self.timeouts["version"] = reactor.callLater(5, self.response_timeout, "version")
     self.transport.write(serialize(message(version(user_agent=self.user_agent), self.params)))
示例#46
0
    def test_multiple_instance_prepare(self):
        """
            Test multiple instances
        """
        print "\n\n[Info] ##########[MULTIPLE INSTANCE PREAPRE TEST]########\n"

        # send an initial instance number, proposal = 0, instance = 0
        self.send_prepare(0, 0, MESSAGE_TYPE.PREPARE_ACK, 0, 0)

        # send a higher number proposal, proposal = 5, instance = 0
        self.send_prepare(5, 0, MESSAGE_TYPE.PREPARE_ACK, 5, 0)

        # send a different instance, proposal = 1, instance = 2
        self.send_prepare(1, 2, MESSAGE_TYPE.PREPARE_ACK, 1, 2)

        # send original instance with lower proposal number
        proposal, instance = 3, 0
        msg = message.message(MESSAGE_TYPE.PREPARE, proposal, instance,
                              None, self.dummy_server_id)
        self.message_socket.send(pickle.dumps(msg))
        self.acceptor_connection.settimeout(1.0)
        try:
            pickle.loads(self.acceptor_connection.recv(1000))
            assert(False)
        except Exception, e:
            print e
            pass
示例#47
0
    def test_multiple_proposal_prepare(self):
        """
            Issues multiple proposals for the same instance and tests
            if correct responses are received
        """
        print "\n\n[Info] ##########[MULTIPLE PROPOSAL TEST]##########\n"

        # send and receive a valid proposal, proposal = 1, instance = 0
        self.send_prepare(1, 0, MESSAGE_TYPE.PREPARE_ACK, 1, 0)
        print "[Info] First prepare request successful..."

        # send and receive another valid proposal, proposal = 3, instance = 0
        self.send_prepare(3, 0, MESSAGE_TYPE.PREPARE_ACK, 3, 0)
        print "[Info] Second prepare request successful..."

        # send an not receive a lower numbered proposal
        proposal, instance = 2, 0
        msg = message.message(MESSAGE_TYPE.PREPARE,
                              proposal, instance, None, self.dummy_server_id)
        self.message_socket.send(pickle.dumps(msg))

        try:
            self.acceptor_connection.settimeout(1.0)
            self.acceptor_connection.recv(1000)
            assert False    # time out should happen
        except Exception, e:
            print e
            pass
示例#48
0
 def on_handshake_complete(self):
     print "Connected to peer %s:%s" % (self.transport.getPeer().host, self.transport.getPeer().port)
     self.state = State.CONNECTED
     self.send_message(message(filer_load(str(self.bloom_filter.vData).encode("hex"),
                                          self.bloom_filter.nHashFuncs,
                                          self.bloom_filter.nTweak,
                                          self.bloom_filter.nFlags), self.params))
示例#49
0
	def __init__(self, conn, newDc_no):
		msg = message("sync", newDc_no)
		send = pickle.dumps(msg,0)
		s = socket.socket()
		s.connect(conn)
		s.send(send)
		s.close()
示例#50
0
    def send_prepare(self, prop, ins, rmsg_type, rmsg_prop, rmsg_ins):
        """
            Helper function, send prepare message to server, check
            returned message
            - prop: proposal number to be sent
            - ins: instance number to be sent
            - rmsg_type: expected returned message type
            - rmsg_prop: expected returned message proposal number
            - rmsg_ins: expected returned message instane number
        """
        msg = message.message(
            MESSAGE_TYPE.PREPARE, prop, ins, None, self.dummy_server_id)
        self.message_socket.send(pickle.dumps(msg))

        print "[Info] Sent a proposal to acceptor..."
        rmsgs = self.acceptor_connection.recv(1000)
        rmsg = pickle.loads(rmsgs)
        assert isinstance(rmsg, message.message)

        print "[Info] Received a response from server..."

        assert rmsg.msg_type == rmsg_type
        if rmsg.proposal != rmsg_prop:
            print (rmsg.proposal, rmsg_prop)

        assert rmsg.proposal == rmsg_prop
        assert rmsg.instance == rmsg_ins

        return rmsg
示例#51
0
    def tearDown(self):

        # directly inject an exit message to each of the queues
        exit_msg = message.message(message.MESSAGE_TYPE.EXIT,
                                   None, None, None, 'localhost', 9000, None)
 
        for s in self.servers:
            s.acceptor_queue.put(exit_msg)
            s.proposer_queue.put(exit_msg)

        # join the acceptor and proposer processes for each server
        for s in self.servers:
            s.listening_process.terminate()
            s.listening_process.join(5)
            s.acceptor_process.join(5)
            s.proposer_process.join(5)
            assert(not s.proposer_process.is_alive())

        # perform a validation over the files
        for s in self.servers:
            assert(validate_lock_file("server" + str(s.server_id) + ".txt"))

        # check that the correct distributino of lcoks appeared in the log files
        client_files = self.client_files
        server_files = []
        for s in self.servers:
            server_files.append("server" + str(s.server_id) + ".txt")
        assert(len(server_files) == len(self.servers))

        if (self.client_files != None):
            validate_client_file(client_files, server_files)
示例#52
0
	def __init__(self, msg):
		self._msg = msg
		self._statuses = msg.__getattr__('statuses')
		self._len = len(self._statuses)
                self._msg_list = []
		i = 0
		while i < self._len:
			self._msg_list.append(message(self._statuses[i]))
			i = i + 1
示例#53
0
 def SaveConfig(self, event=None):
     msg = message.message()
     url = self.UrlVar.get()
     path = self.PathVar.get()
     times = int(self.TimesVar.get())
     msg.showmsg(u'消息',u'开始运行并隐藏窗口,如需关闭监控请杀python进程!')
     self.hide()
     m = function.Monitor.monitor(path,url)
     m.execute(10000,times)
示例#54
0
	def __init__(self, msg):
		self._msg = msg
		self._jsonprocessor = JsonProcessor()
		self._statuses = self._jsonprocessor.Parse_get_text_from_json(self._msg, 'statuses')
		self._len = len(self._statuses)
		self._msg_list = []
		i = 0
		while i < self._len:
			self._msg_list.append(message(self._statuses[i]))
			i = i + 1
示例#55
0
def next_level():
    message('You take a moment to rest, and recover your strength',
            color.light_violet)
    settings.player.fighter.heal(settings.player.fighter.max_hp / 2)

    settings.dungeon_level += 1
    message('After a rare moment of peace, you descend deeper into ' +
            'the heart of the dungeon...', color.red)
    (cx, cy) = Rect(0, 0, settings.MAP_WIDTH, settings.MAP_HEIGHT).center
    if settings.stairs.x < cx:
        cx = 0
    else:
        cx = 1
    if settings.stairs.y < cy:
        cy = 0
    else:
        cy = 2
    make_map(cx + cy)
    initialize_fov()
示例#56
0
    def clock2(self):
        if self.message is None:
            function = self.produce()
            if function is None:
                return
            self.message = message.message(self.position,self.address(), function , "", cycle=cycle)

        if not self.channel.request.is_full():
            self.channel.request.write(self.message)
            self.message = None
示例#57
0
文件: client.py 项目: mohd1012/CSE550
 def send_command(self, cmd, client_id):
     msg = message.message(MESSAGE_TYPE.CLIENT,
                           None, None, cmd, client_id, client_id=client_id)
     assert msg.client_id is not None
     try:
         self.CONNECTION_SOCKET.send(pickle.dumps(msg))
     except Exception, e:
         # the server node failed so abort
         print "client - warn {}".format(e)
         pass
示例#58
0
文件: sql.py 项目: czjxy881/new1
 def update(self):
     if self.con==0:self.__init__()
     m=message.message()
     dic=['国内新闻','科技趣闻','环球视野','军事汇总','娱乐八卦','音乐资讯','科技要闻','天气','农历日历','NBA篮球','教务处']
     if 1:
     #try:
      for i in range(1,12):
         print i
         s=m.getmsg(i)
         #self.cur.execute("insert into message (ans,name) values('%s','%s')"%(s,dic[i-1]))
         self.cur.execute("update message set ans='%s' where name=='%s'"%(s,dic[i-1]))
      return 1
示例#59
0
def new_game():
    fighter_component = Fighter(hp=30, defense=2, power=5,
                                xp=0, death_function=player_death)
    settings.player = Object(0, 0, '@', 'player', color.white, blocks=True,
                             fighter=fighter_component)

    settings.player.level = 1
    settings.dungeon_level = 1
    make_map()
    handle_keys.initialize_fov()
    settings.game_state = 'playing'
    settings.inventory = []
    settings.game_msgs = []

    message('Welcome stranger. Prepare to perish in the ' +
            'Tombs of the Ancient Kings.', color.red)
    equipment_component = Equipment(slot='right hand', power_bonus=2)
    obj = Object(0, 0, '-', 'dagger', color.sky,
                 equipment=equipment_component)
    settings.inventory.append(obj)
    equipment_component.equip()
    obj.always_visible = True
示例#60
0
    def run(cls, text):
        python_architecture = struct.calcsize("P") * 8  # Python installation: 32- or 64-bit
        # If 32-bit Python is used, the System32 folder is normally redirected. This causes some applications to be impossible
        # to run. The following disables this redirection.
        if python_architecture == 32:
            old_value = ctypes.c_long()
            ctypes.windll.kernel32.Wow64DisableWow64FsRedirection(old_value)

        if cls.active_command:
            print "Command:", cls.active_command, ">", text
            thread.start_new_thread(cls.command_list[cls.active_command]['callback'], (text,))
            cls.reset_mode()
            return True

        print "Command:", text
        try:
            command = cls.command_list[text]
        except KeyError:
            pass
        else:
            thread.start_new_thread(command['callback'], tuple(command['args']))
            return True

        try:
            shell.Run('"' + text.decode("utf-8").encode("cp1252") + '"')
        except com_error:
            if re.search(r"\.\w+", text) is not None:  # Might be a URL. Append 'http://' and try again.
                try:
                    shell.Run('"http://' + text.decode("utf-8").encode("cp1252") + '"')
                except com_error:
                    message("Cannot execute: [i]%s[/i]" % text.decode("utf-8"), "Invalid command")
            else:
                message("Cannot execute: [i]%s[/i]" % text.decode("utf-8"), "Invalid command")
            return False
        else:
            return True