Jump to content
  • 0

Question

Posted (edited)

Hello, I recently created a model to edit my config in xml, but I have a doubt, to restore the status of the players after restart you will have to create a loop? Because I don't think it would be a good idea to do that, I would like your opinion.

 

for (Vip vip : VipData.getInstance().getVip())
		{
			if (player.getMemos().getLong(vip.getType().toString(), 0) > 0)	
			{
				long now = Calendar.getInstance().getTimeInMillis();
				long endDay = player.getMemos().getLong(vip.getType().toString());
				
				if (now > endDay)
					player.deleteVip(vip.getType());
				else
				{
					player.setVip(vip);
					
					if (!vip.getMessage().isEmpty())
						World.announceToOnlinePlayers(player.getClan() != null ? vip.getMessageClan().replace("%player%", player.getName()).replace("%clan%", player.getClan().getName()) : vip.getMessage().replace("%player%", player.getName()), true);
					
					player.broadcastUserInfo();
				}
			}
		}

 

Edited by Vision

5 answers to this question

Recommended Posts

  • 0
Posted

This doesn't look bad, but you should move such logic in VipData. Also, I'm pretty sure VipData can be improved, but I can't know how until I see it.

 

You should move 'long now' outside of the for loop and 'long endDay' outside of the if statement and use it in the if like 'if (endDay > 0)'.

 

Also, you probably need some way to remove vip for players that vip time runs out, but there probably is a task already in VipData (can't know till I see it).

  • 0
Posted
6 hours ago, xdem said:

code makes no sense

He probably has some xml with different vip types and to activate vip on enter world he loops through the possible vips to check if the player has a bonus applied. It's crap, but the code he asked help for looks correct, if what I assumed is right.

  • 0
Posted
On 10/8/2022 at 7:34 PM, An4rchy said:

He probably has some xml with different vip types and to activate vip on enter world he loops through the possible vips to check if the player has a bonus applied. It's crap, but the code he asked help for looks correct, if what I assumed is right.

 

I created a task to calculate the end of time

 


	@Override
	public final void run()
	{
		if (_players.isEmpty())
			return;
		
		for (Map.Entry<Integer, Long> entry : _players.entrySet())
		{
			final Player player = World.getInstance().getPlayer(entry.getKey());
			if (player == null)
				continue;
			
			final VipType type = player.getVip().getType();
			if (player.getMemos().getLong(type.toString(), 0) < System.currentTimeMillis())
			{
				player.deleteVip(type);
				remove(player.getObjectId());
			}
		}
	}

 

 

removed the loop to check vips when entering

 

Vip vip = VipData.getInstance().getVip(VipType.BRONZE);
        if (vip != null)
        {
            if (player.getMemos().getLong(vip.getType().toString(), 0) > 0)    
            {
                long now = Calendar.getInstance().getTimeInMillis();
                long endDay = player.getMemos().getLong(vip.getType().toString());
                
                if (now > endDay)
                    player.deleteVip(vip.getType());
                else
                {
                    player.setVip(vip);
                    
                    if (!vip.getMessage().isEmpty())
                        World.announceToOnlinePlayers(player.getClan() != null ? vip.getMessageClan().replace("%player%", player.getName()).replace("%clan%", player.getClan().getName()) : vip.getMessage().replace("%player%", player.getName()), true);
                    
                    player.broadcastUserInfo();
                }
            }
        }

  • 0
Posted

Feels too much complicated logic. It could be sharply simplified and cleaned up.

 

First of all, on EnterWorld you should only have a reference of a method, example:  onEnterWorld(PlayerInstance player) reference, you dont need anything more there.

 

Then make sure on server launch/shutdown you load/save such a map "Map<Integer, Map<Long, VipType>>" which structure will actually be explained as {playerObjId, (timeToExpireOnMillis, VipType)}.

 

Once you have such structure the only thing you actually have to do in onEnterWorld is to check if the player that is logging in has any Vip Type time active by comparing timeToExpireOnMillis with currentTimeOnMillis and then give him the coresponding Vip benefits.

 

You could also make such check on real time by scheduling a task at fixed rate.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • I need that Gucci stuff in my life 😛
    • It is better if you can trade Adena consistently. About 10 people are expected to continue purchasing. I want it at a rate of 1.5$ per 1kk or offer  me 1kk price.   WTB Tallum Heavy Set / Majesty Heavy Set / Soul bow / Halberd   Discord : nhr0711   DM ME
    • Wtb Account in Scryde With olf +8-10 items +12/14-16-18 Gem lvl 3-5 i pay $$ Revolut,send me your Discord. 
    • Yes i found it later its weird that l2off works that way level 9 it should be the top level. Is anybody who has problem with the boss Core? Because it is moving and i try to fix it
    • New arrivals: Reddit accounts Reddit SelfReg Karma Account | 20-100 POST AND COMMENT KARMA | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS: 4$ Reddit Karma Old Brute Account | 1+ KARMA | Full access with login: password:cookies: 2$ Reddit SelfReg Old Account | 1+ KARMA | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS: 3$ Ready Reddit accounts with karma and age for fast promotion of posts and comments! Our store’s Reddit account range includes: ➡ Reddit Karma Brute Account | 1 KARMA | Cookies access only (password may be not working) | The cheapest account | Price from: 1$ ➡ Reddit SelfReg Karma Account | 20-100 POST AND COMMENT KARMA | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS: 4$ ➡ Reddit Karma Old Brute Account | 1+ KARMA | Full access with login: password:cookies: 2$ ➡ Reddit SelfReg Old Account | 1+ KARMA | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS: 3$ ➡ Reddit Karma Brute Account | 20-100 POST AND COMMENT KARMA | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS | Price from: 5$ ➡ Reddit Karma Brute Account | 500-1000 POST AND COMMENT KARMA | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS | Price from: 9$ ➡ Reddit Karma Brute Account | 1000 Post Karma and 100 comment karma | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS | Price from: 15$ ➡ Reddit Karma Brute Account | 2000 Post Karma and 100 comment karma | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS | Price from: 20$ ➡ Reddit Karma Brute Account | 3000 Post Karma and 100 comment karma | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS | Price from: 25$ ➡ Reddit Karma Brute Account | 5000 Post Karma and 100 comment karma | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS | Price from: 35$ ➡ Reddit Karma Brute Account | 10000+ KARMA | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS (email is included and working) | Price from: 45$ ➡ Reddit Karma Brute Account | 20000 KARMA | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS (email is included and working) | Price from: 60$ ➡ Reddit Karma Brute Account | 50000+ KARMA | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS (email is included and working) | Price from: 90$ ➡ Reddit Karma Brute Account | 100000+ KARMA | MIX IP Registered | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS (email is included and working) | Price from: 149$ Relevant links: Digital goods store (Website): Go Telegram bot for buying Telegram Stars: Go SMM Panel: Go – promotion of your social media accounts. Store Telegram bot: Go Promotions and special offers: 1. Promo code SEPTEMBER2025 (10% discount) for purchases in our store (Website, bot) in September! You can also use promo code for first purchase: SOCNET (15% discount) 2. Get $1 to store balance or 10-20% discount, just write your username after registration on our website in the following format: "SEND ME BONUS, MY USERNAME IS..." – you need to post it in our forum thread! 3. Get $1 for the first trial launch of SMM Panel: just open a ticket with subject “Get Trial Bonus” on our website (Support). 4. Weekly giveaways of Telegram Stars in our Telegram channel and in our star-purchase bot! News resources: ➡ Telegram channel: https://t.me/accsforyou_shop✅ ➡ WhatsApp channel: https://whatsapp.com/channel/0029Vau0CMX002TGkD4uHa2n✅ ➡ Discord server: https://discord.gg/y9AStFFsrh✅ We are actively looking for suppliers for the following product positions: — Snapchat old and new accounts | With snapscores | Geo: Europe/USA | Full access via email/phone number — Reddit old accounts with post and comment karma from 100 to 100,000+ | Full access via email — LinkedIn old accounts with real connections | Geo: Europe/USA | Full access via email + active 2FA password — Instagram old accounts (2010-2023 years) | Full access via email (possibly with active 2FA password) — Facebook old accounts (2010-2023 years) | Full access via email (possibly with active 2FA password) | With or without friends | Geo: Europe/USA/Asia — Threads accounts | Full access via email (possibly with active 2FA password) — TikTok/Facebook/Google ADS Agency advertising accounts Contact us below — let’s discuss terms! We are always open to other partnership offers as well. Contacts and support: ➡ Telegram: https://t.me/socnet_support✅ ➡ WhatsApp: https://wa.me/79051904467✅ ➡ Discord: socnet_support ✅ ➡ ✉ Email: solomonbog@socnet.store ✅ Also via these contacts you can: — get consultation on bulk purchases — establish partnership (current partners: https://socnet.bgng.io/partners) — become our supplier SocNet — store of digital goods and premium subscriptions ✅
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock