Sign in to follow this  
Darkness1990

Problem with upkeep and guards!

Recommended Posts

Hi, I want to setup my server to have no upkeep, I've set the free tiles to 441 tiles or 10x10x10x10 using the upkeepcost mod and want to make them pay for guards and new tiles.

 

Problem is when they make a default (5x5x5x5 with no guards) it puts 13s 20c into the coffers so they can buy guards until the coffers are empty and because deed upkeep is turned off they cant put any more money into the settlement. If they resize the deed, no money is taken from the coffers nor is it charging for any new tiles over the initial 441 granted in the config.

 

If they make a deed at 10x10x10x10 no money is put into the coffers and again as upkeep is not enabled they can not purchase any guards at all. They can resize the deed without paying for any tiles.

 

 

Share this post


Link to post
Share on other sites

doesnt the standard server options allow you to select no upkeep costs and whether or not guards need pay?

Share this post


Link to post
Share on other sites

yes you can have no upkeep, that's not what problem is.

 

all I want is to give players 441 tiles free and a guard or two if possible and then they must pay for new tiles and guards after that with no upkeep. Why is that so hard lol

Share this post


Link to post
Share on other sites
8 hours ago, Darkness1990 said:

all I want is to give players 441 tiles free and a guard or two if possible and then they must pay for new tiles and guards after that with no upkeep. Why is that so hard lol

It may be easier for you to give them the money to pay for those tiles/guards after finding out how much they will cost initially if you don't want money already in the coffers by default.

Otherwise you may need to look into editing the actual database to change the default settlement sizes/guards. With upkeep disabled I don't know of a way to make them pay to resize so you may want to turn the upkeep back on so they can add money into their deeds.

Share this post


Link to post
Share on other sites

Yeah I've thought about doing that but not sure about how to put money into the coffers when they first make a deed. Maybe I could use script runner mod but I have no idea how to write something like that.

 

also doing this players could abuse the system and create alts make new deeds and refund the deed,

Edited by Darkness1990

Share this post


Link to post
Share on other sites

VillageFoundationQuestion file

Have a moder altar this file and do something like this in this method. This will for example not allow the default 5 min tiles in any direction and cant go over 50 tiles or what ever you set it to,

One of the moders can make a mode with a properties file to set these at what ever with a properties file just need to get a moder to do it for you or you can alter this file your self with something like intelij.


 

//Minimize how much land owned
    boolean parseVillageFoundationQuestion1() {
        String key = "back";
        String val = this.getAnswer().getProperty(key);
        if (val != null && val.equals("true")) {
            this.createIntro();
            return false;
        } else {
            this.error = "";
            this.selectedWest = 5;
            this.selectedEast = 5;
            this.selectedNorth = 5;
            this.selectedSouth = 5;
            key = "sizeW";
            val = this.getAnswer().getProperty(key);
            if (val != null) {
                try {
                    this.selectedWest = Integer.parseInt(val);
                    //|| this.selectedWest > 50"added code"
                    if (this.selectedWest < 5 || this.selectedWest > 50) {
                        this.error = "The minimum size is 5 max 50. ";//The minimum size is 5.
                        this.selectedWest = 5;
                    }
                } catch (NumberFormatException var15) {
                    this.error = this.error + "* Failed to parse the desired size of " + val + " to a valid number. ";
                }
            }

            key = "sizeE";
            val = this.getAnswer().getProperty(key);
            if (val != null) {
                try {
                    this.selectedEast = Integer.parseInt(val);
                    //|| this.selectedEast > 50"added code"
                    if (this.selectedEast < 5 || this.selectedEast > 50) {
                        this.error = "The minimum size is 5 max 50. ";//The minimum size is 5.
                        this.selectedEast = 5;
                    }
                } catch (NumberFormatException var14) {
                    this.error = this.error + "* Failed to parse the desired size of " + val + " to a valid number. ";
                }
            }

            key = "sizeN";
            val = this.getAnswer().getProperty(key);
            if (val != null) {
                try {
                    this.selectedNorth = Integer.parseInt(val);
                    //|| this.selectedNorth > 50"added code"
                    if (this.selectedNorth < 5 || this.selectedNorth > 50) {
                        this.error = "The minimum size is 5 max 50. ";//The minimum size is 5.
                        this.selectedNorth = 5;
                    }
                } catch (NumberFormatException var13) {
                    this.error = this.error + "Failed to parse the desired size of " + val + " to a valid number. ";
                }
            }

            key = "sizeS";
            val = this.getAnswer().getProperty(key);
            if (val != null) {
                try {
                    this.selectedSouth = Integer.parseInt(val);
                    //|| this.selectedSouth > 50 "added code"
                    if (this.selectedSouth < 5 || this.selectedSouth > 50) {
                        this.error = "The minimum size is 5 max 50. ";//The minimum size is 5.
                        this.selectedSouth = 5;
                    }
                } catch (NumberFormatException var12) {
                    this.error = this.error + "Failed to parse the desired size of " + val + " to a valid number. ";
                }
            }

            this.diameterX = this.selectedWest + this.selectedEast + 1;
            this.diameterY = this.selectedNorth + this.selectedSouth + 1;
            if ((float)this.diameterX / (float)this.diameterY > 4.0F || (float)this.diameterY / (float)this.diameterX > 4.0F) {
                this.error = this.error + "The deed would be too stretched. One edge is not allowed to be more than 4 times the length of the other.";
            }

            if (this.error.length() < 1) {
                int xa = Zones.safeTileX(this.tokenx - this.selectedWest);
                int xe = Zones.safeTileX(this.tokenx + this.selectedEast);
                int ya = Zones.safeTileY(this.tokeny - this.selectedNorth);
                int ye = Zones.safeTileY(this.tokeny + this.selectedSouth);

                for(int x = xa; x <= xe; ++x) {
                    for(int y = ya; y <= ye; ++y) {
                        boolean create = false;
                        if (x == xa) {
                            if (y == ya || y == ye || y % 5 == 0) {
                                create = true;
                            }
                        } else if (x == xe) {
                            if (y == ya || y == ye || y % 5 == 0) {
                                create = true;
                            }
                        } else if ((y == ya || y == ye) && x % 5 == 0) {
                            create = true;
                        }

                        if (create) {
                            try {
                                Item i = ItemFactory.createItem(671, 80.0F, this.getResponder().getName());
                                i.setPosXYZ((float)((x << 2) + 2), (float)((y << 2) + 2), Zones.calculateHeight((float)((x << 2) + 2), (float)((y << 2) + 2), true) + 5.0F);
                                Zones.getZone(x, y, true).addItem(i);
                            } catch (Exception var11) {
                                logger.log(Level.INFO, var11.getMessage());
                            }
                        }
                    }
                }
            }

            this.setSize();
            if (!this.checkBlockingKingdoms()) {
                this.error = this.error + "You would be founding too close to enemy kingdom influence.";
            }

            if (this.error.length() > 0) {
                this.createQuestion1();
                return false;
            } else {
                this.createQuestion2();
                return true;
            }
        }
    }


 

Edited by Arkonick

Share this post


Link to post
Share on other sites

after reading your post again this wouldn't allow adding more than 50 in the example it would take more coding in this file but this file is where you need to do all the changes you are wanting to do.

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