#plugins-dev-chat
1 messages ยท Page 41 of 1
Can I make a primitive that's only visible/collidable to certain players?
fake sync vars
you will have to disable collisions on the server
and send enabled collider flags to the clients that should have collisions enabled
that'd still cause rubberbanding on the clients
because the server won't agree, and will phase through
that shouldn't cause rubberbanding
but cheaters will be able to bypass it
but if you dont care about that, thats the best way
you could technically also add a collider with another layer to rhe ones you want to collide and avoid cheaters but well I personally dont think it is worth it
how though? curious about the underlying implementation if it doesn't cause rubberbanding
Brilliant
well the client is the "owner" of its movement, if for the client there is a wall and they stop the server will allow it as it is like the client decided to stop on its own
so the server doesn't simulate the same inputs?
not really the inputs
like you are not sending the key W to the server
however this system wouldnt work with stuff like elevators
because the server does simulate movement
(which you could disable but it is altering the anticheat and it is disallowed in the VSR)
I get that you don't send the keys, when I say inputs I'm talking about the acceleration vector, player's rotation etc
yes but the client wont send any acceleration as it isnt moving
so the server wouldnt simulate it
yeah it would also not really work if a player is standing on top of a primitive
but this would fix that
yeah
but the height is fixed
you can put more content with a smaller font size but it will still be 4rem high then
Yep
Damm
Well they will absolute push its limits
images ehm
packaging a game
it's cooking all the assets
the more ram the more responsive my pc stays and the faster it cooks, so i'm happy with it 
was expensive though
can someone buy me this
thanks, I appreciate it
wait it is only 7k
I thought it was like 50k
๐ญ
ouch
oh
the 7k build is not the maxed one
if you max 1tb of ram + cpus + gpus etc it is over 40k
ouch
the value for FpcScaleController the default one is 1,1,1? or is different?
Yes
its 1,1,1?
1,1,1
i love reading through northwood code because i find stuff like this:
return !(rawString == "default") ? rawString : def;
schizophrenia

how i can make hints in multiple places by 1 hint?
using tags
<voffset>
<pos>
they affect each other
set line height to 0
didnt works
b doesnt exists
@icy knoll ?
Me when decompiler
thats almost certainly just a decompiler thing
i imagine it just looks like rawString ?? def
it compares the string literal default
oh
Where is that
in that case then its probably rawString != "default" ? rawString : def
use ruei :3
config parser i assume
they dont have normal docs
or send the link to example dynamic
Oh its probably this one
Represents a non-cached element that evaluates and parses a function when getting its content.
ruei v3 soon eventually
@teal junco btw, when checking for the range of speakers, did you account for spectators' targets?
where example of the code?
hint framework for scp:sl. Contribute to pawslee/RueI development by creating an account on GitHub.
teehee
that makes sense
i need to finish the parser for ruei
it works
just
the examples need some changes
u can also wait for ruei v3 which will be, at least, 35% better
"50% better"
how do you measure that 
you dont
but trust me it will be soooo cooool
david ur BANNED
Eve your exiled to remote island
ty
No, I never got around to that
Player velocity is read only?
Considering how player movement works in SL you're better off just changing the player's position
Even if you had access to velocity it'd be overridden by the player immediately since they have full air control & friction on the ground
or just use Slowness and MovementBoost effects
If you're trying to change movement speed, yeah
I must save player velocity and after forceclass restore previous velocity
u mean saving Scp207 effect ?
Use the Slowness and MovementBoost effects
and save their states before changing roles
reapply after it has changed
base game effect saving as a role spawn flag when
What I mean is that when the player is in motion and the role is changed, the player velocity resets and it is not a smooth transition
Nothing you can do for that unfortunately
u could change Player.Gravity then ๐
Just make Player.Velocity not only readable or this is impossible because desync etc?
Even if you were to re-apply the velocity on role change it wouldn't change anything for the player
It would probably just feel worse
What layers do players use when raycasting to pickup an item
whats the bug
When the duration of an effect changes, it doesn't call the LabAPI events OnPlayerUpdatingEffect and OnPlayerUpdatedEffect
Those only get called when intensity changes
It's moreso them overlooking it
what i said 
Yeah lol
wrong word
I knew what you meant I meant in replying to say I agree
But I wanna point it out so it can be fixed cause it kind of fucks with my effects handler
Not like a large amount but it can screw up in niche side-cases
if you want you can make an issue for it on the github
Lets see
@grand flower
Items themself are on InteractableNoPlayerCollision
Sweet thank you
Gonna add some additional checks when a player attempts to pickup an item
i.e. through walls
Well that is in there
We added prevention for this in 14.1
So you can no longer pickup stuff through walls
Distance based right
No it raycast checks on the server too
That's what we saw in code
I think
Didn't see code for that, and we just got one doing it today ^^'
Through 079's wall to grab the guns inside its armory
Seemed to be some kind of free cam considering the POV of spectators
Yeah I though we fixed that in 14.1?
Maybe it didn't make it in
Or they found another way
But I didn't see anything but a distance check in SearchProcessor or whatever it was called
How can I use this? - Added a new hint parameter that allows plugin devs to animate hints by inserting animatable values in tags.
something like this player.SendHint("<pos={0}>Test</pos>", [new AnimationCurveHintParameter(...)]);
Thanks!
What are the ways to scale the player?
player.Scale = new(0, 0, 0);
at least on 14.1.1
otherwise youll have to set transform.localScale and then resync the player
anyone know how to spin the barrel of a revolver?
THIS EXISTS????
thats so cool
found out how, now idk how to shoot a revolver either ๐ญ
SpinModule
me when doesnt exist
Oh well
atleast i couldnt find it
RevolverRouletteModule
yeah that's what i used
now i just dont know how to shoot
let alone a fake shot
like the noise goes off but bullet doesnt leave
Problem with shooting is that you cant force fire a weapon in first person
Thats handled client-sided when you press the trigger button
fuck sake man
will that play the sound for everyone or actually fire the bullet?
youve got to be fucking with me
there has got to be a way to fire a weapon so that everyone hears the fire go off
that's really all i want
lol
what would extra data be
Its backtracking data
oh
Oh in that case
SendRpc
(
condition: hub => hub != Firearm.Owner && !hub.isLocalPlayer,
writerFunc: x => x.WriteSubheader(MessageType.RpcFire)
);
SendRpc on what tho?
On the double action module
okie
This sends message that someone fired from a weapon
thanks david
also
make the labapi firearm stuff better
legit have to rely on FirearmItem::Base
smh
And if you want to fire and make a hole
new ShotBacktrackData(Firearm).ProcessShot(Firearm, target => _hitregModule.Fire(target, shotEvent));
In context for DoubleActionModule
Nope it just plays the anims
time to try figure out how to clear the chamber then
chamber.ContextState = CylinderAmmoModule.ChamberState.Discharged;
CylinderAmmoModule.Chamber chamber = _cylinderModule.Chambers[0];
Its always the 0th index
Even if you rotate it
oh damn
me when brilliant code
Yeah well thats very much the base game one
fk20sq4
in ruei
it dont have ready property?
huh?
it have ready property for position
but not for vertical position
huh?
you sending that doesnt answer my confusion
Didnt Paislee said that the hint framework doesnt work right now?
he works
it works
just poorly
they are making v3
the example doesnt
but i use ruei on my server
is there a tutorial or a api that helps to make custom items?
i can use pluginapi or labapi
@restive turret
public static void ShowTemporaryHint(this Player player, string text, float position, TimeSpan duration)
{
DisplayCore core = DisplayCore.Get(player.ReferenceHub);
core.SetElemTemp(text, position, duration, new TimedElemRef<SetElement>());
}
or something
raaaahh
afaik, this doesnt work right?
didnt work for me properly
idk
wait no
nvm
that was different thing
im gonna scream
what are the boundaries of zIndex?
if (ev.KnobSetting == Scp914KnobSetting.VeryFine)
{
if (ev.Item.Type == ItemType.KeycardO5)
{
ev.Player.RemoveItem(ev.Item);
ev.Player.AddItem(ItemType.Jailbird, ItemAddReason.Scp914Upgrade);
}
}
i dont understand why it dosent remove the item
do it into ur pillow
ev.isAllowed = false
where should i put it?
where you remove item
anything u want
Uh what event is that?
914
i dont see a 914upgraded or upgrading
Is it UpgradingInventoryItemEventArgs
im using labapi and i dont find it
public override void OnScp914ProcessingInventoryItem(Scp914ProcessingInventoryItemEventArgs ev)
{
if (ev.KnobSetting == Scp914KnobSetting.Fine)
{
if (ev.Item.Type == ItemType.Coin)
{
ev.IsAllowed = false;
ev.Player.AddItem(ItemType.KeycardJanitor, ItemAddReason.Scp914Upgrade);
}
}
if (ev.KnobSetting == Scp914KnobSetting.VeryFine)
{
if (ev.Item.Type == ItemType.KeycardO5)
{
ev.IsAllowed = false;
ev.Player.AddItem(ItemType.Jailbird, ItemAddReason.Scp914Upgrade);
}
}
}
This is what i do
public void OnItemUpgrade(Scp914ProcessingInventoryItemEventArgs ev)
{
if (ev.Item.IsCustomItem())
ev.IsAllowed = false;
foreach (CustomItem customItem in CustomItem.List)
{
if (customItem.HasModule(CustomFlags.Craftable))
{
foreach (CraftableSettings craftableSettings in customItem.FlagSettings.CraftableSettings)
{
if (UnityEngine.Random.Range(0, 100) <= craftableSettings.Chance)
{
if (ev.Player.CurrentItem.Type == craftableSettings.OriginalItem && ev.KnobSetting == craftableSettings.KnobSetting)
{
ev.Player.RemoveItem(ev.Item);
new SummonedCustomItem(customItem, ev.Player);
LogManager.Debug($"{nameof(OnItemUpgrade)}: Gave {customItem.Name} to {ev.Player.Nickname}");
}
}
}
}
}
}
but which didnt break 1920x1080?
how do i detect if its on the ground
Pickup
oh ok
Scp914ProcessingPickupEventArgs
@hearty shard please add UnregisterAll to IRegister ๐
PR it 
imagine unregistering
done the pr
@unique crane sorry to ping but why doesn't PrimitiveObjectToy.Create allow you to set a primitive type?
make a pr
It is absolutely possible that some of the internal prs fix that
good
do you know if cube is default tho?
sphere is default
how to spawn cube ๐ญ
set the primitive type

set networkSpawn to false, set the Type then spawn
or wait for the update that hopefully adds this
well not be in 14.1.1 i guess
ty btw
can i spoil it
thanks

so i need to do checks if already exists
okie
gimme 2s
Register()
Unregister()
Register()
= issue
just don't call it twice
TryAdd or smth
how about
yeah but if you
reload the plugin
then it will still break
xd
registerables[assembly]
that's what i do
lol
but if someone doesnt call the unregister method
kaput
since when is that possible ๐ญ๐ญ๐ญ
i've seen killers do it but like
right
no command though
then let them suffer with the exception


nameless wont let me do that smh
return false
also when the hell does RoomType get added to labapi, RoomName sucks
never
in 17.0 maybe
done
currently in the process of migrating my exiled plugin to labapi so ima have some questions
is there an event for using item but it's called after the animation has ended but before the item is used?
no
add yourself to labapi
what here can be wrong?
its show each second
lol
@true cedar
....
PlayerCancellingUsingItem?
Perhaps
that's for cancelling tho, no?
smh
no
wdym breaking changes what
Ofc do that
No issues
huh
with adding that
ah
*god why are some things so complicated, why is checking if the damage type is pocket dimension on death so hard ๐ญ
er
is it?
rly easy last i checked
ive gotten to as far as checking if the dmg handler is a UniversalDamageHandler as i cant see one specific to pocket dimension
that's what im doing next
if (ev.DamageHandler is not UniversalDamageHandler universalDamageHandler ||
universalDamageHandler.TranslationId != DeathTranslations.PocketDecay.Id)
return;
ez
tyvm :3
final question me thinks? does swinging the jailbird come under using item?
bybygaga
how should i add chaos keycard to my remote keycard in a good way
public static bool HasPlayerPermission(Player player, IDoorPermissionRequester requester)
{
DoorPermissionFlags flags = DoorPermissionFlags.None;
if (player.IsBypassEnabled)
return true;
if (player.RoleBase is IDoorPermissionProvider doorPermissionProvider)
flags |= doorPermissionProvider.GetPermissions(requester);
foreach (Item item in player.Items)
if (item is KeycardItem keycardItem)
flags |= keycardItem.Base.GetPermissions(requester);
return requester.PermissionsPolicy.CheckPermissions(flags);
}
34.7
Or just.. use %
why isnt chaos keycard in KeycardItem?
Known and sorry
how should i fix it
There is a PR that fixes it but it didnt make it into 14.1.1
bruhh
well you will have to add another check
for it
sorry
i have tried but it dosent work ):
@unique crane how should i fix it even cause i when i try to add another check it just beocmes and error
foreach (Item item in player.Items)
if(item is ChaosKeycardItem chaosKeycard)
................
if (item is KeycardItem keycardItem)
flags |= keycardItem.Base.GetPermissions(requester);
like that I assume
ok
@true cedar 5 ping, when will be next ruei version?
paislee moment
Can you let him be?
5 ping per day it low a count
Severity Code Description Project File Line Suppression State Details
Error (active) CS8121 An expression of type 'Item' cannot be handled by a pattern of type 'ChaosKeycardItem'. NoKeycardHold C:\Users\Admin\source\repos\NoKeycardHold\PluginFunctions.cs 33
foreach (Item item in player.Items)
{
if (item is KeycardItem keycardItem)
flags |= keycardItem.Base.GetPermissions(requester);
if (item is ChaosKeycardItem chaosKeycard)
flags |= chaosKeycard.GetPermissions(requester);
}
them
them..
david u suck at pronouns
its gonna take a lot longer because i only just learned about the animated hint parameter
and that means i have to like
How to get the amount of damage?
StandardDamageHandler
.Damage
cast to it
cedmod is down and i dont have permissions. Where do i put .* at for all permissions
?
cedmod isnt down
ohh okay is it only labapi in the server?
what
cedmod works for me too
hey eve
i just updated like minutes ago
it also works without updating
never mind i found it
itl just spam errors when people try to pick up an item
can you check what the animated hint parameter takes @hearty shard
is it an Animation
the auto update worked for me
figured
i didnt have to do any commands
i hate that they forgot to add the chaoskeycarditem in Keycarditem instead
it wont work for me ):
AnimationCurveHintParameter ?
keep getting this error
Severity Code Description Project File Line Suppression State Details
Error (active) CS8121 An expression of type 'Item' cannot be handled by a pattern of type 'ChaosKeycardItem'. NoKeycardHold C:\Users\Admin\source\repos\NoKeycardHold\PluginFunctions.cs 33
yea
public AnimationCurveHintParameter(
double offset,
AnimationCurve curve,
string format,
bool integral)
{
this._offset = offset;
this._curve = curve;
this._format = format;
this._integral = integral;
}
It might be refering to the base game one?
Check that
InventorySystem its refering too
1em is default
what the hell is integral does that just mean its like
cumulative
public override string UpdateState(float progress)
{
float f = this._curve.Evaluate((float) (NetworkTime.time - this._offset));
return this._integral ? Mathf.RoundToInt(f).ToString(this._format, (IFormatProvider) CultureInfo.InvariantCulture) : f.ToString(this._format, (IFormatProvider) CultureInfo.InvariantCulture);
}
it rounds to int
thats it
screams
Where can I find out the reason for the damage?
is ChaosKeycardItem supposed to refer from InventorySystem?
depends
what r u checking for
some have dedicated damage handlers
others you can use UniversalDamageHandler and check its id
Something like Damage.Type
doesnt exist
โ ๏ธ
this is not gonna be fun to deal with
oh
The one from LabApi.Wrappers
k
because now i need to make every single position thing one of those blehhh
cant find it in wrappers
I'm updating my Discord plugin and need to send the reason for the damage
@unique crane cant find it in LabApi.Wrappers
Is there no way to get a damage name?
Hmmm
do you know why i cant find ChaosKeycardItem in wrappers?
bc it doesnt exists?
but davidsebesta said it did?
where should i get ChaosKeycardItem then @restive turret ?
.Base
and InventorySystem.Items.Keycards.ChaosKeycardItem
Severity Code Description Project File Line Suppression State Details
Error (active) CS8121 An expression of type 'Item' cannot be handled by a pattern of type 'ChaosKeycardItem'. NoKeycardHold C:\Users\Admin\source\repos\NoKeycardHold\PluginFunctions.cs 34
still same error
using KeycardItem = LabApi.Features.Wrappers.KeycardItem;
using ChaosKeycardItem = InventorySystem.Items.Keycards.ChaosKeycardItem;
public static bool HasPlayerPermission(Player player, IDoorPermissionRequester requester)
{
DoorPermissionFlags flags = DoorPermissionFlags.None;
if (player.IsBypassEnabled)
return true;
if (player.RoleBase is IDoorPermissionProvider doorPermissionProvider)
flags |= doorPermissionProvider.GetPermissions(requester);
foreach (Item item in player.Items)
{
if (item is KeycardItem keycardItem)
flags |= keycardItem.Base.GetPermissions(requester);
if (item is ChaosKeycardItem chaosKeycard)
flags |= chaosKeycard.GetPermissions(requester);
}
return requester.PermissionsPolicy.CheckPermissions(flags);
}
@restive turret
i dont understand ๐ญ
didnt i give you code
idk
check item.Base for IDoorPermissionProvider instead of item
just use secretapi 
nuh uh, i will only use it if i need too
GUH?
my brain is actually under 0 iq right now
(source: i'm a lawyer)
are you? 
yea 100%
my brain dosent understand anything with the problem i am having rn and even if someone tells me the solution
):
angel moment
totally not like github has things for this
if you dont tell anyone then its okay (:
also my brain is on fire
can someone just tell me what to change with what to make it work in -24 iq
@hearty shard can you just show me what to change ๐ญ
namespace NoKeycardHold;
using Interactables.Interobjects.DoorUtils;
using InventorySystem.Items.Keycards;
using LabApi.Features.Wrappers;
using MapGeneration.Distributors;
using KeycardItem = LabApi.Features.Wrappers.KeycardItem;
using ChaosKeycardItem = InventorySystem.Items.Keycards.ChaosKeycardItem;
public class PluginFunctions
{
public static bool HasKeycardPermissionD(Door door, Player player) =>
HasPlayerPermission(player, door.Base);
public static bool HasKeycardPermissionL(LabApi.Features.Wrappers.LockerChamber chamber, Player player) =>
HasPlayerPermission(player, chamber.Base);
public static bool HasKeycardPermissionG(Scp079Generator generator, Player player) =>
HasPlayerPermission(player, generator);
public static bool HasPlayerPermission(Player player, IDoorPermissionRequester requester)
{
DoorPermissionFlags flags = DoorPermissionFlags.None;
if (player.IsBypassEnabled)
return true;
if (player.RoleBase is IDoorPermissionProvider doorPermissionProvider)
flags |= doorPermissionProvider.GetPermissions(requester);
foreach (Item item in player.Items)
{
if (item is KeycardItem keycardItem)
flags |= keycardItem.Base.GetPermissions(requester);
if (item is ChaosKeycardItem chaosKeycard)
flags |= chaosKeycard.GetPermissions(requester);
}
return requester.PermissionsPolicy.CheckPermissions(flags);
}
}
u can just check secret api code for reference
im on phone rn
okie
where is it rn?
in the secretapi
ty
so this public static bool HasPlayerPermission(Player player, IDoorPermissionRequester requester)
{
DoorPermissionFlags flags = DoorPermissionFlags.None;
if (player.IsBypassEnabled)
return true;
if (player.RoleBase is IDoorPermissionProvider roleProvider)
flags |= roleProvider.GetPermissions(requester);
foreach (Item item in player.Items)
{
// Unified way to handle KeycardItem, ChaosKeycardItem, or any other future items
if (item?.Base is IDoorPermissionProvider provider)
flags |= provider.GetPermissions(requester);
}
return requester.PermissionsPolicy.CheckPermissions(flags);
}
no errors ๐
just a question..
does keycard add themself up in my code
cause if it does i want to keep it
if it dosent i want to fix it
is there a force equip in labapi so like it force holds the item?
oo nvm i found it
i think so
swt current item
Probably
does setting currentitem also add it
should?
k
Severity Code Description Project File Line Suppression State Details
Error (active) CS0119 'JailbirdItem' is a type, which is not valid in the given context NoKeycardHold C:\Users\Admin\source\repos\NoKeycardHold\EventsHandler.cs 106
ev.Player.CurrentItem = LabApi.Features.Wrappers.JailbirdItem;
jailbird exists?
Not just to the namespace it lives in
ev.IsAllowed = false;
ev.Player.RemoveItem(ev.Item);
ev.Player.AddItem(ItemType.Jailbird, ItemAddReason.Scp914Upgrade);
ev.Player.CurrentItem = LabApi.Features.Wrappers.JailbirdItem;
Or you cant set a player to have a jailbird because jailbird doesnt work
save the item
you add
and make it that
var jailbird = ev.Player.AddItem(ItemType.Jailbird, ItemAddReason.Scp914Upgrade);
ev.Player.CurrentItem = jailbird;
easy?
try that
Scp914ProcessingPickupEventArgs
and just get the pickup
is the new scaling stuff broken or am I having a skill issue
How so
It has been tested ๐ญ
Nah probs just on our side
Tell me
Trying to port our manual scaling stuff to the new system
Ahhh
And now the server is just dying with no exception, no logs, just instant death

gonna be fun to debug
I like how easy the new scale stuff
i just wish I could see it work
dunno which part of my code's doing this
no clue how i'm going to debug this ugh
Uh
2025-06-12 22:54:37.560 +02:00] Game server has not sent a heartbeat in 30 seconds. Restarting the server in 10 seconds! Type "hbc" command to abort!
We love to see it...
No errors..
what were you doing?
did you do scale stuff
idk
idk i just started playing with scale on a dummy and this happened
unsure if it's my code or the scale stuff
Thatd be correct
player.Scale = new Vector3(0.8f, 0.8f, 0.8f);
player.EnableEffect<InfiniteStamina>();
This was called before crash
Idk if its why it crashed tho
But it WAS called slightly before
eve moment
even the working code crashes the server
yea uh
idk!
But the last known debug statement was custom role add
Same thing here, got a special component on a dummy that applies a scale on role change
Which has this code
once the dummy spawns, changes role to an FpcRole and gets scale applied, the server dies
how are labapi events invoked? .Invoke()? or is there a better way
just repurposing them in my own plugin
.Invoke()
okie
i know exiled uses InvokeSafely so was unsure
Uh
yeah
C# events can only be called from the class it was created in
(hence why LabAPI has methods to call the event)
I keep forgetting that's a thing
r u looking at github
cuz github has auto generated stuff missing
Since thats not part of source
yes
bruh
what
bruh
no u!!
Okay so the base game scale command works
without crashing the server
thats a good sign

Works on a dummy too
idk tf happened
Lets try the LabAPI code
i also have no clue if its scale for me
Idk
But thats the only log i saw
Was that someone got added to dwarf
And the only change that has occured between 14.1 and 14.1.1 for me in that regard isssssss
Scale!
WHAT.
Im gonna go haunt you in your dreams
No just give it a try
I dont say thats the fix
But it has unique ability to solve some of the role related issues to be honest XDDDD
true
lemme just uncomment everything 
had to update our servers because our dummies were full size and confusing players
I hate delays...
the crash for us occurs after changing the dummy's role, in the player role changed event
What event
Just SSS
private void HandleRoleChanged(PlayerChangedRoleEventArgs args)
{
// ...
// Update the scale of the player.
UpdateScale();
// ...
}
yeah mines also in ChangedRole
private void UpdateScale()
{
if (_owningDummy.roleManager.CurrentRole is not IFpcRole fpcRole)
{
return;
}
var scaleController = fpcRole.FpcModule.Motor.ScaleController;
scaleController.Scale = _scale;
}
in this scenario scale is Vector3.one * 0.2f
why do you multiply it lol
just the way I usually do it when I want a vector3 with components of the same value
testing with a delay of 0.1 seconds
yep that worked @unique crane
Time with Timing.CallDelayed(0 too
a single frame
14.1.1.1
one frame doesn't crash but also doesn't work
like
the scale isn't right
guessing race condition with the spawn message
the spawn message should probably contain the scale of the scale controller if that's the case

uh
actually
scale is force updated
by server to client
why doesn't it work then
When new player joins
only to that player tho
Well because roles gets send 1 frame later
Unless it got changed
roles override scale?
whys this crash server then
Oh wait
Because it isnt initialized then
On the server
Scale is per fpc role
New fpc role new scale
Its stored in fpc motor
nw fix pls
so 2 frame delay would guarantee it to work
i hate this!!!
probably
even with latency for clients?
but thats timing.CallDelayed into a Timing.CallDelayed
dunno if mirror does reliable ordering
this isnt unity moment mostly
the downside is
i'm assuming fake role sync will override the scale for players receiving it
right
tbh the only fake role sync I do is like, to hide them from specs
so specs wouldn't see it anyway
although if a spectator changes role...
into a living one
Yes because your waiting for server frames
that might fuck up the scale again
what if the role change message gets dropped in transit
is the scale message guaranteed to be received after the role change message
which brings me to the following questions (if the above is answered with no):
- Do sync vars get ack'd by players, and re-sent until ack'd
- If yes to the above: why isn't scale a sync var
and yeah this breaks fake role sync in a way
because if you send fake role sync data scale will reset
and outside of chaining delayed calls there's no fix for this
outside of potentially sending it on the reliable sequenced/ordered channel
which since the rest of the game doesn't, would also break things if you do it at the wrong time
is there any examples of custom data stores?
You just have to make a class that inherits CustomDataStore
Then you can do
var store = player.GetDataStore<MyStore>();
it'll create it if it doesn't exist
yes ik
but like
how do I get the player that goes in base?
do I just add a param to the data store constructor?
public class MyClass(Player owner) : CustomDataStore(Owner)
{
}
yeah thought so
yep
now im going to crash out because wtf
Error CS0518 : Predefined type 'System.ReadOnlySpan``1' is not defined or imported
i don't even use ReadOnlySpan
never had that happen
it is linking to the part where I get and access a readonlyspan
@hearty shard yeah so my "solution" is going to be manually sending the scale message to authenticated players every X frames/seconds. Literally the only "clean" and stable way I see for doing this, unless NW makes it a sync var outside of roles
i just dont know how to fix the error at all
show code
this is where it's coming from
CylinderAmmoModule.Chamber chamber = revolver._cylinderModule.Chambers[0];
Chambers is a readonlyspan
ah yeah had the same issue
don't remember how I solved it
I remember
just do what the getter does
you gotta bypass that, idk why ReadOnlySpan isn't valid for us
CylinderAmmoModule.GetChambersArrayForSerial(this.ItemSerial, ammoMax)
reference system.memory / mscorlib
and see if that fixes it
i did add system.memory but that didnt do anything
changed the code now tho
this works as perfectly as we can get atm
hi cyn
me too
do hope my issue gets taken into account
the workaround works but it's just... dirty
and looks worse for players compared to how scale "worked" before 14.1.1
since now players see a split second of the scale being wrong
Hi, new death alarm trigger breaks if the attacker is invalid

likely the hub got destroyed
considering that's what the exception is complaining about
DeathAlarmTrigger.HandlePlayerDied
Do we know when we'll get a new NuGet pckg?
Also, maybe a dumb question. I noticed that OnPlayerUsingItem is still broken for Scp330Item? Unless I'm missing something?
are you using EXILED
No
it should fire when you eat a candy
It fires, but the selectedCandyIndex is always -1
Using or Used?
either
Even if it is, the bag only contains the candies that are available post eating one
so you won't know which one you just ate
thats expected
there should be a ItemEffectsApplying event coming eventually, which might work for something like that
So what is the point of even having the SelectedCandyIndex if you can't use it?
^not trying to be rude, just curious
im only saying it makes sense for it not to work after the candy has been used, the other cases it should be made to work
^ and if it doesnt work thats a bug
I would expect the bag to be -1 when handling OnPlayerUsedItem, but would expect the bag to be in it's original state for the OnPlayerUsingItem imo
yeah
Is Elevator.WorldspaceBounds the bounds of the full elevator shaft, or is it the bounds of the elevator itself
elevator itself + extra around the side when rotated
i see
trying to detect a player being inside an elevator shaft (more specifically, under an elevator)
it can only happen in server rooms and warhead room so I know those don't rotate
Is there a way to get the room the elevator is in?
i dont think theres a direct way
since warhead doesn't have doors at the bottom, does it still have "invisible" elevator doors?
for the destination
Same for server room actually
Check room for the elevator door that is closest to it
By the elevator sequence
Does it work for the aforementioned rooms with no doors?
Oh wait actually
Is there a way to check if the elevator is one of the funky ones in nuke/server?
Try it
But it should work yea
that isnt up to us btw
look at how ElevatorSquish does it
you could get the waypoint and check if it's an ElevatorWaypoint for more precise measurements
do only those specific elevators have the ElevatorSquish component
i think yea
if so yeah that's even better
Yes
You can detect if it's the doorless one just by this component if you want
yep, doing so
basically grabbing the elevator chamber's bounds and extending the Y axis to englobe HCZ and Warhead
that way I can easily tell if the player is under it
What version of LabApi is it now? 1.0.3?
Added a new hint parameter that allows plugin devs to animate hints by inserting animatable values in tags.
There are any examples?

public override void OnPlayerJoined(PlayerJoinedEventArgs ev)
{
ev.Player.Kick("Idiot");
}
Peak code
ev.Player.Connection.Send(new FpcNoclipToggleMessage());
It will crush client. Crashed on 13.1. I don't know about 14.1.
๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ
I highly recommend not to use this code on a verified server, as it is an intentional client crash, this is VSR
I'm going to put this code on a full server of people
I'm going to make a command that allows you to crash specific players' clients
Just cause
I don't know why I said any of that
I'm feeling rather evil
For legal reasons, I'm joking
Player player = sender is PlayerCommandSender playerCommandSender
? Player.Get(playerCommandSender)
: Server.Host;
if (!player.CheckPermission("crash"))
{
response = "You don`t have permissions";
return false;
}
if (arguments.Count != 1)
{
response = $"Usage: {Command} (target id)";
return false;
}
Player target = arguments.At(0).ToLower() == "me"
? player
: Player.Get(arguments.At(0));
if (target == null)
{
response = "Target not founded!";
return false;
}
target.Connection.Send(new FpcNoclipToggleMessage());
response = "Succesfully crashed!";
return true;
Deathwish
is it against vsr to purposefully crash people? ๐ญ
also is it just me or does labapi permissions not work? im assigning permissions to the default group as a test and it is saying i dont have any of the permissions
probably not good
wdym
oh right i thought you were replying to my under message
System.MissingMethodException: Method not found: void UserSettings.ServerSpecific.SSKeybindSetting..ctor(System.Nullable`1<int>,string,UnityEngine.KeyCode,bool,string) why?
Update your assemblies
Why not just get it from the server directory instead of trusting random dlls online
I should really migrate to this lol
i would send the exiled references but apparently automod
literally take 45 seconds to find the assembly, copy it, and run a publicizer on it





