#archived-modding-development

1 messages · Page 474 of 1

jade willow
#
            ModHooks.Instance.AfterAttackHook += OnAfterAttack;```
rain cedar
#

Alright yeah just checked it isn't the wrong order

jade willow
#

omg

spare rover
#

Okay I figured it out

jade willow
#

oniro figured it out

#

maybe

spare rover
#

So it seems that for some reason the example had the nail damage = to temp, even before setting it any value. So it was setting it to 0

nimble lake
#

i can't seem to be able to compile multiplayer client

jade willow
#

basically I would need to never miss an enemy for the behaviour to work as intended, but by setting it earlier it might work since it was set

#

critical hit still does not work

#

The mod does mention
"PlayerData.instance.nailDamage = (int)Math.Round(_tempNailDamage * GlobalSettings.CritMultiplier)"

#

GlobalSettings
but my CritMultiplayer is instead in its own GlobalModSettings which extends IModSettings

#

would that be an issue or is this the correct implementation of a mod setting?

rain cedar
#

Yeah that should be fine

#

The structure of that example mod is just bad is all

#

The "AfterAttack" is still before the nail actually hits

jade willow
#

ah I see, would you have a nice dummy mod to use as reference to get to learn the proper structure to use?

rain cedar
#

It's just after all the logic

#

Here's the simplest mod I have in my code folder

public class InvincibilityMod : Mod, ITogglableMod
{
    public override void Initialize()
    {
        ModHooks.Instance.HeroUpdateHook += MakeInvincible;
    }

    private void MakeInvincible()
    {
        if (PlayerData.instance != null)
        {
            PlayerData.instance.isInvincible = true;
        }
    }

    public void Unload()
    {
        ModHooks.Instance.HeroUpdateHook -= MakeInvincible;

        if (PlayerData.instance != null)
        {
            PlayerData.instance.isInvincible = false;
        }
    }
}
#

Probably too simple

jade willow
#

so the damage would never be critical since I am setting the damage value back to its tempValue before the damage actually occurred, right?

rain cedar
#

Yeah

jade willow
#

What would be the proper way to implement this example mod then?

rain cedar
#

Probably best to remove the AfterAttack hook and recalculate proper nail damage every time in the other hook

jade willow
#

Ah makes sense

rain cedar
#

Then in the before save hook you can restore nail damage

#

So increased damage doesn't end up staying after uninstalling

fair rampart
#

just realized that the newest customknight creates a shield.png in your streaming assets folder pepogrub

jade willow
#

sounds good for sanity, I feel like I implemented it completely wrong, but here's what I did

        {
            PlayerData.instance.nailDamage = _tempNailDamage;
            PlayMakerFSM.BroadcastEvent("UPDATE NAIL DAMAGE");
            
            LogDebug("Attacking");
            if (_hitCounter >= GlobalSettings.CritCounter){
                Settings.TotalCrits++; // For fun, lets track the total number of crits we have done so far this game.  

                LogDebug("Critical hit!");

                LogDebug("Set _tempNailDamage to " + _tempNailDamage);

                PlayerData.instance.nailDamage = (int)Math.Round(_tempNailDamage * GlobalSettings.CritMultiplier); //Increase Nail Damage by the crit multiplier then round to the nearest int.
                PlayMakerFSM.BroadcastEvent("UPDATE NAIL DAMAGE");
                _hitCounter = 0;// reset our hit counter

                return;
            }
            _hitCounter++; //Increase the hit counter
        }```
#

Now my main fear is that if the damage value changes (i.e.: player increases his nail damage at the blacksmith) my tempNailDamage will no longer be relevant

#

just realize my second-to-last line doesn't do anything

#

it worked :D

rain cedar
#

Yeah instead of _tempNailDamage you should use

5 + PlayerData.instance.nailUpgrades * 4```
copper nacelle
#

could modify the nailslash component

rain cedar
#

More effort

copper nacelle
#

true

jade willow
#

Now it just does a sort of weird backward effect when you look at the numbers through debug where it sets my damage value to the double of its base value after critical hit has occurred and is then set back to its default on the next attack

#

is there a hook to check when damage has been dealt?

rain cedar
#

Yeah HitInstanceHook I think

#

Something similar to that

jade willow
#

Oh and also this also counts any attack towards the crit so hitting nothing also increases my hit counter so I should probably use the SlashHitHook instead

#

but that also counts decoration elements

#

so I'd need to check what was hit?

rain cedar
#

You could try that way yeah

jade willow
#

now to figure out how to return what was hit to only increment my value when an enemy is hit. I guess I'd need to know more about how the game was structured now

rain cedar
#

It's generally ok to assume anything with a HealthManager component is an enemy

#

And stuff without it isn't

#

There's exceptions but not a ton

#

There's also an enemies layer but I have no idea how useful checking that is

vocal spire
#

Does anyone have or know a way to get the Hive knight spritesheet?

unborn badger
vocal spire
#

ok

copper nacelle
#

seanprcore

jade willow
#

How would I make sure that I'm hitting something that has a HealthManager component?

floral furnace
#

gameObjectOfTheShitIHit.GetComponent<HealthManager>() != null

jade willow
#

Oh that's probably what's contained in HitInst

#

ah no it's a HitInstance, but there's probably a way to get there from that

floral furnace
#

HitInstance is the stuff it sends to the HealthManager's Hit() method to do damage

#

youre gonna need to get the component of the actual enemy you hit

jade willow
#

that makes sense when I read it but then I look at the code and I have no clue where to look for that

floral furnace
#

can i ask what youre trying to do again

jade willow
#

I was trying to make the default example3 script work

#

just realized I was trying to do that in the wrong function

#

okay its slowly starting to make sense :D Thanks for all the help

cursive crane
#

am I the only one who spies on this channel without knowing anything about coding

vocal spire
#

I used to

floral furnace
#

Start coding, be one of us, one of us, one of us 🙂

drifting leaf
#

I started learning python but the stuff you all are doing here seems so far away...

floral furnace
#

Once youre decent with a language, learning others is way way faster

cursive crane
#

I tried watching a c++ 9 hour long tutorial but just got bored

vocal spire
#

Now we come to my problem, I did not learn a single coding language before I started coding anything

floral furnace
#

Watching without applying isnt gonna get you far imo

cursive crane
#

I was following along but it was just eehhh

floral furnace
#

Fair enough yeah

fair rampart
#

alright so it takes like 10 seconds to send all the sprite data for the main sprite sheet

#

and changing the texture for the local player changes your own texture as well

#

at least now I know how to steal skins

vocal spire
#

yay

patent zealot
#

First

vocal spire
#

ok

patent zealot
#

It keeps the hive knight but in a new suit of armour theme

vocal spire
#

that makes it easier because I already made the spritesheet for that

drifting leaf
#

Hive Sans

vocal spire
#

no that should be something different

#

mabe zote sans

#

Gray prince SANS

drifting leaf
#

I hope no one makes that

vocal spire
#

me too

drifting leaf
#

But if they do I want to hear about it

vocal spire
#

same

leaden hedge
#

you should probably make it more in line with other joni/lifeblood items

drifting leaf
fair rampart
#

@fair rampart what if you compress it ? 12mb seems like a lot for a texture

leaden hedge
#

its 4k by 4k

#

and pngs are already compressed

fair rampart
#

every method I've tried to implement skins has resulted in either neither player's skin changing, or both players' skins changing at once

leaden hedge
#

you need to make a new material

#

and apply it to the other players sprites

#

materials share textures

fair rampart
#

when I tried that it didn't change the other player's sprite

#
var mat = new Material(Shader.Find("Sprites/Default-ColorFlash"));
mat.mainTexture = knightTex;
Players[client].gameObject.GetComponent<tk2dSpriteAnimator>().GetClipByName("Idle").frames[0].spriteCollection.spriteDefinitions[0].material = mat;```
flat forum
#

@vocal spire last one best imo

kindred grove
#

I don even know how do you change sprites @vocal spire

vocal spire
#

I might use all of them and allow them to be swapped in the global saves

fair rampart
#

@jolly oriole Are you sure? The knight's go hierarchy indicates that it only has a tk2dSprite and tk2dSpriteAnimator

#

I can only seem to change both players' textures or neither

#

setting mainTexture on the spriteDefinition's material obviously changes both textures but setting the material itself doesn't appear to do anything

jade willow
#

Hello everyone, I would like to know if the AfterAttackHook occurs before or after the damage has been done to the enemy (so far it seems like my code's logic is working but the damage is never applied)

#

I think it also occurs after the SlashHitHook but I may be wrong...

#

ah... I think that's what's happening

#

So in order it's definitely something like

  1. SlashHitHook
  2. AfterAttackHook
  3. Actual Damage dealt
  4. HitInstance

does that make sense?

#

huh so that's odd now instead of changing the nail damage it looks like I am changing the "flat" next to it, but not the actual damage output somehow

#

oh I just realized

#

for some reason whenever I do end up increasing my damage, the HitInstance does not occur

#

oh no, it's not that it does not occur, it's just that the damage is reset before it could be applied at all?

solemn rivet
#

what exactly are you doing?

#

use dnspy to check the code and see the method calls

jade willow
#

Haven't looked into dnspy yet, I'll have to give that a go

Started from using the ExampleMod3 from the github stuff to get started, realized I wanted the critical effect to only be counted when the player hits an enemy (so this way you can't hit nothing 3 times and deal critical damage on the next attack)

The whole idea is to have the critical hit occur every 4 hits so I used the SlashHitHook and checked its "otherCollider" param to check if what I'm hitting contains a "HealthManager"
so far so good, this part of the code only runs when I hit an enemy

#

But then what occurs is that by reading my bit of code and checking my log file, on the first 3 hits, the damage dealt is the base damage, on the 4th hit I change the damage to be the double from that (so 5 -> 10) on the next SlashHit I stored a variable that detects that the last hit was critical which returns the damage to its base value (did this to make sure I wouldn't accidentally set the damage before the damage could be dealt)

#

but the hitInstance returns that I dealt 5 damage instead of 10

#

so my take is that changing the damage value in SlashHit might be too late to change the damage value?

#

or I may be doing something wrong

jade willow
#

Okay with a little break I think I figured out that SlashHit is not the hook I want to use to change the damage

#

But it does give me what I need to increment the amount of hits

#

So I'd need to pair it with another hook to set up the damage and only update it after/before the damage has a chance to be applied

fair rampart
jade willow
#

what's up with that?

fair rampart
patent zealot
#

where did u get the jojo skin from before btw

#

is it in the drive

fair rampart
#

no

patent zealot
#

O

nimble lake
#

it's sakiro skin iirc

#

and it's like the best one

patent zealot
#

alright

vocal spire
#

I made a mod for hive knight, but whenever I quit to the main menu, the hollow knight logo appears in the middle of the screen and I can't do anything

#

can I have some help?

copper nacelle
#

null reference exception

#

perhaps on a call using game manager

#

check the output log

#

or get qol and check modlog

vocal spire
#

ok

gilded lotus
#

yeah rough outline

#

just the general shape

vocal spire
#

Looks good

gilded lotus
#

oh yeah, i had envisioned clockwise

gilded lotus
#

damn that's evil, i love it

#

so casuals can go get the double jump but speed runners will just pogo the inside route

#

that looks like enough room honestly

#

saw hitboxes are a bit wack

#

ill test it if you want

unborn badger
remote zealot
unborn badger
#

can't you use like mega

gilded lotus
unborn badger
#

you could do that too

spare rover
#

Jesus I just got ptsd looking at those saw blades...I can't wait!

gilded lotus
#

make sure you implement my other idea too FeelsPKMan

#

not sadistic at all

spare rover
#

Oh I mistook the Hornet web for a blade, my bad

gilded lotus
#

yeah

remote zealot
#

It looks painful already

gilded lotus
#

ii just want a harder pop tbh

patent zealot
#

Grenade we want pixel perfect holes tho

#

Pixel perfect parkour?

safe hamlet
#

gamer walljumps

#

yea i speedrun

gilded lotus
#

idk what you mean btw, would have to see it

nimble lake
#

i used to spedran in the past.

gilded lotus
#

oh those dont really have a name

fair rampart
patent zealot
#

Did both sides have the same skin

fair rampart
#

no, only on the player who joined

#

the recorded side doesn't even have customknight installed

gilded lotus
#

you could make it an up and down motion saw if you want it to be easier

patent zealot
#

Ah ok

fair rampart
#

I should cache the byte array of the texture in like StreamingAssets so it doesn't take that long to load every time a player is spawned

patent zealot
#

Gl

vocal spire
#

I think I will update it with one last feature tomorrow because I am tired

#

Anyway the battle starts with hive knight having much more health, and as you progress, he summons some minions

gilded lotus
remote zealot
gilded lotus
#

yeah 5k hp is a doozy

solemn basin
#

It was 5k? I knew it felt like a lot but didn't know it was that high.

vocal spire
#

I will it tomorrow with a couple other changes

solemn basin
#

All good, sleep well then!

gilded lotus
solemn basin
#

Weird, mine didn't have the spikes/bees until the very end.

remote zealot
#

I didn't get any spike balls or bees either

gilded lotus
#

im on ascended

remote zealot
#

Oh I see

solemn basin
#

The minions are definitely a good touch to make it more chaotic.

#

I suggested lower health, have the spikes/bee vomit up from the get-go, make him a bit faster, and shorten/remove the stagger. Maybe make one of those bee minions immortal (or a high enough health to effectively be immortal) to make it more interesting. But the concept itself is good.

leaden hedge
#

it could be cool to incorporate lifeblood into the fight

#

like you kill minions to get lifeblood

#

that you need to tank forced hits

solemn basin
#

That's a neat idea.

unborn badger
#

yeah that sounds fun

#

damn kt i thought you were anti-gimmick

leaden hedge
#

gimmicks are good when i invent them

flat forum
#

oh heck

lapis stratus
#

@unborn flicker Does the Rando 3 mod do something that affects NewGameHook? I can't seem to get a method set up with it to fire off when I have Rando active

copper nacelle
#

Maybe the randomized start location

patent zealot
#

I gotta do that radiant, looks un

unborn flicker
#

Yeah, it starts in godmaster mode instead of normal mode

fair rampart
#

I wonder if since there's an EnemyHitEffectsInfected that there's gonna be an EnemyHitEffectsCursed in SS

floral furnace
#

or they get lazy and leave that stuff again

fair rampart
#

I hope more than 256 players aren't gonna be on the server at once cause I changed the player ids from an int to a byte to maximize fragment size

#

up from 4064 B to 4093 B of texture data

nimble lake
#

why are there so many duplicates of some players?

#

or at least, last time i checked

median halo
#

It happens sometime when you disconnect then reconnect quickly

fair rampart
#

@fair rampart the server can cheat and shard the player IDs by scene, and you don't want more than 256 players by scene anyway

#

@nimble lake a bug on my server where disconnects are not handled correctly

nimble lake
#

i see

lapis stratus
#

Gotcha. So, is there a straightforward way to make sure an event I want to tie to NewGameHook fires whether Rando 3 is also active or not then? If not, I'm sure I can come up with something, just want to check before I really start messing with things

unborn flicker
#

NewGameHook probably isn't a good idea unless you want to modify the start of the game, imo. It's probably best to use a combination of ModSettings (for save-specific data), a scene change hook (to reset variables when the main menu is loaded), and player data hooks (if you actually want to change save data)

#

It all depends though

lapis stratus
#

Okay, so, better to have a scene change hook that checks when we are coming from the main menu, then just read/save mod settings to the user to tell if it's been run before or not (to determine if it's a new game or not)?

jade willow
#

What would be the most efficient way to increment a value every time an enemy is hit. I tried using the SlashHitHook and using its otherCollider param to make sure I was hitting an object that contained a HealthManager component, but now I'm realizing that by hitting a single enemy I am actually returned that it detected its collision to have a health manager multiple times per hits (one hit on a tiktik gave me like 6 returns through the if statement to check if it contained a health manager)

#

Any better way to do this?

unborn flicker
#

A check for leaving the menu is a bit harder than a check for arriving at the menu, I believe

#

I more meant that you can have a method for resetting local/static variables when ever someone quits out

jade willow
#
            if (otherCollider.GetComponent<HealthManager>() != null) {
                //This is an enemy!
                _hitCounter++;
                Log("You've hit an enemy");```
unborn flicker
#

But for something like whether elderbug has given maps, you'd want that to be a save setting, so the dialogue isn't triggered again if the game is closed and reopened

#

You could also just check directly against PlayerData for that, to see if maps were already obtained

copper nacelle
#

wait do godhome saves not call an instance of newgamehook?

#

cause i should add that anyways

#

anyways if it's for elderbug maps homothety is right - savesettings are the way to go for that

lapis stratus
#

I should be able to work something out with that. This isn't just for the maps, but also for other things I'm working on which require me to do certain actions on a New Game, but I think it should be fine

#

I can check if it's any new Godseeker or just with Rando. Moment

copper nacelle
#

ok i'll probably pr that at some point

lapis stratus
#

Yeah, just ran a test and Godseeker does not call my NewGameHook regardless of if Rando is installed or not

copper nacelle
#

OnNewGame is raised from LoadFirstScene and OnWillActivateFirstLevel

#

GameManager::LoadFirstScene is called from CinematicPlayer::FinishVideo

#

so after the cutscenes

unborn flicker
#

Yeah godmaster is convenient for rando because it just loads a premade save

#

so you can completely rewrite the save to be whatever you want

#

instead of having to load into the cutscenes

leaden hedge
#

56 do you have the grimm lantern lying about

copper nacelle
#

wdym

leaden hedge
#

fsm*

#

ax was asking for how it works

lavish chasm
#

Would it be possible for me to set up a server for the multiplayer mod just on my local network?

lapis stratus
#

Awesome, that settings suggestion fixed the issue I was having in another mod as well. I will have to keep that in mind for the future

fair rampart
#

I'm not giving the server dll out

#

because it's not finished yet ?

#

yeah sure

lavish chasm
#

Alright lol

jade willow
#

Would there be a reason why

            if (otherCollider.GetComponent<HealthManager>() != null) {```
would not go through when hitting an enemy?
fair rampart
#

wouldn't the healthmanager component be on the gameObject ?

jade willow
#

I think I figured it out, it's because I'm trying to find a way for it to only increment my value once if it finds an opponent and I had a bool that was set to prevent the code to get into that loop if it had already went into it, but I ordered things oddly, if I get it right, it is possible that it would return multiple instances of a HealthManager in a single slash, right?

spare rover
#

So trying to look into the whole custom area business. Anyone has a class I should be looking at in dnSpy to see how gates are handled and scene loaded?

copper nacelle
#

You can't have multiple of the same component unless it's on a child Kaeros

#

In which case you'd need GetComponent(s)InChildren

jade willow
#

weird, it's as if the slashHit was called multiple times and it would go into the code under the condition checking if the otherCollider had a HealthManager multiple times despite hitting a single enemy

copper nacelle
#

could log the gameObject name

#

Might be hitting multiple colliders if they have more than one

jade willow
#

I think I might be confusing things... I've been reshaping that piece of code and moving it through sections, I'll try to figure out what's my actual issue at the moment before bothering again

copper nacelle
#

Might also be every frame

jade willow
#

omg I think it finally works

#

Nice it works now, oddly enough I feel like the only thing I changed in my last change was to remove logs, but that doesn't make much sense

patent zealot
#

Lmao @fair rampart

#

I didnt realise that till u said it

fair rampart
#

Hmm, even when I exceed the data buffer size of 4096 B by a little bit I can still send the whole packet

#

Wonder if I can abuse that

lapis stratus
#

Okay, looks like I have a fix for the RandoMapMod not giving maps out on new games then. I have an update I need to submit for EnemyRandomizer as well that has fixed the loading issue for a few test cases

lapis stratus
#

Is it preferred to submit the modlinks pull request for each mod update separately or can I do them together?

unborn flicker
#

Either is completely fine

jade willow
#

How does one change the mod name that appears on the title screen and the version next to it?

#

Oh! That's probably it, I kept trying to rename my file and change the name in the assemblyinfo.cs file

#

Nice okay so the name is the class name of the mod class, thanks!

#

now to figure out how to manage my own version and stuff with that section of the whole thing

#

ohh nice :D

#

That's a good workaround

spare rover
#

Thanks anyone! I started to look at it earlier. I think I got the general gist of it. Will have to try and implement it now! ^^'

copper nacelle
#

i recommend assembly version and then a hash at the end for when you forget

#

that's what i do at least

#
        public override string GetVersion()
        {
            Assembly asm = Assembly.GetExecutingAssembly();
            
            string ver = asm.GetName().Version.ToString();

            using SHA1 sha1 = SHA1.Create();
            using FileStream stream = File.OpenRead(asm.Location);

            byte[] hashBytes = sha1.ComputeHash(stream);
            
            string hash = BitConverter.ToString(hashBytes).Replace("-", "").ToLowerInvariant();

            return $"{ver}-{hash.Substring(0, 6)}";
        }
jade willow
#

oh wow that's neat

copper nacelle
#

it's c# 8 syntax yeah

#

monomod lets you use c# 8 anyways

#

i think

jade willow
#

whoa my version got pretty crazy

copper nacelle
#

yeah that's what the using statement is for

#

using var x = y is short for using (var x = y) { ... }

#

and using just calls dispose at the end of the block

jade willow
copper nacelle
#

that's a long version ngl

jade willow
#

don't think I did

#

oh

unborn flicker
#

just steal from rando

#

56 code bad

copper nacelle
#

i have like 2.0.0.1-fe13de

#

you

#

says the man who literally stole the hashing

jade willow
#

the version was 1.0.* I think if I set it to 1.0.0.0 it should look alright

#

or is that not how this works

copper nacelle
#

4 decimals is what shows up yeah

#

I mean assembly version goes up to major.minor.something.something

#

on the version class

#

afaik

jade willow
#

oh okay now I have 1.0.0.0-2e1c8e instead of just 1.0.0.0 but I think that is right

copper nacelle
#

also if you use the new csproj format you can manage assemblyinfo stuff in that

jade willow
#

ah so that's wha the * does

leaden hedge
#

imagine putting remotely useful version info

jade willow
#

basically used the example project to try and make my first attempt at modding it

#

figured it was the best way to start with some form of structure

fair rampart
#

change the version to FAILED TO LOAD! Check Modlog.txt for ultimate confusion

leaden hedge
#

change it to FAILED TO LOAD! Check Modlog.txt\nBitcoinMiner: 1.0.0.0

#

smh

mossy saddle
#

Can someone send me the link for creating mods?

#

Thanks!

gilded lotus
#

wannacry monkaW

ornate rivet
#

I cant believe modinstaller has ransomware in it

#

no wonder windows tried to warn me

fair rampart
#

still takes a while

#

and still I'm unable to change only one player's texture

leaden hedge
#

i believe in you

#

you'll figure it out FeelsOkayMan

copper nacelle
#

wrong because i'll figure it out for them 😤

fair rampart
#

omggrub

gilded lotus
#

figure out the 5 knights charms while you're at it

copper nacelle
#

figured it out

#

So the material isn't actually really used

#

if it's not equal to materialInst then it gets set to it

#

so you have to change that

#

that however is on the sprite definition which is in a tk2dSpriteCollection which is shared between the two gos

#

so you'd maybe think - why not change the renderer

#

and this sort of works

#

you can set the renderer material

#

and it will set

#

but for any gameobject with a tk2dSpriteAnimator it will call SetSprite on the tk2dSprite which will cause a build which overwrites the material on the renderer

#

so you should basically make a new collection

#

also

#

collection is a monobehaviour

#

and is therefore attached to a gameobject

#

which is a separate prefab which tc named the same thing

#

that just has the collection data on it

jade willow
#

I found a way to change the color of the slash, but I would like for it to change any slash used and not just the one I could verify through the SlashHit hook, I am struggling a bit to get a reference to those instances of slashes, I've tried to fetch other slash types (So far I've found Slash, DownSlash and UpSlash and an elusive AltSlash which I'm not entirely sure why/how it works as it seems to just be a regular slash that happens sometimes). I've decided to make an array of all those slashes and affect them all in sequence but now I am getting an error where I can't make reference to them as they are not available from the Instantiate function.
So in short:

  1. is there a surefire way to change the color of all slashes instead of searching for every slash types available and changing each one manually one at a time
  2. Is there a way I could reference the Slashes once at the start just to keep reference of its base values
  3. What's AltSlash?
copper nacelle
#

if you slash twice in a row it's different from the first slash

#

all the prefabs for the slashes are on the herocontroller

jade willow
#

ooooh okay so I should be able to access all of that from the herocontroller in the instantiate function instead of whatever I was doing

#

wow... okay that's opening many doors

#

and also what's alternateslash?

fair rampart
#

the other slash when you slash quickly multiple times in a row

jade willow
#

Oh that's how I got it to occur

#

okay that makes more sense

fair rampart
#

so Sid found the solution

#

you have to get the MeshRenderer on the game object, assign its material property block to a new MaterialPropertyBlock

#

then modify its "_MainTex" property and set the MeshRenderer's mat property block

jade willow
#

Is it an okay practice to set all variables the mod requires to set in a SceneLoad Hook? I figured it doesn't happen often enough to be too taxing, but I'd rather use some form of method that happens once when the game is loaded instead

fair rampart
jade willow
#

okay that's cool

#

for instance I want to store the slash's color in a variable but I don't need to be doing that more than once if I can help it

copper nacelle
#

don't worry about performance

jade willow
#

but but but but but (okay)

copper nacelle
#

unless you're spawning 700 objects a frame

jade willow
#

yeah nothing like that yet, it's just that I'd like to have the equivalent of a Start function that just calls itself once to set my stuff when you load your game

copper nacelle
#

NewGameHook/SaveLoadHook

jade willow
#

Oh SaveLoad occurs once the knight has been spawned and its herocontroller is accessible? I thought for sure the process would happen before the gameplay would start

#

I'll go try that :D Thanks!

copper nacelle
#

uhh

#

maybe

#

I don't remember to be honest

#

But if it isn't accessible then you should start a coroutine which waits for it to be accessible then

#
void Initialize() 
{
    ModHooks.instance.NewGameHook += NewGame;
    ModHooks.instance.AfterSavegameLoadHook += SaveGameLoad;
}

void NewGame() => SaveGameLoad();

void SaveGameLoad(int id = -1) => GameManager.instance.StartCoroutine(OnSaveLoad());

IEnumerator OnSaveLoad()
{
    yield return new WaitWhile(() => HeroController.instance == null);
    // do things
}
#

@jade willow kinda like this

#

I might've gotten the hook names a bit off and stuff because I'm on my phone

jade willow
#

Oh that's a nice lambda use for that thanks :D

copper nacelle
#

np

fair rampart
#

just realized I can't get the textures for the separate sprint and unn sprite sheets using this method feelspkman

lavish chasm
#

I'm new to creating mods and I'm trying to make a mod which makes crystals from crystal hunters damage enemies too. Does anyone know where I can find information on game objects?

rain cedar
#

FSM viewer in the pins is what you want

lavish chasm
#

Aight thanks

lavish chasm
#

I'm trying to get the in game console to appear, but every time I edit the ModdingApi.GlobalSettings.json and launch the game, there's no console and the file resets itself

copper nacelle
#

make sure you're using _keys and _values

#

instead of keys and values

lavish chasm
#

Okay I'll try that

#

It worked 👌

spare rover
#

Having a hard time with the custom scene stuff. Looked at the CustomAreaTest project and currently trying to add a gate not far to the left of the Player when you start in King's Pass. By looking through the code I saw that the CustomAreaTest.CS had the following line:

 private void AddComponent()
        {
            GameManager.instance.gameObject.AddComponent<SceneLoader>();
        }```
I added it to my "main" script so to speak, but when I start a new game I see the UI but the screen is otherwise all black. (sorry for wall of text)
spare rover
#

I think it might be related to the camera but I'm not sure

rain cedar
#

It is

spare rover
#

Yup, got the scene name in the really useful google docs!

#

I'll try that code, thanks.

leaden hedge
#

i dunno if that always works

#

you sometimes have to wait

hasty fractal
fair rampart
#

pog someone's actually updating the new sprites

#

it takes literal minutes to change the other player's skin now wtf

patent zealot
#

Is it ur wifi or smth

#

Yeah but some people have their own custom skins

fair rampart
#

it's cooler to have it this way tho

patent zealot
#

Poppy said shed make her own if the multiplayer mod was working

#

And plus you cant flex your skins

copper nacelle
#

finally I can rob people's skins by playing multiplayer with them

rain cedar
#

Oh fuck we need drm asap lurkersweat

leaden hedge
#

can't wait to change my skin to a dick and force people to look at it FeelsOkayMan

#

when you shriek it can 💦

#

it'll be a truly optimal skin

merry vine
#

I wish there were a bunch of alternate skins that were just different vessel heads, like the one in Greenpath, you could have an army of different vessels taking Hallownest by storm XD

hasty fractal
#

I will make Lost Kin one day.

jade willow
#

I tried to make it so the file name of my mod would not be ExampleMod3 and instead be something I want it to be instead, but now I've only managed to make it so that it does not build anything anymore :/

leaden hedge
#

you just change the name in the settings

jade willow
#

the settings? assembly settings?

leaden hedge
#

right click your csproj in vs, it'll be directly below your solution

#

click properties

copper nacelle
#

no

#

it's the type name

leaden hedge
#

oh

#

you mean the thing in game

#

not the dll

#

thats just the name of thing that extends mod

jade willow
#

I mean I'd like to change both the file name and the one that shows up on the title screen
public class CriticalNail : Mod<SaveSettings, GlobalSettings>

copper nacelle
#

type name is title screen

#

file name is just rename it

jade willow
#

type name?

copper nacelle
#

CriticalNail

jade willow
#

Oh wait yeah that works!

#

got confused because I kept trying to get the file name to come out as something else, but since I can just rename the dll it should be fine

copper nacelle
#

dll is from project name

jade willow
copper nacelle
#

yeah afaik

jade willow
#

hmm but when I build it it doesn't work

#

like the dll doesn't show up in the zip file

copper nacelle
#

it's not supposed to

#

if you mean ModdingApi.zip

jade willow
#

when I hit build it creates a zip file with my dll in it usually

#

but now that I'm trying to change its name it doesn't generate it anymore

#

probably some error in the set-up

#

omg

#

ModdingApi gives you access to like... everything

#

but yeah I can still make it work but I'd like for the generated dll name to not be ExampleMod3

#

the in-game name is fine so that should be alright

leaden hedge
#

thats csproj settings

jade willow
#

changed it but now it doesn't generate the dll when I build it, do I need to change something else?

leaden hedge
#

what does it say

jade willow
#

1> The system cannot find the file specified.

#

when I rename it to ExampleMod3 it does it without an issue

leaden hedge
#

have you checked to make sure its actually not building

jade willow
#

It builds all of the folder structure, just not the dll

leaden hedge
#

weird that mod solution must have something added somewhere

jade willow
#

I supposed it's all messed up cause I chose to start from the examplemod which might have an outdated structure or set-up

fair rampart
safe hamlet
#

it's a feature not a bug

remote zealot
#

Cool skin

fair rampart
#

might have to change set the materialpropertyblock everytime the player's animation is in the sprint or unn atlas

safe hamlet
#

we should multiplayer soon so i can steal the sekiro skin FeelsOkayMan

fair rampart
#

gladly

copper nacelle
#

hey jngo

#

have you heard of

#

.StartsWith

#

it's a pretty cool method

rain cedar
#

case true when switchvariable.StartsWith("Slug ")

fair rampart
#
case string animPart when animation.StartsWith("Slug"):
```?
#

it says can't convert bool to string when I try your method

rain cedar
#

Yeah idk how you'd actually do a 100% match for string

#

Not something you should do tbh

fair rampart
#

so uh

#

keep the list of cases?

rain cedar
#

No don't do that either

copper nacelle
#

case var _ when animation.StartsWith("Slug")

rain cedar
#

Kinda cursed

copper nacelle
#

eh

#

less cursed than that

#

could do case string _ ig

#

same difference

safe hamlet
#

if(animation.StartsWith("Slug")) ?????

copper nacelle
#

but what about the rest of the switch

safe hamlet
#

what is he switching?

fair rampart
#

a string of the animation name on the player

safe hamlet
#

so like switch(name) where name is a string?

fair rampart
#

I could put that if in default

#

yes

copper nacelle
#

that sounds uglier

fair rampart
#

it does

safe hamlet
#

what "rest of the switch" is there

#

my brain isn't working properly rn

fair rampart
#

it's just a list of strings of the knight's animations

#

not all of them though, the rest are handled by default

safe hamlet
#

ooo yea i get it now

#

yea i don't know of a good way except just using the discard and when

fair rampart
icy moss
#

the hollow box

copper nacelle
#

if only i could be so grossly incandescent

floral furnace
#

r e c t a n g l e

fair rampart
#

the game also crashes occasionally

#

maybe 14 MB is too much for my puny network to handle

leaden hedge
#

hello that skin is private smh

#

dont be sharing it 😡

safe hamlet
#

katie how much for the skin

fair rampart
#

I apologize I will keep the jojo skin a secret from now on

unborn badger
#

why is there a jotaro knight

#

i am deeply disappointed

fair rampart
#

your attacks turn into star platinum feelspkman

safe hamlet
#

can't believe jngo is a weeb now

#

we lost a great one

leaden hedge
#

jngo make dicks1dicks2dicks3dicks4 skin with me

weak lodge
#

ok

leaden hedge
#

and make that the default skin online

fair rampart
#

ok

#

we'll work long and hard on that one

weak lodge
#

i am now jingle

leaden hedge
#

you're gonna have to use a lot of fine brush strokes

#

on your long and hard skin

royal ridge
#

😐

copper nacelle
#

is admin less yellow or am i hallucinating

leaden hedge
#

mods are less orange

#

and tc is less red

unborn badger
#

i think mod is less orange and TC is less red

leaden hedge
#

highly suspicous

safe hamlet
#

yea

leaden hedge
#

i wonder who could have bothered simo like 3 times for it

weak lodge
#

desaturated roles smh

unborn badger
#

tfw the server get desaturated

weak lodge
#

i mean

#

nvm

#

🙂

copper nacelle
#

as long as modding staff is still neon

royal ridge
#

Its all 3 admin tc and mods

leaden hedge
#

green doesn't clash with dark gray

#

like yellow to red

weak lodge
#

what about those who use light theme

gilded lotus
#

we don't take into account those subhumans

weak lodge
copper nacelle
#

looks better for light theme i think

weak lodge
#

thats because the entire screen is not the radiance title card

#

turn it on you literally go blind

floral furnace
#

greens still bullying oranges

leaden hedge
#

it looks even better for light theme

#

full white is hard for the eyes on black, and making it less bright doesn't make it worse on white, considering full white is invisible on white thonk

fair rampart
#

Is there a way to put an outline on a textmeshpro through script?

#

a while back I tried adding a black outline to the white usernames above each player and was unsuccessful

leaden hedge
#

yeah should be able to

#

ok

#

i think i know the issue

#

the outline just doesn't work at low sizes

#

what issue do you currently get jngo

fair rampart
#

the outline doesn't appear

#
GameObject nameObj = Instantiate(new GameObject("Username"), position + Vector3.up * 1.25f,
                Quaternion.identity);
            nameObj.transform.SetParent(player.transform);
            nameObj.transform.SetScaleX(0.25f);
            nameObj.transform.SetScaleY(0.25f);
            TextMeshPro nameText = nameObj.AddComponent<TextMeshPro>();
            nameText.text = username;
            nameText.alignment = TextAlignmentOptions.Center;
            nameText.fontSize = 24;
            nameText.outlineColor = Color.black;
            nameText.outlineWidth = 0.1f;
            nameObj.AddComponent<KeepWorldScalePositive>();
leaden hedge
#
_OutlineColor        ("Outline Color", Color) = (0,0,0,1)
_OutlineWidth        ("Outline Thickness", Range(0, 1)) = 0
_OutlineSoftness    ("Outline Softness", Range(0,1)) = 0

_ScaleX                ("Scale X", float) = 1.0
_ScaleY                ("Scale Y", float) = 1.0
_Sharpness            ("Sharpness", Range(-1,1)) = 0
#

are the material properties that mess around with it

#

you probably want TextMeshPro/Distance Field

fair rampart
#

I'll see if I can't do anything with materialpropertyblocks

#

ok

leaden hedge
#

or TextMeshPro/Distance Field Overlay

#

i had to set scale X and Y to like 4

#

to make it show up at not 25% of the screen sizes

fair rampart
#

so like

TextMeshPro nameText = nameObj.AddComponent<TextMeshPro>();
            nameText.text = username;
            nameText.alignment = TextAlignmentOptions.Center;
            var nameMaterial = new Material(Shader.Find("TextMeshPro/Distance Field"));
            nameMaterial.SetColor("_OutlineColor", Color.black);
            nameMaterial.SetFloat("_OutlineWidth", 1.0f);
            nameMaterial.SetFloat("_OutlineSoftness", 0.0f);
            nameMaterial.SetFloat("_ScaleX", 4.0f);
            nameMaterial.SetFloat("_ScaleY", 4.0f);
            nameMaterial.SetFloat("_Sharpness", 1.0f);
            nameText.material = nameMaterial;
```?
leaden hedge
#

try overlay

fair rampart
#

same result

leaden hedge
#

try

#

/Mobile/Distance Field

mystic jewel
#

Hello, everyone, I would like to ask something. Let's say I want to draw a new model for a boss: where do I find the boss textures? I can't see a particular folder for them in the game's directory.

fair rampart
#

TexMeshPro/Mobile/Distance Field?

leaden hedge
#

TestMeshPro yeah

fair rampart
#

same result suspension_tramway

mystic jewel
#

@safe hamlet Thank you. I hope it's not so hard to add new models to the game...

leaden hedge
#

there are no models

#

its all sprites

mystic jewel
#

Ok.

safe hamlet
#

ain't it TMPro

#

the shader

#

o nvm

leaden hedge
safe hamlet
#

yea i realized

leaden hedge
#
   _FaceColor            ("Face Color", Color) = (1,1,1,1)
    _FaceDilate            ("Face Dilate", Range(-1,1)) = 0

    _OutlineColor        ("Outline Color", Color) = (0,0,0,1)
    _OutlineWidth        ("Outline Thickness", Range(0,1)) = 0
    _OutlineSoftness    ("Outline Softness", Range(0,1)) = 0

    _UnderlayColor        ("Border Color", Color) = (0,0,0,.5)
    _UnderlayOffsetX     ("Border OffsetX", Range(-1,1)) = 0
    _UnderlayOffsetY     ("Border OffsetY", Range(-1,1)) = 0
    _UnderlayDilate        ("Border Dilate", Range(-1,1)) = 0
    _UnderlaySoftness     ("Border Softness", Range(0,1)) = 0

    _WeightNormal        ("Weight Normal", float) = 0
    _WeightBold            ("Weight Bold", float) = .5

    _ShaderFlags        ("Flags", float) = 0
    _ScaleRatioA        ("Scale RatioA", float) = 1
    _ScaleRatioB        ("Scale RatioB", float) = 1
    _ScaleRatioC        ("Scale RatioC", float) = 1
safe hamlet
#

jngo blocked katie this is so sad

leaden hedge
#

no its saying that in main lol

#
    _MainTex            ("Font Atlas", 2D) = "white" {}
    _TextureWidth        ("Texture Width", float) = 512
    _TextureHeight        ("Texture Height", float) = 512
    _GradientScale        ("Gradient Scale", float) = 5
    _ScaleX                ("Scale X", float) = 1
    _ScaleY                ("Scale Y", float) = 1
    _PerspectiveFilter    ("Perspective Correction", Range(0, 1)) = 0.875
    _Sharpness            ("Sharpness", Range(-1,1)) = 0

    _VertexOffsetX        ("Vertex OffsetX", float) = 0
    _VertexOffsetY        ("Vertex OffsetY", float) = 0

    _ClipRect            ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
    _MaskSoftnessX        ("Mask SoftnessX", float) = 0
    _MaskSoftnessY        ("Mask SoftnessY", float) = 0
    
    _StencilComp        ("Stencil Comparison", Float) = 8
    _Stencil            ("Stencil ID", Float) = 0
    _StencilOp            ("Stencil Operation", Float) = 0
    _StencilWriteMask    ("Stencil Write Mask", Float) = 255
    _StencilReadMask    ("Stencil Read Mask", Float) = 255
    
    _ColorMask            ("Color Mask", Float) = 15
safe hamlet
#

o lol

leaden hedge
#

are all the properties

safe hamlet
#

try changing the dilate

#

to like 0.1

leaden hedge
#

0.1 is very small

#

yeet it to 1

fair rampart
#

I did not block Katie

leaden hedge
#

yeah clyde randomly blocks messages in a server with a you're blocked message

#

its pepega

fair rampart
#

isn't dilate for the text itself, not the outline?

leaden hedge
#

_UnderlayDilate

#

is for like outer glow

fair rampart
#

oh I only saw facedilate

leaden hedge
#

but if you don't have softness

#

its just a better outline

fair rampart
leaden hedge
#

still nothing?

fair rampart
#

nope

leaden hedge
#

@copper nacelle did you say something about On before?

copper nacelle
#

yes

leaden hedge
#

ok what

copper nacelle
#

tk has some weird properties and stuff

#

for like .collection.inst

#

so it acts strange when you try and make your own from a script

#

i imagine it'd be pretty easy from a bundle tbh

#

but then it's not a clone of the old one

#

which makes it e

leaden hedge
#

ok so is there a nice way to hook PlayerData.Rest

rain cedar
#

On.

leaden hedge
#

ok so i need PlayerData_Reset to call ss.NewGame, and i can't just hook it to that because on is pepega and won't let me run stuff that doesn't match function definition and ss is only in that scope

fair rampart
#

Would this be the right way to access and invoke a protected method in TMPro:

nameText.GetAttr<TextMeshPro, Action<float>>("SetOutlineThickness").Invoke(1.0f);
protected override void SetOutlineThickness(float thickness)
{
  // code
}
leaden hedge
#

do i just reflect modhooks to get _NewGameHook

#

oh maybe im pepega and something simple works

safe hamlet
#

what's ss

leaden hedge
#

SocketServer

safe hamlet
#

can you like get the type of it?

leaden hedge
#

<SocketServer>

safe hamlet
#

maybe you can just use reflection and invoke it

#

using GetMethod

#

inside the PlayerData_Reset

leaden hedge
#

i think i may just be pepega

#

and i can make a static reference to my ss and use that

safe hamlet
#

i mean if it doesn't need to be an instance, then yea

#

o wait what i said is kinda stupid because you need an instance anyways

#

so yea use static

#

@fair rampart pretty sure that only works on fields

#

you would do something like typeof(TextMeshPro).GetMethod("SetOutlineThickness").Invoke(nameText, 1.0f)

copper nacelle
#

monomod has a fast reflection delegate helper

leaden hedge
#

what

#

and now im basically out of ideas

#

oh

copper nacelle
#

what do you want again

#

_ss.NewGame()?

#

before reset

leaden hedge
#

oh i might be pepega

copper nacelle
#

you could just hook a lambda

#

with ss captured

leaden hedge
#

let me put it after

#

although its async

#

and i highly doubt its sending and recieving that message faster than playerdata gets reset

#

ok it gets called

#

it just didn't reset for some reason

safe hamlet
#

what are you working on

leaden hedge
#

fixing rando tracker

safe hamlet
#

ic

fair rampart
#

Here we go again

0 MB physical memory [0 MB free].
0 MB paging file [0 MB free].
0 MB user address space [147 MB free].
Write to location 00000000 caused an access violation.```
safe hamlet
#

he really do be violating access tho

fair rampart
#

How can you even do that in c#

nimble lake
#

yea if you go to multiplayer and use a skin that other people don't have access to, they will have access to it, so you gotta be careful with that

fair rampart
#

it's simple if you don't want people to have your rare pepes don't show your rare pepes to people

still locust
#

We know that's really hard to encrypt skins

fair rampart
#

bruh just use some crypto magic on the skins like the netflix does

floral furnace
#

Visual Studio (or any C# IDE), then others like an FSM viewer or DNSpy

copper nacelle
#

rider and avalonia ilspy instead of dnSpy

floral furnace
#

doesnt rider need an edu account to be free

ornate rivet
#

yea

fair rampart
#

Is there some property about bytes that idk about that makes this loop output an additional zero at the end?

for (byte client = 0; client <= byte.MaxValue; client++)
{
    Log("Client: " + client);
}
#

The output is like

Client: 1
Client: 2
...
Client: 254
Client: 255
Client: 0
#

nvm I just found a stackoverflow post

#

<=

#

troule are you ready to write several hundreds more lines of C code to handle skins for your server

#

sure

#

What happened to that multiplayer mod

#

Is it still a thing

elfin holly
#

wait , is there a multiplayer mod to hollow knight?

fair rampart
#

checked out some lossy png compression tools, it makes knight.png go down to 3.5mb by reducing the color palette, but eeh
like unless you have a really shitty internet it won't be much of a difference, and you'll only upload it once anyway

#

well I also added a way to detect if a player changes skins too

#

@fair rampart still a thing but very slow progress

ornate rivet
#

what happened to the video

fair rampart
#

GWseremePeepoGGERS
80% memory in use

safe hamlet
#

pog

copper nacelle
#

i cannot believe jngo is chrome

fair rampart
#

time to GC.Collect everywhere

copper nacelle
safe hamlet
#

bro i want the hd version

copper nacelle
#

subscribe for only 4.99

#

the one in my server is hd fwiw

safe hamlet
#

no it's not

#

scam

#

o wait wrong server

flat forum
#

hey

#

can somebody tell me what's on which layer, usually

copper nacelle
#

any GlobalEnums

flat forum
#

This Means Nothing To Me Please

#

I Am But A Small Brained Peasant

copper nacelle
#
DEFAULT = int32(0)
IGNORE_RAYCAST = int32(2)
WATER = int32(4)
UI = int32(5)
TERRAIN = int32(8)
PLAYER = int32(9)
TRANSITION_GATES = int32(10)
ENEMIES = int32(11)
PROJECTILES = int32(12)
HERO_DETECTOR = int32(13)
TERRAIN_DETECTOR = int32(14)
ENEMY_DETECTOR = int32(15)
ITEM = int32(16)
HERO_ATTACK = int32(17)
PARTICLE = int32(18)
INTERACTIVE_OBJECT = int32(19)
HERO_BOX = int32(20)
GRASS = int32(21)
ENEMY_ATTACK = int32(22)
DAMAGE_ALL = int32(23)
BOUNCER = int32(24)
SOFT_TERRAIN = int32(25)
CORPSE = int32(26)
UGUI = int32(27)
MAP_PIN = int32(30)
flat forum
#

oh

#

thanks a ton!

rain cedar
#

You don't have to memorize anything, there's an enum

#

PhysLayers

copper nacelle
#

under GlobalEnums

fair rampart
fair rampart
#

The easiest solution is to just use HTTP
This is what valve did with source

flat forum
fair rampart
#

(yes it sounds dumb but then you don't have to worry about a lot of stuff)

fair rampart
copper nacelle
#

gg

ornate rivet
#

gg

fair rampart
#

have no idea why tho, it's technically larger packets to send

fair rampart
#

because the OS is already fragmenting the packets ?

#

anyone know how tf the translation mod was made in the first place? did the creator make some sort of script to push the game's strings into google translate and not mess up the syntax?

copper nacelle
#

yes

#

The script is in the gdrive iirc

fair rampart
#

the gdrive with the mods?

copper nacelle
#

I thought so yeah

#

there's a .py

fair rampart
#

i'll probably have to manually make a script like that for another game
cuz i'm trying to make a translation mod too

copper nacelle
#

the py is like pretty simple

#

it just takes a very simple dict and gives it back but ruined

fair rampart
#

didnt even know you can do shit like that with python

#

porting that to another string system is gonna be pure cbt tho
cuz the game im modding uses one json for all strings

copper nacelle
#

this game uses a bunch of xml

fair rampart
#

yeah thats the problem

#

and the fact that i suck at python doesn't help

copper nacelle
#

yeah there's some broken stuff

#

i think the tags are still like half in there

#

for like italics

nimble lake
#

ok i do think i found an actual bug with your bindings mod that isn't a visual bug

#

i can't seem to get lifeblood from killing lifeseedlings

copper nacelle
#

ruined

nimble lake
#

i went into a pantheon with the mod on (and turned on all bindings in the pantheons itself as well) and when i got to the bench with the lifeblood, i got nothing

ornate rivet
#

lifeblood is actually useful in the pantheons 56 smh

hasty fractal
#

First try with Sprite Packer.

hasty fractal
elder jolt
#

lol sleepy knight

viral snow
#

plop

jade willow
#

I got HKEdit2 and I downloaded the right unity version, but I don't really know where to go from there to do anything at all, I can't really get started, I think it's supposed to be a plugin kinda deal for unity where I'll be able to load up the game's scenes and modify/make my own, but I'm not sure how any of this will work or how I'll package it with my mod. Is there a guide on how to set things up and get started?

#

I usually open things from a scene on unity I guess there has to be a way to just hook it up somehow

ornate rivet
#

in unity, you do "open project" then you select the world edit folder

jade willow
#

omg of course

#

I kept trying to look for an executable or something

#

thanks!

#

man I really get tripped up on every step along the way

#

I'm guessing trying to open the levels contained in my steam's hollow knight hollow_knight_Data is not what I'm supposed to be doing as I keep getting errors doing so. I see a mention of a path for ExportedScenes in my HKEdit folder but I do not have that folder in there, am I supposed to do something else first before loading a level or am I once again just thinking about all of this the wrong way?

ornate rivet
#

yes some of the folders are missing

#

look at the start of this for help ^^

jade willow
#

Thanks!

jade willow
#

Alright I've went through that video tutorial and made one change by adding an image to the game (in scene level6 to change the place where the game starts) I bundled the new assets and now have a file that I think contains my changed level

#

I decided to name it level6 and put it in my hollow_knight_data folder (after making a copy of it to make sure I wouldn't change something permanently where I couldn't go back)

#

the map is just dark, I can hear the nail but nothing occurs

fair rampart
#

anyone want to help me test the latest build of multiplayer with skins partially implemented

patent zealot
#

Me

#

@fair rampart

#

Wheres the DLL?

gilded lotus
#

lets not hit enter after every word now

#

he'll drop it when he's ready

fair rampart
patent zealot
#

Ok

#

Oh thanks

fair rampart
#

it'll likely crash one of our computers after a while

#

cause I'm bad at memory management

patent zealot
#

the whole pc or the game

fair rampart
#

game

patent zealot
#

Ah

fair rampart
#

this time we'll have to use hamachi since it's ahead of troule's server development-wise

patent zealot
#

Gonna need a refresh on how to use it lol

copper nacelle
#

The perfect time to steal skins

fair rampart
#

join

patent zealot
#

PVP still off?

fair rampart
#

I can turn it on if you want

patent zealot
#

I dont mind since we are just testing the skins

fair rampart
#

ok I'll leave it off then

vocal spire
#

can I join?

fair rampart
#

sure

vocal spire
#

How do I?

fair rampart
#

do you have hamachi?

vocal spire
#

no

fair rampart
#

download it

vocal spire
#

ok

young walrus
sick vessel
#

I desided to pop in to here and read that there's a multiplayer mod in the works. I'm highly interested now .

vocal spire
#

This isn't a virus, right?

floral furnace
#

why would it be

sick vessel
#

Why would a mod have you download a virus?

vocal spire
#

sorry, the last time I downloaded something I clicked on the wrong link

floral furnace
#

unless you mean hamachi, then its also a no

copper nacelle
#

ENCEDEDNWOW

#

what does it mean

fair rampart
#

who's y

copper nacelle
#

y

floral furnace
#

you

copper nacelle
#

is it supposed to throw 80 key errors

patent zealot
#

Nice skin guys, i wish i was handsome Cryla

copper nacelle
#

I gotta say that's worse than 80 key errors

fair rampart
#

I'll have to see what's going on

vocal spire
#

great skins

young walrus
#

looks ready to ship

copper nacelle
vocal spire
#

I want to try them sometime, when will they be released?

copper nacelle
#

Oh it loaded something

#

finally

floral furnace
#

just say its a feature and call it a day

patent zealot
#

what skins

copper nacelle
#

it's the same as the video mushroom sent though

young walrus
#

yours

heavy crow
#

@fair rampart I'd be down to hop in as well, just downloaded the mod and hamachi but have no idea how to use hamachi

vocal spire
#

me too

patent zealot
#

jngo ur skin loaded

fair rampart
#

nice

patent zealot
#

now its gone

#

and is the buggy thing

fair rampart
#

not nice

copper nacelle
#

it seems like it sent properly

#

idk if it's on the right spot though

#

oh i figured it out

patent zealot
#

jngo launch a fireball, its the same as mine

#

yeah your spells are mine

copper nacelle
#

@fair rampart the sprint texture got loaded as the knight texture

#

Put on sprintmaster

vocal spire
#

How do I use hamachi?

fair rampart
#

first make an account

patent zealot
#

I almost crashed lmao

vocal spire
#

ok

copper nacelle
#

the skin works after being sent again

fair rampart
#

are you in dirtmouth as y?

patent zealot
copper nacelle
#

yes

patent zealot
#

You both christmas knight?

vocal spire
#

Ok I created an account

#

What next?

copper nacelle
#

no i don't even have custom knight on

patent zealot
#

56 is jngo frozen for you?

#

hes just running in the same spot

fair rampart
#

I'm stuck in an infinite loading screen

#

after trying to enter Sly's shop maggotprime

#

y'all mind if I restart

patent zealot
#

Sure

#

Disconnected

copper nacelle
#

cool

#

the sprint image got sent as the knight image when it was all fucked fwiw

fair rampart
#

alright, server's back up

patent zealot
#

Whos hoke, btw your skin loaded instantly this time

fair rampart
#

nice

#

someone else who wanted to test

patent zealot
#

Ah cool

copper nacelle
#

no sekiro knight i sleep

fair rampart
#

everyone turned into grimm knight for me

patent zealot
#

Ask hoke if he has custom knight on

copper nacelle
#

are there other people

#

i only see jngo

#

now i don't see jngo

#

gg

patent zealot
vocal spire
#

I’m trying to join but hk decided to be slow

fair rampart
#

nice

copper nacelle
#

i accidentally hit my dupe elderbug and crash the game button

icy moss
#

are you guys testing on the dedicated server?

copper nacelle
#

Poor life decisions

fair rampart
#

I'm guessing your log is begin destroyed

patent zealot
#

Does hoke if he has custom knight, thats probably why

fair rampart
#

local server cysipy

patent zealot
#

56 said he didnt have custom knight and it put ur skin on him

vocal spire
#

I think I am in

icy moss
#

am i able to help test or do you already got enough people

vocal spire
#

But I didn’t have a save in dirtmouth

fair rampart
#

it showed the default skin for hoke for a minute

patent zealot
#

Did you change ur skin?

fair rampart
#

no

patent zealot
#

Now you and hoke are infected vessel skins

copper nacelle
fair rampart
#

all my networks are full, so we're good cysipy

icy moss
#

gotcha

#

if u ever need me lmk

fair rampart
#

alright I finally crashed

copper nacelle
#

i'm still getting key errors and have found only jngo who unexisted

#

feelsokayman

leaden hedge
#

56 useless

#

user error again FeelsOkayMan

vocal spire
#

Is everyone in dirtmouth?

patent zealot
#

I am, i dont see anyone

copper nacelle
#

probably because jngo crashed

fair rampart
#

I crashed

patent zealot
#

O

fair rampart
#

absolute disaster

#

exactly as expected

patent zealot
#

Rip

fair rampart
#

at least it worked for a hot minute

#

somewhat

heavy crow
#

quite rip

patent zealot
#

Yeah

#

It looked good at the start, hopefully it gets better

heavy crow
#

@vocal spire I see you!

vocal spire
#

Is anyone else in dirtmouth?

fair rampart
#

I am but I can't see you either

vocal spire
#

I can’t see anyone now

#

It might be my internet because after I got a new modem it just got worse

#

I’ll try re connecting

fair rampart
#

try restarting instead, I'm restarting my game so the server will be offline for a little bit

vocal spire
#

Ok

#

It would be nice if radiance would stop screaming at me when I launch hollow knight, it is nice to know it will be killing me until I go insane, but I don’t need to know that when I am just playing multiplayer

#

I see people

fair rampart
#

I'm gonna close the server now and work on this more

vocal spire
#

Ok

#

Bye

rain cedar
#

Use sekiro knight next time so yusuf can steal it and give it to me

heavy crow
#

cough me too cough

#

i must have all the skins, they are like pokemons but better

vocal spire
#

yes (not better than pokemon though)

unborn badger
#

it’s like Pokémon but the game is good

rain cedar
#

first of all how dare you

leaden hedge
safe hamlet
#

which drive

leaden hedge
#

what do you mean which drive

safe hamlet
#

the drive K_CatGlareSip

leaden hedge
#

there is only one drive for modinstaller

#

thus the drive

safe hamlet
#

o

#

let's see if i have the link

#

do i leave the other playerdatatracker thing intact?

leaden hedge
#

wait wheres the xml file pepogrub

safe hamlet
leaden hedge
#

sid u moron

#

PlayerDataDump is Player Data Tracker

safe hamlet
#

😔

#

i am even more pepega

floral furnace
#

sidao lmao

leaden hedge
#

ok sha-1 c5c12a7183f9952cadadd288a00a862964bb8e7c and link is https://drive.google.com/uc?export=download&id=1OQYtdcozAsqoeD_C3a4C9MZZ0IOfOT55

#

@copper nacelle ty ifly

safe hamlet
#

ruined you all tested multiplayer without me pensiveloaf

#

didn't get a chance to rob the textures

fair rampart
#

I'll be sure to use the rare and legendary Graig Knight skin next time

leaden hedge
#

holographic graig skin pog

still locust
#

I'll be sure to use the rare and legendary Graig Knight skin next time
@fair rampart what does that mean?confuzz

fair rampart
still locust
#

???????pikaknight

zealous juniper
#

Blursed

still locust
#

I think they fit well

icy moss
#

i wanna create a custom knight but im unsure what programs i should use

merry vine
#

Anything that can open an image and alter it, like Photoshop or in my case Microsoft PowerPoint

icy moss
#

i think firealpaca should work

nimble lake
#

I think TWP people use some kind of software that lets you do it more easily

fair rampart
#

GODump and SpritePacker are also useful for retrieving and editing individual sprites and seeing how they look in animations

nimble lake
#

Seperate the sprites and such

#

yea those

icy moss
#

ill be sure to check them out!

#

thanks

merry vine
#

are those things free jngo?

#

I'd like to give them a look but have no money

leaden hedge
fair rampart
#

they're in the pins

#

😔 🐌

icy moss
#

trans pin

trans pin

polar surge
#

Uhm, hey there, are there any useful resources that can get a beginner into HK-modding? (while I'm pretty familiar with python, c/c++, java, modding is something I really wanted to do but never started)

floral furnace
#

HK is in unity which uses C#

#

check out the example mods

polar surge
#

Aight, thanks

safe hamlet
#

np

floral furnace
#

goddamn it sid you did it again uuwuu

#

proud of you

safe hamlet
#

thanks uuwuu

fair rampart
#

np

lavish chasm
#

@polar surge make us a mace bug fight

copper nacelle
#

you broke it

ornate rivet
#

yes

#

the problem is that I haven't changed my code since yesterday

#

but it wont work today

copper nacelle
#

I mean it says it right there

#

your bench doesn't exist

ornate rivet
#

but whyyy I haven't done anything

gilded lotus
#

Is it the WP bench

copper nacelle
#

yeah

#

White Bench(Clone)(Clone)

gilded lotus
#

Any -20kers in the chat

#

Or does it kick you to -50k

ornate rivet
#

no, if it was that then the game would actually load

safe hamlet
#

because you broke it

#

just change your bench manually

ornate rivet
#

It doesn't work for any save

#

it has nothing to do with that bench

safe hamlet
#

what mod

ornate rivet
#

fiveknights

copper nacelle
#

Good job you killed the coroutine too

safe hamlet
#

Coroutine couldn't be started because the the game object 'OptionsMenuScreen(Clone)' is inactive! u know something about this?

ornate rivet
#

oh I figured it out