[Release] vRP Framework

0/ How to add only separately “wardrobe” for example in LSPD/Hospital ? (to be able to keep their sets of clothes at work!)

Need help to crate individual spot - save sets of clothing ONLY
(wardrobe)(outside the home (for example in the LSPD).!

hello im game awx please i need play

Hi im trying to make is so i can’t do something before im in level 10 in aptitudes, but how do i make it so it required before i can make it? (its an item transformer) its chemicals i want it to check for.

Thanks in advance :slight_smile:

Anyone else with rollback problem in bank money and handshake problems?

i have the money problem and players spawn random places with diffrent clothes on.

Hi, I have a very important question, I am using the vrp framework and I would like to know how to create a “public” chest for bands or mafias, rather a shared chest between a mafia or band.
If someone could help me, I would appreciate it very much.

SebastianDeVoe
try this code (add permission to public chest for bands or mafias):
local cfg = {}
cfg.inventory_weight_per_strength = 10 – weight for an user inventory per strength level (no unit, but thinking in “kg” is a good norm)
– default chest weight for vehicle trunks
cfg.default_vehicle_chest_weight = 50
– define vehicle chest weight by model in lower case
cfg.vehicle_chest_weights = {
[“monster”] = 250
}
– list of static chest types (map of name => {.title,.blipid,.blipcolor,.weight, .permissions (optional)})
cfg.static_chest_types = {
[“chest”] = { – example of a static chest
title = “Test chest”,
blipid = 205,
blipcolor = 5,
weight = 100
}
}
– list of static chest points
cfg.static_chests = {
{“chest”, 1855.13940429688,3688.68579101563,34.2670478820801}
}
return cfg

in the file:
…resources\vrp\cfg\inventory.lua

Don’t work … But thx for answering

Hello everyone,

Stupid question probably answered before:

I am getting “[vRP] Identification error.”

Help would be appreciated!

How do you remove the vRP ping timeout kick?

Does the vRP framework support contacts in the barbershop?

(discord echo)
So I did a little benchmark for fun, here is the result.

It’s 1000 calls in a for loop to vRP.getUserId when a player join. The first benchmark is in the vRP resource, the other from another resource using Proxy.
First thing to notice, even if the Lua VM is not LuaJIT, this is not really important in most cases for FiveM modding.
Second thing, the CPU used was low, this is not CPU bound, and confirms what I was thinking about the latency issue, it’s tickrate bound.
I don’t know how efficient the implementation of TriggerEvent is (for cross-resource communication), but I think the problem is how the coroutines are used.
The coroutine threads are probably updated/managed on a per-tick basis.
The second benchmark is 50s for 1000 calls, so 50ms for one call, which is 20Hz.
I think the “at least one tick” warning here Exports applies for other things, I remember seeing the line in the Lua scheduler code.

So, the TriggerEvent tick overhead is huge, maybe callbacks overhead is the same for cross-resources and maybe there is even more overhead for the C# call.
FiveM is not built in a way that allows efficient resources communication, especially with Lua. Since most people are not even using vRP after the 0.5, I have less issues to make huge changes to vRP, I will probably tag the current state to 1.0 and move on to work on a new master/experimental version that could include breaking changes like multi-characters and no more Proxy calls (scripts loaded directly by the vRP resource).

1 Like

I install vrp normally …
When I try to connect I have this error!

It happened to me when I burst the limit number of the identity and the telephone number, I tried to increase the amount of characters in these two cases. I never had that problem again.

I am having a few issues switching out skins for police, and I’m not sure if I have the skin reference wrong as every skin id list I find lists the names of skins differently to how they have appeared in other scripts.

I have the following in cloakrooms.lua, under prepare surgeries I have:

-- sheriff models
local uniform_sheriff1 = { model = "s_m_y_sheriff_01" }

then in the body of the file, I have:

["sheriff"] = {
    _config = { permissions = {"sheriff.cloakroom"} },
    ["Male Sheriff"] = { uniform_sheriff1 }
  },

The option displays in the menu, but upon selecting, you do not appear to change into this skin. Any Ideas?

TriggerEvent runs synchronously and is not tied to the server tick rate. Exports are using TriggerEvent and ref calls, and are also synchronous.

The linked ‘documentation’ is incorrect and written by a community member. Exports execute and return immediately, unless an awaitable is returned. If they do so even when no awaitable is returned, this is a bug, not an intentional design decision.

The only call that actually will implicitly wait until a future tick is CreateThread, use CreateThreadNow to bypass this.

Also incorrect. If there’s any case where an export/event waits until the next tick, that’s a bug, not a design flaw nor a conscious design decision, as above. As long as you’re not ending up on an IO thread (in C#/JS), the system does not have to wait until the next tick.

Perhaps you should start discussing such issues in places they’re more likely to be seen by us - it’s just a matter of coincidence that someone read this topic rather than you posting it in FiveM Discussion or Bug reports as a concern.

Some routines may perform a call to a database handler, which will (for obvious reasons) run asynchronously on an IO thread. Since there’s no way the game thread can be ‘awoken’ for such a wait result at this time (this should technically be possible to implement, however, now that game/network are decoupled), this will only be scheduled on the next tick (by Delay(0)).

However, it seems getUserId doesn’t do such a thing - at least as far as I can see on GH. Either you’ve hit a scheduler bug, or you’re accidentally causing a tick delay in your own code.

Ah - you’re unconditionally calling Citizen.Await in your proxy library, and this does not seem to check if the promise has been resolved already at wait-time, and unconditionally yields the current coroutine. This functionality was provided by a community member, and this probably was missed during code review.

Perhaps checking around that call chain should improve the performance of your proxy library, and perhaps other users of Citizen.Await.

This issue should be resolved by this commit. Performance is still not really what one would expect, now 1000 calls to getUserId take ~4 seconds but this is all CPU-locked on the main thread, leading to a main thread hitch.

I wonder if this is inefficiency in your Lua code, in the Lua scheduler code, in the Lua runtime, or in some other part of the framework… :confused:

EDIT: duh, this was a debug server build :sweat_smile: a release build does a lot more manageable 0.83s, though this still implies a single call takes 830 microseconds, which seems a bit… bad.