Forum Discussion

Richtofen1202's avatar
6 years ago

inject_to causes an last exception(SOLVED)

I am probably missing something obvious but I have this script and it's causing a last exception, I think I am injecting it correctly but I might be wrong


import sims.household_utilities.utilities_manager
import injector

@injector.inject_to(sims.household_utilities.utilities_manager, 'shut_off_utility')
def InterceptOffSwitch(original, self, utility, reason, **kwargs):
original(self, utility, reason, **kwargs)


this part causes a last exception as soon as I load a household, when I remove it I don't get any Le's, I want to add some code after the original EA code, but this alone, without me adding any of my code causes an exception

this is how the original EA method looks:

def shut_off_utility(self, utility, reason, tooltip=None, from_load=False):


What am i missing?

4 Replies

Replies have been turned off for this discussion
  • Hey. You're injecting into the wrong element, you need to inject into the "HouseholdUtilitiesManager" class.
    Sending the LE file would make it easy to point that out, if you could send it next time.
  • "TURBODRIVER;c-17248490" wrote:
    Hey. You're injecting into the wrong element, you need to inject into the "HouseholdUtilitiesManager" class.
    Sending the LE file would make it easy to point that out, if you could send it next time.


    So I think I am doing it right now, but I am still getting an exception

    @injector.inject_to(sims.household_utilities.utilities_manager.HouseholdUtilitiesManager, 'shut_off_utility')
    def InterceptOffSwitch(original, self, utility, reason, **kwargs):
    original(self, utility, reason, **kwargs)


    I am getting an "TypeError: InterceptOffSwitch() takes 4 positional arguments but 5 were given" last exception

    Here's the full exception
  • Try changing it to something like this instead to avoid problems with the function signature inconsistency.


    @injector.inject_to(sims.household_utilities.utilities_manager.HouseholdUtilitiesManager, 'shut_off_utility')
    def InterceptOffSwitch(original, self, *args, **kwargs):
    original(self, *args, **kwargs)

    utility = args
    reason = args


    If you're looking to override the arguments, try treating the "tooltip" argument not as a keyword argument. Or you can just change the values in the args variable.
  • "TURBODRIVER;c-17248757" wrote:
    Try changing it to something like this instead to avoid problems with the function signature inconsistency.


    @injector.inject_to(sims.household_utilities.utilities_manager.HouseholdUtilitiesManager, 'shut_off_utility')
    def InterceptOffSwitch(original, self, *args, **kwargs):
    original(self, *args, **kwargs)

    utility = args
    reason = args


    If you're looking to override the arguments, try treating the "tooltip" argument not as a keyword argument. Or you can just change the values in the args variable.


    This worked, thanks for the help :)

About The Sims 4 Mods & Custom Content

Find expert tips, troubleshooting help, tutorials for mods and custom content, and The Sims 4 patch files in our forum.14,419 PostsLatest Activity: 21 hours ago