Exemplo n.º 1
0
    def at_post_login(self, sessid=None):
        super(Player, self).at_post_login(sessid)

        try:
            if (settings.TEST_SERVER):
                self.permissions.add('Builders')
        except AttributeError:
            pass

        character = self.character

        # Вероятно, этот код нужно убрать в at_first_login хук
        try:
            homeLocation = character.search(u"1-Общий дворик",
                                            global_search=True,
                                            quiet=True)[0]
        except IndexError:
            # сервер после вайпа, нужно выполнить инцилизацию локаций вручную
            # bathccommand mu2ch_init
            # пока заглушка
            return

        if (homeLocation and character.home != homeLocation):
            character.home = character.location = homeLocation
            character.move_to(homeLocation)

        apartment = None

        if (character.db.flat):
            return

        i = 1
        while (apartment is None):
            try:
                building = character.search(u"1-Дом%d" % i,
                                            global_search=True,
                                            quiet=True)[0]
            except IndexError:
                try:
                    building_home = character.search(u"Преддомовая территория",
                                                     global_search=True,
                                                     quiet=True)[0]
                except IndexError:
                    # что то пошло не так
                    return

                building = create_object('typeclasses.building.Hrushevka',
                                         key=u"Дом%d" % i)
                locationTunnel(building, u"Дом%d" % i, building_home, u"Улица")
                if (not building):
                    print "Что-то пошло не так"
                    # never happend
                    break

            # db.flat - локация хаты персонажа
            apartment = building.assignCharacter(character)
            if (apartment):
                character.msg("Тебя заселили по адресу: %s" % repr(apartment))

            i = i + 1
Exemplo n.º 2
0
    def at_post_login(self, sessid = None):
        super(Player, self).at_post_login(sessid)

        
        try:
            if (settings.TEST_SERVER):
                self.permissions.add('Builders') 
        except AttributeError:
            pass

        character = self.character
        
        # Вероятно, этот код нужно убрать в at_first_login хук
        try:
            homeLocation = character.search(u"1-Общий дворик", global_search = True, quiet = True)[0] 
        except IndexError:
            # сервер после вайпа, нужно выполнить инцилизацию локаций вручную
            # bathccommand mu2ch_init
            # пока заглушка
            return 

        if (homeLocation and character.home != homeLocation):
            character.home = character.location = homeLocation
            character.move_to(homeLocation)
        
    
        apartment = None

        if (character.db.flat):
            return 

        i = 1
        while (apartment is None):
            try:
                building = character.search(u"1-Дом%d" % i, global_search = True, quiet = True)[0] 
            except IndexError:
                try:
                    building_home = character.search(u"Преддомовая территория", global_search = True, quiet = True)[0]
                except IndexError:
                    # что то пошло не так
                    return

                building = create_object('typeclasses.building.Hrushevka', key = u"Дом%d" % i) 
                locationTunnel(building, u"Дом%d" % i , building_home, u"Улица")
                if (not building):
                    print "Что-то пошло не так"
                    # never happend
                    break

            # db.flat - локация хаты персонажа
            apartment = building.assignCharacter(character) 
            if (apartment): 
                character.msg("Тебя заселили по адресу: %s" % repr(apartment)) 

            i = i + 1
Exemplo n.º 3
0
    def build(self):
        i = 0
        prev_floor = None
        for i in xrange(1, self.db.floor_n):  
            new_floor = create_object('floor.BuildingFloor', key = u"%d Этаж" % i) 
            new_floor.build(self, i) 

            new_floor.move_to(self, quiet = True, move_hooks = False) 
                
            locationTunnel(self, self.db.desc, new_floor, None)
            if (prev_floor):
                locationTunnelDefault(prev_floor, new_floor)
            prev_floor = new_floor
Exemplo n.º 4
0
    def build(self, building, n):
        self.db.n = n
        self.db.key = self.db.desc = u"%d этаж" % n
        self.db.building = building
        per_floor = building.db.apartment_per_floor
        i = 1
        for i in xrange(1, per_floor + 1):
            room_n = ((n - 1) * per_floor) + i 
            roomEntryLocation = create_object('apartment.BuildingApartmentUnused', key = u"Кв-%d" % room_n)
            roomEntryLocation.build(self, room_n) 
            roomEntryLocation.move_to(self, quiet = True, move_hooks = False)
            locationTunnel(roomEntryLocation, roomEntryLocation.key, self, u"Лестничная площадка")

        return self
Exemplo n.º 5
0
    def build(self):
        i = 0
        prev_floor = None
        for i in xrange(1, self.db.floor_n):
            new_floor = create_object('floor.BuildingFloor',
                                      key=u"%d Этаж" % i)
            new_floor.build(self, i)

            new_floor.move_to(self, quiet=True, move_hooks=False)

            locationTunnel(self, self.db.desc, new_floor, None)
            if (prev_floor):
                locationTunnelDefault(prev_floor, new_floor)
            prev_floor = new_floor
Exemplo n.º 6
0
    def create_room(self, room):
        new_room = create_object('typeclasses.rooms.Box', key = room['name'])
        new_room.db.desc = room['desc']

        if (new_room.name == u'Кухня'):
            new_room.scripts.add(KitchenKnife) 

        try:
            for npc in room['npc']:
                create_object(npc['typeclass'], key = npc['name'], location = new_room)
        except KeyError:
            pass

        #locationTunnelDefault(self, new_room);
        locationTunnel(self, "Прихожка", new_room, new_room.name);
        return new_room
Exemplo n.º 7
0
    def assignApartmentToCharacter(self, apartment_location, character): 
        # TODO проверяеть тип локации который нам дают
        floor = apartment_location.db.floor

        # Уничтожаем пустую квартиру
        room_n = apartment_location.db.n
        db_key = apartment_location.name
        apartment_location.delete() 
        
        # Создаем кваритру с комнатами
        new_apartment = create_object('apartment.BuildingApartmentUsed', key = db_key)
        new_apartment.build(floor, room_n) 
        new_apartment.db.assign_to = character
        exits = locationTunnel(new_apartment, new_apartment.name, floor, u"Лестничная площадка")
        exits[1].locks.add("traverse: id(%d) or perm(Wizard)" % character.id)
        new_apartment.move_to(floor, quiet = True, move_hooks = False)
        return new_apartment
Exemplo n.º 8
0
    def assignApartmentToCharacter(self, apartment_location, character):
        # TODO проверяеть тип локации который нам дают
        floor = apartment_location.db.floor

        # Уничтожаем пустую квартиру
        room_n = apartment_location.db.n
        db_key = apartment_location.name
        apartment_location.delete()

        # Создаем кваритру с комнатами
        new_apartment = create_object('apartment.BuildingApartmentUsed',
                                      key=db_key)
        new_apartment.build(floor, room_n)
        new_apartment.db.assign_to = character
        exits = locationTunnel(new_apartment, new_apartment.name, floor,
                               u"Лестничная площадка")
        exits[1].locks.add("traverse: id(%d) or perm(Wizard)" % character.id)
        new_apartment.move_to(floor, quiet=True, move_hooks=False)
        return new_apartment