#plugins-dev-chat
1 messages ยท Page 100 of 1
dude making my own version is probably better lol
i'm gonna update to Unity 2019.4 since i got this error for C# 6.0
i can just use open it to unity 6.2
ye sure
fuck it i'm upgrading it lol i still have a backup for the decompile
make a backup
i already have it
fucking hell man its gonna reimport every single asset
its gonna take a while again
see you in 2 hours
:DDD
Are you sure making a clone based off of 8.0.1 is a good idea? The game's code was very messy back then
also
decompiling the code is breaking the EULA
I hate these errors. How to understand why this happened ๐ญ
Server crushed
Caught fatal signal - signo:11 code:1 errno:0 addr:0x7d9f20e0c970
so @harsh thorn could ban you
crushed by who
mostly
i think its legal in some countries
๐ฅฐ
Wasn't it anti-cheat exclusive?
but if i don't use SL code is it fine?
also this would be like hella funny since many IL patch and stuff require to use the decompiled code
all client code
EU only permits it in limited amount of cases
(bugfixing and interoperability)
no
i still need to get viewmodels from this specific version so i can use them on my version of SL
and afair no other region has the law make it more permissive than EU does
I see, I confused it with offline mode modification
most assets are free to extract and use
nice is there a way i can export 11.0 assets?
with the exception of some 3rd party ones that we do not control the licensing of
haha
wait till you have more
I know bc i did the same thing
fixed like 10 issue, 100 more popped up
FYI iirc we did DMCA people that decompiled client code in the past

did they shared the code or what?
ye
ah
I meant as long as you dont share you can somewhat use it i think
dont exactly remember spec things or stuff
well as long as you don't share it and don't tell anyone we can't know 
but sharing is yes indeed you can track
Cant hurt anyone if you wont tell us
its even more broken
but for example a no name guy who decompile the release version for itself cantr trace it
real
all gone
๐ฅฐ
thats funny
i just redownloaded the package lol but a newer version
sometimes I dont even know how they compiled it
the game?
i used asset ripper
i meant NW
so have you tried building it
nope it probably won't build lol
since there is an error it probably wouldn't even take a .4 seconds to build
ah so you still fixing the trillioniths errors
yeah
as you said fix one the other one appears
this is simpler then the other one
tehehehe
what the flip?!
:D
yeah :'D
@unique crane when make sl into lua
๐
There were lua scripting plugins for server
One step closer to lua client
when make a new prog lang ?
SL++#_
!remindme 1y
I will remind you of this in 1 year (<t:1787085974:f>).
I will remind you of this in 50 years (<t:3333386795:f>).
!remindme cancel
๐ซ I couldn't understand the format of your reminder time and text.
!remindme 50y cancel
I will remind you of that in 50 years (<t:3333386818:f>).
Factorio use lua and c++ so
!remindme Cancel
๐ซ I couldn't understand the format of your reminder time and text.
Lel
bot thinks we live in 50 years
how do i cancel this shit
crazy
๐ซ I couldn't understand the format of your reminder time and text.
๐
!help remindme
Syntax: !remindme [time_and_optional_text]
Either of the following formats are allowed:
!remindme [in] <time> [to] [reminder_text]
!remindme [to] [reminder_text] [in] <time>
<time> supports commas, spaces, and "and":
12h30m, 6 hours 15 minutes, 2 weeks, 4 days, and 10 seconds
Accepts seconds, minutes, hours, days, and weeks.
You can also add every <repeat_time> to the command for repeating reminders.
<repeat_time> accepts days and weeks only, but otherwise is the same as <time>.
Examples:
!remindme in 8min45sec to do that thing
!remindme to water my plants in 2 hours
!remindme in 3 days
!remindme 8h
!remindme every 1 week to take out the trash
!remindme in 1 hour to drink some water every 1 day
Reminder time is too large.
I will remind you of this in 500 years (<t:17534004486:f>).
!remindme 1y why am i still on this forsaken game
I will remind you of that in 1 year (<t:1787086098:f>).
took me ages to fix the first bug so im gonna fix this shit then gonna take me years to fix the others
Are these reminders just permanent
That's crazy
they will get forgotten when the database is wiped
or if the bot team decides to not use the old system when and if bot engineers come back
Remind me not to use it
The idea of a permanent reminder rattles me to my bones
I generally don't like having things permanently online
Well well well, seems like you might need years of experience with fixing shit 
yeah
this fuck ass script dude
Truly a Northwood moment
Truly assetripper moment
I bet it moved to GlobalUsings
But since UnItTY it just rewrote the csproj
its the fuckass server relay script dude
real
as soon as i remove it everything else will break lmao
yeah fuck this shit i'm not fixing it lmao
If no one got back to you, I had a rather roundabout way to do this, but my code is probably not the best to copy, still I'll post it incase it helps
public void On079Pinged(Scp079PingedEventArgs ev)
{
if (ev.PingType == LabApi.Features.Enums.Scp079PingType.Human)
{
Room room = Room.GetRoomAtPosition(ev.Position);
Dictionary<Vector3, Player> positions = new Dictionary<Vector3, Player>();
foreach (Player player in room.Players)
{
positions[player.Position] = player;
}
Player target = HelperFunctions.GetClosestPlayer(positions, ev.Position);
}
}
public static Player GetClosestPlayer(Dictionary<Vector3, Player> positions, Vector3 targetPosition)
{
Player closestPlayer = null;
float closestDistance = float.MaxValue;
foreach (var kvp in positions)
{
float distance = Vector3.Distance(kvp.Key, targetPosition);
if (distance < closestDistance)
{
closestDistance = distance;
closestPlayer = kvp.Value;
}
}
return closestPlayer;
}
Player keyPlayer = room.Playery.Where(x => x.IsHuman).OrderBy(o => (o.Position - ev.Position).sqrMagnitude).FirstOrDefault();
^ target
damn, thanks for the optimization lmao
Remove is human
I copy pasted from internal that got copy pasted from stack overflow
// Source: https://stackoverflow.com/questions/33145365/what-is-the-most-effective-way-to-get-closest-target
hahaha, still I appreciate the help
thanks!
@pallid galleon
We should realy do that instead of PlayerReadyList ;)
Idk which is more efficient
While your at it you can try both?
With the GetRoomPos and just with Player.ReadyList
wtf
Im kinda doing it as a side project honestly
Since i need to focus on my game
Ah yes, a three month long side project
Not like 3 months like never side project lmao
Is basically a three-month period of time that we're gonna be taking in order to fixing and repairing the game
I said to myself if that bean gonna jumpscare me i fucking gone
Quick (dumb) question, how can i make a tesla not idle/trigger when a player gets close to it?
yes
Show
Why would the collider be null here?
am I implementing this wrong?
public void SetPosition(Vector3 dir, float distance, Player player)
{
if (player.RoleBase is IFpcRole fpcRole)
{
var motor = fpcRole.FpcModule.Motor;
Transform cam = player.ReferenceHub.PlayerCameraReference;
Vector3 relDir = cam.TransformDirection(dir).NormalizeIgnoreY();
motor.ReceivedPosition = new RelativePosition(player.Position + relDir * distance);
LabLogger.Info($"Moved player {player.Nickname} to {player.Position}");
}
else
{
LabLogger.Warn($"Player {player.Nickname} does not have an IFpcRole (current role: {player.Role})");
}
}
this still doesn't move my dummy. I tried fpcRole.FirstPersonModule, but fpcRole doesn't have a FirstPersonModule definition
This should work
Where are you calling the code?
What are you seeing in the console when it runs?
Also you can just do player.Camera you don't need to do player.ReferenceHub.PlayerCameraReference
this happens inside an MEC coroutine
private IEnumerator<float> MoveToRoom_Centered(Room currentRoom, Room targetRoom)
{
// 1. Move to center of currentRoom
Vector3 currentRoomCenter = currentRoom.Shape == RoomShape.Curve
? GetCurveRoomCenter(currentRoom)
: currentRoom.Position;
while (Vector3.Distance(transform.position, currentRoomCenter) > 2f)
{
Vector3 direction = (currentRoomCenter - transform.position).normalized;
float yaw = Mathf.Atan2(direction.x, direction.z) * Mathf.Rad2Deg;
float pitch = -Mathf.Asin(direction.y) * Mathf.Rad2Deg;
pitch = Mathf.Clamp(pitch, -88f, 88f);
selfPlayer.LookRotation = new Vector2(pitch, yaw);
float distance = Vector3.Distance(transform.position, currentRoomCenter);
LabLogger.Info("About to use new method to set position");
SetPosition(Vector3.forward, distance, selfPlayer); //<- right here
yield return Timing.WaitForOneFrame;
}
LabLogger.Info("Reached center of current room");
//more code further down
Wait, so you're just trying to move the player to the center of the room?
yes, I'm trying to move the dummy to the center of the room, but properly, not janky lol
technically I'm trying to write a full pathfinder function to give dummies movement, the best way I figured to do this was to get the current room, find the center, move to the center, get the target room, find the door that both room share, move to the door, then move to center of the target room
private IEnumerator<float> MoveToRoom_Centered(Room currentRoom, Room targetRoom)
{
// 1. Move to center of currentRoom
Vector3 currentRoomCenter = currentRoom.Shape == RoomShape.Curve
? GetCurveRoomCenter(currentRoom)
: currentRoom.Position;
while (Vector3.Distance(transform.position, currentRoomCenter) > 2f)
{
Vector3 direction = (currentRoomCenter - transform.position).normalized;
float yaw = Mathf.Atan2(direction.x, direction.z) * Mathf.Rad2Deg;
float pitch = -Mathf.Asin(direction.y) * Mathf.Rad2Deg;
pitch = Mathf.Clamp(pitch, -88f, 88f);
selfPlayer.LookRotation = new Vector2(pitch, yaw);
float distance = Vector3.Distance(transform.position, currentRoomCenter);
LabLogger.Info("About to use new method to set position");
if (dummy.ReferenceHub.roleManager.CurrentRole is not IFpcRole fpcRole) throw new Exception();
fpcRole.FpcModule.Motor.ReceivedPosition = new RelativePosition(currentRoomCenter);
yield return Timing.WaitForOneFrame;
}
LabLogger.Info("Reached center of current room");
//more code further down
}
You're doing a lot of work you don't have to do
Also
When you give the motor a received position, it'll keep going to it until it gets there
You don't have to update it every frame
I'll do some rewriting in that case
On top of that, if you are moving in a straight line, I presume the camera will stay the same as well, so you don't need to update that every frame either
Also, do something like fpcModule.MouseLook.LookAtDirection(dir); don't do it yourself
ah, yeah that simplifies things
lmao, thank you, slowly I'll work these optimizations into all my code
I think as I learn more about all the components, I'll stop overcomplicating my life
Real shit
I still need help with this ๐
I lowkey cant understand why the fuck it always triggers
Give me a sec
private void MoveToCenterOfRoom(Vector3 roomCenter, Player dummy)
{
if (dummy.RoleBase is not IFpcRole fpcRole) return;
FirstPersonMovementModule fpcModule = fpcRole.FpcModule;
fpcModule.MouseLook.LookAtDirection(Vector3.Scale(roomCenter - dummy.Position, new Vector3(1, 0, 1)));
fpcModule.Motor.ReceivedPosition = new RelativePosition(roomCenter);
}
Now unless I did something really wrong here, this should really be all you need to get this working
public override void OnPlayerIdlingTesla(PlayerIdlingTeslaEventArgs ev)
{
ev.IsAllowed = false;
}
public override void OnPlayerTriggeringTesla(PlayerTriggeringTeslaEventArgs ev)
{
ev.IsAllowed = false;
}
Already tried that =/
That works
I use it myself
If that's not working then you're not initializing your plugin correctly
Every other event works
You'll have to show code
1 sec
public override void OnPlayerHurting(PlayerHurtingEventArgs ev) <--- This works
{
if (!NetRoleManager.Instance.HasCustomRole(ev.Player, Lucky.Singleton.Config.Ly.RoleId) ||
ev.Attacker == null) return;
PlayerDisplay pD = PlayerDisplay.Get(ev.Player);
PlayerDisplay aD = null;
aD = PlayerDisplay.Get(ev.Attacker);
if (RandomNumberGenerator.GetInt32(101) <= Lucky.Singleton.Config.dodgebulets)
{
ev.IsAllowed = false;
pD.AddHint(dH);
Timing.CallDelayed(2f, () => pD.RemoveHint(dH));
if (aD != null)
{
aD.AddHint(aH);
Timing.CallDelayed(2f, () => aD.RemoveHint(aH));
}
}
}
public override void OnPlayerIdlingTesla(PlayerIdlingTeslaEventArgs ev)
{
ev.IsAllowed = false;
} <--- this doesnt
public override void OnPlayerTriggeringTesla(PlayerTriggeringTeslaEventArgs ev)
{
ev.IsAllowed = false;
} <--- this neither
And restarted the round
Do sr in the server console
Real shit
that's for the soft restart i imagine
Soft restart is hitting the round restart button in remote admin
That doesn't actually restart the server
It restarts the round
yeah ik that
Sr is a soft restart in the sense that it actually restarts the server, but has people reconnect
A hard restart makes it so people don't reconnect
That's what i've been doing
,
It still doesnt work
Do this
Add a Logger statement to the beginning of OnPlayerHurting
You say it works, correct?
Yep
So Logger.Info("OnPlayerHurting Running")
Push the update, restart the server, then tell me if that outputs in the console like it's supposed to when a player is hurt
It does
And tesla gates still broken?
Yep
Can I see your plugin entry
added a logger to the both the idling and triggering and it doesnt even show up in the console
I want to see how you initialize the events
^
1 sec
You can send a screenshot or really anything you don't have to add comments or shit
( the events are right after the hints )
What confuses me is that literally every other event works
Okay now I'm about to crash out
?
The problem isn't obvious and that's upsetting to me
I presume all of your references are up to date
yep
Do you have any other plugins?
Yep
Which ones
Enabled: an effect visualizer, spectators count, custom zombies, one to give spawn protection to a wave, 3 custom commands and nothing else i think
Okay so what the fuck
Yeah
It's insane to me that it's not calling the events because for everyone else and me it works fine
lemme try something rq
I created an empty plugin that literally just logs when someone triggers a tesla and disabled every other plugin
and it still doesnt work
i'm going insane
All your assemblies and shit for both the server and the plugin are up to date right?
Yes
Are your in-game tesla gates from hell or something
How are you testing if they're being triggered
I'm walking through them
also tried spawning a dummy infront of them
Ok so
I fixed it(?)
What'd you do
I mean i managed to get the staging server of the vps working ( not gonna dive into why i didnt do it earlier ), i then uploaded the plugin on there and now it just magically works
I have no idea what that means
I'm still confused as to why it didnt work on my server
You mean you put it on a different server and it started working?
Yep
And you're 100% sure your server is up to date?
Yep
Has all the right dependencies?
I mean as long as it works im not gonna question why
That was a quite big waste of time 
@grand flower
I modify 173 blink timer to be shorter than usual
The problem is that when people look away, the "residual" timer decays very quickly
I've been told Dr. Bright's Mayhem got around that and if you're cool with sharing your trade secrets, I'm curious as to how you did that
-# Is now a bad time?
Nah
so, fpcModule.Motor.ReceivedPosition = new RelativePosition(targetRoom.Position);
does not move my dummy lol
the look seems to work, but not the move
that seems to work, so how do I fix that, the dummy was in the same room, just somewhat offcenter
If it works in short distances but not long ones, you'll just have to stick with the coroutine idea in order to update received position
gotcha, I'll try an implementation of that
Ah almost forgot but thanks for the help @slate flume
I'll check if I can
I mean I didn't do a whole lot but I appreciate it haha
I appreciate you Cyn
Call ServerOverridePosition after doing that
Cyn, do you know if I need to do the while loops forward, or is there really a max distance they can move?
Uhhh what are you trying to do exactly?
say I have dummy in a room, I want them to walk to the center of the room, ThatGuy suggested this
but I found that while the look was working, the move wasn't until I manually brought them closer to the center of the room
I'd just do that in a component using Update()
Based
I've got it in a component, how are you suggesting to do this in update?
call a coroutine from update, or a regular function?
No just do your logic in Update
Since it runs every frame
Move the dummy towards the target position
and if I want the ability for the dummy to shoot and such, would I add another component to handle that, or link that logic into the Update() tick as well?
Some proxy showcase after rewriting most of code
- Lobby is custom and its hosted on proxy side soo you don't need to have seperate sl server running for it
- Proxy keeps your connection always as connected soo when for example server round restarts it will not disconnect you but instead reconnect and if its online it will connect back.
YO what the fuck
How the fuck do you redirect players like that I thought that was exclusive to when they were preauth
I just reusing preauth from connection which is on proxy
player connects to proxy I save pre auth -> connect to other server with same preauth if connection was accepted I switching in background connections and client thinks its connected to that server
That's mad interesting
anyway server can idk crash in anytime and it will connect you to lobby in this case
yeah those suggestions don't work, they just lead to the dummy teleporting
ah well, I'll have to come back and fix it later
Just update the position every so often in a coroutine
Sort of how you did originally
You don't need to update every frame cause travel isn't instant
but using your suggestion with FPC?
Yep!
can I await the movement? how do I know when it's done?
You got short-distance movement working, so just make it a series of short-distance movements
Lemme draft smthn up rq
This is what i do
private void MoveTowardsTarget(Vector3 target)
{
if (_fpcRole?.FpcModule?.Motor == null)
return;
Vector3 currentPosition = transform.position;
Vector3 direction = (target - currentPosition).normalized;
float distanceToTarget = Vector3.Distance(currentPosition, target);
if (distanceToTarget <= _stoppingDistance)
return;
Vector3 movement = Time.deltaTime * _speed * direction;
if (movement.magnitude > distanceToTarget)
movement = direction * distanceToTarget;
_fpcRole.FpcModule.Motor.ReceivedPosition = new RelativePosition(currentPosition + movement);
_fpcRole.FpcModule.MouseLook.LookAtDirection(direction);
}
Interesting
where is _fpcRole defined?
I was thinking like
private IEnumerator<float> MoveDummy(Player dummy, Vector3 targetPos)
{
Vector3 direction;
while ((direction = targetPos - dummy.Position).sqrMagnitude > 1)
{
direction = direction.NormalizeIgnoreY();
if (dummy.RoleBase is not IFpcRole fpcRole) yield break;
fpcRole.FpcModule.Motor.ReceivedPosition = new RelativePosition(dummy.Position + direction);
direction.y = 0;
fpcRole.FpcModule.MouseLook.LookAtDirection(direction);
yield return Timing.WaitForSeconds(0.1f);
}
}
Player::RoleBase is IFpcRole
Correct me if I'm wrong, but isn't this what they already tried?
Just a little less flashy
For long distances?
They had movement working for them but it didn't work over long distances
I use it for a waypoint system between rooms
Hence why I recommended something like this
/// <summary>
/// Patches potential seizure inducing issues.
/// Remove the blink timer bonus from breakneck speed since they get distance and speed from it.
/// </summary>
[HarmonyPatch(typeof(Scp173BlinkTimer), nameof(Scp173BlinkTimer.TotalCooldownServer), MethodType.Getter)]
public static class Scp173BlinkCooldown
{
[HarmonyTranspiler]
public static IEnumerable<CodeInstruction> GetTotalCooldownServer_Transpiler(IEnumerable<CodeInstruction> instructions, MethodBase method,
ILGenerator generator)
{
var matcher = new CodeMatcher(instructions, generator);
// this._totalCooldown
matcher.MatchEndForward(
new(OpCodes.Ldarg_0),
new(OpCodes.Ldfld, AccessTools.Field(typeof(Scp173BlinkTimer), nameof(Scp173BlinkTimer._totalCooldown)))
)
.Advance(1)
.RemoveInstructions(matcher.Remaining)
// return this._totalCooldown
.InsertAndAdvance(new CodeInstruction(OpCodes.Ret));
return matcher.InstructionEnumeration();
}
}
// In our Scp173 component's Awake() method (not that method really but it'd work anyway)
// Get the blink timer so we can hook onto the observers changed event.
var role = (Scp173Role)Player.RoleBase;
if (role.SubroutineModule.TryGetSubroutine(out _blinkTimer))
{
// Remove the original subroutine's OnObserversChanged since we'll want to override the logic.
_blinkTimer._observers.OnObserversChanged -= _blinkTimer.OnObserversChanged;
_blinkTimer._observers.OnObserversChanged += OnObserversChanged;
}
/// <summary>
/// Called by the Scp173ObserversTracker when our amount of observers changes.
/// </summary>
/// <param name="previous">The previous amount of observers.</param>
/// <param name="current">The new amount of observers.</param>
private void OnObserversChanged(int previous, int current)
{
if (!NetworkServer.active)
{
return;
}
var role = (Scp173Role)Player.RoleBase;
if (!role.SubroutineModule.TryGetSubroutine<Scp173BlinkTimer>(out var blinkTimer))
{
Logger.Error("Failed to get Scp173BlinkTimer subroutine from Scp173!");
return;
}
if (previous == 0 && blinkTimer.RemainingSustainPercent == 0f)
{
var count = Math.Min(Player.ReadyList.Count(p => p.Role == RoleTypeId.Spectator), 32);
blinkTimer._initialStopTime = NetworkTime.time;
blinkTimer._totalCooldown = SomeRedactedMathInvolvingCount;
}
blinkTimer._totalCooldown += 0f * (current - previous);
blinkTimer._endSustainTime = current > 0 ? -1.0 : NetworkTime.time + 2.0;
blinkTimer.ServerSendRpc(true);
}
Cyn you're my favorite
My actual hero
so, here's something interesting, maybe you guys can figure out what this means:
private IEnumerator<float> MoveDummy(Player dummy, Vector3 targetPos)
{
LabLogger.Info("Starting MoveDummy");
while ((targetPos - dummy.Position).sqrMagnitude > 1f)
{
if (dummy.RoleBase is not IFpcRole fpcRole) yield break;
Vector3 worldDir = (targetPos - dummy.Position).normalized;
worldDir.y = 0;
LabLogger.Info($"[MoveDummy] Target: {targetPos} | Current: {dummy.Position} | Dir: {worldDir}");
fpcRole.FpcModule.MouseLook.LookAtDirection(worldDir);
Vector3 localStep = dummy.GameObject.transform.InverseTransformDirection(worldDir);
LabLogger.Info($"[MoveDummy] Local step = {localStep}");
fpcRole.FpcModule.Motor.ReceivedPosition = new RelativePosition(localStep);
LabLogger.Info($"[MoveDummy] Applied RelativePosition = {localStep}");
yield return Timing.WaitForSeconds(0.1f);
}
LabLogger.Info("MoveDummy finished");
}
Everything logs as it should, which implies that the full function is being carried out, I see the dummy turn and face the correct direction, the relative position is listed correctly, but the dummy still does not move
trying to figure out what this means? is it possible ReceivedPosition isn't updating properly?
Call ServerOverridePosition on the dummy after setting the received position
Idk what the InverseTransformDirection thing is about
Replace the new RelativePosition(localStep) with new RelativePosition(dummy.Position + worldDir)
They tried this already, and it wasn't what they wanted
when I tried that, all it did was teleport them around, not walk
Set the Position too
after the ReceivedPosition
but they should still walk
it works for us
yeah, they didn't walk, they just teleported
Don't use a coroutine
I'll try it again
Do it in Update()
but then how do I fit in the pathfinding logic at the same time?
You can still do it in Update()
just only every so often
But update the dummy's position every frame
Doing it in Update means it updates every frame, that's not necessary
It works for us, and there's nothing wrong with that
Likely because you're doing it in one-frame increments
It works but it's unnecessary
which is why you should do it in Update
But it's unnecessary
How is it unnecessary if it works
Because you can update it less often and have it work
Yeah but why
Yeah and you don't optimize until it becomes an issue
And if that becomes an issue, idk what you're doing
Yeah but you could just, keep it optimized in the first place
maybe it's also making life harder, but my logic is if through the admin menu, I can have the dummy walk just fine, then why am I unable to use that same method to have my dummy walk normally instead of tick teleports
Especially if it works better with the solution you're making
Are you trying to make bots?
@pine parcel do this
yes, I'm starting with simple pathfinding to start
about to test this now
Lmk if it works
I'm just stating what works for us @ 48 player servers
The only optimization required is that we don't send movement updates to our custom dummies
And I'm stating what works for me with 32 player servers
If it works at 48 players you don't need to do premature optimization
Yeah but for my purposes it works better
Because I can do variable timings to prevent unnecessary clutter
Instead of having a forced update every frame
The reason I'm being so hard-headed here is because it appears to me they already almost have it working
Why overhaul the entire thing if one small change will get it working
I know my project can pathfind well, I can have it teleport in tests, I just need that natural walking motion, and I've got a solid base
eh I'm always component oriented for things like these
I don't use coroutines to move gameobjects around
I appreciate the input from everyone here, it also doesn't help that I'm still new to csharp in general
Fair just in my mind things like dummies have the interpolation for a reason
probably not the best project to do if your new
It prevents required updates every frame and allows you to pass in a few commands to get the desired result
probably, but I've done a couple projects now, and I have a terrible tendency to throw myself into the deep end and force myself to swim ๐
Honestly fair
Jump into the weeds
All players have, but it's mostly for latency and all
To smoothe things out
You can still do your updates every frame
That's true
the movement is working now, I just need to sort out a small bug that causes the dummy to effectively pace over the middle of the room
thank you both for your help
You just need to clamp the position
Only normalize if the magnitude is greater than 1
The direction I mean
Instead of direction.normalized do like
float sqrMagnitude = direction.sqrMagnitude
if (sqrMagnitude > 1) direction /= Mathf.Sqrt(sqrMagnitude)
Or something to that effect
I'm on mobile so it's weird
no worries lol, so I can understand it better, what's the reason for this?
why
๐ญ
why can't you just use normalized
^
oh because you only wanted to normalize directions with a magnitude larger than one
shouldn't you always normalize though
I guess this technically slows it down if you're close to it
the nanoseconds
Your server will thank you for that 0.0004 tps boost
Rn i need the nano seconds lol
and an entire rack lol
https://ratcentral.skibiditoilet.net/๐/ppkjnf02.png
This shit is crashing my fuckign computer and its all primitive merged
||Its 44330 primitives||
I just need a smart way to optimize now
tf is that
menger
and what do you do with it
In mathematics, the Menger sponge (also known as the Menger cube, Menger universal curve, Sierpinski cube, or Sierpinski sponge) is a fractal curve. It is a three-dimensional generalization of the one-dimensional Cantor set and two-dimensional Sierpinski carpet. It was first described by Karl Menger in 1926, in his studies of the concept of topo...
Greate
this is used for topology test and how much can you explode a gpu because it can be easily scaled to massive
It is fractal
and im using as a test to stress the amount of prim
Minecraft ahh cube
This was in a minecraft update
Sponge Dimension
๐ซ๐ท
Use primitives restore particle in Minecraft
Im rn testing something far harder than a particle
lol
Brutally kill this guy^
I mean you don't have meow lol
but im 100% sure with meow its possible
rn the max we tested was 35k primitive for a client
lmao
Nah bro
ur framework or smth?
yes
Name Denied

@celest thorn so ur pannel also called meow
No the panel isn't
Why did you ping him hes literally in chat๐ ๐คก ๐ฝ
we have
MeowEditor
MeowMenuSystem
MeowImporter (which i cannot say what it is, NDA)
MeowUnityProjects
MeowHitbox
guh
Meow system
Eve has evil system
Meow Refactoring
HAHHAHAHAHAHA
i believe it
Meow Existence
noo
Idk how tf it even started
you are evil
Be nice to yourself
This is a picture of you
Thats worst then 173
with A.M
That mf robot is evil as fuck
Just bored
i played the game
lol
i didn't read the book
but i know the story
Damn๐ฟ
and i know the book is more graphic
wtf is it then
Anime
A super computer
created by the US Government
but it went rough realizing that humanity is just evil and it wiped out everyone, and now tortures for eternity 5 people
which rappresent each sin that man has committed
did u play mcsm
jesus
like idk how the lore goes deep but he rewrote PHYSICS just to torture them
Humans are 'too inefficient'
"picture of you" but theres no pictures
The pillar
๐ mf robot has the source code for the world
its not being inefficent just he hates them
lol
but you know who hates him the most the chinese

y
SPoiler ||The chinese and russians are the one taking him down, via a virus||
virus
yes
bro it just got source code of the world
I mean his brain
how
Can they just nuke it
No
Its a pc after all
He has a safety protocol
๐ฟ
and millions of pcs around the globe
he is the world
Ez fix
๐ฟ
bruh he thinks he is playing as foundation in 5K
Read the entire wiki or watch 3 hours of gameplay of the game
which has some banger songs
Title: I Have No Mouth, and I Must Scream
Developer: Cyberdreams
Publisher: Nightdive Studios
Release Date: 31 October 1996
"Assume the roles of five different characters, each in a unique environment
Challenging dilemmas dealing with powerfully charged emotional issues
Provocative psychological and adult-oriented themes
Based on Harlan ...
I wanted to present it to the commission for my exam
but sadly i couldn't
just because the author wasn't in our program
Btw there's ALOT of torture, animal cruelty, Death, dismembering, Religion, Magic, like a ton of shit that this game should be by itself a Warning
i can imagine it
Idk i know the book is more graphic
the game isn't that much
but its disturbing sometimes
like i found a bit creepy the entire section for the animal cruelty which is a puzzle
imagine being a mod and reading all of this shit
Even more in Plugin dev chat ๐
fr
but i mean its a pretty accurate description of a dev suffering
lmao
i know for sure that when we reach A.M levels thats where we need to pull the plug
Well, it's accurate for me, I keep looking for a way to hide the name when talking on the radio without patches nor redoing the whole process behind the audiomessage
you cannot
best way
is Speaker

don't worry i can join you
but im doing something much more complicated
the greater evil
Crazy
Hi
Does some one know terabit hosting?
I had said if I can make a geolocation
To my server because is Spanish and itโs on the part of uk
I donโt know if the admins of scp could make me a favour and put my server next to Spanish ones
Thatโs something you should sort out directly with your hosting provider. The "SCP admins" canโt change the geolocation of your serverโs IP that information comes from your host and the geolocation databases. If you need your server to appear in Spain, youโll have to ask your hoster for an IP range that is registered there.
no
well yes
that is a solution
but
you can contact verif specialists and get a geolocation request
poor verify specialists
Srry
Ok dude
๐
"Beginner"
@harsh haven
So how is the fixing
I gave up
Fuck that shit
Im continuing working on my clone its better tbh
Hm?
WAIT
Oh nvm
I thought that was my image for a second


Im just saying. There's a lot of images that ive taken which have never been seen here before
๐คก
Is this one of you?
โป๏ธ
this is u
lol
Does anyone have a method to fake a synclist?
I need to fake the intensity of an effect
i knew starring this repo would come in handy some day :3
ax is elite
So how do we return null on an event that expects a non-nullable enum?
public static event Func<ReferenceHub, ReferenceHub, RoleTypeId, RoleTypeId> RoleSyncEvent
Seems like subscribing to this event kills the system entirely
Since you have to return a non-null value no matter what
Was an oversight, either need to patch the method or return the value it gives you of you dont want to change the role
Ok do you know the difference between listIndex and index?
absolutely no clue 
@restive turret You apparently made this. Would you be able to help? ๐
what are you trying to do?
when today's live
live?
uh what is your desired Monobeh?
I want to fake a byte in PlayerEffectsController::_syncEffectsIntensity
I thought its index is 0 but it doesn't work (unless I'm doing something else wrong)
I did
p.SendFakeSyncListSet<byte>(
Player.ReferenceHub.playerEffectsController,
0,
fadeIndex, <- this is fade's effect index
valueToSend); <- this is a byte
p is the target, while Player is the effect holder
thats funny cus its hould work
is your mirror publicized?
can you do:
int c = 0;
foreach (var so in ReferenceHub.playerEffectsController.syncObjects)
{
// log so an c
c++;
}
tbh I think you should do is both have hte p.refhub.pec
I just fixed naming
I ain't dealing with sync lists
c++ 
Ask maro lol
not me
i cannot like show the server without permission
c--; so if negative we know how much we have
with just *-1
:P
c-= 
omega bruh
C overhead lines?
just gonna put this right here... 
How can I change a Grenade's range?
check the explosion settings
I could leak it 
but not the demo
no big deal tbh
lol
this is why i say ur the goat
and this is why you've not been responding to my dms!! ๐ญ
so peak tho
:3
i know, i'll catch up
thank
it's all g :3
accurate response
david will make this in 2049 or smth smth
What
what
interesting choice of words there
HUH
i dont see any issue with it but sure ๐ญ
HOW ARE PEOPLE SEEING ISSUES WITH IT
fine ill edit it
there
๐ญ


goated
ty
ah so I guess here should be 1 not 0

I wonder what's index 0

Unless they are using 1-based indexing
like psychopaths
SL devs really be getting bored nowadays
what can be done, can be done in SL
lmao
-# sun tzu, i guess
this is sick tho wtf
tyyy
what the actual fuck
this looks awesome
you cooked
you are not DJ, but a 5 star chef
๐ญ ๐ญ
before scp prox chat is crazy
This is the dependency for it
Cant wait to someone make a Redeemer from UT98 as a playable weapon in SL
question, does player.ReferenceHub.serverRoles.Network_myColor have a set of values it can or cant be when setting. or does it just take any hex?
I sure love having PTSD of my father SAing me and then having hallucinations of him being a hacker who wants to take down big corporations
you have to use the colors' names
it's also stored somewhere in ServerRoles
oh ok, ty man
np

i never watched mr robot
so idk anything about it
but i've played all of the watch dogs
both of them REALLY great
last one is written by a psychopath
GetClosestNorthwoodColorName
Crazy name
:3
:3 (im not a furry tho)
Sure..
LETS Not start all over i don't want to become a banana again
btw how are you doing david?
Yea good
nice, i was tryharding on that game again and got pass the habitation layer (2nd floor and i lost because i didn't have an item)
rip
tomorrow grinding
another day of rewriting sl
for a crazy idea
this time it will be something none has ever imagined (v4)
how i can install unity without stupid register?
you gave me ptsd
why
On SpigotMC there's a guy who is like crazy most contributor every question you ask this guy makes you feel stupid and uses this website
for 90% of the questions you ask
the other 10 is calling you stupid and saying that its basic shit
and pulling up the most elaborate shit ever
How can I use Unity without Unity
How can i breath without air
Bro has ego beyond believe
Nah he is just experience
Like I understand if you ask basic Java questions
When FINALLY LabAPI Bungeecordโฆ
like that guy cracks 10k
a month
as he told me
so im not surprised and he is the most active contributor on spigot
so like crazy
(its not md5, never spoke to that guy, i know he is nice)
Is he paid to do that
md5 my loveโฆ. always
No
Spigot is all free
work
slavery
like contributing to LabAPI
but
I do get paid tho
community doesn't
can you pay us
You didnt ask


The only one i refuse to get paid is by maro
anyone else can pay me
but not maro
(i refunded always the money she gave me)
I mean we almost have every big mc plugin here 
You just say that you dont want to get paid by the only person who could pay you
right now
I recreated PlaceholderAPI
i know and i could pay meds and other shit
but i refuse
We need PlotMe
Why tf we need that
sl map is small asf
its useless asf
I want to build my Plot?????
and it would be heavy asf for normal servers
Average SL server can take 4k primitives
and no more
so imagine
how limiting it is
I mean
Some servers already have 1 fps
I mean thats true
@unique crane can you cooldown a keycard?
I know the strangest question ever
Wdym?
You can cooldown a door
Well
make system that checks the keycard you use
while opening doors
and make the cooldown yourself
i just wanted to make it visualize like the one for the hat
so thats why
i was asking
I dont think thats possible yea
Mr david is it intended that Micro HID opening a door doesn't trigger the interact door event? My players have managed to do this to a door teleport ๐ญhttps://cdn.steamusercontent.com/ugc/9471976422925313216/F38905CA1C36830D94BF71F066427B6A7921DCAA/
If someone didn't say outright that it was HID, I wouldn't have realised it myself xD
throwing a keycard
and I or someone else can add event for it
there is an event for that?
is there
I still have to make that armor penetration issue from a week ago
which is?
i worked a bit on armors on Exiled
so i could try helping you
Using Player.Damage without specyfing armorPenetration will fail
it have zero logic
becaue ExplosionDamageHandler will not set its values
LabAPI?
yeah
lol
If you pass 0 penetration to the ExplosionDamageHandler it ignored all damage
for some reason
if (num > 0f && dest.Damage(num, new ExplosionDamageHandler(attacker, force, num, 50, explosionType), dest.CenterOfMass) && flag)
Class is ExplosionGrenade line 205
This is used by the game code it seems to be a magic number decided by someone at nw to be 50
The issue isn't with reproducing base game explosion penetration. It's that if you want to damage a player for let's say, 5 damage, you will need to set armorPenetration to at least 1, since anything lower than 1 will be ignored.
It's due to ExplosionDamageHandler's constructor
let me check something
i mean just patch it ig
easy enough
i know
but i mean best solution to the problem
sl is a great game
OH i know why
because it could be 0 the damage
Damage = BodyArmorUtils.ProcessDamage((attacker.Hub != null && attacker.Hub.inventory.TryGetBodyArmor(out var bodyArmor)) ? bodyArmor.VestEfficacy : 0, damage, armorPenetration);
Yes microhid does not do any action about opening door
If i remember right it just force open without any labapi stuff
Me when i stare at the wall of infinite void and despair
where i can get System.ValueTuple.dll?
is there any updated exiled version? or the latest release on github is the last version?
ExMod-Team
From Microsoft
more details
from the sl deticated files managed folder its also in there
no
there doesnt exists
CustomInfo or something
what if I dont want to show it for a certain role
or for a player with a certain effect
can prob get from here
github is liked there iirc
I wanted to get like, the display element itself
I'm trying to pair the visibility of the display element to the Fade effect of the player being targetted
That would be client side
what should I set is my question
me need .dll
Could not load type of field 'NVorbis.Ogg.ForwardOnlyPacketProvider:_pageQueue' (1) due to: Could not load file or assembly 'System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies.
https://github.com/Killers0992/AudioPlayerApi/releases/tag/1.0.9
Download the dependencies zip
Unpack
There!
it's in mscorlib
oh you mean as a dependency for another plugin

๐ญ i love this.. finally i can listen to my taylor swift radio in sl
ffmpeg and piping data to make this work
oh nice, i've never thought about piping to stdout
@restive turret ur up buddy, do you know how to make GetType().Assembly.GetName().Version to work via csproj? It seems to only work for me if I build a nuget package to go with my project, but without it refuses to work. I'm setting it all in csproj with GenerateAssemblyInfo as false so yeah, me confusion :3
legit doing this
yes
I use GetType().Assembly.GetName().Version for that version
lol
How about Assembly::GetVersion()
or wait
but ive seen something like that before
Oh it uses that
and its internal
๐ญ
Assembly.GetExecutingAssembly().GetName().Version?
this works for me though
do you use AssemblyInfo.cs tho?
no
yeah so microsoft is just being rude
Hey, uh the armor penetration damage is only server side?
So i can make a fake armor with for example ap of 5
Physics.Raycast my beloved


