Пример #1
0
 def remote_removeFromParty(self, cname):
     # Do not allow a player to change party members while in a trade.
     if self.player.trade:
         self.player.sendGameText(RPG_MSG_GAME_DENIED,"You must finish a trade before using the Inn.\\n")
         return
     
     try:
         c = Character.byName(cname)
     except:
         return
     
     if c not in self.player.party.members:
         return
     
     if len(self.player.party.members) == 1:
         return
     
     if not c.dead:
         gotone = False
         for dc in self.player.party.members:
             if dc == c:
                 continue
             if not dc.dead:
                 gotone = True
                 break
         if not gotone:
             self.player.sendGameText(RPG_MSG_GAME_DENIED,"You must have at least one living member of your party!\\n")
             return
     
     self.player.party.removeCharacter(c)
     
     self.player.alliance.allianceInfo.refresh()
     
     self.sendLists()
Пример #2
0
    def gotCharacterBuffer(self,cbuffer,cname):
        if not self.player:
            return
        player = self.player
        
        if cbuffer:
            cbuffer = loads(decodestring(cbuffer))
            c = None
            try:
                c = Character.byName(cname)
                try:
                    c.destroySelf()
                except:
                    print "ERROR SWAPPING TO %s"%cname
                    return
            except:
                pass
                
            InstallCharacterBuffer(self.player.id,cname,cbuffer)
            
        c = Character.byName(cname)
        if c.dead:
            c.dead = False
            c.health = -999999
            c.stamina = -999999
            c.mana = -999999

        ec = self.player.party.members[0]
        
        self.player.party.addCharacter(c)
        ec.backupItems()
        self.player.party.removeCharacter(ec)
            
        self.player.alliance.allianceInfo.refresh()
            
        self.sendLists()
        
        ExtractPlayer(player.publicName,player.id,ec.id)    
        ec.destroySelf()
            
        player.world.sendCharacterInfo(player)
        
        player.charName = c.name
        player.zone.simAvatar.setDisplayName(player)
Пример #3
0
    def install(self, player):
        spawn = self.spawn.install()

        FilterColumns(Character, self.dbAttr)
        self.dbAttr["name"] = spawn.name  #may be renamed
        self.dbAttr["spawnID"] = spawn.id
        self.dbAttr["playerID"] = player.id
        char = Character(**self.dbAttr)
        spawn.character = char  #version 1.0 didn't have a foreign key to character from spawn
        spawn.playerName = player.publicName

        # Restore spawn resists of this character.
        for a in self.sresists:
            a.install(spawn)

        # Restore spawn stats of this character.
        for a in self.sstats:
            a.install(spawn)

        # Restore advancements of this character.
        for a in self.advancements:
            a.install(char)

        # Restore spells of this character.
        for s in self.spells:
            s.install(char)

        # Restore skills of this character.
        for s in self.skills:
            s.install(char)

        # Restore this characters items.
        for i in self.items:
            i.install(char)

        # Restore this characters vault items.
        for i in self.vaultItems:
            i.install(char)

        # Restore this characters factions.
        for f in self.factions:
            f.install(char)

        # Restore this characters dialog choices.
        for dc in self.dc:
            dc.install(char)

        # Restore stored spells active on this character.
        for sps in self.spellStore:
            sps.install(char)
Пример #4
0
 def remote_addToParty(self, cname):
     # Get a handle to the player.
     player = self.player
     
     # Do not allow a player to change party members while in a trade.
     if player.trade:
         player.sendGameText(RPG_MSG_GAME_DENIED,"You must finish a trade before using the Inn.\\n")
         return
     
     from mud.world.cserveravatar import AVATAR
     
     if AVATAR:
         if player.cserverInfos:
             for ci in player.cserverInfos:
                 if ci.rename == 2 and ci.name.lower() == cname.lower():
                     player.sendGameText(RPG_MSG_GAME_DENIED,"You must rename this character before bringing them into the game.  You can rename the character by logging in with them from the main world login screen.\\n")
                     return
         
         #should be on client
         if cname == player.party.members[0].name:
             return
         
         t = sysTime() - player.lastInnAddTime
         if t < 30:
             player.sendGameText(RPG_MSG_GAME_DENIED,"You can change characters in %i seconds.\\n"%(31-t))
             return
         
         player.lastInnAddTime = sysTime()
         
         d = AVATAR.mind.callRemote("getCharacterBuffer", \
                 player.publicName,cname)
         d.addCallback(self.gotCharacterBuffer,cname)
         return d
     
     else:
         try:
             c = Character.byName(cname)
         except:
             return
         
         if c.player != player:
             print "WARNING: Player at inn attempting to add a character that isn't theres!"
             return
         
         if len(player.party.members) == 6:
             return
         
         if len(player.party.members) >= CoreSettings.MAXPARTY:
             player.sendGameText(RPG_MSG_GAME_DENIED,"This world allows at most %i characters in your party.\\n"%(CoreSettings.MAXPARTY))
             return
         
         if c in player.party.members:
             return
         
         #add the character!!!!
         player.party.addCharacter(c)
         
         # Monsters don't like to party...
         if player.realm == RPG_REALM_MONSTER:
             for member in player.party.members:
                 if member != c:
                     player.party.removeCharacter(member)
             player.sendGameText(RPG_MSG_GAME_EVENT, \
                                      "Rawr! Monsters don't like to party.\\n")
         
         player.alliance.allianceInfo.refresh()
         
         self.sendLists()
         return