Esempio n. 1
0
def create_schema_for_commodity_tracker(label, sim_specific=False):
    schema = GsiGridSchema(label=label, sim_specific=sim_specific)
    schema.add_field('stat_guid',
                     label='Stat GUID',
                     unique_field=True,
                     width=0.5)
    schema.add_field('stat_name', label='Name', width=2)
    schema.add_field('stat_value',
                     label='Value Points',
                     type=GsiFieldVisualizers.FLOAT)
    schema.add_field('decay_rate',
                     label='Decay Rate',
                     type=GsiFieldVisualizers.FLOAT,
                     width=0.5)
    schema.add_field('change_rate',
                     label='Change Rate',
                     type=GsiFieldVisualizers.FLOAT,
                     width=0.5)
    schema.add_field('decay_enabled', label='Decay Enabled', width=0.5)
    schema.add_field('convergence_value', label='Convergence Value', width=0.5)
    schema.add_field('time_till_callback', label='Time')
    schema.add_field('active_callback', label='Callback')
    schema.add_field('delayed_decay_timer', label='Delayed Decay Timer')
    with schema.add_has_many('modifiers', GsiGridSchema,
                             label='Modifiers') as sub_schema:
        sub_schema.add_field('modifier', label='Modifier')
        sub_schema.add_field('modifier_value', label='Modifier Value')
    with schema.add_has_many('track_listeners',
                             GsiGridSchema,
                             label='Track Callbacks') as sub_schema:
        sub_schema.add_field('callback_info', label='Callback Info')
    return schema
        self.dest_spec = None
        self.all_goals = []
        self.path_progress = 0
        self.path_cost_log = []
        self.path_goal_costs = []
        self.possible_constraints = []
        self.possible_path_destinations = {}
        self.all_handles = []
        self.sources_and_destinations = []
        self.transition_templates = []
        self.cur_posture_interaction = None
        self.all_possible_paths = []
        self.all_goal_costs = []


trans_path_archive_schema = GsiGridSchema(label='Transition Log',
                                          sim_specific=True)
trans_path_archive_schema.add_field('id', label='ID', hidden=True)
trans_path_archive_schema.add_field('sim_name',
                                    label='Sim Name',
                                    width=150,
                                    hidden=True)
trans_path_archive_schema.add_field('interaction',
                                    label='Interaction',
                                    width=150)
trans_path_archive_schema.add_field('path_success', label='Success', width=65)
trans_path_archive_schema.add_field('path_progress',
                                    label='Progress',
                                    width=65)
trans_path_archive_schema.add_field('path', label='Chosen Path', width=450)
trans_path_archive_schema.add_field('destSpec', label='Dest Spec', width=350)
trans_path_archive_schema.add_field('pathCost', label='Cost')
Esempio n. 3
0
from gsi_handlers.sim_handlers import _get_sim_info_by_id
from sims4.gsi.dispatcher import GsiHandler
from sims4.gsi.schema import GsiGridSchema

familiar_schema = GsiGridSchema(label='Familiars', sim_specific=True)
familiar_schema.add_field('familiar_name', label='Name')
familiar_schema.add_field('familiar_type', label='Type')
familiar_schema.add_field('familiar_active', label='Active')


@GsiHandler('familiar_view', familiar_schema)
def generate_sim_skill_view_data(sim_id: int = None):
    familiar_data = []
    cur_sim_info = _get_sim_info_by_id(sim_id)
    if cur_sim_info is not None:
        familiar_tracker = cur_sim_info.familiar_tracker
        if familiar_tracker is not None:
            active_familiar_id = familiar_tracker.active_familiar_id
            for familiar_info in familiar_tracker:
                if active_familiar_id is None:
                    familiar_active = False
                else:
                    familiar_active = familiar_info.uid == active_familiar_id
                entry = {
                    'familiar_name': familiar_info.raw_name,
                    'familiar_type': str(familiar_info.familiar_type),
                    'familiar_active': str(familiar_active)
                }
                familiar_data.append(entry)
    return familiar_data
Esempio n. 4
0
from gsi_handlers.gameplay_archiver import GameplayArchiver
from sims4.gsi.schema import GsiGridSchema

outfit_change_archive_schema = GsiGridSchema(label='Outfit Change Archive',
                                             sim_specific=True)
outfit_change_archive_schema.add_field('change_from', label='Change From')
outfit_change_archive_schema.add_field('change_to', label='Change To')
outfit_change_archive_schema.add_field('change_reason', label='Change Reason')
archiver = GameplayArchiver('OutfitChanges',
                            outfit_change_archive_schema,
                            add_to_archive_enable_functions=True)


def log_outfit_change(sim_info, change_to, change_reason):
    if sim_info is None:
        return
    entry = {
        'change_from': repr(sim_info._current_outfit),
        'change_to': repr(change_to),
        'change_reason': repr(change_reason)
    }
    archiver.archive(data=entry, object_id=sim_info.id)
Esempio n. 5
0
from sims4.gsi.dispatcher import GsiHandler
from sims4.gsi.schema import GsiGridSchema, GsiFieldVisualizers
import services
import sims4.resources
sim_whim_schema = GsiGridSchema(label='Whims/Whims Current', sim_specific=True)
sim_whim_schema.add_field('sim_id', label='Sim ID', hidden=True)
sim_whim_schema.add_field('whim', label='Whim', unique_field=True, width=3)
sim_whim_schema.add_field('instance', label='Instance', width=3)
sim_whim_schema.add_field('whimset', label='Whimset', width=3)
sim_whim_schema.add_field('target', label='Target', width=2)
sim_whim_schema.add_field('value', label='Value', width=1, type=GsiFieldVisualizers.INT)

@GsiHandler('sim_whim_view', sim_whim_schema)
def generate_sim_whim_view_data(sim_id:int=None):
    whim_view_data = []
    sim_info_manager = services.sim_info_manager()
    if sim_info_manager is not None:
        for sim_info in sim_info_manager.objects:
            if sim_info.sim_id == sim_id:
                whim_tracker = sim_info._whim_tracker
                if whim_tracker is None:
                    continue
                for (whim, source_whimset) in whim_tracker.whims_and_parents_gen():
                    whim_data = {'sim_id': str(sim_info.sim_id), 'whim': whim.get_gsi_name(), 'instance': whim.__class__.__name__, 'whimset': source_whimset.__name__, 'target': str(whim_tracker.get_whimset_target(source_whimset)), 'value': whim.score}
                    whim_view_data.append(whim_data)
    return whim_view_data

sim_activeset_schema = GsiGridSchema(label='Whims/Whimsets Active', sim_specific=True)
sim_activeset_schema.add_field('sim_id', label='Sim ID', hidden=True)
sim_activeset_schema.add_field('whimset', label='Whimset', unique_field=True, width=3)
sim_activeset_schema.add_field('priority', label='Priority', width=1, type=GsiFieldVisualizers.INT)
Esempio n. 6
0
from clubs.club_enums import ClubHangoutSetting
from sims4.gsi.dispatcher import GsiHandler
from sims4.gsi.schema import GsiGridSchema, GsiFieldVisualizers
import services
import sims4.resources
club_schema = GsiGridSchema(label='Club Info')
club_schema.add_field('name', label='Name', type=GsiFieldVisualizers.STRING)
club_schema.add_field('club_id',
                      label='Club ID',
                      type=GsiFieldVisualizers.STRING,
                      unique_field=True)
club_schema.add_field('hangout',
                      label='Hangout Location',
                      type=GsiFieldVisualizers.STRING)
club_schema.add_field('associated_color',
                      label='Associated Color',
                      type=GsiFieldVisualizers.STRING)
club_schema.add_field('uniform_male_child',
                      label='Male Child Uniform',
                      type=GsiFieldVisualizers.STRING)
club_schema.add_field('uniform_female_child',
                      label='Female Child Uniform',
                      type=GsiFieldVisualizers.STRING)
club_schema.add_field('uniform_male_adult',
                      label='Male Adult Uniform',
                      type=GsiFieldVisualizers.STRING)
club_schema.add_field('uniform_female_adult',
                      label='Female Child Uniform',
                      type=GsiFieldVisualizers.STRING)

Esempio n. 7
0
from gsi_handlers.gameplay_archiver import GameplayArchiver
from sims4.gsi.dispatcher import GsiHandler
from sims4.gsi.schema import GsiGridSchema, GsiFieldVisualizers
import objects.components.types
import services
game_component_schema = GsiGridSchema(label='Game Component Info')
game_component_schema.add_field('current_game',
                                label='Current Game',
                                type=GsiFieldVisualizers.STRING)
game_component_schema.add_field('target_object',
                                label='Target Object',
                                type=GsiFieldVisualizers.STRING)
game_component_schema.add_field('number_of_players',
                                label='Number Of Players',
                                type=GsiFieldVisualizers.INT)
game_component_schema.add_field('winning_sims',
                                label='Winners',
                                type=GsiFieldVisualizers.STRING)
game_component_schema.add_field('joinable',
                                label='Joinable',
                                type=GsiFieldVisualizers.STRING)
game_component_schema.add_field('requires_setup',
                                label='Requires Setup',
                                type=GsiFieldVisualizers.STRING)
game_component_schema.add_field('game_over',
                                label='Game Over',
                                type=GsiFieldVisualizers.STRING)
game_component_schema.add_field('high_score',
                                label='High Score',
                                type=GsiFieldVisualizers.FLOAT)
game_component_schema.add_field('high_score_sim_ids',
def _get_sim_instance_by_id(sim_id):
    sim_info_manager = services.sim_info_manager()
    if sim_info_manager is not None:
        for sim_info in sim_info_manager.objects:
            while sim_id == sim_info.sim_id:
                return sim_info.get_sim_instance(allow_hidden_flags=ALL_HIDDEN_REASONS)

def _get_sim_info_by_id(sim_id):
    sim_info_manager = services.sim_info_manager()
    sim_info = None
    if sim_info_manager is not None:
        sim_info = sim_info_manager.get(sim_id)
    return sim_info

static_commodity = GsiGridSchema(label='Statistics/Static Commodities', sim_specific=True)
static_commodity.add_field('name', label='Name')

@GsiHandler('static_commodity_view', static_commodity)
def generate_sim_static_commodity_view_data(sim_id:int=None):
    stat_data = []
    cur_sim_info = _get_sim_info_by_id(sim_id)
    if cur_sim_info is not None:
        for stat in list(cur_sim_info.static_commodity_tracker):
            stat_data.append({'name': type(stat).__name__})
    return stat_data

def generate_all_commodities():
    return [cls.__name__ for cls in services.get_instance_manager(Types.STATISTIC).types.values() if issubclass(cls, statistics.commodity.Commodity)]

commodity_view_schema = GsiBarChartSchema(label='Statistics/Commodities', sim_specific=True)
            self.now = 'Unavailable'
        self.route_events = {}


def get_path_route_events_log(path, clear=False):
    if path.sim is not None:
        all_path_logs = setdefault_callable(path_events_archive, path.sim.id,
                                            dict)
        path_log = setdefault_callable(all_path_logs, id(path),
                                       PathRouteEventsArchiveGSILog)
        if clear:
            del path_events_archive[path.sim.id][id(path)]
        return path_log


route_event_archive_schema = GsiGridSchema(label='Route Event Archive',
                                           sim_specific=True)
route_event_archive_schema.add_field('game_time',
                                     label='GameTime',
                                     hidden=True)
route_event_archive_schema.add_field('path_type', label='Path Type', width=1)
route_event_archive_schema.add_field('duration',
                                     label='Duration',
                                     type=GsiFieldVisualizers.FLOAT,
                                     width=2)
route_event_archive_schema.add_field('path_id',
                                     label='Path Id',
                                     type=GsiFieldVisualizers.INT,
                                     width=2)
route_event_archive_schema.add_field('master_sim', label='Master Sim', width=2)
with route_event_archive_schema.add_has_many('Route Events',
                                             GsiGridSchema) as sub_schema:
from gsi_handlers.gameplay_archiver import GameplayArchiver
from gsi_handlers.gsi_utils import format_enum_name
from performance.performance_commands import get_sim_info_creation_sources
from sims4.gsi.schema import GsiGridSchema, GsiFieldVisualizers
import services
sim_info_lifetime_archive_schema = GsiGridSchema(
    label='Sim Info Lifetime Archive', sim_specific=False)
sim_info_lifetime_archive_schema.add_field('game_time',
                                           label='Game/Sim Time',
                                           type=GsiFieldVisualizers.TIME)
sim_info_lifetime_archive_schema.add_field('total_sim_info_count',
                                           label='Total Sim Infos',
                                           type=GsiFieldVisualizers.INT)
sim_info_lifetime_archive_schema.add_field('event_type',
                                           label='Event Type',
                                           type=GsiFieldVisualizers.STRING)
sim_info_lifetime_archive_schema.add_field('sim_id',
                                           label='Sim ID',
                                           type=GsiFieldVisualizers.INT)
sim_info_lifetime_archive_schema.add_field('sim_name',
                                           label='Sim Name',
                                           type=GsiFieldVisualizers.STRING)
sim_info_lifetime_archive_schema.add_field('creation_source',
                                           label='Creation Source',
                                           type=GsiFieldVisualizers.STRING)
sim_info_lifetime_archive_schema.add_field('situations',
                                           label='Situations',
                                           type=GsiFieldVisualizers.STRING)
sim_info_lifetime_archive_schema.add_field('household_id',
                                           label='Household Id',
                                           type=GsiFieldVisualizers.INT)
Esempio n. 11
0
from gsi_handlers.gameplay_archiver import GameplayArchiver
from sims4.gsi.schema import GsiGridSchema
import services
from services import venue_service
zone_director_schema = GsiGridSchema(label='Zone Director')
zone_director_schema.add_field('zone_director_type',
                               label='Zone Director Type')
zone_director_schema.add_field('zone_id', label='Zone Id')
zone_director_schema.add_field('op', label='Op')
zone_director_schema.add_field('neighborhood', label='Neighborhood')
zone_director_schema.add_field('lot_id', label='Lot Id')
zone_director_schema.add_field('active_venue', label='Venue')
zone_director_schema.add_field('source_venue', label='Source Venue')
with zone_director_schema.add_has_many('lot preparations',
                                       GsiGridSchema) as sub_schema:
    sub_schema.add_field('action', label='Action')
    sub_schema.add_field('description', label='Description')
with zone_director_schema.add_has_many('spawn objects',
                                       GsiGridSchema) as sub_schema:
    sub_schema.add_field('obj_id', label='Obj Id')
    sub_schema.add_field('obj_def', label='Obj Def')
    sub_schema.add_field('parent_id', label='Parent Id')
    sub_schema.add_field('position', label='Position')
    sub_schema.add_field('states', label='States')
with zone_director_schema.add_has_many('civic_policies',
                                       GsiGridSchema,
                                       label='Civic Policies') as sub_schema:
    sub_schema.add_field('civic_policy', label='Civic Policy')
    sub_schema.add_field('enacted', label='Enacted')
    sub_schema.add_field('votes', label='Votes')
archiver = GameplayArchiver('zone_director',
Esempio n. 12
0
            'filter_term': str(filter_term)
        })

    def add_metadata(self, num_sims, allow_instanced_sims, club,
                     blacklist_sims, optional):
        if len(blacklist_sims):
            blacklist_sims = str(blacklist_sims)
        else:
            blacklist_sims = None
        self.metadata = [
            num_sims, allow_instanced_sims,
            str(club), blacklist_sims, optional
        ]


sim_filter_service_archive_schema = GsiGridSchema(
    label='Sim Filter Service Archive')
sim_filter_service_archive_schema.add_field('game_time',
                                            label='Game Time',
                                            type=GsiFieldVisualizers.TIME)
sim_filter_service_archive_schema.add_field('source', label='Source', width=3)
sim_filter_service_archive_schema.add_field('request_type',
                                            label='Request Type')
sim_filter_service_archive_schema.add_field('yielding', label='Yielding')
sim_filter_service_archive_schema.add_field('matching_results',
                                            label='Num Matching',
                                            type=GsiFieldVisualizers.INT)
sim_filter_service_archive_schema.add_field('created_sims',
                                            label='Num Created',
                                            type=GsiFieldVisualizers.INT)
sim_filter_service_archive_schema.add_field('filter_type',
                                            label='Filter Type',
from performance.object_leak_tracker import NodeStatus
from sims4.gsi.dispatcher import GsiHandler
from sims4.gsi.schema import GsiGridSchema
import services
schema = GsiGridSchema(label='Object Leaks')
schema.add_field('status', label='Status')
schema.add_field('pid', label='Python Id', unique_field=True)
schema.add_field('pid_hex', label='Python Id (hex)')
schema.add_field('type', label='Type')
schema.add_field('old_manager', label='Old Manager')
schema.add_field('old_obj_id', label='Old Object Id')
with schema.add_has_many('history', GsiGridSchema) as sub_schema:
    sub_schema.add_field('status', label='Status')
    sub_schema.add_field('gc_pass', label='GC Pass')
    sub_schema.add_field('time', label='Time')
schema.add_view_cheat('mem.gc.collect', label='|mem.gc.collect')
with schema.add_view_cheat(
        'object_leak_tracker.dump_pid',
        label='|object_leak_tracker.dump_pid <python id>') as cheat:
    cheat.add_token_param('pid')


@GsiHandler('leaked_objects', schema)
def generate_data(*args, **kwargs):
    data = []
    tracker = services.get_object_leak_tracker()
    if tracker is None:
        return data
    for status in NodeStatus:
        for node in tracker.buckets[status]:
            node_data = {}
Esempio n. 14
0
from gsi_handlers.gameplay_archiver import GameplayArchiver
from sims4.gsi.schema import GsiGridSchema
import gsi_handlers
state_trigger_schema = GsiGridSchema(label='State Triggers/State Trigger Log')
state_trigger_schema.add_field('objId', label='Object Id', unique_field=True, width=1.2)
state_trigger_schema.add_field('def', label='Definition', width=2)
state_trigger_schema.add_field('parent', label='Parent', width=1.5)
state_trigger_schema.add_field('state', label='Trigger State', width=1.5)
state_trigger_schema.add_field('state_value', label='Trigger State Value', width=2)
state_trigger_schema.add_field('at_state', label='Triggered At State', width=2.5)
state_trigger_schema.add_field('at_states', label='At States', width=2.5)
state_trigger_schema.add_field('src', label='Source', width=1.3)
state_trigger_archiver = GameplayArchiver('StateTriggerLog', state_trigger_schema)

def archive_state_trigger(obj, triggered_state, at_state, at_states, source=''):
    archive_data = {'objId': hex(obj.id), 'def': obj.definition.name, 'state': str(triggered_state.state), 'state_value': str(triggered_state), 'at_state': str(at_state), 'at_states': str(at_states), 'src': source}
    if obj.parent is not None:
        archive_data['parent'] = gsi_handlers.gsi_utils.format_object_name(obj.parent)
    state_trigger_archiver.archive(data=archive_data)

timed_state_trigger_schema = GsiGridSchema(label='State Triggers/Timed State Trigger Log')
timed_state_trigger_schema.add_field('objId', label='Object Id', unique_field=True)
timed_state_trigger_schema.add_field('def', label='Definition', width=2)
timed_state_trigger_schema.add_field('state', label='Trigger State', width=2)
timed_state_trigger_schema.add_field('state_value', label='Trigger State Value', width=2)
timed_state_trigger_schema.add_field('at_state', label='At State', width=2)
timed_state_trigger_schema.add_field('trigger_time', label='Trigger Time')
timed_state_trigger_archiver = GameplayArchiver('TimedStateTriggerLog', timed_state_trigger_schema)

def archive_timed_state_trigger(obj, triggered_state, at_state, trigger_time):
    archive_data = {'objId': hex(obj.id), 'def': obj.definition.name, 'state': str(triggered_state.state), 'state_value': str(triggered_state), 'at_state': str(at_state), 'trigger_time': trigger_time}
Esempio n. 15
0
    'oddjob'
]


def drama_node_string_matches_filters(drama_node_string, filter_list):
    if filter_list is None:
        return True
    drama_node_string = drama_node_string.lower()
    if NONPICKERDRAMANODES_DRAMA_NODES_FILTER in filter_list and PICKER_DRAMA_NODE_SUBSTRING not in drama_node_string:
        return True
    elif any(a_filter in drama_node_string for a_filter in filter_list):
        return True
    return False


drama_schema = GsiGridSchema(label='Drama Nodes/Drama Scheduler')
drama_schema.add_field('drama_node_id',
                       label='Drama Node Id',
                       unique_field=True)
drama_schema.add_field('drama_node', label='Drama Node', width=3)
drama_schema.add_field('status', label='Status', width=3)
drama_schema.add_field('time_left', label='Time Left')
drama_schema.add_field('receiver_sim', label='Receiver Sim')
drama_schema.add_field('sender_sim', label='Sender Sim')
for filter_string in FILTER_STRINGS:
    drama_schema.add_filter(filter_string)


@GsiHandler('drama', drama_schema)
def generate_drama_scheduler_data(zone_id: int = None, filter=None):
    all_nodes = []
    schema.add_field('size', label='Size', width=0.5)
    schema.add_field('manager', label='Manager', width=1)
    schema.add_field('mask', label='Mask Override', width=1)
    schema.add_field('blockers', label='Blockers(Mgr:Obj:Mask)', width=2.5)
    schema.add_field('tags', label='Barriers(Tag:Mask)', width=1.75)
    schema.add_field('details', label='Message Details', width=5)
    schema.add_view_cheat('distributor.gsi.toggle_op_details',
                          label='Toggle Details')
    with schema.add_view_cheat('distributor.gsi.hide_op',
                               label='Hide Selected Type') as cheat:
        cheat.add_token_param('type')
    schema.add_view_cheat('distributor.gsi.show_all_ops',
                          label='Show All Types')


distributor_archive_schema = GsiGridSchema(label='Distributor Log')
_configure_distributor_schema(distributor_archive_schema)
archiver = GameplayArchiver('Distributor',
                            distributor_archive_schema,
                            max_records=250)
sim_distributor_archive_schema = GsiGridSchema(label='Distributor Log Sim',
                                               sim_specific=True)
_configure_distributor_schema(sim_distributor_archive_schema)
sim_archiver = GameplayArchiver('SimDistributor',
                                sim_distributor_archive_schema,
                                max_records=150)
with sims4.reload.protected(globals()):
    LOG_OP_DETAILS = False
    EXCLUDE_OP_TYPES = {
        DistributorOps_pb2.Operation.HEARTBEAT,
        DistributorOps_pb2.Operation.SET_GAME_TIME
Esempio n. 17
0
from sims4.gsi.dispatcher import GsiHandler
from sims4.gsi.schema import GsiGridSchema
import services
global_policy_archive_schema = GsiGridSchema(label='Global Policy Log',
                                             auto_refresh=True)
global_policy_archive_schema.add_field('policy', label='Global Policy')
global_policy_archive_schema.add_field('progress_value',
                                       label='Progress Value')
global_policy_archive_schema.add_field('decay_days', label='Decay Days')
global_policy_archive_schema.add_field('progress_state',
                                       label='Progress State')


@GsiHandler('global_policy_log', global_policy_archive_schema)
def generate_global_policy_data():
    policy_data = []
    for policy in services.global_policy_service().get_global_policies():
        entry = {
            'policy':
            repr(policy).split('sims4.tuning.instances.',
                               1)[1].split('object', 1)[0],
            'progress_value':
            str(policy.progress_value) + '/' + str(policy.progress_max_value),
            'decay_days':
            0 if policy.decay_handler is None
            or policy.decay_handler.when is None else
            str(policy.decay_handler.when - services.time_service().sim_now),
            'progress_state':
            str(policy.progress_state)
        }
        policy_data.append(entry)
Esempio n. 18
0
from gsi_handlers.gameplay_archiver import GameplayArchiver
from sims4.gsi.schema import GsiGridSchema
from sims4.log import generate_message_with_callstack
import services
gsi_dump_schema = GsiGridSchema(label='GSI Dump Log')
gsi_dump_schema.add_field('game_time', label='Game Time')
gsi_dump_schema.add_field('gsi_filename', label='Filename')
gsi_dump_schema.add_field('error_log_or_exception', label='Error', width=4)
gsi_dump_schema.add_field('callstack', label='Callstack', width=4)
gsi_dump_archiver = GameplayArchiver('gsi_dump_log', gsi_dump_schema, add_to_archive_enable_functions=True)

def archive_gsi_dump(filename_str, error_str):
    callstack = generate_message_with_callstack('GSI Dump')
    archive_data = {'game_time': str(services.time_service().sim_now), 'gsi_filename': filename_str, 'error_log_or_exception': error_str, 'callstack': callstack}
    gsi_dump_archiver.archive(data=archive_data)
Esempio n. 19
0
class SimFilterGSILoggingData:
    def __init__(self, request_type, sim_filter_type, gsi_source_fn):
        self.request_type = request_type
        self.sim_filter_type = sim_filter_type
        if gsi_source_fn is None:
            logger.warn(
                '{} filter request for {} did not specify a gsi_source_fn. Please make sure the filter request is provided with this argument.',
                request_type, sim_filter_type)
        self.gsi_source_fn = gsi_source_fn
        self.filters = {}

    def add_filter(self, filter_term, score):
        self.filters[filter_term] = score


sim_filter_archive_schema = GsiGridSchema(label='Sim Filter Archive',
                                          sim_specific=True)
sim_filter_archive_schema.add_field('sim_id',
                                    label='simID',
                                    type=GsiFieldVisualizers.INT,
                                    hidden=True)
sim_filter_archive_schema.add_field('source', label='Source', width=3)
sim_filter_archive_schema.add_field('request_type', label='Request Type')
sim_filter_archive_schema.add_field('filter_type',
                                    label='Filter Type',
                                    width=2.5)
sim_filter_archive_schema.add_field('rejected', label='Is Rejected', width=1)
sim_filter_archive_schema.add_field('reason', label='Reason', width=1)
with sim_filter_archive_schema.add_has_many('Filter Breakdown',
                                            GsiGridSchema) as sub_schema:
    sub_schema.add_field('filter', label='Filter', width=1)
    sub_schema.add_field('score', label='Score', width=1)
Esempio n. 20
0
import traceback
from gsi_handlers.gameplay_archiver import GameplayArchiver
from sims4.gsi.schema import GsiGridSchema, GsiFieldVisualizers
import routing
planner_archive_schema = GsiGridSchema(label='Path Planner Log')
planner_archive_schema.add_field('result', label='Result', width=2)
planner_archive_schema.add_field('planner_name', label='Source', width=2)
planner_archive_schema.add_field('planner_id', label='Planner ID', width=2, hidden=True)
planner_archive_schema.add_field('x', label='Start X', type=GsiFieldVisualizers.FLOAT, width=2)
planner_archive_schema.add_field('y', label='Start Y', type=GsiFieldVisualizers.FLOAT, width=2, hidden=True)
planner_archive_schema.add_field('z', label='Start Z', type=GsiFieldVisualizers.FLOAT, width=2)
planner_archive_schema.add_field('qx', label='Start QX', type=GsiFieldVisualizers.FLOAT, width=2, hidden=True)
planner_archive_schema.add_field('qy', label='Start QY', type=GsiFieldVisualizers.FLOAT, width=2, hidden=True)
planner_archive_schema.add_field('qz', label='Start QZ', type=GsiFieldVisualizers.FLOAT, width=2, hidden=True)
planner_archive_schema.add_field('qw', label='Start QW', type=GsiFieldVisualizers.FLOAT, width=2, hidden=True)
planner_archive_schema.add_field('level', label='Start Level', type=GsiFieldVisualizers.INT, width=2)
planner_archive_schema.add_field('ticks', label='Sleep Count', type=GsiFieldVisualizers.INT, width=2)
planner_archive_schema.add_field('time', label='Sleep Time ms', type=GsiFieldVisualizers.FLOAT, width=2)
planner_archive_schema.add_field('plan_time', label='Plan Time ms', type=GsiFieldVisualizers.FLOAT, width=2)
planner_archive_schema.add_field('dist', label='Distance', type=GsiFieldVisualizers.FLOAT, width=2)
planner_archive_schema.add_field('num_goals', label='Num Goals', type=GsiFieldVisualizers.INT, width=2)
planner_archive_schema.add_field('num_starts', label='Num Starts', type=GsiFieldVisualizers.INT, width=2)
planner_archive_schema.add_view_cheat('routing.serialize_pathplanner_data', label='Serialize Path Planner Data')
with planner_archive_schema.add_has_many('Goals', GsiGridSchema) as sub_schema:
    sub_schema.add_field('index', label='Index', type=GsiFieldVisualizers.INT, width=2)
    sub_schema.add_field('x', label='X', type=GsiFieldVisualizers.FLOAT, width=2)
    sub_schema.add_field('z', label='Z', type=GsiFieldVisualizers.FLOAT, width=2)
    sub_schema.add_field('level', label='Level', type=GsiFieldVisualizers.INT, width=2)
    sub_schema.add_field('cost', label='Cost', type=GsiFieldVisualizers.FLOAT, width=2)
    sub_schema.add_field('final_cost', label='Final Cost (lower==better)', type=GsiFieldVisualizers.FLOAT, width=2)
    sub_schema.add_field('result', label='Result', width=2)
from collections import namedtuple
from gsi_handlers.gameplay_archiver import GameplayArchiver
from sims4.gsi.schema import GsiGridSchema, GsiFieldVisualizers
import services

relationship_culling_archive_schema = GsiGridSchema(
    label='Relationship Culling Archive', sim_specific=False)
relationship_culling_archive_schema.add_field('game_time',
                                              label='Game/Sim Time',
                                              type=GsiFieldVisualizers.TIME)
relationship_culling_archive_schema.add_field('relationships_culled',
                                              label='Relationships Culled',
                                              type=GsiFieldVisualizers.INT)
with relationship_culling_archive_schema.add_has_many(
        'all_relationships', GsiGridSchema) as sub_schema:
    sub_schema.add_field('culled_status', label='Culled Status')
    sub_schema.add_field('culled_reason', label='Culled Reason')
    sub_schema.add_field('sim_info', label='Sim A')
    sub_schema.add_field('target_sim_info', label='Sim B')
    sub_schema.add_field('total_depth',
                         label='Total Depth',
                         type=GsiFieldVisualizers.INT,
                         width=0.2)
    sub_schema.add_field('rel_bits', label='Relationship Bits')
with relationship_culling_archive_schema.add_has_many(
        'not_culled_relationships', GsiGridSchema) as sub_schema:
    sub_schema.add_field('culled_status', label='Culled Status')
    sub_schema.add_field('culled_reason', label='Culled Reason')
    sub_schema.add_field('sim_info', label='Sim A')
    sub_schema.add_field('target_sim_info', label='Sim B')
    sub_schema.add_field('total_depth',
from display_snippet_tuning import Organization
from organizations.organization_enums import OrganizationStatusEnum
from sims4.gsi.dispatcher import GsiHandler
from sims4.gsi.schema import GsiGridSchema
import services
organization_schema = GsiGridSchema(label='Organizations', auto_refresh=False)
organization_schema.add_field('organization', label='Organization')
with organization_schema.add_has_many('active_members', GsiGridSchema, label='Active Members') as sub_schema:
    sub_schema.add_field('sim', label='Sim')
    sub_schema.add_field('progress', label='Progress')
    sub_schema.add_field('rank', label='Rank')
with organization_schema.add_has_many('inactive_members', GsiGridSchema, label='Inactive Members') as sub_schema:
    sub_schema.add_field('sim', label='Sim')
    sub_schema.add_field('progress', label='Progress')
    sub_schema.add_field('rank', label='Rank')

def get_organization_members(org_id, status_enum):
    organization_member_data = []
    organization_service = services.organization_service()
    if organization_service is None:
        return organization_member_data
    sim_info_manager = services.sim_info_manager()
    if sim_info_manager is None:
        return
    snippet_manager = services.snippet_manager()
    if snippet_manager is None:
        return
    progress_stat_type = snippet_manager.get(org_id).progress_statistic
    members_list = organization_service.get_organization_members(org_id)
    for member_id in members_list:
        sim_info = sim_info_manager.get(member_id)
from sims4.gsi.dispatcher import GsiHandler
from sims4.gsi.schema import GsiGridSchema, GsiFieldVisualizers
from tag import Tag
import services
schema = GsiGridSchema(label='Spawn Points')
schema.add_field('id',
                 label='id',
                 unique_field=True,
                 width=2,
                 type=GsiFieldVisualizers.STRING)
schema.add_field('name',
                 label='name',
                 type=GsiFieldVisualizers.STRING,
                 width=3)
schema.add_field('x', label='x', type=GsiFieldVisualizers.FLOAT, width=2)
schema.add_field('y', label='y', type=GsiFieldVisualizers.FLOAT, width=2)
schema.add_field('z', label='z', type=GsiFieldVisualizers.FLOAT, width=2)
schema.add_field('lot_id',
                 label='lot_id',
                 type=GsiFieldVisualizers.INT,
                 width=3)
schema.add_field('tags',
                 label='tags',
                 type=GsiFieldVisualizers.STRING,
                 width=4)
schema.add_view_cheat('debugvis.spawn_points.start',
                      label='Start Visualization')
schema.add_view_cheat('debugvis.spawn_points.stop', label='Stop Visualization')
with schema.add_cheat('camera.focus_on_position',
                      label='Focus',
                      dbl_click=True) as cheat:
Esempio n. 24
0
from gsi_handlers.gameplay_archiver import GameplayArchiver
from sims4.gsi.schema import GsiGridSchema, GsiFieldVisualizers

balloon_archive_schema = GsiGridSchema(label='Balloons', sim_specific=True)
balloon_archive_schema.add_field('sim', label='Sim', width=2)
balloon_archive_schema.add_field('interaction', label='Interaction', width=2)
balloon_archive_schema.add_field('balloon_type', label='Type', width=2)
balloon_archive_schema.add_field('icon', label='Icon', width=2)
balloon_archive_schema.add_field('balloon_category', label='Category', width=2)
balloon_archive_schema.add_field('weight',
                                 label='Weight',
                                 type=GsiFieldVisualizers.INT,
                                 width=1)
balloon_archive_schema.add_field('total_weight',
                                 label='Total Weight',
                                 type=GsiFieldVisualizers.INT,
                                 width=1)
with balloon_archive_schema.add_has_many('Considered',
                                         GsiGridSchema) as sub_schema:
    sub_schema.add_field('test_result', label='Test Result', width=2)
    sub_schema.add_field('balloon_type', label='Type', width=2)
    sub_schema.add_field('icon', label='Icon', width=2)
    sub_schema.add_field('weight',
                         label='Weight',
                         type=GsiFieldVisualizers.INT,
                         width=1)
    sub_schema.add_field('balloon_category', label='Category', width=2)
archiver = GameplayArchiver('balloon', balloon_archive_schema)


def archive_balloon_data(sim, interaction, result, icon, entries):
class InteractionArchiveGSILog:
    def __init__(self):
        self.clear_log()

    def clear_log(self):
        self.status = None
        self.exit_reason = None
        self.asms_and_actors = collections.defaultdict(dict)
        self.participants = []
        self.animation_data = []
        self.constraints = []
        self.exit_reasons = []
        self.cancel_callstack = []


interaction_archive_schema = GsiGridSchema(label='Interaction Archive (SI)',
                                           sim_specific=True)
interaction_archive_schema.add_field('game_time',
                                     label='GameTime',
                                     hidden=True)
interaction_archive_schema.add_field('archive_id', label='ID', hidden=True)
interaction_archive_schema.add_field('interaction_id',
                                     label='interaction ID',
                                     hidden=True)
interaction_archive_schema.add_field('sim_name',
                                     label='Sim Name',
                                     width=150,
                                     hidden=True)
interaction_archive_schema.add_field('interaction',
                                     label='Interaction',
                                     width=75)
interaction_archive_schema.add_field('target', label='Target', width=30)
Esempio n. 26
0
from sims.bills_enums import UtilityEndOfBillAction
from sims4.gsi.dispatcher import GsiHandler
from sims4.gsi.schema import GsiGridSchema, GsiFieldVisualizers
from sims4.resources import Types
from event_testing.resolver import SingleSimResolver
from gsi_handlers.gsi_utils import format_enum_name
from sims.bills import Bills
from sims.household_utilities.utility_types import Utilities
import services
import world.street
household_archive_schema = GsiGridSchema(label='Household Archive', sim_specific=False)
household_archive_schema.add_field('name', label='Name', type=GsiFieldVisualizers.STRING)
household_archive_schema.add_field('hidden', label='Hidden', type=GsiFieldVisualizers.STRING)
household_archive_schema.add_field('player', label='Player', type=GsiFieldVisualizers.STRING)
household_archive_schema.add_field('played', label='Played', type=GsiFieldVisualizers.STRING)
household_archive_schema.add_field('num_sims', label='Sim Count', type=GsiFieldVisualizers.INT)
household_archive_schema.add_field('region', label='World', type=GsiFieldVisualizers.STRING)
household_archive_schema.add_field('street', label='Street', type=GsiFieldVisualizers.STRING)
household_archive_schema.add_field('zone_name', label='Lot', type=GsiFieldVisualizers.STRING)
household_archive_schema.add_field('funds', label='Funds', type=GsiFieldVisualizers.INT)
household_archive_schema.add_field('net_worth', label='Net Worth', type=GsiFieldVisualizers.INT)
household_archive_schema.add_field('region_id', label='Region ID', type=GsiFieldVisualizers.INT)
household_archive_schema.add_field('home_zone_id', label='Home Zone ID', type=GsiFieldVisualizers.STRING)
household_archive_schema.add_field('household_id', label='Household ID', type=GsiFieldVisualizers.STRING, unique_field=True)
household_archive_schema.add_field('premade_household_id', label='Premade Household ID', type=GsiFieldVisualizers.STRING)
household_archive_schema.add_field('move_in_time', label='Home Zone Move In Time', type=GsiFieldVisualizers.STRING)
with household_archive_schema.add_has_many('sim_infos', GsiGridSchema) as sub_schema:
    sub_schema.add_field('sim_id', label='Sim_Id', type=GsiFieldVisualizers.INT)
    sub_schema.add_field('sim_name', label='Name', type=GsiFieldVisualizers.STRING)
    sub_schema.add_field('species', label='Species', type=GsiFieldVisualizers.STRING)
    sub_schema.add_field('gender', label='Gender', type=GsiFieldVisualizers.STRING)
Esempio n. 27
0
from gsi_handlers.gameplay_archiver import GameplayArchiver
from sims4.gsi.schema import GsiFieldVisualizers, GsiGridSchema
import gsi_handlers
import services
skill_change_log_archive_schema = GsiGridSchema(label='Skill Change Log', sim_specific=True)
skill_change_log_archive_schema.add_field('skill_name', label='Skill Name', width=3)
skill_change_log_archive_schema.add_field('current_game_time', label='Game Time', width=1.5)
skill_change_log_archive_schema.add_field('old_skill_value', label='Old Value', type=GsiFieldVisualizers.FLOAT)
skill_change_log_archive_schema.add_field('new_skill_value', label='New Value', type=GsiFieldVisualizers.FLOAT)
skill_change_log_archive_schema.add_field('new_level', label='New Level', type=GsiFieldVisualizers.INT)
skill_change_log_archive_schema.add_field('time_delta', label='Time Change', type=GsiFieldVisualizers.INT)
skill_change_log_archive_schema.add_field('skill_delta', label='Skill Per Min', type=GsiFieldVisualizers.INT)
skill_change_archiver = GameplayArchiver('skill_change_log', skill_change_log_archive_schema, add_to_archive_enable_functions=True)

def archive_skill_change(sim, skill, time_delta, old_skill_value, new_skill_value, new_level, last_update):
    if time_delta != 0:
        skill_per_time = (new_skill_value - old_skill_value)/time_delta
    else:
        skill_per_time = 0
    archive_data = {'skill_name': skill.skill_type.__name__, 'current_game_time': str(services.time_service().sim_now), 'old_skill_value': old_skill_value, 'new_skill_value': new_skill_value, 'new_level': new_level, 'time_delta': str(time_delta), 'skill_delta': skill_per_time}
    skill_change_archiver.archive(data=archive_data, object_id=sim.id)

environment_score_archive_schema = GsiGridSchema(label='Environment Score Log', sim_specific=True)
environment_score_archive_schema.add_field('primary_mood', label='Primary Mood')
environment_score_archive_schema.add_field('score', label='Total Mood Score', type=GsiFieldVisualizers.FLOAT)
environment_score_archive_schema.add_field('mood_commodity', label='Mood Commodity')
environment_score_archive_schema.add_field('negative_score', label='Total Negative Score', type=GsiFieldVisualizers.FLOAT)
environment_score_archive_schema.add_field('negative_commodity', label='Negative Commodity')
environment_score_archive_schema.add_field('positive_score', label='Total Positive Score', type=GsiFieldVisualizers.FLOAT)
environment_score_archive_schema.add_field('positive_commodity', label='Positive Commodity')
with environment_score_archive_schema.add_has_many('contributing_objects', GsiGridSchema, label='Contributing Objects') as sub_schema:
Esempio n. 28
0
from gsi_handlers.commodity_tracker_gsi_util import generate_data_from_commodity_tracker, create_schema_for_commodity_tracker
from sims4.gsi.dispatcher import GsiHandler
from sims4.gsi.schema import GsiGridSchema, GsiFieldVisualizers
import services
import sims4
import build_buy
lot_info_schema = GsiGridSchema(label='Lot Info', auto_refresh=False)
lot_info_schema.add_field('neighborhood',
                          label='Neighborhood',
                          unique_field=True)
lot_info_schema.add_field('cur_lot', label='Current Lot', width=0.4)
lot_info_schema.add_field('region_id',
                          label='Region ID',
                          type=GsiFieldVisualizers.INT,
                          width=0.5)
lot_info_schema.add_field('lot_desc_id',
                          label='Description ID',
                          type=GsiFieldVisualizers.INT,
                          width=0.5)
lot_info_schema.add_field('zone_id', label='Zone ID')
lot_info_schema.add_field('venue', label='Venue')
lot_info_schema.add_field('lot_name', label='Lot Name')
with lot_info_schema.add_has_many(
        'statistics', GsiGridSchema,
        label='Statistics (Current Lot Only)') as sub_schema:
    sub_schema.add_field('statistic', label='Statistic')
    sub_schema.add_field('value',
                         label='Statistic Value',
                         type=GsiFieldVisualizers.FLOAT,
                         width=0.5)
from gsi_handlers import gsi_utils
from gsi_handlers.gameplay_archiver import GameplayArchiver
from sims4.gsi.schema import GsiGridSchema, GsiFieldVisualizers
from uid import UniqueIdGenerator
import services
import sims4.reload
live_drag_schema = GsiGridSchema(label='Live Drag')
live_drag_schema.add_field('live_drag_id',
                           label='ID',
                           type=GsiFieldVisualizers.INT,
                           width=0.5)
live_drag_schema.add_field('live_drag_operation', label='Operation', width=1)
live_drag_schema.add_field('live_drag_message_type',
                           label='Message Type',
                           width=1)
live_drag_schema.add_field('live_drag_from_where', label='From', width=2)
live_drag_schema.add_field('live_drag_to_where', label='To', width=2)
live_drag_schema.add_field('live_drag_object', label='Object', width=2)
live_drag_schema.add_field('live_drag_object_id',
                           label='Object ID',
                           type=GsiFieldVisualizers.INT,
                           hidden=True)
live_drag_schema.add_field('live_drag_definition_id',
                           label='Definition ID',
                           type=GsiFieldVisualizers.INT,
                           hidden=True)
live_drag_schema.add_field('live_drag_status',
                           label='Can Live Drag',
                           type=GsiFieldVisualizers.STRING,
                           width=1)
live_drag_schema.add_field('live_drag_target', label='Drop Target', width=1)
from gsi_handlers.gameplay_archiver import GameplayArchiver
from sims4.gsi.dispatcher import GsiHandler
from sims4.gsi.schema import GsiFieldVisualizers, GsiGridSchema
import autonomy.autonomy_modes
import services
autonomy_archive_schema = GsiGridSchema(label='Autonomy Log',
                                        sim_specific=True)
autonomy_archive_schema.add_field('sim_name', label='Sim Name', width=2)
autonomy_archive_schema.add_field('result', label='Result', width=5)
autonomy_archive_schema.add_field('type', label='Type', width=2)
with autonomy_archive_schema.add_has_many('Affordances',
                                          GsiGridSchema) as sub_schema:
    sub_schema.add_field('affordance', label='Affordance', width=3)
    sub_schema.add_field('target', label='Target', width=2)
    sub_schema.add_field('affordance_status', label='Status', width=5)
    sub_schema.add_field('autonomy_stage', label='Stage', width=2)
    sub_schema.add_field('affordance_score',
                         label='Score',
                         type=GsiFieldVisualizers.FLOAT,
                         width=1)
    sub_schema.add_field('multitask_percentage',
                         label='Multitask %',
                         type=GsiFieldVisualizers.FLOAT,
                         width=1)
    sub_schema.add_field('scoring_priority', label='Scoring Priority', width=2)
    sub_schema.add_field('affordance_relevant_desires',
                         label='Relevant Desires',
                         width=4)
    sub_schema.add_field('affordance_details', label='Details', width=6)
with autonomy_archive_schema.add_has_many('Probability',
                                          GsiGridSchema) as sub_schema: