Mthec

[Released] Mthec's NPCs - Crafter, Buyer, DeliveryContracts, MerchantCap, CustomTrader, ToolPurchaser, Banker, BeastSummoner

Recommended Posts

1 minute ago, Mthec said:

It seems it's either a bugged guard tower, or bugged tower guard that may have lost its tower.

 

The log is saying that a tower guard is checking the local area for enemies, and a quick look at the code shows it checks if the guard tower is the same kingdom.  But for some reason the guard tower value is missing.

 

I'm afraid I can't be more specific than that.

 

That's enough for me to start looking thanks! :)

Share this post


Link to post
Share on other sites

I looked up in the thread and saw that the buyer mod has an update for the npc to face the player when turning, can this be added to CustomTraders as well, they all face south on my server. I didn't see it in the .properties as an option.

  • Like 1

Share this post


Link to post
Share on other sites

CustomTrader update

Download

 

19 hours ago, Ayluin said:

I looked up in the thread and saw that the buyer mod has an update for the npc to face the player when turning, can this be added to CustomTraders as well, they all face south on my server. I didn't see it in the .properties as an option.

Done.

  • Like 1

Share this post


Link to post
Share on other sites

Is it possible for this to support custom tools/weapons/armor?

Share this post


Link to post
Share on other sites
On 4/18/2023 at 10:46 PM, Hakameda said:

Is it possible for this to support custom tools/weapons/armor?

Sorry for the late reply, I was away.

 

Depending on which mod you mean, it should support any item template, default or modded.  It fetches the list of item templates the server knows after the server has loaded.

Share this post


Link to post
Share on other sites

I kewep getting told my crafter doesnt have permisison to use the forge yet.  How do I give him Permisisons @Mthec

Share this post


Link to post
Share on other sites
3 hours ago, LightningRoc said:

I kewep getting told my crafter doesnt have permisison to use the forge yet.  How do I give him Permisisons @Mthec

I think this is how I did it:  make sure the forge is on the same tile as the crafter, right click forge, and there should be an option to assign to crafter.

EDIT:  make sure the crafter contract is activated before you right click the forge, then choose Assign

Edited by Batta
  • Like 1

Share this post


Link to post
Share on other sites

The other thing it could be is that the Crafter is added as a 'Citizen' to the placer's village.  So if citizens don't have permission, then the Crafter won't.

Share this post


Link to post
Share on other sites

@MthecI have tried everything i can think of to give her permissions and nothing works.  How exactly do I go about giving him permissions or could this be a bug?

 

Share this post


Link to post
Share on other sites
3 hours ago, LightningRoc said:

@MthecI have tried everything i can think of to give her permissions and nothing works.  How exactly do I go about giving him permissions or could this be a bug?

 

If the forge is in a village, the Crafter needs to be a member, the player making the changes needs to already be a member.  If they are not, right-click on the crafter contract (or GM wand right-click the Crafter) and select manage.  There should be an 'Invite to Settlement' button.  It doesn't show if they already are.

 

Then go to the settlement 'Manage roles' option, and 'Edit' the 'citizens' role.  (You can move them to any role, they just start as citizens.)  Give the role the Pickup/Drop/'Improve/Repair' permissions.

 

If none of that works, it may be a bug.  If so, what is the exact message you are receiving, and where is it showing (Event/logs)?

Share this post


Link to post
Share on other sites

I think its a bug @MthecI am the creator of the deed and the deed holder so I should be a citizen too right?  And I donot see an invite to deed tho there are two buttons that are cut off and I cannot resize the window

Share this post


Link to post
Share on other sites

It turned out to be just a building permissions error. Needed to make sure the person who placed the crafter had permissions on the building it was in or they couldn't assign the forge.

 

  • Like 1

Share this post


Link to post
Share on other sites

Crafter bugfix

Download

 

Had a report of a writ holder not being able to access the coins generated by the Crafter.

Added a workaround, to reset ownership, that occurs the next time the owner uses the Manage option on the writ.

Share this post


Link to post
Share on other sites

If I ask crafter to improve a 1 ql item to 100ql he seems to charge me only a couple more than if I ask him to improve a 50ql to 100ql

 

Is there a way to charge less depending on how much further he needs to go?

 

Thanks

Edited by icthi

Share this post


Link to post
Share on other sites
22 hours ago, icthi said:

If I ask crafter to improve a 1 ql item to 100ql he seems to charge me only a couple more than if I ask him to improve a 50ql to 100ql

 

Is there a way to charge less depending on how much further he needs to go?

 

Thanks

The price is calculated like this:

TFJm0AY.png

Prices over 70ql were not high enough, so it switches to a different formula (yellow).  Then the price of the current ql is deducted from the target ql, and that's the price you pay at the Crafter.

 

There is the base_price option, which modifies the price, but I don't think that's what you're after.

 

How would you like the pricing to work?

 

Also, I'm going away tomorrow for two weeks, so may not have the time to update the mod.  Depending on what needs adding.

Share this post


Link to post
Share on other sites
On 1/31/2023 at 4:13 PM, Ayluin said:

 

Well this isn't much more helpful, but this is the first time it happens in the server.log and then the previous post just recycles the INFO message.


[08:40:31 PM] INFO com.wurmonline.server.creatures.Creatures: null
java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at mod.wurmunlimited.npcs.customtrader.CustomTraderMod.poll(CustomTraderMod.java:146)
    at org.gotti.wurmunlimited.modloader.classhooks.HookManager.invoke(HookManager.java:384)
    at com.wurmonline.server.creatures.Creature.poll(Creature.java)
    at com.wurmonline.server.creatures.Creatures.pollAllCreatures(Creatures.java:1834)
    at com.wurmonline.server.zones.Zones.pollNextZones(Zones.java:1975)
    at com.wurmonline.server.Server.run(Server.java:1911)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)
Caused by: java.lang.NullPointerException
    at com.wurmonline.server.kingdom.GuardTower.getKingdom(GuardTower.java:111)
    at com.wurmonline.server.creatures.Creature.checkForEnemies(Creature.java:17183)
    at com.wurmonline.server.creatures.Creature.checkForEnemies(Creature.java:17176)
    at com.wurmonline.server.creatures.Creature.poll$1(Creature.java:6219)
    ... 11 more

After a year or so with this issue, I finally decided I'd sort it out and properly spend some time on it. I ignored it because it's simply an INFO level log that never impacted the server. I agreed with you about a tower guard going rogue based on the stack trace. I evaluated all guard towers for proper auxdata, all tower guards for correct kingdom, all tower guards in wurmzones.db being assigned to correct towers and came up empty. Even stranger, the custom traders were outside of the influence of any nearby guard tower.

 

So I decided to look in the customtrader.db. Turns out I had a total of 5 custom trader entries where my server only uses 2 custom traders. I assume because we did not Manage > Dismiss the 3 other custom traders we've used on the server in the past (I cannot say whether it was me or another random GM who just outright destroyed the trader, as we have used the mod for many years 😄) The trader entries were still there. I manually deleted the rows in the Traders table that did not match with our current 2 traders.

 

The log spam is gone. There are no more errors with the custom trader mod. I think, because of the way it's injected into the poll it still checks for those custom traders and then produces a null reference in Creatures since there is no creature with that ID. The rest of the spam, I'm not sure how it logically arrives to the GuardTower part, but at any rate, fixed the issue. Thought I'd share the happy update. Thanks for this great mod.

Edited by Ayluin
  • Like 1

Share this post


Link to post
Share on other sites
On 2/22/2024 at 11:05 PM, Hakameda said:

Any chance your still willing to work on this?

I'm a little out of practice, but if it isn't too big of a change I'm happy to make additions.

  • Like 1

Share this post


Link to post
Share on other sites

I had a few ones, But i wouldn't know how difficult they are.

 

Being able to donate tools for them to use  - Then we could give them enchanted tools or say glimmer tools etc. Would make them imp faster and get alot less stuck on the way to 99 ql. Especially with say wyvern mods or spellcraft with the custom spells or higher spell limits. Might be weird giving them lumps of a not high enough ql though? If a player requests a 99ql item but you gave them a 93ql enchanted lump.

 

If they could be taunted or w/e like old merchants to drop things currently in there crafting queue, or killable.

 

If they could be moved with there skills intact

 

They also still don't work for a few select weapons notably from wyvern mods as it tweaks some to use weapon heads smithing. Knuckles, Clubs, Warhammers, Battle Yoyo's

 

If those are really hard or not worth the time, No worries.

Edited by Hakameda

Share this post


Link to post
Share on other sites

Maybe if they could just not output there messages ingame, And keep it just in the log. Gets spammy with alot of em in the same area lol

Share this post


Link to post
Share on other sites
On 2/1/2024 at 9:54 PM, Ayluin said:


[08:40:31 PM] INFO com.wurmonline.server.creatures.Creatures: null
java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at mod.wurmunlimited.npcs.customtrader.CustomTraderMod.poll(CustomTraderMod.java:146)
    at org.gotti.wurmunlimited.modloader.classhooks.HookManager.invoke(HookManager.java:384)
    at com.wurmonline.server.creatures.Creature.poll(Creature.java)
    at com.wurmonline.server.creatures.Creatures.pollAllCreatures(Creatures.java:1834)
    at com.wurmonline.server.zones.Zones.pollNextZones(Zones.java:1975)
    at com.wurmonline.server.Server.run(Server.java:1911)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)
Caused by: java.lang.NullPointerException
    at com.wurmonline.server.kingdom.GuardTower.getKingdom(GuardTower.java:111)
    at com.wurmonline.server.creatures.Creature.checkForEnemies(Creature.java:17183)
    at com.wurmonline.server.creatures.Creature.checkForEnemies(Creature.java:17176)
    at com.wurmonline.server.creatures.Creature.poll$1(Creature.java:6219)
    ... 11 more

After a year or so with this issue, I finally decided I'd sort it out and properly spend some time on it. I ignored it because it's simply an INFO level log that never impacted the server. I agreed with you about a tower guard going rogue based on the stack trace. I evaluated all guard towers for proper auxdata, all tower guards for correct kingdom, all tower guards in wurmzones.db being assigned to correct towers and came up empty. Even stranger, the custom traders were outside of the influence of any nearby guard tower.

 

So I decided to look in the customtrader.db. Turns out I had a total of 5 custom trader entries where my server only uses 2 custom traders. I assume because we did not Manage > Dismiss the 3 other custom traders we've used on the server in the past (I cannot say whether it was me or another random GM who just outright destroyed the trader, as we have used the mod for many years 😄) The trader entries were still there. I manually deleted the rows in the Traders table that did not match with our current 2 traders.

 

The log spam is gone. There are no more errors with the custom trader mod. I think, because of the way it's injected into the poll it still checks for those custom traders and then produces a null reference in Creatures since there is no creature with that ID. The rest of the spam, I'm not sure how it logically arrives to the GuardTower part, but at any rate, fixed the issue. Thought I'd share the happy update. Thanks for this great mod.


I think I probably have this problem. But try as I might, I could never figure out how to dismiss a trader. Can you tell me more about the path to find that menu item? (My GM didn't create the one I had to get rid of, if that matters. I wound up having to kill him; so sad.)

Share this post


Link to post
Share on other sites
On 3/1/2024 at 10:36 PM, Brian said:


I think I probably have this problem. But try as I might, I could never figure out how to dismiss a trader. Can you tell me more about the path to find that menu item? (My GM didn't create the one I had to get rid of, if that matters. I wound up having to kill him; so sad.)

 

If it's already dead, you'll have to get DB Browser for SQLite, simple google seach will yield the program. With the server shut off, you open customtrader.db and delete the rows where the id's are not being used.

KhzQ4Gs.png

 

So if I no longer had 58704086158849 for example, I would delete that row. You click on the 1 to select the row, delete it. At the top click "Write Changes" (That is essentially save file) then close the database. Make sure it is fully closed. This means it needs to just say customtrader.db in your folder. Once done, upload it back to the server or copy it back to the sqlite directory if playing on home server. Then relaunch the server and the error should stop.

It would be prudent to go to all of your custom traders in use and get their ID on a GM via GMTool (bind 1 GMTOOL) and hover over them press 1 and get their WurmIDs so you don't delete them.

If you're asking just how to properly dismiss a trader, ebony wand, right click on the custom trader. Select Manage and you'll be greeted with the following window:

aRDqRmS.png

 

Hope that helps!

  • Like 1

Share this post


Link to post
Share on other sites
Posted (edited)

I've got a DB Browser, so I'll see if I can find the bugged trader, though mine was just a default WU trader. Thanks!

 

As far as dismissing a trader, I was wondering about the regular trader that is created with the normal trader contract. I haven't been able to figure out how to get of those cleanly. 

Edited by Brian

Share this post


Link to post
Share on other sites

The Buyer Trader would be a big help on my servers. But it looks like players can select "Free money", thereby allowing abuse of the system by buying items from their friends or alts. Am I missing a way to disable that?

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