#plugins-dev-chat
1 messages · Page 142 of 1
cruel crime manager
I cant wait to incinerate children players in the new hcz room
i never outed myself as a trial until david said smth
Bro please PLEASE ADD DROP KICK
and kids
on SL
Throw them into lava
SO WE CAN DROP KICK CHILDREN
this looks so cool
Wait for christmas
for the cake scp
Then you can throw them in
too much waiting
i hope they used it for nuke room since 096 can fall ofc and his fall looks static :'(
https://www.youtube.com/watch?v=ounH8P1Dj8g
@unique crane please...
look how satisfying it is
"eww ai gif"
-# -the ai bro himself
Cant wait to jump in the lava as 049-2
This shit is AI
100%
Can't wait for lava physics
???
shh
woah wtf
TRUE
Tiktok in 2025?
bro
offical source
My friend keeps sending me SL tiktok leaks
yeah that shit is 100% AI you can't brainwash me RAHHH
i hate tiktok but like
to like report them
this is literally from her
Bro
have you heard about visual effects 

You what
NW doesnt have official tiktok
there is no official tiktok acc
We don't have TikTok
x3j told me
"bro this shit is so disgusting now i gotta share it with the marketing manager"
but else i would've thought that was official
NO i reported it bruh
That's what pll think
Ppl
chat is this correct?
uh
does the report button on tiktok not do anything
-# i wouldn't be surprised
Didn't need to inform the public about this report
I mean yea
peak
peak video btw
"oh there's this disgusting thing now i gotta tell everyone"
thinking has stopped responding
the reaction was tho confused
Not yet
🥰
It was alot of time ago
the video i hope is now down
tiktok is slow af
you don't have to post about it in this channel or any channel though 😭
with the reports and impersonation
known by most people in YT did it and waited more and more time
infact i never told anyone only maro, x3j and someone else saw it sent by me
you just did like 3 minutes ago

yea but it was pretty much 2 months ago
from now
lol
i hope it was taken down
that's not a reason to tell everyone about it 😭😭
😨
so many gameobjects
so spooky
if it was unity it wouldn't work
"some very bad thing happened x years ago or something, therefore it's safe to post about it"
yeah i remember i'm just pointing out how much gameobjects they got
Its multithreaded custom engine in cpp
I mean the bad things in the past are...
something else
Which is like crazy
that maybe shouldn't be told
unity is single threaded 😿
see pain plus
🗣️🗣️🗣️🗣️🗣️
Here is the code btw
thanks

if only unity was open source
it's called
blep

I throught you link this:
https://github.com/seksirakun/ThatNight-Engine
XXXXDDDDDDD

AJAHHHAHAHAH
anyways i'm gonna use bools instead of enums
I made better engine in Java than this 😭
use enums instead of bools
and i'll spam around 50k if statements
wait

make a super state with enums
use strings
Brb I'll remove your docs
use objects
like
use threads to represent state
guys lets make a super computer in SL
not a super state tho
Make SL in C# in computer in redstone in minecraft
5 mins
@MattBatWings
I still don't know how did they Minecraft or chatgpt with redstone
Like how tf do blocks can do that
you just do the computer again
from wires
to circuits
to bits
to bytes
to instructions
to circuits
No I mean im sure its just copied PC structure
Make it less optimized
StartingRage, StartedRage, Raging StoppingRage, StoppedRage, StartingDocile, StartedDocile, Docile, StoppingDocile, StoppedDocile
DocileRecharge
show your transitions
Need more
wait why do we even have a rage bool param
Rage and docile are blend tree's
True or false
i haven't wrote the code for them yet i'm just checking if this is correct for now
do you want the code to control the rage transition duration or do you want the animator to control it
SCP 106 animator is so easy
I'm sure someone will actually think that it's SCP SL code
code
my code? fuck no its ass

but then you must sync the animation duration in the code
actually you might just be able to inspect the current time lmfao
think't
no game designer code
Marketing next
so david should be translating?
😿 noooo david
Wien Hauptbahnhof
😿
so i'm cooked either way
yeah
i'll check it out and see if it works since i have to make a lot of other systems for 096
for now i don't know how will i do his face detection :'(
Funnily enough
Bro making SCP clone instead his own game
nothing in german is Null
Country.Germany = null;
Jovix can you check out my website?
Here's the IP:
https://127.0.0.1:8080
yo wanna check out mine?
i'm thinking of using a sphere collider that is inside of mesh of 096 the mesh collider includes the layer "Detection" making it 2 colliders inside of each other
Sure!
BRO
Insane hitbox
http://192.168.1.62:8080/
credentials: admin password: ||admin||
Why did you steal my design
sorry looked too good
hopefully this shit works
Thank you! I made it in 2 days
ip grabber in your local connection

im gonna steal your dog too
i don't have a pet
you sure?
yeah
im inside your walls
Come out
I'm lonely
thanks hacker i didn't know🥰
let me send you a pic of your dog
XDD
here
:((
that's alex dog
I don't have any animals
yeah
Wait what
Bro called me a dog
its alyx not alex bruh
Add cats that you can pet
In the SCP clone
cat cat
Borrow from internet
wouldn't fit the art style
steal
@celest thorn make a cat model for this guy

no.
i don't want to add a cat to this danger ass facility
introducing: primitive objects
It's an SCP
Immortal cat
RAHHHH i'm blocking modding for my clone
if you mode the game i'll steal your scpsl
huh
i thought we were talking about 3D modeling
Omg face reveal!!
gg chat
hiiiii :3
:3
cute kitty cute
im not a kitty
y not
spooks
im not, im for sure a maid 
:3
096 just wanted a hug
am i your vro
-# probably not
im not blocking you :3
:3
Fired --> blocked --> killed
ε:
ε:
but how/whats the method?
for what?
it shouldnt work
what about 049
uhhhhh
hmmm
yeah that's cooked
yea
939 in 939clawability i guess
u cant really without fake syncing
any scp is fine
you can for 939 do it differentlyt
for other scps you have to fake them as not scp
uhhhh
ok it isnt as easy as i thought
sob
client does the check too for it, but you can at least check for them clawing and then handle it urself
harmny patch!!
Implement the hitbox for claw so it can register hits on scps
harmony patching is prob needed here
I love Transpiler and I live for it
especially when it just randomly stops the code
Wait am I correct that this just, returns false?!
IL_012F: br => Label21
IL_0134: ldc.i4.0
IL_0135: Label21
IL_0135: stloc.s 14 (ReferenceHub)
IL_0137: ldloc.s 14 (ReferenceHub)
IL_0139: brfalse => Label22
something utterly fucking volán is going on
How tf does
// if (!ScpsToSpawn.Contains(allHub2) && RoleAssigner.CheckPlayer(allHub2))
IL_00df: ldsfld class [mscorlib]System.Collections.Generic.List`1<class ReferenceHub> PlayerRoles.RoleAssign.ScpPlayerPicker::ScpsToSpawn
IL_00e4: ldloc.s 7
IL_00e6: callvirt instance bool class [mscorlib]System.Collections.Generic.List`1<class ReferenceHub>::Contains(!0)
IL_00eb: brtrue.s IL_013f
IL_00ed: ldloc.s 7
IL_00ef: call bool PlayerRoles.RoleAssign.RoleAssigner::CheckPlayer(class ReferenceHub)
IL_00f4: brfalse.s IL_013f
become
// if (!ScpsToSpawn.Contains(allHub2) && RoleAssigner.CheckPlayer(allHub2) && !PlayerDataStore.CanSpawnAsScpCheaterCheck(allHub2))
IL_0126: nop
IL_0127: ldsfld class [mscorlib]System.Collections.Generic.List`1<class ['Assembly-CSharp']ReferenceHub> PlayerRoles.RoleAssign.ScpPlayerPicker2::ScpsToSpawn
IL_012c: ldloc.s 14
IL_012e: callvirt instance bool class [mscorlib]System.Collections.Generic.List`1<class ['Assembly-CSharp']ReferenceHub>::Contains(!0)
IL_0133: brtrue.s IL_013e
IL_0135: ldloc.s 14
IL_0137: call bool ['Assembly-CSharp']PlayerRoles.RoleAssign.RoleAssigner::CheckPlayer(class ['Assembly-CSharp']ReferenceHub)
IL_013c: br.s IL_013f
// (no C# code)
IL_013e: ldc.i4.0
IL_013f: stloc.s 15
IL_0141: ldloc.s 15
IL_0143: brfalse.s IL_01a7
IL_0145: nop
IL_0146: ldloc.s 14
above original
bottom is my recompile
same class copied

Tryin to patch the SCP Picker stuff
and im encountering very strange issues
you stloc and ldloc what
no fucking idea
I did not add that
my best guess 15 is Refhub?
[15] bool, Wha
its fucking bool now?!
i think you might have brainfarted me
Yes you can
Patch HitboxIdentity.IsEnemy @bright vine
you sure
Yes
cuz wheres the client side patch
That's why it doesn't work with absolutely everything
Like 3114 strangle doesn't work
049 shouldnt either
erm
Pretty sure it does
Told you
since when
GOOD QUESTION
last time i checked you couldn't
-# last time was probably years ago
😁
Some things won't work until NW makes it use server validation
Like even with friendly fire on, I'm pretty sure SCPs can't attack each other
correct
you need to handle it urself
used to be an exiled bug that you could
14.x ig changed it to be server side validation tho

I love being right all the time
i love being rat all the time
I once had a bug where SCPs could only attack each other and no one else could damage them
that was exiled
I don't use exiled
I never have and never will
💀
I was working on a Custom Role Plugin
Which had Custom Teams and Factions
is it possible to make a held or dropped radio not make sound?
when others are talking
destroy the radio
Though, ig you could make it not send the VoiceChat msg

i want the person who has the radio to hear it but not others when they hold the radio
OnPlayerReceivingVoiceMessage
Or something like that
It's a LabAPI event
Then check ev.Message.Channel == VoiceChatChannel.Radio
Or whatever else you wanna check for
Wait so... you want them to schizo talk to themselves?
others that don't have a radio
since you can hear what others are saying when the radio is dropped or held
that's not gonna hel,p
When a radio is dropped, turn it off
Then no one can hear it
public override void OnPlayerDroppedItem(PlayerDroppedItemEventArgs ev)
{
if (ev.Pickup is not RadioPickup radio)
{
return;
}
radio.IsEnabled = false;
}
Put this in a Custom Event Handler and register it to the CustomHandlerManager, then radios on the ground shouldn't be able to give out player sounds anymore
xddd
from biológiai elszigetelés
ohh i see thank you so much!
this method is a bit.. Unpopular
im gonna kill myself
WTF
THE FUCK AM I MEANT TO DO WITH HITBOXIDENTIFY.ISENEMY LOL
harmony patch it
Patching HitboxIdentity.IsEnemy will get you effectively 90% functionality
Things like 3114 strangle require client validation
Which means there's no way to get them to work until SL makes it server validated
patch deez
but we can get them to work through other ways no?
by editing the client
No
You can't make client mods
the 3114 strangle
"editing the client" lel good luck
You can disable 3114 strangle
You can't allow friendly fire for 3114 strangle
There's a difference
ohh you mean that
i see
so client validation in terms of friendly fire is not possible
but server wise? that applies to most scps like 939, i assume?
There is so much stuff client sided
Most SCP attacks work iirc
i see thank you again
Just a few things like 3114 strangle don't because they're not run through the server
We can prevent a person from strangling, but can't register enemies that the client doesn't think are enemies
What this guy said 
Harmony patches
These are the ones im pretty unexperienced so im going to try anyway
skibidi
LOL
IT WORKED
THANK YOU SO MUCH @slate flume
AND @hearty shard
im gonna be real here i used chatgpt because i literally didnt know what to do with hitboxidentify
i dont have any info about that
So im noticing some functionality is lost
the lunge ability doesnt work on teammates
Depends on how you patched it and what you patched specifically
its just this
[HarmonyPatch(typeof(HitboxIdentity), nameof(HitboxIdentity.IsEnemy), new Type[] { typeof(ReferenceHub), typeof(ReferenceHub) })]
internal class FriendlyFire
{
static void Postfix(ReferenceHub attacker, ReferenceHub victim, ref bool __result)
{
if (attacker.roleManager.CurrentRole.RoleTypeId == RoleTypeId.Scp939)
{
__result = true;
}
}
}```
Yeah don't do that
what am i supposed to be patching
[HarmonyPatch(typeof(HitboxIdentity), nameof(HitboxIdentity.IsEnemy), [ typeof(Team), typeof(Team) ])]
internal class FriendlyFire
{
static void Postfix(Team attackerTeam, Team victimTeam, ref bool __result)
{
if (attackerTeam is Team.SCPs)
__result = true;
}
}
The Team IsEnemy is used here
And not the ReferenceHub version
Lunge still might not work
But you might be able to fix that in a really round-about jank way
Which is by spawning an dummy with Fade 255 and attributing lunge damage from the dummy back to the hit SCP
Thank you jovix
so
when attacking another 049
your game is forced to disconnecvt
and their hp becomes 0
LOL
it seems like 173 can't attack either
but it does get obsreved
when attacking as 3114, you also get kicked
For what reason
in the server i dont see any logs
LocalAdminLogs and player.log
where is player.log located?
idk
😭
LocalLow/Northwood or smth
so it seems like these one work fully:
- SCP-049-2
- SCP-096
- SCP-939
- Amnestic Cloud gives you the screen effect, so only visually
- Lunging does not work, will just go through them
partially working:
- SCP-173
- No snapping, but you do get observed
not working:
- SCP-106
- Still doesn't work with the traumatized effect
hitting scps will get you kicked:
- SCP-3114
- SCP-049
- Only when you do the second attack (the instant kill)
this was interesting
I don't have these same issues
Well I haven't tested all of them
But I have 3114 hitting other SCPs just fine in my plugin
with this?
Yep
2 days ago
I use it for a custom item and I was testing how it was working with another role
ill rerun the server maybe it’ll magically be fixed
You for sure have friendly fire detection disabled?
Um
I didn’t know you weren’t supposed to have that
i do have other code doing that
ill disable them momentarily
If you have friendly fire detection enabled it's going to detect friendly fire
Even if you enabled it through patches or otherwise
Because the FF detector uses its own methods
its disabled by default right
I don't think so
Oh.
You'll have to check the gameplay config
You shouldn't be getting kicked for any of these
I prob can hop on a private server and test in a bit
Check your logs why are you kicked
i couldnt find any logs regarding that
this is what it looks like
(the server is very much alive and i rejoined each time i got kicked from hitting as 3114 or 049's second attack)
and if you do get kicked, the health would be.. Bugged (its literally at 0)
but if u hit him as any working scps then he just dies immediately
Bc yk the health is 0
049 second attack doesn't work
And @bright vine you really gotta check LocalAdminLogs for this stuff cause I immediately found out why 049 attack doesn't work
SCP 3114 attack works unless it kills an SCP
I might have a fix for that
For both actually
096 also kicks on kill

oh no i know i checked the log
i meant to say that i didn't see that one until you pointed it out
i'm blind 😭 sorry, i even searched for tags like "disconnection", "kick", "remove", etc...
Lmao all good
im sure this can be fixed
I already fixed it
I'm just fixing other stuff
right so what shou
I'm gonna fix some of the other things before I send it over
I wanna challenge myself a bit
these
I wanna see if I can get 106 working
Time to add harmony patches to 106 attacks just for logging
So 106 attack must be validated client side cause it makes no calls to ServerProcessCmd
ah
Well yeah you wanted a challenge
private static readonly Regex GrabNumbersRegex = new(@"\d+", RegexOptions.Compiled);
private static string GrabNumbers(string role) => GrabNumbersRegex.Match(role).Value;
private static string SpaceNumbers(string numbers) => string.Join(' ', numbers.ToCharArray());
[HarmonyPrefix]
[HarmonyPatch(typeof(NineTailedFoxAnnouncer), nameof(NineTailedFoxAnnouncer.AnnounceScpTermination))]
public static bool FixDisconnectBug(ReferenceHub scp, DamageHandlerBase hit)
{
if (hit.CassieDeathAnnouncement.SubtitleParts != null || hit is not AttackerDamageHandler handler)
return true;
string scp1 = GrabNumbers(scp.GetRoleId().ToString());
string scp2 = GrabNumbers(handler.Attacker.Role.ToString());
Cassie.Message($"SCP {SpaceNumbers(scp1)} terminated by SCP {SpaceNumbers(scp2)}", customSubtitles: $"SCP-{scp1} terminated by SCP-{scp2}.");
return false;
}
This is how you fix the disconnecting issues
You essentially just check if it's gonna make you disconnect and if so you make your own cassie message instead of the original code running
The problem is that SubtitleParts in the SCP's damage handlers is sometimes null, because it's never used base-game
i see
Then when the LabAPI event is called (CassieQueuingScpTermination) it calls .ToArray() on a null value
And it breaks mirror
i just disabled the termination message in my case as i didn't know how to modify the subtitles itself, but thank you for this! now i know
Yeah it's just the customSubtitles attribute
I have one
Really stupid idea
That I know would work but it's dumb
Which is to have an SSSS keybind assigned to Mouse1
😭
I need to make more LabAPI requests
oh yeah what about 173 snapping @slate flume
i'm wondering what you used to make that happen
Lemme take a look
i'm guessing the snapping just ignores scps and we only need to disallow that
I mean there's a way to do it no matter what because the server is teleporting you there anyways
i use DnSpy to take a look at the game code, thats a good way to check right?
is there a better way i should know
tbh it would be nice if there was a plugin that would log all events ingame (not the errors, just in general)
this would be so great for testing and developing plugins (less time consuming)
(unless theres already a way? 💀)
Yeah but I use rider
CedMod kind of does that
o
Is there event of Scp106 attack like EXILED AttackingEvent?
yes, i believe there are more events to check for that actually
from what i know, you can just go with OnPlayerHurting or OnPlayerHurted and just check if the player is 106
and there you go
oh but let me check again
There is no straight up Scp106Attacking event but you can check for OnPlayerHurting or other things
Also @bright vine I fixed 173 blink
Got that fully working
Against SCPs
oh! how did you do it?
a.. transpiler
They're pretty basic though
oh, so we essentially fill in the missing data
I mean
Not really?
What happens is the client gathers all the information (including the Scp173TeleportAbility.BestTarget) and sends that to the server to use
It's actually kind of smart because it avoids the server overhead of having to calculate that by itself, but the problem is that it doesn't allow us to modify it easily
So what I did was went to where the NetworkReader::ReadReferenceHub call was and replaced it with a call to the server's Scp173TeleportAbility.BestTarget instead of using the client one
Pretty much
The problem is that the server's BestTarget uses HitboxIdentity.IsEnemy which with our old patches now registers for SCPs
Which brings us to the second patch
im honestly impressed you even did all of this
I had to patch BestTarget to make it so that the loop continued in the event that the current ReferenceHub was equal to the Scp173TeleportAbility::Owner
So it wouldn't register the 173 owner as the target
lol because itd kill itself
Yep lmao
I burst out laughing when that happened after my first patch
Never even crossed my mind
var, and MethodImpl??? 😭
var compiles exactly the same and the [MethodImpl(MethodImplOptions.AggressiveInlining)] on the helper method should make it so that it doesn't do an external call and instead just fills in the code
Essentially
Idrk the best way to put it
I don't think Harmony would even check the inlining attribute on it, but like, 3 freaking nanoseconds ahhh "optimization" and var just makes code less readable
Figured it's better to have it than not, makes no difference if it doesn't work
And "var just makes code less readable" is entirely subjective
I can read it just fine
The difference between
var codeMatcher = new CodeMatcher(instructions, generator);
and
CodeMatcher codeMatcher = new(instructions, generator);
Is not large
wait till bro hears about StyleCop 💀
readable code
uhhhhhhhhhhhhhhh no, standards exist
you CAN
but should you?
No one cares about standards
yea tell that to a software engineer guy at google or somethin
For real dude
^^^^^^
^^^^^^^^^^^^^^^^^
Bro you're literally being a keyboard warrior over the fact that I used var instead of an explicit type
That's wild
not just var, StyleCop in general, cuz that's what this has escalated to
and I mean, you're still arguing over it too
Because you're enforced opinionated and arbitrary style preferences and generally being a dick about it
^^^^^^^^^^^^^^^^^^
Bruh
I'm just saying standards exist smh
tries to defend claiming "you can, you dont have to"
makes this argument in the first place
Sure..
I never said you HAD to follow standards, I'm just saying good devs should, that's an opinion
so feel free to disagree
@soft depot I'm following microsoft's coding conventions
https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions
When did i say you had to follow standards
do you really think MS has the best coding conventions?
fr
are you really saying you cant objectively say one of these .csproj files are better?
You said use StyleCop and that's made by Microsoft 🤦🏼♂️
Such a weird hill to die on
If StyleCop is made by Microsoft and following Microsoft coding conventions then it literally agrees with me
huh, the more you know
anyways, I'll concede that
but I'm literally not dying on a hill about this bro
you're just refusing to say that code style can be objectively judged 😭
I am
Code style is entirely subjective
Well
Not entirely
It's like how music has subjective and objective elements
You can say objectively when someone isn't hitting the right notes (eg. using horrible coding practices, writing unoptimized code) or you can say subjectively whether or not you like/dislike someone's music (eg. style conventions)
And there is a point to some of the standard style conventions but saying you need to follow a certain set of a rules to a T is generally, in my opinion, stupid
Especially when some people prefer certain coding conventions in some rules over others in other rules
I would say code style can be judged personally, but like, I don't care what you name your variables, nor do I really care if you use var personally, but saying that code style cant be judged would mean that things like StyleCop are useless, except they clearly have a use
otherwise you get a spaghetti fest of Types in namespaces and you've got nothing telling you "Hey, this is gonna be unreadable for somebody else"
and I think that a good code style is a quality a good dev should have
I never said it can't be judged
I just think the strict rules you're spouting are nonsense
At least in this case
sure, in this case, you can use whatever you want
but like I said, I think a good dev should follow good style choices
True
But the definition of good is fungible
which is why I pointed out you used var
and then you refused to take a jab at you
and then this argument began
Uhm, nuh uh
Some people, like you, strictly abide against var, and I think pushing that in these kinds of contexts on other devs is dumb

💀 it's a metaphor lmao
why do you think there's a trolley?
alr, well it was a joke
Good talk
hi there
is there any way to somehow patch one specific method of one specific instance of something
you can check the instance in a patch
like if i throw a grenade, i want to prefix the explosion just for that grenade. Not have to check for every grenade
but all instances reference the same method, which in memory is just a bunch of bytes, so like, there's not individual methods for each instance, they just all point to the same method
no other way other than checking it every single time a grenade explodes
cant you literally just use events for this?
That was an example
That's hardly unoptimal vs the things that are in base game
so if you're forced to patch I'd just say make a prefix like
public static bool Prefix()
{
if (is my instance)
{
// my code
return false
}
else
{
return true
}
}
This is a hyperoptimization that is generally not needed and is hard to implement
Transpilers 
if you're using a transpiler that's gonna be harder, depending on if you're completely rewriting the method or just making a minor modification
(Im joking)
I mean do like how i did for cedmod
Just transpile a new method
u better be joking 
And that works
I am :3
Now ced can enjoy transpilers without having to transpile everytime
"Now ced can enjoy transpilers"
looks inside
prefixes
i dont know how someone can deal with light mode when coding
that's github
also I have to get up really early every morning so I can't stay up late 😔
never knew github could look so bad
I feel the need to say I use that as a gender neutral term, I don't mean anything by it
Also I updated the other patch cause I hated the helper method
[HarmonyTranspiler]
[HarmonyPatch(typeof(Scp173TeleportAbility), nameof(Scp173TeleportAbility.BestTarget), MethodType.Getter)]
public static IEnumerable<CodeInstruction> FixBestTarget(IEnumerable<CodeInstruction> instructions, ILGenerator generator)
{
var codeMatcher = new CodeMatcher(instructions, generator);
codeMatcher.MatchStartForward(
CodeMatch.Calls(AccessTools.PropertyGetter(typeof(HashSet<ReferenceHub>.Enumerator),
nameof(HashSet<ReferenceHub>.Enumerator.Current))))
.ThrowIfInvalid("Couldn't find ReferenceHub Enumerator.Current call")
.Advance();
int referenceHubIndex = codeMatcher.Instruction.LocalIndex();
codeMatcher.MatchStartForward(CodeMatch.Branches());
Label target = (Label)codeMatcher.Operand;
codeMatcher.Advance();
codeMatcher.Insert(
CodeInstruction.LoadArgument(0),
new CodeInstruction(OpCodes.Call , AccessTools.PropertyGetter(typeof(Scp173TeleportAbility), nameof(Scp173TeleportAbility.Owner))),
CodeInstruction.LoadLocal(referenceHubIndex),
new CodeInstruction(OpCodes.Call, AccessTools.Method(typeof(ReferenceHub), "op_Equality")),
new CodeInstruction(OpCodes.Brtrue, target)
);
return codeMatcher.Instructions();
}
Happy to help!
It was a good challenge
Besides I can use the code myself cause I do my own friendly fire shenanigans
now everything except some abilities and 106 would work
Yeah I'll have to check how the others work
Oh 939 is gonna be a bitch
I think I can patch the lunge though
What is the difference between these IDs?
LifeId i would imagine is a temporary thing that lasts for only while you are one current role
NetworkId is a mirror thing
PlayerId is the one that can be seen in remote admin
UnitId i have no clue
UserId Steam64, Discord or Northwood which depends on how the player has logged into scp sl
thank you!
@slate flume so i have an issue, ive been trying to fix it for an hour and i can't figure it out anymore, but essentially im trying to narrow FF down to roles
the check
How do you mean
how would i check if the player is a specific role, as opposed to teams? i tried the referencehub thing, but for some reason, that never worked
What you want to do is keep the base-level Team patch and then edit the ReferenceHub patch on top of that
Then you can handle any issues on a case-by-case basis
i see. is it not a good idea to use the ReferenceHub directly?
ive noticed that the server lowkey lagged and was forced to crash every time i switched to that
Some of the abilities still rely on the Team functionality, it's not necessary to keep it but I like to
What's your current patch look like
Cause it shouldn't be causing these issues
it's just the same, all i did was swap Team to ReferenceHub
[HarmonyPatch(typeof(HitboxIdentity), nameof(HitboxIdentity.IsEnemy), [ typeof(ReferenceHub), typeof(ReferenceHub) ])]
And what does the rest of the patch look like
Cause you'll need to do other stuff if you're transferring to referencehub
Still exactly the same?
team version
static void Postfix(Team attackerTeam, Team victimTeam, ref bool __result)
{
if (attackerTeam is Team.SCPs)
{
// This forces friendly fire to be enabled between SCPs lol (only for SCP-939-Hybrid)
Logger.Info($"Working, it is detected: Attacker:{attackerTeam}");
__result = true;
}
else
Logger.Info("No SCP-939 hybrid detected");
}
previously, it was
static void Postfix(ReferenceHub attacker, ReferenceHub victim, ref bool __result)
{
if (attacker.roleManager.CurrentRole.RoleTypeId == RoleTypeId.Scp939)
{
// This forces friendly fire to be enabled between SCPs lol (only for SCP-939-Hybrid)
Logger.Info($"Working, it is detected: Attacker:{attacker}");
__result = true;
}
else
Logger.Info("No SCP-939 hybrid detected");
}
the roleManager does work, but like im trying to integrate with UncomplicatedCustomRoles (another custom plugin) and seems like they dont appreciate that 💀
So it works when you use:
static void Postfix(ReferenceHub attacker, ReferenceHub victim, ref bool __result)
{
if (attacker.roleManager.CurrentRole.RoleTypeId == RoleTypeId.Scp939)
{
// This forces friendly fire to be enabled between SCPs lol (only for SCP-939-Hybrid)
Logger.Info($"Working, it is detected: Attacker:{attacker}");
__result = true;
}
else
Logger.Info("No SCP-939 hybrid detected");
}
}
But not when you integrate?
you'll have to catch me up a bit here
let me debug further just to narrow it down
@slate flume i fixed it, so it turns out
if i use ReferenceHub version then i have to enable full force friendly fire for 939 as well (for some reason 😭), which you can see here
public override void OnPlayerHurting(PlayerHurtingEventArgs ev)
{
Scp939DamageHandler scp939DamageHandler = ev.DamageHandler as Scp939DamageHandler;
bool flag = scp939DamageHandler != null;
if (flag)
{
PropertyInfo property = typeof(Scp939DamageHandler).GetProperty("ForceFullFriendlyFire", BindingFlags.Instance | BindingFlags.NonPublic);
if (property != null)
{
property.SetValue(scp939DamageHandler, true);
}
}
base.OnPlayerHurting(ev);
}```
whereso with `Team` version, i dont even have to do that
i have no idea why this is necessary but it just works
that attribute is used by the JIT compiler at runtime so harmony has nothing to do with it
i hate stylecop
good dev != using a tool to enforce some styles someone thought of
and really, var does not make a difference here
how is this relevant 😭
*argues about style being objective*
*uses github light theme*
You don't have to use reflection to get the ForceFullFriendlyFire attribute if you use a publicized assembly
From a developer to another, enable dark mode
i see thanks! also i'm still getting disconnection every now and then like
"the server hasn't responded to a heartbeat, restarting in 30 secs.."
something like that
oh no i never got that error now but i still disconnected
...odd
this happened after like a few minutes or 10 mins
(never had an issue until i tried to do the SCP friendly fire thing btw)
i love scp friendly fire
Guys, How to locate every player's zone! I am Trying to make Delta nuke Plugins.
go through the list of players (ReadyList)
wasn't there a method that could remove the blur from 939's screen?
player.Zone
i remember someone doing that
someone changed it so that if you played as 939 your vision isnt blurred
normally its blurred
@upper vapor thanks
np
ummm let me check
okay
@upper vapor but how to use it, I still don't know!
you need to create a plugin in general
Zone is a subclass within Player
Player is often used as an argument in most event handlers
foreach
Player.ReadyList
check if the zone is good
did you mean
property
oops yeah
so how to check if is in light containment and surface area
If (player.Zone is Good)
Do you know C#? And some basics of it?
a little bit
Enums?
yeah
Thats a client side settings
W3S or the MS doc link?
ms
:3
So the zone is an enum that has 4(or 5) zones that the player can be in
ok
is it to compare these numbers
Thx!
Is it possible to make a player invisible so that only the items they are holding are visible?
fade effect
Everything became transparent
:3
you can't
fade doesn't work for that
i mean it shrinks the gun / item
but that has been solved now
It still shrinks on my server. you mean it will be solved in next update?
probably
great
youll have to patch it prob
i tried to search for it but i couldnt find-
oh
So it has to be patched
Omfg
Everything just has to be patched
LOPL
well yea
but what is "it"
what is it even caleld
called
i dont remember where it is
💔
Yup
And then there are things you cannot patch cause its client side only
scp target counter
odd all i could find is 096 targets tracker and 079 target counter (i heard that one is clientsided)
so i couldnt find this one in particular
check Round class from labapi it might have smth
you can easily make a Prefix patch o UpdateTargetCount to disable it, since it is a public int TargetCount
int is crazy
oh whoopise daisy
public int TargetCount
{
get => this._targetCount;
set
{
if (!NetworkServer.active)
return;
this.Network_targetCount = value;
}
}
There is this
There is a get/setter for it
ya
thank you so much again! my only goal is to make a specific scp count towards the target counter as well, this shouldnt be hard to do
In programming it is never "shouldn't be hard to do"
is it just a matter of whether northwood lets us do this thing or not
I had tons of instances where "this is the most complicated shit I require to do" and was done in 3 lines
and then the next request is "just do this, its simple" and had to refactor 3 parts of the code
The code currently is evolving in the way to allow plugins to modify the game itself. Like in the past that was not an option at all
or was very limited
oh thats cool
so things not possible now, can be possible with the right suggestions
Do we care 
sometimes yes
skybox
other stuff
we should just create an open source server impl
sadly still aren't
there is one
but imagine
updating it




