Can anyone make a script for this...
I need a script that prevents someone from looting an item from a corpse that has a required or recommended level above their current level. Is this possible? Willing to donate. Thanks. And/or makes the item on the corpse invisible to the player that doesn't meet the req lvl, race, class.
|
I don't think this is in the realm of built in quest scripts, it sounds like a source change to me.
|
Quote:
|
Thought there was a script that put loot on mobs based off of level, but I cannot think of a script that would prevent you entirely from looting said item or making said item invisible to a person not of that class/race/level...
Maybe that level script could add a factor in for checking race/class? -shrug- not something I'm familiar with... Sorry I couldn't be of much help. |
Quote:
|
Anyone to loot..but, only high enough to use it sounds like current default server behavior.
If you're talking about being able to equip items and they have a yellow background because you don't meet the level requirements.. ..that's a client behavior found in Underfoot and higher clients. The server really isn't coded to handle that issue at the moment. |
Sorry what I meant was anyone could "loot the corpse" but can only remove items off the corpse that they can use. So basically the corpses are all unlocked but if your level 5 for example you couldn't loot level 70 req items from the corpse.
|
The scripts work because of a trigger event in the loot corpse function: https://github.com/EQEmu/Server/blob...rpse.cpp#L1173
By the time you get to this point..there's not much you can do without a recode..especially since there's no conditional on the call. Ideally, you would want to not send the packet for any item they can't use. Code Ref: https://github.com/EQEmu/Server/blob...rpse.cpp#L1015 You could add something like this: Code:
if(client && item) { |
Interesting. So would it be possible to block the item packet being sent as well as prevent them from seeing it? What I'm understanding is that script will prevent low levels from seeing the item but it would still be there and they could remove it from the corpse is that correct? Or are you saying the item will just not be present at all if a low level loots the corpse, then the corpse would dissapear like there was nothing on it?
If it isn't possible to fully do what I want with this, another option would be is it possible to "instance" the corpse so multiple people can loot the items off it? Mabye as part of the fix in addition. For example if we can block an item from bieng on a corpse if the person looting doesn't meet the lvl req, and also have the corpse instanced so multiple people can loot the same corpse, then the people who do meet the req will all be able to loot the item and those that don't meet the req would not. |
That would be a minor code change and a recompile would be needed.
But, yes... The item would be invisible to clients who did not meet the level requirement..but, still remain on the corpse - which would keep it from disappearing after closing the loot window. The client can only loot items that it can see..so, no loot packets would ever come from the client for those items. Instancing the corpse for multiple individuals is not a viable option since nothing server-side is set up for that (code, database, etc...) That would just be asking for major issues down the road. You'd probably be better off just adding multiples of that item..like certain keys are handled. |
Quote:
|
Just remember that's off the cuff...
Keep an eye out for in-game issues and let me know if that doesn't compile - I'll double-check the property references. |
Cool. How can I modify that code to check for class and race in addition to level.
Basically to check for level and race and class. |
That's a little more involved since items use bitmasks instead of integral values for those fields..
Currently, this is a good code reference for it: https://github.com/EQEmu/Server/blob..._base.cpp#L170 But, you could just do: Code:
if (item->ReqLevel && (item->ReqLevel > client->GetLevel())) |
Of course, that's genius. I really really appreciate it! I will give it a go and let you know how it works. Hopefuly others can find it useful as well.
|
All times are GMT -4. The time now is 08:51 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.