コード例 #1
0
def schedule_node(drama_node: TunableInstanceParam(
    sims4.resources.Types.DRAMA_NODE),
                  actor_sim_id: OptionalSimInfoParam = None,
                  target_sim_id: OptionalSimInfoParam = None,
                  days_from_now: int = None,
                  _connection=None):
    actor_sim_info = get_optional_target(actor_sim_id, _connection,
                                         OptionalSimInfoParam)
    if target_sim_id is not None:
        target_sim_info = get_optional_target(target_sim_id, _connection,
                                              OptionalSimInfoParam)
    else:
        target_sim_info = None
    specific_time = None
    if days_from_now is not None:
        scheduled_day = int(
            services.time_service().sim_now.absolute_days()) + days_from_now
        specific_time = create_date_and_time(days=scheduled_day)
    resolver = DoubleSimResolver(actor_sim_info, target_sim_info)
    uid = services.drama_scheduler_service().schedule_node(
        drama_node, resolver, specific_time=specific_time)
    if uid is not None:
        sims4.commands.output(
            'Successfully scheduled drama node: {}'.format(
                drama_node.__name__), _connection)
    else:
        sims4.commands.output(
            'Failed to scheduled drama node: {}'.format(drama_node.__name__),
            _connection)
コード例 #2
0
def npc_order_food_at_chef_station(opt_sim: OptionalTargetParam = None,
                                   chef_sim: OptionalTargetParam = None,
                                   _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output("Sim {} doesn't exist.".format(opt_sim),
                              _connection)
        return False
    chef_sim = get_optional_target(chef_sim, _connection)
    if chef_sim is None:
        sims4.commands.output("Chef {} doesn't exist.".format(chef_sim),
                              _connection)
        return False
    chef_situation = restaurant_utils.get_chef_situation(chef_sim=chef_sim)
    if chef_situation is None:
        sims4.commands.output("Couldn't find a Chef Situation in this zone.")
        return False
    if chef_situation.menu_preset is not None:
        food_order = ChefsChoice.get_order_for_npc_sim_with_menu(
            sim, chef_situation.menu_preset)
    else:
        (food_order, _) = ChefsChoice.get_order_for_npc_sim(sim)
    chef_situation.add_direct_order(food_order, sim)
    services.get_event_manager().process_event(
        test_events.TestEvent.RestaurantFoodOrdered, sim_info=sim.sim_info)
    return True
コード例 #3
0
def give_chef_feedback(to_chef_sim_id: OptionalTargetParam = None,
                       from_sim_id: OptionalTargetParam = None,
                       is_compliment: bool = True,
                       waitstaff_sim_id: OptionalTargetParam = None,
                       _connection=None):
    from_sim = get_optional_target(from_sim_id, _connection)
    if from_sim is None:
        sims4.commands.output("From Sim {} doesn't exist.".format(from_sim_id),
                              _connection)
        return False
    to_chef_sim = get_optional_target(to_chef_sim_id, _connection)
    if to_chef_sim is None:
        sims4.commands.output(
            "To Chef Sim {} doesn't exist.".format(to_chef_sim_id),
            _connection)
        return False
    waitstaff_sim = get_optional_target(waitstaff_sim_id, _connection)
    if waitstaff_sim is None:
        sims4.commands.output(
            "Waitstaff Sim {} doesn't exist.".format(waitstaff_sim_id),
            _connection)
        return False
    waitstaff_situation = restaurant_utils.get_waitstaff_situation(
        waitstaff_sim)
    waitstaff_situation.give_chef_feedback(to_chef_sim, from_sim,
                                           is_compliment)
コード例 #4
0
def pregnancy_roll_traits(parent_sim_a: OptionalSimInfoParam = None,
                          parent_sim_b: OptionalSimInfoParam = None,
                          num_traits: int = DEFAULT,
                          offspring_gender: Gender = Gender.FEMALE,
                          _connection=None):
    output = sims4.commands.Output(_connection)
    parent_a = get_optional_target(parent_sim_a,
                                   _connection,
                                   target_type=OptionalSimInfoParam)
    parent_b = get_optional_target(parent_sim_b,
                                   _connection,
                                   target_type=OptionalSimInfoParam)
    if not (parent_a and parent_b):
        output('Invalid parents!')
        return False
    if parent_a.gender is parent_b.gender:
        output('Both parents have same gender.')
        return False
    species = parent_a.species
    aging_data = AgingTuning.get_aging_data(species)
    age = aging_data.get_birth_age()
    if num_traits is DEFAULT:
        num_traits = aging_data.get_personality_trait_count(age)
    offspring_data = PregnancyOffspringData(age, offspring_gender,
                                            parent_a.species, parent_sim_a, 1)
    selected_traits = PregnancyTracker.select_traits_for_offspring(
        offspring_data, parent_a, parent_b, num_traits)
    output('Selected Personality Traits:\n\t{}'.format('\n\t'.join(
        str(trait) for trait in selected_traits
        if trait.is_personality_trait)))
コード例 #5
0
def claim_table(opt_sim: OptionalTargetParam = None,
                opt_table: OptionalTargetParam = None,
                _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output("Sim {} doesn't exist".format(opt_sim),
                              _connection)
        return False
    table_to_claim = get_optional_target(opt_table, _connection)
    zone_director = get_restaurant_zone_director()
    if zone_director is None:
        sims4.commands.output('Current venue is not restaurant', _connection)
        return False
    zone_director.claim_table(sim, table_to_claim)
コード例 #6
0
def create_new_crime_data(opt_sim: OptionalSimInfoParam = None,
                          _connection=None):
    sim_info = get_optional_target(opt_sim,
                                   target_type=OptionalSimInfoParam,
                                   _connection=_connection)
    career = next(iter(sim_info.career_tracker.careers.values()))
    career.create_new_crime_data()
コード例 #7
0
def broadcasters_add(broadcaster_type, broadcasting_object:OptionalTargetParam=None, _connection=None):
    broadcasting_object = get_optional_target(broadcasting_object, _connection)
    if broadcasting_object is None:
        return False
    broadcaster = broadcaster_type(broadcasting_object=broadcasting_object)
    services.current_zone().broadcaster_service.add_broadcaster(broadcaster)
    return True
コード例 #8
0
def test_ping_autonomy(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('No target for autonomy.run', _connection)
        return
    selected_interaction = sim.run_test_autonomy_ping()
    sims4.commands.output('Autonomy Test Ping: {}'.format(selected_interaction), _connection)
コード例 #9
0
def add_statistic_to_tracker(stat_type, opt_target:OptionalTargetParam=None, _connection=None):
    target = get_optional_target(opt_target, _connection)
    if target is not None and stat_type is not None:
        tracker = target.get_tracker(stat_type)
        tracker.add_statistic(stat_type)
    else:
        sims4.commands.output('No target for stats.add_stat_to_tracker. Params: stat_name, optional target', _connection)
コード例 #10
0
def travel_sims_to_zone(opt_sim_id:OptionalTargetParam, zone_id:int, *traveling_sim_ids, _connection=None):
    sim_or_sim_info = get_optional_target(opt_sim_id, _connection)
    if sim_or_sim_info is None:
        if opt_sim_id:
            sim_or_sim_info = services.sim_info_manager().get(opt_sim_id)
            if sim_or_sim_info is None:
                sims4.commands.output('Invalid Sim id: {} specified for travel.travel_sims_to_zone'.format(opt_sim_id), _connection)
                return False
        else:
            sims4.commands.output('No Sim id specified for travel.travel_sims_to_zone', _connection)
            return False
    zone_proto_buff = services.get_persistence_service().get_zone_proto_buff(zone_id)
    if zone_proto_buff is None:
        sims4.commands.output('Invalid Zone Id: {}. Zone does not exist.'.format(zone_id), _connection)
        return False
    situation_manager = services.get_zone_situation_manager()
    situation = situation_manager.DEFAULT_TRAVEL_SITUATION
    guest_list = situation.get_predefined_guest_list()
    if guest_list is None:
        guest_list = SituationGuestList(invite_only=True, host_sim_id=sim_or_sim_info.id)
        default_job = situation.default_job()
        sim_info_manager = services.sim_info_manager()
        roommate_service = services.get_roommate_service()
        if roommate_service is not None:
            traveling_sim_ids = tuple(itertools.chain(traveling_sim_ids, (sim_info.sim_id for sim_info in roommate_service.get_auto_invite_sim_infos(sim_or_sim_info, situation))))
        for sim_id in traveling_sim_ids:
            sim_id = int(sim_id)
            sim_info = sim_info_manager.get(sim_id)
            if sim_info is None:
                continue
            guest_info = SituationGuestInfo.construct_from_purpose(sim_id, default_job, SituationInvitationPurpose.INVITED)
            guest_list.add_guest_info(guest_info)
        guest_info = SituationGuestInfo.construct_from_purpose(sim_or_sim_info.id, default_job, SituationInvitationPurpose.INVITED)
        guest_list.add_guest_info(guest_info)
    situation_manager.create_situation(situation, guest_list=guest_list, user_facing=False, zone_id=zone_id)
コード例 #11
0
def unregister_custom_career(opt_sim: OptionalSimInfoParam = None,
                             _connection=None):
    sim_info = get_optional_target(opt_sim,
                                   target_type=OptionalSimInfoParam,
                                   _connection=_connection)
    sim_info.career_tracker.remove_custom_career_data()
    return True
コード例 #12
0
def set_statisitic(stat_type, value:float=None, opt_target:OptionalTargetParam=None, _connection=None):
    target = get_optional_target(opt_target, _connection)
    if target is not None and stat_type is not None and value is not None:
        tracker = target.get_tracker(stat_type)
        tracker.set_value(stat_type, value)
    else:
        sims4.commands.output('No target for stats.set_stat.', _connection)
コード例 #13
0
def add_career_performance(opt_sim: OptionalTargetParam = None,
                           amount: int = None,
                           career_type: TunableInstanceParam(
                               sims4.resources.Types.CAREER) = None,
                           _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('careers.add_performance Invalid Sim passed',
                              _connection)
        sims4.commands.output(
            'Usage: careers.add_performance <opt_sim> <amount>', _connection)
        return
    if amount is None:
        sims4.commands.output('careers.add_performance Invalid amount passed',
                              _connection)
        sims4.commands.output(
            'Usage: careers.add_performance <opt_sim> <amount>', _connection)
        return
    if career_type is None:
        sims4.commands.output('careers.add_performance Invalid career passed',
                              _connection)
    if len(sim.sim_info.careers) > 0:
        career = sim.sim_info.career_tracker.get_career_by_uid(
            career_type.guid64)
        if career is not None:
            performance_stat = sim.statistic_tracker.get_statistic(
                career.current_level_tuning.performance_stat)
            performance_stat.add_value(amount)
コード例 #14
0
def register_custom_career(opt_sim: OptionalSimInfoParam = None,
                           _connection=None):
    sim_info = get_optional_target(opt_sim,
                                   target_type=OptionalSimInfoParam,
                                   _connection=_connection)

    def on_response(dialog):
        if not dialog.accepted:
            return
        name = dialog.text_input_responses.get(Career.TEXT_INPUT_NEW_NAME)
        description = dialog.text_input_responses.get(
            Career.TEXT_INPUT_NEW_DESCRIPTION)
        sim_info.career_tracker.set_custom_career_data(
            custom_name=name, custom_description=description)

    register_dialog_data = Career.REGISTER_CAREER_DIALOG_DATA
    dialog = register_dialog_data.register_career_dialog(
        sim_info, SingleSimResolver(sim_info))
    text_input_overrides = None
    if sim_info.career_tracker.has_custom_career:
        text_input_overrides = {}
        custom_career_data = sim_info.career_tracker.custom_career_data
        text_input_overrides[
            Career.
            TEXT_INPUT_NEW_NAME] = lambda *_, **__: LocalizationHelperTuning.get_raw_text(
                custom_career_data.get_custom_career_name())
        text_input_overrides[
            Career.
            TEXT_INPUT_NEW_DESCRIPTION] = lambda *_, **__: LocalizationHelperTuning.get_raw_text(
                custom_career_data.get_custom_career_description())
    dialog.show_dialog(on_response=on_response,
                       text_input_overrides=text_input_overrides)
    return True
コード例 #15
0
def reset_convergence(stat_type, opt_target:OptionalTargetParam=None, _connection=None):
    target = get_optional_target(opt_target, _connection)
    if target is not None and stat_type is not None:
        tracker = target.get_tracker(stat_type)
        tracker.reset_convergence(stat_type)
    else:
        sims4.commands.output('No target for stats.reset_convergence.', _connection)
コード例 #16
0
def automation_current_active_role(opt_target:OptionalTargetParam=None, _connection=None):
    target = get_optional_target(opt_target, _connection)
    if target is None:
        sims4.commands.automation_output('SimRole; SimId:None', _connection)
        return False
    role = target.active_roles().__class__.__name__ if target.active_roles() is not None else 'None'
    sims4.commands.automation_output('SimRole; SimId:{}, Role:{}'.format(target.id, role), _connection)
コード例 #17
0
def modify_gender_in_cas(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('No valid target specified.', _connection)
        return False
    sims4.commands.client_cheat('sims.exit2caswithhouseholdid {} {} gender'.format(sim.id, sim.household_id), _connection)
    return True
コード例 #18
0
def show_statistics(display_skill_only=False, opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is not None:
        for stat in sim.statistics_gen():
            while not display_skill_only or isinstance(stat, statistics.skill.Skill):
                s = 'Statistic: {}, Value: {},  Level: {}.'.format(stat.__class__.__name__, stat.get_value(), stat.get_user_value())
                sims4.commands.output(s, _connection)
コード例 #19
0
def get_sims_for_job(session_id, sim_id, situation_type, job_type, *job_assignments, _connection=None):
    sim = get_optional_target(sim_id, _connection)
    situation_start_time = services.time_service().sim_now
    duration = situation_type.duration
    if duration > 0:
        situation_end_time = situation_start_time + date_and_time.create_time_span(0, 0, duration)
    else:
        situation_start_time = date_and_time.INVALID_DATE_AND_TIME
        situation_end_time = date_and_time.INVALID_DATE_AND_TIME
    results = services.sim_filter_service().submit_filter(job_type.filter, None, requesting_sim_info=sim.sim_info, start_time=situation_start_time, end_time=situation_end_time, allow_yielding=False)
    if job_type.additional_filter_for_user_selection:
        sim_constraints = {result.sim_info.id for result in results}
        results = services.sim_filter_service().submit_filter(job_type.additional_filter_for_user_selection, None, requesting_sim_info=sim.sim_info, start_time=situation_start_time, end_time=situation_end_time, sim_constraints=sim_constraints, allow_yielding=False)
    msg = Situations_pb2.SituationJobSims()
    msg.situation_session_id = session_id
    msg.job_resource_id = job_type.guid
    msg.requirements = job_type.requirement_text
    results.sort(key=lambda x: (x.sim_info.is_npc, x.sim_info.last_name))
    for result in results:
        msg.sim_ids.append(result.sim_info.id)
        with ProtocolBufferRollback(msg.sims) as situation_job_sim:
            situation_job_sim.sim_id = result.sim_info.id
            if result.sim_info.household.id == services.active_household_id():
                situation_job_sim.account_id = result.sim_info.account_id
            while result.conflicting_career_track_id:
                situation_job_sim.career_track_id = result.conflicting_career_track_id
    shared_messages.add_message_if_selectable(services.object_manager().get(sim.id), Consts_pb2.MSG_SITUATION_JOB_SIMS, msg, True)
コード例 #20
0
def get_valid_situation_locations(sim_id, situation_type, *guests, _connection=None):
    sim = get_optional_target(sim_id, _connection)
    if not sim:
        sims4.commands.output('Invalid Sim ID: {}'.format(sim_id), _connection)
        return
    sim_info = sim.sim_info
    possible_zones = []
    possible_zones.append(sim_info.household.home_zone_id)
    for guest_id in guests:
        guest_id = int(guest_id)
        guest_info = services.sim_info_manager().get(guest_id)
        while guest_info is not None:
            guest_zone_id = guest_info.household.home_zone_id
            if guest_zone_id is not None and guest_zone_id and guest_zone_id not in possible_zones:
                possible_zones.append(guest_zone_id)
    venue_service = services.current_zone().venue_service
    for venue_type in situation_type.venue_types:
        possible_zones.extend(venue_service.get_zones_for_venue_type(venue_type))
    venue_manager = services.get_instance_manager(sims4.resources.Types.VENUE)
    persistence_service = services.get_persistence_service()
    locations_msg = Situations_pb2.SituationLocations()
    cas_zones_msg = InteractionOps_pb2.CASAvailableZonesInfo()
    world_info_msg = cas_zones_msg.zones.add()
    for zone_id in possible_zones:
        zone_data = persistence_service.get_zone_proto_buff(zone_id)
        if zone_data is None:
            pass
        neighborhood_data = persistence_service.get_neighborhood_proto_buff(zone_data.neighborhood_id)
        if neighborhood_data is None:
            pass
        lot_data = None
        for lot_owner_data in neighborhood_data.lots:
            while zone_id == lot_owner_data.zone_instance_id:
                lot_data = lot_owner_data
                break
        while zone_data is not None and lot_data is not None:
            location_data = Dialog_pb2.LotInfoItem()
            location_data.zone_id = zone_data.zone_id
            location_data.name = zone_data.name
            location_data.world_id = zone_data.world_id
            location_data.lot_template_id = zone_data.lot_template_id
            location_data.lot_description_id = zone_data.lot_description_id
            venue_type_id = build_buy.get_current_venue(zone_id)
            venue_instance = venue_manager.get(venue_type_id)
            if venue_instance is not None:
                location_data.venue_type_name = venue_instance.display_name
            if lot_data.lot_owner:
                household_id = lot_data.lot_owner[0].household_id
                household = services.household_manager().get(household_id)
                if household is not None:
                    location_data.household_name = household.name
            locations_msg.situation_locations.append(location_data)
            with ProtocolBufferRollback(world_info_msg.zones) as zone_info_msg:
                zone_info_msg.id = zone_data.zone_id
                zone_info_msg.name = zone_data.name
                zone_info_msg.world_id = zone_data.world_id
                zone_info_msg.lot_template_id = zone_data.lot_template_id
                zone_info_msg.lot_description_id = zone_data.lot_description_id
    shared_messages.add_object_message_for_sim_id(sim.id, Consts_pb2.MSG_NS_AVAILABLE_ZONES_INFO, cas_zones_msg)
    shared_messages.add_object_message_for_sim_id(sim.id, Consts_pb2.MSG_SITUATION_LOCATIONS, locations_msg)
コード例 #21
0
def mark_as_viewed(tuning_guid: int,
                   opt_target: OptionalSimInfoParam = None,
                   _connection=None):
    target = get_optional_target(opt_target,
                                 _connection,
                                 target_type=OptionalSimInfoParam)
    if target is None:
        sims4.commands.output('No Sim with id {}'.format(opt_target),
                              _connection)
        return False
    unlock_tracker = target.unlock_tracker
    if unlock_tracker is None:
        sims4.commands.output(
            'No unlock tracker for {}. Invalid LOD?'.format(target),
            _connection)
        return False
    spells_manager = services.get_instance_manager(Types.SPELL)
    recipe_manager = services.get_instance_manager(Types.RECIPE)
    unlockable_class = spells_manager.get(tuning_guid) or recipe_manager.get(
        tuning_guid)
    if unlockable_class is None:
        sims4.commands.output('Invalid guid {}'.format(tuning_guid),
                              _connection)
        return False
    unlock_tracker.unmark_as_new(unlockable_class)
コード例 #22
0
def pregnancy_clear(sim_id: OptionalTargetParam = None, _connection=None):
    sim = get_optional_target(sim_id, _connection)
    if sim is not None:
        pregnancy_tracker = sim.sim_info.pregnancy_tracker
        pregnancy_tracker.clear_pregnancy()
        return True
    return False
コード例 #23
0
def pregnancy_impregnate_many_npcs(opt_sim: OptionalSimInfoParam = None,
                                   _connection=None):
    output = sims4.commands.Output(_connection)
    sim_info = get_optional_target(opt_sim,
                                   _connection,
                                   target_type=OptionalSimInfoParam)
    if sim_info is None:
        output('No valid SimInfo specified.')
        return False
    if sim_info.is_teen_or_younger:
        output('Restricted to YAE Sims.')
        return False
    sim_info_manager = services.sim_info_manager()
    for target_sim_info in sim_info_manager.get_all():
        if sim_info.gender == target_sim_info.gender:
            continue
        if sim_info.species != target_sim_info.species:
            continue
        if target_sim_info.is_teen_or_younger:
            continue
        pregnancy_tracker = target_sim_info.pregnancy_tracker
        if pregnancy_tracker is None:
            continue
        pregnancy_tracker.start_pregnancy(target_sim_info, sim_info)
        output('\tImpregnated {}'.format(target_sim_info))
    return True
コード例 #24
0
def _csf_reset_slider(slider_name: str,
                      opt_sim: OptionalSimInfoParam = None,
                      _connection: int = None):
    output = CheatOutput(_connection)
    output('Resetting slider \'{}\'.'.format(slider_name))
    sim_info = get_optional_target(opt_sim,
                                   target_type=OptionalSimInfoParam,
                                   _connection=_connection)
    if sim_info is None:
        output('Failed, No Sim found!')
        return False
    output('Resetting slider for \'{}\'.'.format(
        CommonSimNameUtils.get_full_name(sim_info)))
    from cncustomsliderframework.sliders.query.slider_query_utils import CSFSliderQueryUtils
    custom_sliders = CSFSliderQueryUtils().get_sliders_by_name(
        sim_info, slider_name)
    if not custom_sliders:
        output('Invalid Slider! \'{}\''.format(slider_name))
        output('Available Sliders:')
        for custom_slider in CSFSliderQueryUtils().get_sliders_for_sim(
                sim_info):
            output('>{}'.format(custom_slider.raw_display_name))
        return False
    custom_slider = next(iter(custom_sliders))
    if custom_slider is not None:
        output('Slider found.')
    else:
        output('Invalid Slider! \'{}\''.format(slider_name))
        output('Available Sliders:')
        for custom_slider in CSFSliderQueryUtils().get_sliders_for_sim(
                sim_info):
            output('>{}'.format(custom_slider.raw_display_name))
        return False
    CSFCustomSliderApplicationService().reset_slider(sim_info, custom_slider)
    output('Success, Sliders reset.')
コード例 #25
0
def list_favorites(opt_sim: OptionalSimInfoParam = None, _connection=None):
    output = sims4.commands.Output(_connection)
    sim_info = get_optional_target(opt_sim,
                                   target_type=OptionalSimInfoParam,
                                   _connection=_connection)
    if sim_info is None:
        output("Can't find provided Sim.")
        return
    favorites_tracker = sim_info.favorites_tracker
    if favorites_tracker is None:
        output('Sim has no favorites tracker.')
        return
    favorites = favorites_tracker.favorites
    if not favorites:
        output('Sim has no favorites objects.')
        return
    zone = services.current_zone()
    for (tag, obj_id) in favorites.items():
        output_str = str(tag) + '\t'
        obj_inst = zone.find_object(obj_id)
        if obj_inst is None:
            output_str += 'None (error?)'
        else:
            output_str += str(obj_inst)
        output(output_str)
コード例 #26
0
def remove_static_commodity_from_tracker(static_commodity, opt_target:OptionalTargetParam=None, _connection=None):
    target = get_optional_target(opt_target, _connection)
    if target is not None:
        tracker = target.get_tracker(static_commodity)
        tracker.remove_statistic(static_commodity)
    else:
        sims4.commands.output('No target for stats.remove_static_commodity_from_tracker. Params: stat_name, optional target', _connection)
コード例 #27
0
def make_greeted(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('Invalid sim: {} provided.'.format(opt_sim), _connection)
        return
    situation_manager = services.get_zone_situation_manager()
    situation_manager.make_waiting_player_greeted(sim)
コード例 #28
0
def show_commodities(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is not None:
        sim.commodity_tracker.debug_output_all(_connection)
        sim.statistic_tracker.debug_output_all(_connection)
    else:
        sims4.commands.output('No target for stats.show_commodities.', _connection)
コード例 #29
0
def complete_current_milestone(opt_sim: OptionalTargetParam = None,
                               _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is not None:
        track_id = sim.sim_info.primary_aspiration.guid64 if sim.sim_info.primary_aspiration is not None else 0
        if track_id == 0:
            sims4.commands.output(
                "{} doesn't have a primary aspiration.".format(sim),
                _connection)
            return
        track = get_tunable_instance(sims4.resources.Types.ASPIRATION_TRACK,
                                     track_id)
        for (_, track_aspriation) in track.get_aspirations():
            if not sim.sim_info.aspiration_tracker.milestone_completed(
                    track_aspriation):
                for objective_type in track_aspriation.objectives:
                    if not sim.sim_info.aspiration_tracker.objective_completed(
                            objective_type):
                        sim.sim_info.aspiration_tracker.complete_objective(
                            objective_type)
                sim.sim_info.aspiration_tracker.complete_milestone(
                    track_aspriation, sim.sim_info)
                sims4.commands.output(
                    'Complete {} on {}'.format(track_aspriation, sim),
                    _connection)
                sim.sim_info.aspiration_tracker.send_if_dirty()
                return
        sims4.commands.output(
            '{} has completed all milestones in {}.'.format(sim, track),
            _connection)
コード例 #30
0
def order_food(recipe_type: TunableInstanceParam(sims4.resources.Types.RECIPE),
               opt_sim: OptionalTargetParam = None,
               _connection=None):
    if recipe_type is None:
        sims4.commands.output('Recipe is None', _connection)
        sims4.commands.automation_output('RestaurantOrderFood; Status:Failed',
                                         _connection)
        return False
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output("Sim {} doesn't exist".format(opt_sim),
                              _connection)
        sims4.commands.automation_output('RestaurantOrderFood; Status:Failed',
                                         _connection)
        return False
    zone_director = get_restaurant_zone_director()
    if zone_director is None:
        sims4.commands.output('Current venue is not restaurant', _connection)
        sims4.commands.automation_output('RestaurantOrderFood; Status:Failed',
                                         _connection)
        return False
    zone_director.make_one_order(sim, recipe_type)
    groups = zone_director.get_dining_groups_by_sim(sim)
    if groups is None:
        sims4.commands.output('Sim {} is not in dining group'.format(opt_sim),
                              _connection)
        sims4.commands.automation_output('RestaurantOrderFood; Status:Failed',
                                         _connection)
    group = groups.pop()
    group.hold_ordered_cost(recipe_type.restaurant_base_price)
    sims4.commands.automation_output('RestaurantOrderFood; Status:Success',
                                     _connection)
    return True
コード例 #31
0
def npc_accept_or_reject_recommendation(opt_sim: OptionalTargetParam = None,
                                        accept_recommendation: bool = True,
                                        _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output("Sim {} doesn't exist.".format(opt_sim),
                              _connection)
        return False
    zone_director = get_restaurant_zone_director()
    if zone_director is None:
        sims4.commands.output('Current venue is not restaurant', _connection)
        return False
    group_order = zone_director.get_active_group_order_for_sim(sim.sim_id)
    if group_order is None:
        sims4.commands.output(
            'Sim {} was not offered a recommendation.'.format(opt_sim),
            _connection)
        return False
    if accept_recommendation:
        sim_order = group_order.get_sim_order(sim.sim_id)
        if sim_order is not None:
            sim_order.recommendation_state = OrderRecommendationState.RECOMMENDATION_ACCEPTED
    else:
        group_order.remove_sim_order(sim.sim_id)
        (food_recipe, drink_recipe) = ChefsChoice.get_order_for_npc_sim(sim)
        group_order.add_sim_order(
            sim.sim_id,
            food_recipe_id=food_recipe.guid64,
            drink_recipe_id=drink_recipe.guid64,
            recommendation_state=OrderRecommendationState.
            RECOMMENDATION_REJECTED,
            order_status=OrderStatus.ORDER_INIT)
    return True
コード例 #32
0
def genalogy_print(sim_id:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(sim_id, _connection)
    if sim is None:
        return False
    genealogy = sim.sim_info.genealogy
    genealogy.log_contents()
    return True
コード例 #33
0
def modify_in_cas(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('No valid target for sims.modify_in_cas.', _connection)
        return False
    sims4.commands.client_cheat('sims.exit2cas {} {} {}'.format(sim.id, sim.household_id, services.get_active_sim().id), _connection)
    return True
コード例 #34
0
def reset_aspirations(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is not None:
        sim.sim_info.aspiration_tracker.reset_data()
        sims4.commands.output('Aspirations reset complete', _connection)
    else:
        sims4.commands.output('Sim not found, please check: |aspirations.reset_data <sim id from desired account>', _connection)
コード例 #35
0
def clear_lockouts(opt_sim: OptionalTargetParam = None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is not None:
        sim.clear_all_lockouts()
    else:
        sims4.commands.output('No target for objects.clear_lockouts.',
                              _connection)
コード例 #36
0
def clear_relationships(source_sim_id: OptionalTargetParam = None,
                        _connection=None):
    sim = get_optional_target(source_sim_id, _connection)
    if sim is not None:
        source_sim_info = sim.sim_info
    else:
        if not source_sim_id:
            sims4.commands.output(
                'No sim_info id specified for relationship.clear', _connection)
            return False
        source_sim_info = services.sim_info_manager().get(source_sim_id)
    if source_sim_info is None:
        sims4.commands.output('Invalid sim_info id: {}'.format(source_sim_id),
                              _connection)
        return False
    tracker = source_sim_info.relationship_tracker
    if tracker:
        rel_list = list(tracker)
        for relationship in rel_list:
            tracker.destroy_relationship(
                relationship.get_other_sim_id(source_sim_id))
        sims4.commands.output(
            'Removed {} relationships from {}'.format(len(rel_list), sim),
            _connection)
    else:
        logger.error("Sim {} doesn't have a RelationshipTracker",
                     source_sim_info)
    return True
コード例 #37
0
def genalogy_print(sim_id: OptionalTargetParam = None, _connection=None):
    sim = get_optional_target(sim_id, _connection)
    if sim is None:
        return False
    genealogy = sim.sim_info.genealogy
    genealogy.log_contents()
    return True
コード例 #38
0
def pregnancy_clear(sim_id:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(sim_id, _connection)
    if sim is not None:
        pregnancy_tracker = sim.sim_info.pregnancy_tracker
        pregnancy_tracker.clear_pregnancy()
        return True
    return False
コード例 #39
0
def get_carried_objects(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('Invalid Sim id: {}'.format(opt_sim), _connection)
        return False
    for (hand, _, obj) in get_carried_objects_gen(sim):
        sims4.commands.output('\t{}: {}'.format(hand, obj), _connection)
    return True
コード例 #40
0
def current_active_role(opt_target:OptionalTargetParam=None, _connection=None):
    target = get_optional_target(opt_target, _connection)
    if target is None:
        return False
    if target.active_roles():
        sims4.commands.output('Active Roles: {}'.format(target.active_roles()), _connection)
    else:
        sims4.commands.output('Sim has no active role', _connection)
コード例 #41
0
def start_single_sim_performance_test(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('No target for qa.automation.start_single_sim_performance_test', _connection)
        return
    sim.reset(ResetReason.RESET_EXPECTED, None, 'start_single_sim_performance_test')
    services.autonomy_service().start_single_sim_load_test(_connection, sim)
    sim.run_full_autonomy_next_ping()
コード例 #42
0
def pregnancy_seed(seed, sim_id:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(sim_id, _connection)
    if sim is not None:
        pregnancy_tracker = sim.sim_info.pregnancy_tracker
        if pregnancy_tracker.is_pregnant:
            pregnancy_tracker._seed = seed
            return True
    return False
コード例 #43
0
def reset_achievements(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is not None:
        account = services.account_service().get_account_by_id(sim.sim_info.account_id)
        account.achievement_tracker.reset_data()
        sims4.commands.output('Achievements reset complete', _connection)
    else:
        sims4.commands.output('Account not found, please check: |achievements.reset_data <sim id from desired account>', _connection)
コード例 #44
0
def career_demote_sim(career_type, opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is not None:
        career = sim.sim_info.career_tracker.get_career_by_uid(career_type.guid64)
        if career is not None:
            career.demote()
            return True
    return False
コード例 #45
0
def remove_modifier(handle, opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('No target for autonomy.add_modifier', _connection)
        return
    if sim.remove_statistic_modifier(handle):
        sims4.commands.output('Successfully removed autonomy modifier', _connection)
    else:
        sims4.commands.output('Unable to find autonomy handle: {}'.format(handle), _connection)
コード例 #46
0
def create_situation(situation_type, opt_sim:OptionalTargetParam=None, user_facing:bool=True, zone_id:int=0, _connection=None):
    situation_manager = services.get_zone_situation_manager()
    sim = get_optional_target(opt_sim, _connection)
    guest_list = SituationGuestList(False, sim.id)
    situation_id = situation_manager.create_situation(situation_type, guest_list=guest_list, user_facing=user_facing, zone_id=zone_id)
    if situation_id is not None:
        sims4.commands.output('Successfully created situation: {}.'.format(situation_id), _connection)
    else:
        sims4.commands.output('Insufficient funds to create situation', _connection)
コード例 #47
0
def dump_test_based_score_info(test_set, opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        return False
    si = max(sim.si_state, key=lambda si: (si.is_social, si.priority, si.id))
    output = sims4.commands.Output(_connection)
    output('Generating test scores for {} using resolver {}'.format(sim, si))
    test_set.debug_dump(si.get_resolver(), dump=output)
    return True
コード例 #48
0
def filter_create_friends(number_to_create, opt_sim:OptionalTargetParam=None, _connection=None):

    def callback(sim_infos, callback_event_data):
        if sim_infos:
            for sim_info in sim_infos:
                sims4.commands.output('Created info name {}'.format(sim_info.full_name), _connection)

    sim = get_optional_target(opt_sim, _connection)
    services.sim_filter_service().submit_matching_filter(number_to_create, filters.tunable.TunableSimFilter.ANY_FILTER, callback, requesting_sim_info=sim.sim_info, continue_if_constraints_fail=True, allow_yielding=True, blacklist_sim_ids={sim_info.id for sim_info in services.sim_info_manager().values()})
コード例 #49
0
def singe_sim(opt_target:OptionalTargetParam=None, set_singed:bool=None, _connection=None):
    sim = get_optional_target(opt_target, _connection)
    if sim is None:
        return False
    sim_info = sim.sim_info
    if set_singed is None:
        sim_info.singed = not sim_info.singed
    else:
        sim_info.singed = set_singed
コード例 #50
0
def show_autonomy_settings(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output("Couldn't find Sim.", _connection)
        return
    autonomy_state = _convert_state_to_string(sim.get_autonomy_state_setting())
    autonomy_randomization = _convert_randomization_to_string(sim.get_autonomy_randomization_setting())
    selected_sim_autonomy_enabled = services.autonomy_service()._selected_sim_autonomy_enabled
    sims4.commands.output('Autonomy State: {}\nAutonomyRandomization: {}\nSelected Sim Autonomy: {}'.format(autonomy_state, autonomy_randomization, selected_sim_autonomy_enabled), _connection)
コード例 #51
0
def trigger_invite_over_phone_call(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('No sim for households.debug_trigger_invite_over_phone_call.', _connection)
        return False
    if not services.household_manager().debug_trigger_invite_over_phone_call(sim):
        sims4.commands.output('households.debug_trigger_invite_over_phone_call failed to trigger phone call.', _connection)
        return False
    return True
コード例 #52
0
def genealogy_prune(sim_id:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(sim_id, _connection)
    if sim is None:
        return False
    household = sim.household
    if household is None:
        return False
    household.prune_distant_relatives()
    return True
コード例 #53
0
def get_prepopulated_job_for_sims(session_id, situation_type, sim_id:OptionalTargetParam=None, opt_target_id:int=None, _connection=None):
    sim = get_optional_target(sim_id, _connection)
    prepopulate = situation_type.get_prepopulated_job_for_sims(sim, opt_target_id)
    assign_msg = Situations_pb2.SituationAssignJob()
    assign_msg.situation_session_id = session_id
    if prepopulate is not None:
        for (sim_id, job_type_id) in prepopulate:
            assign_msg.sim_ids.append(sim_id)
            assign_msg.job_resource_ids.append(job_type_id)
    shared_messages.add_object_message(sim, Consts_pb2.MSG_SITUATION_ASSIGN_JOB, assign_msg, True)
コード例 #54
0
def test_situation_available(situation_type, opt_sim:OptionalTargetParam=None, target_sim_id:int=0, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('Invalid sim: {} provided.'.format(opt_sim), _connection)
        return
    situation_name = str(situation_type)
    if situation_type.is_situation_available(sim, target_sim_id):
        sims4.commands.output('Situation {} with initiating sim {} and target sim {} is available.'.format(situation_name, sim, target_sim_id), _connection)
    else:
        sims4.commands.output('Situation {} with initiating sim {} and target sim {} is not available.'.format(situation_name, sim, target_sim_id), _connection)
コード例 #55
0
def introduce_sim_to_all_others(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('No valid target for relationship.introduce_sim_to_all_others', _connection)
        return
    for target_sim in services.sim_info_manager().objects:
        if target_sim.id == sim.id:
            pass
        sim.relationship_tracker.add_relationship_score(target_sim.sim_id, RelationshipCommandTuning.INTRODUCE_VALUE, RelationshipCommandTuning.INTRODUCE_TRACK)
        target_sim.relationship_tracker.add_relationship_score(sim.sim_id, RelationshipCommandTuning.INTRODUCE_VALUE, RelationshipCommandTuning.INTRODUCE_TRACK)
コード例 #56
0
def remove_all_topic_of_type(name:str=None, opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None or name is None:
        return False
    topic_type = services.topic_manager().get(name)
    if topic_type is None:
        sims4.commands.output('({0}) is not a valid topic'.format(name), _connection)
        return False
    sim.remove_all_topic_of_type(topic_type)
    return True
コード例 #57
0
def complete_achievement(achievement_type, opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is not None:
        if achievement_type is not None:
            account = services.account_service().get_account_by_id(sim.sim_info.account_id)
            account.achievement_tracker.reset_milestone(achievement_type.guid64)
            account.achievement_tracker.complete_milestone(achievement_type, sim.sim_info)
            sims4.commands.output('Complete {} on {}'.format(achievement_type, sim), _connection)
            account.achievement_tracker.send_if_dirty()
        else:
            sims4.commands.output('Achievement {} not found, please check: |achievements.list_all_achievements'.format(achievement_type, sim), _connection)
コード例 #58
0
def household_autonomy_randomization(randonmization, opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('Failed to find Sim', _connection)
        return
    household = sim.household
    if household is None:
        sims4.commands.output('No household for sim {}'.format(sim), _connection)
        return
    true_randomization = _parse_randomization(randonmization)
    household.autonomy_settings.set_randomization_setting(true_randomization)
コード例 #59
0
def give_royalties(opt_sim:OptionalTargetParam=None, _connection=None):
    sim = get_optional_target(opt_sim, _connection)
    if sim is None:
        sims4.commands.output('Target Sim could not be found.', _connection)
        return False
    royalty_tracker = sim.sim_info.royalty_tracker
    if royalty_tracker is None:
        sims4.commands.output('Royalty Tracker not found for Sim.', _connection)
        return False
    royalty_tracker.update_royalties_and_get_paid()
    return True
コード例 #60
0
def filter_invite(filter_type, opt_sim:OptionalTargetParam=None, _connection=None):

    def _spawn_found_sims(results, callback_event_data):
        if results is not None:
            for result in results:
                sims4.commands.output('Sim : {}'.format(result.sim_info.id), _connection)
                sims.sim_spawner.SimSpawner.load_sim(result.sim_info.id)
            logger.info('Sims ID matching request {0}', results)

    sim = get_optional_target(opt_sim, _connection)
    _find_sims_with_filter(filter_type, sim, _spawn_found_sims, _connection)