FurryEskimo

  • Content Count

    348
  • Joined

  • Last visited

Community Reputation

43 Excellent

About FurryEskimo

  • Rank
    Senior Member
...

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Enable
  1. Figured it out. I needed to open the Spriter file in a .text format, then edit the values manually, in a way that the Spriter interface doesn't allow. I was able to change the size of the image files Spriter was willing to use.
  2. For context, my character's animation got some sprite files added, are now they're getting updated with larger sprites, but simply replacing the old files with the new ones doesn't work. The current sprites are the same dimensions are the default, so they seem to simply work. I'd like a little help understanding the instructions I was given regarding adding the larger sprites: "Overwrite the [old] pngs with the [new] pngs in the characters swap_body folder. Then, open both scmls and replace the width, length, and pivot values in the characters scml with the values of the [new]. Make sure not to skip or duplicate any file numbers; they gotta be 1-13(I think it was 13 lol) in order. " Thing is I don't see these sprites in the Spriter file, so I'm not sure how I'm expected to edit the values..
  3. Haven't had time to upload the mod, but here are the files in question. modinfo.lua modmain.lua
  4. @Monti18 Ok, I pulled out all the mode from the character's prefab, and while the mod doesn't crash, it doesn't appear to do anything either when R is pressed. GLOBAL.key_to_swim = GetModConfigData("key_to_swim") local function ToogleSwimming(inst) if inst.prefab ~= "wildchild" then --check if the character who called the function is your character, if not, they don't need to run this function return end if inst:HasTag("WILLING_TO_SWIM") then print("Not willing to swim.") inst:RemoveTag("WILLING_TO_SWIM") player.components.talker:Say("I don't feellike getting wet..") else print("Willing to swim.") inst:AddTag("WILLING_TO_SWIM") player.components.talker:Say("Time for a swim!") end end AddModRPCHandler("The Wild Child -Ver. 1.3.4.7","ToogleSwimming",ToogleSwimming) --inst.ToogleSwimming = ToogleSwimming { name = "key_to_swim", label = "Key to toggle Swim-Mode", hover = "Jump into the water, only when you want to.", options = { {description="A", data = 97}, {description="B", data = 98}, {description="C", data = 99}, {description="D", data = 100}, {description="E", data = 101}, {description="F", data = 102}, {description="G", data = 103}, {description="H", data = 104}, {description="I", data = 105}, {description="J", data = 106}, {description="K", data = 107}, {description="L", data = 108}, {description="M", data = 109}, {description="N", data = 110}, {description="O", data = 111}, {description="P", data = 112}, {description="Q", data = 113}, {description="R", data = 114}, {description="S", data = 115}, {description="T", data = 116}, {description="U", data = 117}, {description="V", data = 118}, {description="W", data = 119}, {description="X", data = 120}, {description="Y", data = 121}, {description="Z", data = 122}, {description="F1", data = 282}, {description="F2", data = 283}, {description="F3", data = 284}, {description="F4", data = 285}, {description="F5", data = 286}, {description="F6", data = 287}, {description="F7", data = 288}, {description="F8", data = 289}, {description="F9", data = 290}, {description="F10", data = 291}, {description="F11", data = 292}, {description="F12", data = 293}, {description="UP", data = 273}, {description="DOWN", data = 274}, {description="RIGHT", data = 275}, {description="LEFT", data = 276}, {description="PAGEUP", data = 280}, {description="PAGEDOWN", data = 281}, {description="0", data = 48}, {description="1", data = 49}, {description="2", data = 50}, {description="3", data = 51}, {description="4", data = 52}, {description="5", data = 53}, {description="6", data = 54}, {description="7", data = 55}, {description="8", data = 56}, {description="9", data = 57}, }, default = 114, --The R key }, I'll see what I can do about getting you access to the mod's current status.
  5. @Monti18 After some extensive testing, I'm fairly certain the issue is with: inst.ToogleSwimming = ToogleSwimming The mod seems to crash if that code is added to the character's Mast_PostInIt. Without that code however, nothing appears to happen at all when the key is pressed.. Ps- Sorry for the delay, the game weirded out and deleted my entire mod, so I had to use one of my backup copies and add back in a lot of code that was deleted..
  6. Great, thanks! I only had a little bit of time after work to type up all the code, and I guess I overlooked that. I'm late for work now, but I fixed the error and tested it. The server was able to load, and I could see the custom character, but the game crashed when I selected them. I haven't been able to review the error log yet, but I'll try and fix the code tonight.server_log_2021-06-08-06-22-59.txt
  7. @Monti18 Unfortunately it doesn't appear to be working yet. I've uploaded my error log. What I added to ModInfo: { name = "key_to_swim", label = "Key to toggle Swim-Mode", hover = "Jump into the water, only when you want to.", options = { {description="A", data = 97}, {description="B", data = 98}, {description="C", data = 99}, {description="D", data = 100}, {description="E", data = 101}, {description="F", data = 102}, {description="G", data = 103}, {description="H", data = 104}, {description="I", data = 105}, {description="J", data = 106}, {description="K", data = 107}, {description="L", data = 108}, {description="M", data = 109}, {description="N", data = 110}, {description="O", data = 111}, {description="P", data = 112}, {description="Q", data = 113}, {description="R", data = 114}, {description="S", data = 115}, {description="T", data = 116}, {description="U", data = 117}, {description="V", data = 118}, {description="W", data = 119}, {description="X", data = 120}, {description="Y", data = 121}, {description="Z", data = 122}, {description="F1", data = 282}, {description="F2", data = 283}, {description="F3", data = 284}, {description="F4", data = 285}, {description="F5", data = 286}, {description="F6", data = 287}, {description="F7", data = 288}, {description="F8", data = 289}, {description="F9", data = 290}, {description="F10", data = 291}, {description="F11", data = 292}, {description="F12", data = 293}, {description="UP", data = 273}, {description="DOWN", data = 274}, {description="RIGHT", data = 275}, {description="LEFT", data = 276}, {description="PAGEUP", data = 280}, {description="PAGEDOWN", data = 281}, {description="0", data = 48}, {description="1", data = 49}, {description="2", data = 50}, {description="3", data = 51}, {description="4", data = 52}, {description="5", data = 53}, {description="6", data = 54}, {description="7", data = 55}, {description="8", data = 56}, {description="9", data = 57}, }, default = 114, -- R key }, What I added to ModMain: --Toggle swimming ability local function WILL_SWIM (player) if player.WILL_SWIM and not player:HasTag("playerghost") then --Note: I think I edited this incorrectly, and likely broke a key component of the code. player:WILL_SWIM(player) end end AddModRPCHandler("The Wild Child -Ver. 1.3.4.7","WILL_SWIM ",WILL_SWIM ) SendModRPCToServer(MOD_RPC["The Wild Child -Ver. 1.3.4.7]["WILL_SWIM "]) What I added to the character's Master_PostInIt: inst.WILL_SWIM = WILL_SWIM --Used to help toggle the swimming ability. What added to the character's PreFab: (Nothing yet) server_log_2021-06-07-19-04-52.txt
  8. @Monti18 Thanks! I’ll give this a try tonight, once I’m out of work. I have a character who can dump into and out of the water, but some people have said it can be frustrating, since it happens automatically once you stand next to the shore. I figured I’d add/remove a tag that would allow/prevent the player entering the water.
  9. @Monti18 This is in ModInfo: configuration_options = { { name = "key_to_swim", label = "Key to toggle Swim-Mode", hover = "Jump into the water, only when you want to.", options = { {description="A", data = 97}, {description="B", data = 98}, {description="C", data = 99}, {description="D", data = 100}, {description="E", data = 101}, {description="F", data = 102}, {description="G", data = 103}, {description="H", data = 104}, {description="I", data = 105}, {description="J", data = 106}, {description="K", data = 107}, {description="L", data = 108}, {description="M", data = 109}, {description="N", data = 110}, {description="O", data = 111}, {description="P", data = 112}, {description="Q", data = 113}, {description="R", data = 114}, {description="S", data = 115}, {description="T", data = 116}, {description="U", data = 117}, {description="V", data = 118}, {description="W", data = 119}, {description="X", data = 120}, {description="Y", data = 121}, {description="Z", data = 122}, {description="F1", data = 282}, {description="F2", data = 283}, {description="F3", data = 284}, {description="F4", data = 285}, {description="F5", data = 286}, {description="F6", data = 287}, {description="F7", data = 288}, {description="F8", data = 289}, {description="F9", data = 290}, {description="F10", data = 291}, {description="F11", data = 292}, {description="F12", data = 293}, {description="UP", data = 273}, {description="DOWN", data = 274}, {description="RIGHT", data = 275}, {description="LEFT", data = 276}, {description="PAGEUP", data = 280}, {description="PAGEDOWN", data = 281}, {description="0", data = 48}, {description="1", data = 49}, {description="2", data = 50}, {description="3", data = 51}, {description="4", data = 52}, {description="5", data = 53}, {description="6", data = 54}, {description="7", data = 55}, {description="8", data = 56}, {description="9", data = 57}, }, default = 114, -- R key }, } These are in ModMain: -- Tail bundle ability local function ___UNKNOWN___(player) if player.WILL_SWIM and not player:HasTag("playerghost") then --Note: I think I edited this incorrectly, and likely broke a key component of the code. player:WILL_SWIM(player) end end GLOBAL.TheInput:AddKeyDownHandler(GetModConfigData("key_to_swim", true), function() if not GLOBAL.ThePlayer or GLOBAL.ThePlayer.prefab ~= "CHARACTER'S_PREFAB_NAME" or GLOBAL.TheFrontEnd:GetActiveScreen() ~= GLOBAL.ThePlayer.HUD then return end if GLOBAL.TheNet:GetIsServer() then widgette_bundle(GLOBAL.ThePlayer) else SendModRPCToServer(MOD_RPC[modname]["___UNKNOWN___"]) --I don't know what this is for or how it works. end end) In the character's Master_PostInIt: -- Swim Mode inst.SwimMode = SwimMode --Note: I believe I no longer use this variable, and should not include it. In the character's PreFab: local function DoBundle(inst) if inst:HasTag("WILLING_TO_SWIM") then WILL_NOT_SWIM(inst) else inst:HasTag("WILLING_TO_SWIM") = true WILL_SWIM(inst) end end local function onbecameghost(inst) if inst:HasTag("WILLING_TO_SWIM") then WILL_NOT_SWIM(inst) end end local function WILL_SWIM(inst) inst:AddTag("WILLING_TO_SWIM") player.components.talker:Say("Time for a swim!") end local function WILL_NOT_SWIM(inst) inst:RemoveTag("WILLING_TO_SWIM") player.components.talker:Say("I don't feellike getting wet..") end Thoughts?
  10. @Monti18 Ahh, ok, thanks! So to do this, I'd declare a button value (similar to how they did probably), and use AddKeyDownHandler to make a function run when a specific character/player pressed that key, right? It's still kind of complex, for such a simple action.. Do you know how this might look if I wanted to add/remove a Tag from a character? (I'm willing to wager a guess, but figured I should ask before spamming my currently ignorant code..)
  11. I'd like an ability on a charter to turn on/off when I press a key. I've seen mods that have such an ability, but don't understand how it works in the code. Here's a mod where pressing R causes them to go into a 'bundle'. https://steamcommunity.com/sharedfiles/filedetails/?id=699268081 In the configurable options, they set the key: configuration_options = { { name = "key_bundle", label = "Tail Wrap Key", hover = "Key binding for bundling in tails.", options = { {description="TAB", data = 9}, {description="KP_PERIOD", data = 266}, {description="KP_DIVIDE", data = 267}, {description="KP_MULTIPLY", data = 268}, {description="KP_MINUS", data = 269}, {description="KP_PLUS", data = 270}, {description="KP_ENTER", data = 271}, {description="KP_EQUALS", data = 272}, {description="MINUS", data = 45}, {description="EQUALS", data = 61}, {description="SPACE", data = 32}, {description="ENTER", data = 13}, {description="ESCAPE", data = 27}, {description="HOME", data = 278}, {description="INSERT", data = 277}, {description="DELETE", data = 127}, {description="END", data = 279}, {description="PAUSE", data = 19}, {description="PRINT", data = 316}, {description="CAPSLOCK", data = 301}, {description="SCROLLOCK", data = 302}, {description="RSHIFT", data = 303}, -- use SHIFT instead {description="LSHIFT", data = 304}, -- use SHIFT instead {description="RCTRL", data = 305}, -- use CTRL instead {description="LCTRL", data = 306}, -- use CTRL instead {description="RALT", data = 307}, -- use ALT instead {description="LALT", data = 308}, -- use ALT instead {description="ALT", data = 400}, {description="CTRL", data = 401}, {description="SHIFT", data = 402}, {description="BACKSPACE", data = 8}, {description="PERIOD", data = 46}, {description="SLASH", data = 47}, {description="LEFTBRACKET", data = 91}, {description="BACKSLASH", data = 92}, {description="RIGHTBRACKET", data = 93}, {description="TILDE", data = 96}, {description="A", data = 97}, {description="B", data = 98}, {description="C", data = 99}, {description="D", data = 100}, {description="E", data = 101}, {description="F", data = 102}, {description="G", data = 103}, {description="H", data = 104}, {description="I", data = 105}, {description="J", data = 106}, {description="K", data = 107}, {description="L", data = 108}, {description="M", data = 109}, {description="N", data = 110}, {description="O", data = 111}, {description="P", data = 112}, {description="Q", data = 113}, {description="R", data = 114}, {description="S", data = 115}, {description="T", data = 116}, {description="U", data = 117}, {description="V", data = 118}, {description="W", data = 119}, {description="X", data = 120}, {description="Y", data = 121}, {description="Z", data = 122}, {description="F1", data = 282}, {description="F2", data = 283}, {description="F3", data = 284}, {description="F4", data = 285}, {description="F5", data = 286}, {description="F6", data = 287}, {description="F7", data = 288}, {description="F8", data = 289}, {description="F9", data = 290}, {description="F10", data = 291}, {description="F11", data = 292}, {description="F12", data = 293}, {description="UP", data = 273}, {description="DOWN", data = 274}, {description="RIGHT", data = 275}, {description="LEFT", data = 276}, {description="PAGEUP", data = 280}, {description="PAGEDOWN", data = 281}, {description="0", data = 48}, {description="1", data = 49}, {description="2", data = 50}, {description="3", data = 51}, {description="4", data = 52}, {description="5", data = 53}, {description="6", data = 54}, {description="7", data = 55}, {description="8", data = 56}, {description="9", data = 57}, }, default = 114, -- R key }, } Which shows up in ModMain: -- Tail bundle ability local function widgette_bundle(player) if player.DoBundle and not player:HasTag("playerghost") then player:DoBundle(player) end end AddModRPCHandler(modname, "widgette_bundle", widgette_bundle) GLOBAL.TheInput:AddKeyDownHandler(GetModConfigData("key_bundle", true), function() if not GLOBAL.ThePlayer or GLOBAL.ThePlayer.prefab ~= "widgette" or GLOBAL.TheFrontEnd:GetActiveScreen() ~= GLOBAL.ThePlayer.HUD then return end if GLOBAL.TheNet:GetIsServer() then widgette_bundle(GLOBAL.ThePlayer) else SendModRPCToServer(MOD_RPC[modname]["widgette_bundle"]) end end) In the master_postinit: -- Tail bundle inst.DoBundle = DoBundle -- Re-override bundle when equipping/unequipping local inventory = inst.components.inventory local Equip_prev = inventory.Equip function inventory:Equip(item, ...) local equipped = Equip_prev(self, item, ...) if equipped and inst.isbundled then local equipslot = item.components.equippable.equipslot if equipslot == EQUIPSLOTS.BODY or equipslot == EQUIPSLOTS.NECK or equipslot == EQUIPSLOTS.BACK then inst.AnimState:OverrideSymbol("swap_body", "widgette_bundle", "swap_body") end end return equipped end local Unequip_prev = inventory.Unequip function inventory:Unequip(equipslot, ...) local item = Unequip_prev(self, equipslot, ...) if inst.isbundled and (equipslot == EQUIPSLOTS.BODY or equipslot == EQUIPSLOTS.NECK or equipslot == EQUIPSLOTS.BACK) then inst.AnimState:OverrideSymbol("swap_body", "widgette_bundle", "swap_body") end return item end And elsewhere in their character's PreFab file: local WIDGETTE_BUNDLE_SANITY_RATE = 2.5/TUNING.SEG_TIME local WIDGETTE_BUNDLE_INSULATION = 30 local WIDGETTE_BUNDLE_SPEED_MULT = 0.6 local assets = { Asset("SCRIPT", "scripts/prefabs/player_common.lua"), Asset( "ANIM", "anim/widgette_bundle.zip" ), } local function OnBundle(inst) inst.AnimState:OverrideSymbol("swap_body", "widgette_bundle", "swap_body") inst.AnimState:Hide("tail") inst.components.sanity.dapperness = WIDGETTE_BUNDLE_SANITY_RATE inst.components.locomotor:SetExternalSpeedMultiplier(inst, "widgette_speed_mod", WIDGETTE_BUNDLE_SPEED_MULT) inst.components.temperature.inherentinsulation = WIDGETTE_BUNDLE_INSULATION end local function OnUnbundle(inst) inst.AnimState:ClearOverrideSymbol("swap_body") inst.AnimState:Show("tail") -- Restore equipped torso item local equippeditem = inst.components.inventory:GetEquippedItem(EQUIPSLOTS.BODY) or (EQUIPSLOTS.BACK and inst.components.inventory:GetEquippedItem(EQUIPSLOTS.BACK)) or (EQUIPSLOTS.NECK and inst.components.inventory:GetEquippedItem(EQUIPSLOTS.NECK)) if equippeditem then if equippeditem.components.equippable.onunequipfn then equippeditem.components.equippable.onunequipfn(equippeditem, inst) end if equippeditem.components.equippable.onequipfn then equippeditem.components.equippable.onequipfn(equippeditem, inst) end end inst.components.sanity.dapperness = 0 inst.components.locomotor:RemoveExternalSpeedMultiplier(inst, "widgette_speed_mod") inst.components.temperature.inherentinsulation = 0 end local function DoBundle(inst) if inst.isbundled then inst.isbundled = false OnUnbundle(inst) else inst.isbundled = true OnBundle(inst) end end local function onbecameghost(inst) if inst.isbundled then inst.isbundled = false OnUnbundle(inst) end end Most of this isn't too complex, but I don't understand the simple act of getting the game to detect when a key was pressed.
  12. @Gleenus Ah.. Well that’s sort of a bummer.. So Swap_Face isn’t recommended, and Hair_Front is broken? I was trying to give my character hair, and little ears that wiggle underneath. I put the ears on the hair layer, and was trying to put the hair on a layer above that, but I’m not having much luck. I suppose I could try putting the ears on the face layer, but idk if that will work.
  13. @Gleenus Oh, so I’ve done something wrong? It appeared to finally be working.. Is this the Extended Sample Character Template you’re referring to? Based on the video, it doesn’t include Swap_Face, which is what I needed..
  14. @CarlZalph I've tried that, but the anim file fails to generate. This is the default lantern_overlay-0 And the transparent version I generated that causes the anim file not to generate. Admittedly it's unusual that the original transparent color appears black, while mine appears to be white, but both are transparent, so I'm not sure what the issue is. Update: I'm testing a new method, and it seems to be working. I'm replacing the sprites I want removed with this file:
  15. There are a few character animation templates available (which is very helpful) but how to we remove sprites from these files? This one was recommended to me, but it has many sprites I don't need. I've been trying to figure this out, but so far nothing has worked. Mostly I want a basic character, with hair and swap_face. Hair_front would have been nice, but some of it's animations appear to be broken: