Thread: Random Event System [Object Oriented]

Page 1 of 2 12 LastLast
Results 1 to 10 of 11
  1. #1 Random Event System [Object Oriented] 
    Donator
    JTlr Frost's Avatar
    Join Date
    Oct 2014
    Posts
    649
    Thanks given
    69
    Thanks received
    254
    Rep Power
    34
    Was doing some fun coding while working for mbscape, and wrote this. Few people enjoyed it and its rather neat. Few criticism on the code, as i know as it could have been written neater, but it's rather neat as it is.

    //Event.java
    Code:
    package com.rs.game.player.content.revents;
    
    /**
     * 
     * @author Frostbite<Abstract>
     * @contact<skype;frostbitersps><email;[email protected]>
     */
    
    public interface Event {
    	
    	public String getEventName();
    	
    	public void startEvent();
    	
    	public void endEvent();
    
    }
    //EventConstants.java
    Code:
    package com.rs.game.player.content.revents;
    
    /**
     * 
     * @author Frostbite<Abstract>
     * @contact<skype;frostbitersps><email;[email protected]>
     */
    
    public enum EventConstants {
    	
    	NULL, STEALING_CREATIONS, BARROWS,
    	
    	COMBAT, RUNECRAFTING, DUNGEONEERING, MINING, SMITHING, FISHING, COOKING, FIREMAKING, WOODCUTTING, FARMING, 
    	CRAFTING, FLETCHING, AGILITY, HERBLORE
    
    }
    //EventManager.java
    Code:
    package com.rs.game.player.content.revents;
    
    import java.io.Serializable;
    import java.util.HashMap;
    import java.util.Map;
    
    import com.rs.game.player.content.revents.impl.DropIncreaseTask;
    import com.rs.game.player.content.revents.impl.ExperienceEventTask;
    import com.rs.game.player.content.revents.impl.ExperienceEventWildernessTask;
    import com.rs.game.player.content.revents.impl.MinigameTask;
    import com.rs.game.player.content.revents.impl.SkillEventTask;
    
    /**
     * 
     * @author Frostbite<Abstract>
     * @contact<skype;frostbitersps><email;[email protected]>
     */
    
    public class EventManager implements  Serializable {
    
    	private static final long serialVersionUID = 8700494964869210199L;
    
    	private static Map<EventType, EventConstants> activeEvents = new HashMap<>(); 
    	
    	private static Map<EventType, EventTimerTask> handledEvents = new HashMap<>();
    	
    	
    	/**
    	 * Handled Events
    	 * @initalizes each event
    	 */
    	
    	static {
    		
    		handledEvents.put(EventType.EXPERIENCE_EVENT, new ExperienceEventTask());
    		
    		handledEvents.put(EventType.EXPERIENCE_EVENT_WILDERNESS, new ExperienceEventWildernessTask());
    		
    		handledEvents.put(EventType.DROP_INCREASE, new DropIncreaseTask());
    		
    		handledEvents.put(EventType.MINIGAME_EVENT, new MinigameTask());
    		
    		handledEvents.put(EventType.SKILL_EVENT, new SkillEventTask());
    		
    	}
    	
    	/**
    	 * Returns <Map> Elements @activeEvents
    	 * @return
    	 */
    	public static Map<EventType, EventConstants> getActiveEvents() {
    		return activeEvents;
    	}
    	
    	/**
    	 * Returns <Map> Elements @handledEvents
    	 * @return
    	 */
    	public static Map<EventType, EventTimerTask> getHandledEvnets() {
    		return handledEvents;
    	}
    
    	/**
    	 * Adds @Event into <Map>
    	 * @param event
    	 * @return
    	 */
    	public static boolean addEvent(EventType event, EventConstants minigame) {
    		if(eventStarted(event, minigame)) 
    			return false;
    		if(!handledEvents(event))
    			return false;
    		
    		activeEvents.put(event, minigame);
    		return true;
    	}
    
    	/**
    	 * Removes @Event from <Map>
    	 * @param event
    	 * @return
    	 */
    	public static boolean removeEvent(EventType event, EventConstants minigame) {
    		if(!eventStarted(event, minigame)) 
    			return false;
    		if(!handledEvents.containsKey(event))
    			return false;
    		
    		activeEvents.remove(event, minigame);
    		return true;
    	}
    
    	/**
    	 * Checks if <Map> contains @Event
    	 * @param event
    	 * @return
    	 */
    	public static boolean eventStarted(EventType event, EventConstants minigame) {
    		return activeEvents.containsKey(event) && activeEvents.containsValue(minigame);
    	}
    	
    	/**
    	 * Checks if <Map> contains @Event
    	 * @param event
    	 * @return
    	 */
    	public static boolean eventStarted(EventType event) {
    		return activeEvents.containsKey(event);
    	}
    	
    	/**
    	 * Checks if <Map> contains @HandledEvent
    	 * @param event
    	 * @return
    	 */
    	public static boolean handledEvents(EventType event) {
    		return handledEvents.containsKey(event);
    	}
    
    }

    //EventTimerTask.java
    Code:
    package com.rs.game.player.content.revents;
    
    import java.util.concurrent.TimeUnit;
    
    /**
     * 
     * @author Frostbite<Abstract>
     * @contact<skype;frostbitersps><email;[email protected]>
     */
    
    public interface EventTimerTask {
    	
    	public int getTime();
    	
    	public TimeUnit getTimeUnit();
    	
    	public void initalizeTask();
    	
    
    }
    //EventType.java
    Code:
    package com.rs.game.player.content.revents;
    
    /**
     * 
     * @author Frostbite<Abstract>
     * @contact<skype;frostbitersps><email;[email protected]>
     */
    
    public enum EventType {
    
    	EXPERIENCE_EVENT(15), 
    	
    	EXPERIENCE_EVENT_WILDERNESS(20),
    	
    	BOSS_EVENT(20), 
    	
    	MINIGAME_EVENT(30),
    	
    	DAILY(15), 
    	
    	DROP_INCREASE(15),
    	
    	SKILL_EVENT(10),
    	
    	
    	;
    
    	public int time;
    
    	EventType(int time) {
    		this.time = time;
    	}
    
    	public int getTime() {
    		return time;
    	}
    
    }

    //QueueEvent.java

    Code:
    package com.rs.game.player.content.revents;
    
    import java.util.concurrent.TimeUnit;
    
    import com.rs.cache.loaders.Configs;
    import com.rs.cores.CoresManager;
    import com.rs.game.World;
    import com.rs.game.player.Player;
    import com.rs.utils.Utils;
    
    /**
     * 
     * @author Frostbite<Abstract>
     * @contact<skype;frostbitersps><email;[email protected]>
     */
    
    public class QueueEvent implements Event {
    
    	public EventType event;
    	public EventConstants minigame;
    
    	public QueueEvent(EventType event) {
    		this.event = event;
    	}
    	
    	public QueueEvent(EventType event, EventConstants minigame) {
    		this.event = event;
    		this.minigame = minigame;
    	}
    
    	@Override
    	public String getEventName() {
    		return Utils.formatString(event.name());
    	}
    
    	@Override
    	public void startEvent() {
    		if(EventManager.eventStarted(event, minigame))
    			return;
    		EventManager.addEvent(event, minigame);
    		for (Player world : World.getPlayers()) {
    			world.getPackets().sendGameMessage("<img=5><col=DE9210>" + getEventName() + " has just started and will last for " + event.getTime() + " minutes!");
    		}
    		CoresManager.slowExecutor.schedule(new Runnable() {
    			@Override
    			public void run() {
    				endEvent();
    			}
    
    		}, event.getTime(), (Configs.DEVELOPER_WORLD ? TimeUnit.SECONDS : TimeUnit.MINUTES));
    	}
    
    	@Override
    	public void endEvent() {
    		for (Player world : World.getPlayers()) {
    			world.getPackets().sendGameMessage("<img=5><col=DE9210>" + getEventName() + " has just ended!");
    		}
    		EventManager.removeEvent(event, minigame);
    	}
    
    }
    //SkillEvent.java
    Code:
    package com.rs.game.player.content.revents;
    
    import java.util.concurrent.TimeUnit;
    
    import com.rs.cache.loaders.Configs;
    import com.rs.cores.CoresManager;
    import com.rs.game.World;
    import com.rs.game.player.Player;
    import com.rs.utils.Utils;
    
    /**
     * 
     * @author Frostbite<Abstract>
     * @contact<skype;frostbitersps><email;[email protected]>
     */
    
    public class SkillEvent implements Event {
    
    	public EventType event;
    	public EventConstants constants;
    
    	public SkillEvent(EventType event) {
    		this.event = event;
    	}
    	
    	public SkillEvent(EventType event, EventConstants minigame) {
    		this.event = event;
    		this.constants = minigame;
    	}
    
    	@Override
    	public String getEventName() {
    		return Utils.formatString(event.name());
    	}
    
    	@Override
    	public void startEvent() {
    		if(EventManager.eventStarted(event, constants))
    			return;
    		EventManager.addEvent(event, constants);
    		for (Player world : World.getPlayers()) {
    			world.getPackets().sendGameMessage("<img=5><col=DE9210>" + getEventName() + " for " + Utils.formatString(constants.name()) + " has just started and will last for " + event.getTime() + " minutes!");
    		}
    		CoresManager.slowExecutor.schedule(new Runnable() {
    			@Override
    			public void run() {
    				endEvent();
    			}
    
    		}, event.getTime(), (Configs.DEVELOPER_WORLD ? TimeUnit.SECONDS : TimeUnit.MINUTES));
    	}
    
    	@Override
    	public void endEvent() {
    		for (Player world : World.getPlayers()) {
    			world.getPackets().sendGameMessage("<img=5><col=DE9210>" + getEventName() + " for " + Utils.formatString(constants.name()) + " has just ended!");
    		}
    		EventManager.removeEvent(event, constants);
    	}
    
    }

    Here is an example on how you would create a class with the interface of EventTimerTask

    Code:
    package com.rs.game.player.content.revents.impl;
    
    import java.util.concurrent.TimeUnit;
    
    import com.rs.cores.CoresManager;
    import com.rs.game.player.content.revents.EventTimerTask;
    import com.rs.game.player.content.revents.EventType;
    import com.rs.game.player.content.revents.QueueEvent;
    
    /**
     * 
     * @author Frostbite<Abstract>
     * @contact<skype;frostbitersps><email;[email protected]>
     */
    
    public class ExperienceEventTask implements EventTimerTask {
    
    	public ExperienceEventTask() {
    		initalizeTask();
    	}
    	
    	@Override
    	public int getTime() {
    		return 50;
    	}
    
    	@Override
    	public TimeUnit getTimeUnit() {
    		return TimeUnit.MINUTES;
    	}
    
    	@Override
    	public void initalizeTask() {
    		CoresManager.slowExecutor.scheduleWithFixedDelay(new Runnable() {
    
    			@Override
    			public void run() {
    				new QueueEvent(EventType.EXPERIENCE_EVENT).startEvent();
    			}
    
    		}, getTime(), getTime(), getTimeUnit());
    	}
    
    
    }

    Speed Test
    Spoiler for The Hatred Group:


    Spoiler for Dapoosie:

    Attached image
    Attached image

    Attached image
    Reply With Quote  
     

  2. Thankful user:


  3. #2  
    Donator

    Join Date
    Jul 2012
    Posts
    392
    Thanks given
    22
    Thanks received
    72
    Rep Power
    12
    Thanks for contributing.
    Reply With Quote  
     

  4. #3  
    Onyxia

    Sagacity's Avatar
    Join Date
    Dec 2012
    Age
    27
    Posts
    727
    Thanks given
    335
    Thanks received
    98
    Rep Power
    160
    Thanks (:

    Check out my 667/718 Interfaces services, I have more than 25 vouches and will be happy to help you out for affordable prices
    Attached image
    Reply With Quote  
     

  5. #4  
    Donator


    Join Date
    Jul 2013
    Posts
    1,233
    Thanks given
    1
    Thanks received
    493
    Rep Power
    0
    Good job noober
    Reply With Quote  
     

  6. #5  
    van 't stad

    Shnek's Avatar
    Join Date
    Oct 2013
    Posts
    1,065
    Thanks given
    343
    Thanks received
    297
    Rep Power
    109
    Goodjob on this man!
    Attached image

    Do not use the vps from ovh, blocking vps without reason and no customer support
    Reply With Quote  
     

  7. #6  
    Registered Member
    Zivik's Avatar
    Join Date
    Oct 2007
    Age
    28
    Posts
    4,421
    Thanks given
    891
    Thanks received
    1,527
    Rep Power
    3285
    Thanks for the share.
    Reply With Quote  
     

  8. #7  
    Development Services √

    Oogle's Avatar
    Join Date
    Apr 2012
    Age
    25
    Posts
    3,975
    Thanks given
    650
    Thanks received
    516
    Rep Power
    483
    Going to take a look into this, thanks for the share.


    Attached image

    Attached image
    Reply With Quote  
     

  9. #8  
    Donator
    JTlr Frost's Avatar
    Join Date
    Oct 2014
    Posts
    649
    Thanks given
    69
    Thanks received
    254
    Rep Power
    34
    Quote Originally Posted by 423 Million View Post
    Good job noober
    Im catching you up in dat red bar m8. Race ya to full? xD

    Speed Test
    Spoiler for The Hatred Group:


    Spoiler for Dapoosie:

    Attached image
    Attached image

    Attached image
    Reply With Quote  
     

  10. #9  
    Donator


    Join Date
    Jul 2013
    Posts
    1,233
    Thanks given
    1
    Thanks received
    493
    Rep Power
    0
    Quote Originally Posted by JTlr Frost View Post
    Im catching you up in dat red bar m8. Race ya to full? xD
    Had a complete full bar with the red star but then this guy gave me positive rep cause hes a clown http://www.rune-server.org/miscellan...ml#post5102232
    Reply With Quote  
     

  11. #10  
    Husband. Father.
    Loyalty_'s Avatar
    Join Date
    Aug 2013
    Age
    28
    Posts
    1,170
    Thanks given
    74
    Thanks received
    130
    Rep Power
    64
    cool. gj
    Loyalty_





    Quote Originally Posted by Falconpunch View Post
    Player.java buddy. find init() or something like that and find where it adds the starter and do what someone mentioned above (Although an int is 4 scrublords)
    Reply With Quote  
     

Page 1 of 2 12 LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. 667/** Random Event System
    By demon dylan001 in forum Tutorials
    Replies: 59
    Last Post: 03-30-2015, 05:54 PM
  2. Random Event System (Base)
    By Hoodlumbot in forum Snippets
    Replies: 11
    Last Post: 08-22-2013, 03:25 AM
  3. Replies: 11
    Last Post: 05-22-2010, 04:24 PM
  4. Random Events (SYSTEM)
    By Canownueasy` in forum Tutorials
    Replies: 11
    Last Post: 11-26-2009, 10:20 AM
  5. Random event system + Maze
    By Greyfield in forum Tutorials
    Replies: 23
    Last Post: 03-21-2009, 12:12 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •