Sign in to follow this  
Friya

[Released] Server mod; Loot Tables

Recommended Posts

i think, this mod will get a very big awesome future

Share this post


Link to post
Share on other sites

today i looked into my server console and found hundrets of this lines:

 

Do you know how i can fix this? this lines are running the whole time through my console

 

[12:11:07 PM] INFO com.wurmonline.server.Server: Lag detected at Zones.pollnextzones (0.5): 1.889 seconds
[12:11:07 PM] INFO com.wurmonline.server.Server: Elapsed time (1890ms) for this loop was more than 1 second so adding it to the lag count, which is now: 190
[12:11:07 PM] INFO com.friya.wurmonline.server.loot.LootSystem: LootTables interception spent 0.00000731s (this number include calls to 0 mods that hook into LootTables)
[12:11:07 PM] INFO com.friya.wurmonline.server.loot.LootSystem: LootTables interception spent 0.00000731s (this number include calls to 0 mods that hook into LootTables)
[12:11:07 PM] INFO com.friya.wurmonline.server.loot.LootSystem: LootTables interception spent 0.000007895s (this number include calls to 0 mods that hook into LootTables)
[12:11:07 PM] INFO com.friya.wurmonline.server.loot.LootSystem: LootTables interception spent 0.000007895s (this number include calls to 0 mods that hook into LootTables)
[12:11:07 PM] INFO com.friya.wurmonline.server.loot.LootSystem: LootTables interception spent 0.00000731s (this number include calls to 0 mods that hook into LootTables)
[12:11:08 PM] INFO com.friya.wurmonline.server.loot.LootSystem: LootTables interception spent 0.000015205s (this number include calls to 0 mods that hook into LootTables)
[12:11:08 PM] INFO com.friya.wurmonline.server.loot.LootSystem: LootTables interception spent 0.000007895s (this number include calls to 0 mods that hook into LootTables)
[12:11:08 PM] INFO com.friya.wurmonline.server.loot.LootSystem: LootTables interception spent 0.000008187s (this number include calls to 0 mods that hook into LootTa
Edited by Eject

Share this post


Link to post
Share on other sites

You should be able to turn off that logging by setting

logExecutionCost to false

in the properties file.

 

  • Like 1

Share this post


Link to post
Share on other sites

Thank you Friya, i thought this was warnings

 

Eject

Share this post


Link to post
Share on other sites

suddenly the mod wont work, i get always this error and the animald dotn drop anythink

 

Caused by: java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (near "=": syntax error)

 

have you any idea how i can fix this?

 

Eject

Share this post


Link to post
Share on other sites

I don't know for sure without seeing the SQL statement that is being executed, but I did find a problem in the SQL statement that I introduced recently.

 

In this release, inserts and updates of items are now output to log if sqlLogging is set to true in the properties file. If problem persists and it's an SQL error, please include the SQL statement.

 

However, it could be that I fixed the problem now. Download link in first post is updated ( http://www.filterbubbles.com/wurm-unlimited/loottables.zip )

 

o/

 

Edited by Friya

Share this post


Link to post
Share on other sites

Hello Friya

 

It still doesnt work, i get this messages:

I believe the messages above are from the vamp mod but its disabled, and below from the lootmod that i need working (for an easter event beginning at 10 april)

 

[08:10:34 AM] WARNUNG com.wurmonline.server.creatures.Creature: Failed to load and create skills for creature with name Orakel:null
java.lang.NullPointerException
    at com.wurmonline.server.skills.SkillSystem.getTypeFor(SkillSystem.java:453)
    at com.wurmonline.server.skills.Skill.<init>(Skill.java:181)
    at com.wurmonline.server.skills.DbSkill.<init>(DbSkill.java:66)
    at com.wurmonline.server.skills.DbSkills.load(DbSkills.java:122)
    at com.wurmonline.server.creatures.Creature.loadSkills(Creature.java:12053)
    at com.wurmonline.server.LoginHandler.handleLogin(LoginHandler.java:1686)
    at com.wurmonline.server.LoginHandler.login(LoginHandler.java:445)
    at com.wurmonline.server.LoginHandler.reallyHandle(LoginHandler.java:312)
    at com.wurmonline.communication.SocketConnection.tick(SocketConnection.java:615)
    at com.wurmonline.communication.SocketServer.tick(SocketServer.java:172)
    at com.wurmonline.server.Server.run(Server.java:2439)
    at java.util.TimerThread.mainLoop(Unknown Source)
    at java.util.TimerThread.run(Unknown Source)

[08:10:36 AM] INFORMATION ModComm: Received client handshake from Orakel, 1 channels, protocol version 1
[08:10:36 AM] INFORMATION ModComm: Activating 1 channels for player Orakel
[08:11:10 AM] SCHWERWIEGEND com.friya.wurmonline.server.loot.Mod: some mod's onBeforeDrop() caused an exception, this is caught and thrown away to not prevent things from dying
java.lang.IllegalArgumentException: bound must be positive
    at java.util.Random.nextInt(Unknown Source)
    at com.friya.wurmonline.server.loot.LootItem.create(LootItem.java:205)
    at com.friya.wurmonline.server.loot.LootSet.getLoot(LootSet.java:213)
    at com.friya.wurmonline.server.loot.LootSystem.getLootResult(LootSystem.java:547)
    at com.friya.wurmonline.server.loot.Mod.interceptDie(Mod.java:285)
    at com.friya.wurmonline.server.loot.Mod.access$0(Mod.java:278)
    at com.friya.wurmonline.server.loot.Mod$1$1.invoke(Mod.java:263)
    at org.gotti.wurmunlimited.modloader.classhooks.HookManager.invoke(HookManager.java:302)
    at com.wurmonline.server.creatures.Creature.die(Creature.java)
    at com.wurmonline.server.creatures.CombatHandler.setDamage(CombatHandler.java:2365)
    at com.wurmonline.server.creatures.CombatHandler.attack(CombatHandler.java:1937)
    at com.wurmonline.server.creatures.CombatHandler.attack(CombatHandler.java:1340)
    at com.wurmonline.server.behaviours.CreatureBehaviour.action(CreatureBehaviour.java:1192)
    at com.wurmonline.server.behaviours.Action.poll(Action.java:3148)
    at com.wurmonline.server.behaviours.ActionStack.poll(ActionStack.java:237)
    at com.wurmonline.server.players.Player.pollActions(Player.java:9602)
    at com.wurmonline.server.Players.pollPlayers$1(Players.java:4378)
    at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.gotti.wurmunlimited.modloader.server.ProxyServerHook$6$1.invoke(ProxyServerHook.java:180)
    at org.gotti.wurmunlimited.modloader.classhooks.HookManager.invoke(HookManager.java:302)
    at com.wurmonline.server.Players.pollPlayers(Players.java)
    at com.wurmonline.server.Server.run(Server.java:1845)
    at java.util.TimerThread.mainLoop(Unknown Source)
    at java.util.TimerThread.run(Unknown Source)

 

Thanks for your help mate

Eject

 

add: adding my modsupport.db
http://www.necropolis.at/modsupport.zip

 

new items are 100038/39/40

loottable 5

lootrule 8

 

Edited by Eject

Share this post


Link to post
Share on other sites

The first error does not involve the vamp mod.

 

The second error is due to startql and endql being set to the same, the quick fix here is set startql to 98 and endql to 99. I'll do an update of the mod later.

 

  • Like 1

Share this post


Link to post
Share on other sites

wonderfull thank you =)

and this is the case why the animals dont drop the other loots too?

 

Eject

Share this post


Link to post
Share on other sites

I can't say for sure, but the problem you showed here would definitely prevent drops of items.

 

The mod is updated to fix the issue (under the original link).

Share this post


Link to post
Share on other sites
56 minutes ago, Friya said:

The mod is updated to fix the issue (under the original link).

thank you Friya

 

I will try the new version at morning after my work and let you know =)

 

Eject

Share this post


Link to post
Share on other sites

Good morning =)

 

I am now at my testserver, the animals now can drop items, but it seems there is a little other problem

 

as you can see in my modsupport.db, i have created this 3 eastereggs a green a red and a blue one

i just updated the chances to test it

green with 60%

red with 50%

blue with 40%

 

i killed now a lot of creatures, the most was horses, and i become 7 blue eastereggs nothing others, but red and green egg should come more often, but there is nothing.

should i rebuild the loottables? making 3 different ones? or why is the loot more from less chance instead from more chance?

 

Eject

 

add: i made now thwo new loottables for the red and green aegg, and two new rules, i setted the chance of all 3 egg variations to 100% but still get only the blue eastereggs.

 

thats very odd, i am now very helpless :/

 

add2: after more testings it seems because the 3 eggs have the same wurm id number, the loot takes always the last one in the list

before the green egg had the number 100038, the blue 100040 i got always the blue one

now i switched the numbers: green 100040, blue 100038 all with 100% chance and different loottables and rules...

now i get always the green ones

 

add3: Instead of 3 different eggs i made now just one easteregg, 1 eastercandle and 1 easternest, this is working now

 

Last test today, now i go to bed =)

 

i killed now 50 creatures

 

eastereggs 30% chance

eastercandle 20% chance

easternest 10% chance

 

i got:

2 eastereggs

6 eastercandles

10 easternest ^^

 

something is wrong with the lootchance :D

Edited by Eject

Share this post


Link to post
Share on other sites

> something is wrong with the lootchance

Uh. Can you upload the database so I can check? But I am guessing this might be your problem:

 

I know you were experimenting to see what was going on here. But if I understand you correctly, you really want to have all three items in the same LootTable since they are of one set (so to speak).

 

Note: You can of course create as many rules as you like that use the same LootTable.

 

Regarding item IDs

Nothing is perhaps wrong there, really. I could consider this a feature. :) As you speculated yourself (and found out!), items are identified by their template id.

 

But I agree that it could be a nice feature to be able to do what you are trying to do: have the same item drop but with a different name. I'll put it on my TODO.

 

 

PS. Been wanting to say this for a while now, but what the heck is up with these huge advertising signatures I see on some of you folks. You're essentially asking other server owners for help and then advertise your server...

Edited by Friya
  • Like 1

Share this post


Link to post
Share on other sites

Hello Friya :D

 

I uploaded the fdatabase here: http://www-necropolis.at/modsupport2.zip

Thank you for watching, and yes, my idea was because 3 different eastereggs lol but ok now with easteregg eastercandle and easternest its also ok for me, just the problem with the lootchance left =)

 

Because the advertising :D ... its big yea.....but at the moment you cant edit your signature lol, i also like it a little bit smaller ;)

Some of us are just Serverowners, some good at other points but no programmers :)

I am learning Java but at the moment i am just a user of the awesome mods of all you awesome programmers ;)

 

Eject

Share this post


Link to post
Share on other sites

Well, there is no problem here. Your sample size is just small.

 

I used your database and ran a simulation on rule 8 in it (10,000 times) .

 

Results:

[07:16:55 PM] INFO com.friya.wurmonline.server.loot.Mod: ------------------------------------------------------------------------------------------------------
[07:16:55 PM] INFO com.friya.wurmonline.server.loot.Mod:                                       Starting simulation
[07:16:55 PM] INFO com.friya.wurmonline.server.loot.Mod: ------------------------------------------------------------------------------------------------------
[07:16:55 PM] INFO com.friya.wurmonline.server.loot.Mod: Will trigger rule 8 exactly 10000 times
[07:17:06 PM] INFO com.friya.wurmonline.server.loot.Mod: 20.11%	template: 133 name: Osterkerze dropped 2011 times
[07:17:06 PM] INFO com.friya.wurmonline.server.loot.Mod: 9.72%	template: 756 name: Osternest dropped 972 times
[07:17:06 PM] INFO com.friya.wurmonline.server.loot.Mod: 30.47%	template: 464 name: Osterei dropped 3047 times
[07:17:06 PM] INFO com.friya.wurmonline.server.loot.Mod: ------------------------------------------------------------------------------------------------------
[07:17:06 PM] INFO com.friya.wurmonline.server.loot.Mod:                                         Simulation done
[07:17:06 PM] INFO com.friya.wurmonline.server.loot.Mod: ------------------------------------------------------------------------------------------------------

 

So, I'd not worry, they'll find their eggs! :)

Edited by Friya
  • Like 2

Share this post


Link to post
Share on other sites

oh wow this is very cool with the simulation :D

i think i should reduce the chances of all 3 items hehe, 6000 loots from 10000 kills is a little bit to much ^^

 

thanks for your test and helping me :)

 

Eject

Share this post


Link to post
Share on other sites

Lootmod started first time on the official servers: confirmed

Lootrules working: confirmed

Players are happy: confirmed

More events planed: confirmed

 

THANK YOU =)

 

i have two ideas, maybe you like it

  • disabling rules...is it possible to add a checkbox in the table at the first row? or is it enough to just point the rule to a loottable that not exist, to turn of the rule?
  • add a column to the loottables to count how much items are dropped, and if the event stoppes you can just overwrite it with "0". I think this would be a good feature to have an overview.

just if you are still working at this mod and like to expand it a little bit ;)

 

Eject

Edited by Eject

Share this post


Link to post
Share on other sites

is it possible to make "no decay"?

further, if the players store the new items in a bsb, some get the original name some are disapearing

 

Eject

Share this post


Link to post
Share on other sites

it would be also awesome if you can create the new items with your wand ^^

Share this post


Link to post
Share on other sites

An update. The file in the link of the original post is updated with latest version.

 

11jul2017

  • Added functionality to enable/disable loot rules. In LootRules table, set to 0 to disable a rule, and 1 to re-enable it. As with everything else in the rules table, it can be done while server is running. Unless you specify otherwise, rules are by default enabled when created.
     
  • Added ability to create e.g. the various runes as loot. Set the 'realtemplate' field in LootItems to
    1102 = rift stone,
    1103 = rift crystal,
    1104 = rift wood

    After that it's just a matter of doing your normal thing and setting the item in 'itemids' (1289: rune of Magranon, 1290 Fo, 1291 Vyn, 1292 Lib, 1293 Jackal) and which material you want it to be. See https://wurmpedia.com/index.php/Runes
     
  • The 'realtemplate' field can also be used to modify food related items in various ways (I have not looked at the details)

An example (uses IDs 123456 for the loot table and 150000 for the loot item to make it easy to test and remove)

INSERT INTO FriyaLootItems(id, itemids, name, material, startql, endql, canberare, dropchance, realtemplate) VALUES(150000, 1292, "uber rune of Libila", 13, 80.0, 99.99, 1, 100.0, 1104);
INSERT INTO FriyaLootTables values(123456, 150000);
INSERT INTO FriyaLootRules(rulename, loottable, creature, enabled) VALUES("Rune test", 123456, "black wolf", 1);

This will make black wolves have a 100% chance to drop runes of Libila made out of zinc (13, see com.wurmonline.shared.constants.ItemMaterials for full list), and a 'realtemplate' specifying that it's a 'rift wood' subtype (1104).

 

7xzKMEA.png

 

As always when we need to update the database: On your next restart of server, the new fields will be merged into the existing database automatically (no action required from your side). But yes, you do have to restart your server to see the new fields.

 

Edited by Friya
  • Like 2

Share this post


Link to post
Share on other sites
On 4/11/2017 at 10:12 AM, Eject said:

is it possible to make "no decay"?

further, if the players store the new items in a bsb, some get the original name some are disapearing

 

Eject

 

You can change decayTime of the items in FriyaLootItems, off the top of my head I don't recall if you need to set it really high or really low.

 

As for BSBing custom named items, yeah, that's a side-effect of bulk-storing, it will store minimal amount of data so some tweaks (like name) will inevitably be lost.

 

Share this post


Link to post
Share on other sites

@Friya I've been skimming over all the information and apologize if this has already been answered. From my reading I understand the following to be true:

  • If the creature or 'scenario' has an applicable loot rule then only what the rule dictates drops. (Game's standard loot rule is overridden and doesn't execute)
  • If there is not a loot rule in your mod database for the creature or 'scenario' then the game's standard way of handling loot will apply for that sitation

My conclusion then is you can just tweak finite things to your liking and not have to change loot behavior for every little thing for this to work. (In other words a lack of a loot rule for the creature or scenario is no big deal). Is my understanding correct?

 

I shied away from this at first release because I was thinking this would be a huge administrative undertaking but reading more in depth this time I believe I was wrong.

Share this post


Link to post
Share on other sites
4 hours ago, LifesaverM said:

@Friya I've been skimming over all the information and apologize if this has already been answered. From my reading I understand the following to be true:

  • If the creature or 'scenario' has an applicable loot rule then only what the rule dictates drops. (Game's standard loot rule is overridden and doesn't execute)
  • If there is not a loot rule in your mod database for the creature or 'scenario' then the game's standard way of handling loot will apply for that sitation

My conclusion then is you can just tweak finite things to your liking and not have to change loot behavior for every little thing for this to work. (In other words a lack of a loot rule for the creature or scenario is no big deal). Is my understanding correct?

 

I shied away from this at first release because I was thinking this would be a huge administrative undertaking but reading more in depth this time I believe I was wrong.

 

Except for the detail of it overriding default loot, you are spot on. It will not touch default loot, a troll club will always drop with the troll, regardless of whether you made a loot rule for it or not.

 

But yeah, you can tweak infinitely. People have created some funky stuff out there, far more than I would have imagined. A lack of rules will not do any harm at all. Your world will function as it always did!

 

PS. I like calling it a 'scenario' actually. It is a good description since the loot can be determined by a range of factors. Hmm. :)

Edited by Friya
  • Like 1

Share this post


Link to post
Share on other sites

Excellent glad I could help, haha.  Now that I understand this I'm actually quite stoked, as since I've been reading/thinking about this several excellent ideas (imho, lol) are already floating around in my head.

Share this post


Link to post
Share on other sites

Hey Friya

 

I love your new update of this awesome mod :)

Is it possible to give us the option to create the new items with the wand?

 

Eject

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this