RuneScape 2 Development > General Server Discussion

Server ideas/concepts

Pages: <<< (23/23)

arham 4:


--- Quote from: runescape sucks on December 30, 2014, 03:18:28 PM ---Kind of relevant, someone on rune-serber was talking about a bot class that behaved similar to a player (just randomized inputs) and this sounds similar to what you're talking about.

https://www.rune-server.ee/runescape-development/google/show-off/561994-serversided-bots.html

However, I do like the idea of just casual NPC encounters, because it adds a life to the server.

--- End quote ---
I did that once. In World 901, I made a minigame that literally made a new player and he could talk and everything.


--- Code: Java ---Player host = new Player(new PlayerDetails(null, "Host", "world901", null, null));
--- Code: Java ---package org.rs2server.rs2.event.impl; import org.rs2server.rs2.event.Event;import org.rs2server.rs2.model.*;import org.rs2server.rs2.model.minigame.impl.World901;import org.rs2server.rs2.net.ActionSender;import org.rs2server.rs2.util.Misc; /** * Created with IntelliJ IDEA. * User: Arham 4 * Date: 9/17/13 * Time: 8:26 PM * Purpose: To show the 'Host' of the World 901 Minigame. */public class HostMinigameEvent extends Event {     /**     * Creates an event with the specified delay.     *     * @param delay The delay.     */    public HostMinigameEvent(long delay) {        super(delay);    }     int timer = 0;    Player host = new Player(new PlayerDetails(null, "Host", "world901", null, null));     /**     * The execute method is called when the event is run. The general contract     * of the execute method is that it may take any action whatsoever.     */    @Override    public void execute() {        if (timer == 0) {            host.setTeleportTarget(Location.create(2120, 4914, 0));            host.face(Location.create(host.getLocation().getX() + 1, host.getLocation().getY(), host.getLocation().getZ()));            World.getWorld().register(host);            host.forceChat("Welcome");            for (Player player : World.getWorld().getWorld901().getPlayer()) {                player.getActionSender().turnCameraToLocation(Location.create(2120, 4914, 0), 2);                player.getActionSender().moveCameraToLocation(Location.create(2125, 4915, 0), 1000, 0, 10);                player.getActionSender().sendDialogue(host.getName(), ActionSender.DialogueType.PLAYER, -1, Animation.FacialAnimation.CALM_1, "Welcome");            }            host.face(World.getWorld().getWorld901().getPlayer().get(Misc.random(World.getWorld().getWorld901().getPlayer().size() - 1)).getLocation());        }        if (timer == 2) {            host.forceChat("to World 901.");            for (Player player : World.getWorld().getWorld901().getPlayer()) {                player.getActionSender().sendDialogue(host.getName(), ActionSender.DialogueType.PLAYER, -1, Animation.FacialAnimation.CALM_1, "to World 901.");            }            host.face(World.getWorld().getWorld901().getPlayer().get(Misc.random(World.getWorld().getWorld901().getPlayer().size() - 1)).getLocation());        }        if (timer == 7) {            host.forceChat(World.getWorld().getWorld901().getPlayer().size() + " of the world's greatest rulebreakers in the game");            for (Player player : World.getWorld().getWorld901().getPlayer()) {                player.getActionSender().turnCameraToLocation(Location.create(2132, 4923, 0), 2);                player.getActionSender().moveCameraToLocation(Location.create(2132, 4923, 0), 1000, 0, 10);                player.getActionSender().sendDialogue(host.getName(), ActionSender.DialogueType.PLAYER, -1, Animation.FacialAnimation.CALM_1, World.getWorld().getWorld901().getPlayer().size() + " of the world's greatest rulebreakers in the game");            }            host.face(World.getWorld().getWorld901().getPlayer().get(Misc.random(World.getWorld().getWorld901().getPlayer().size() - 1)).getLocation());        }        if (timer == 16) {            host.forceChat("have been put into this Draynor Village");            for (Player player : World.getWorld().getWorld901().getPlayer()) {                player.getActionSender().sendDialogue(host.getName(), ActionSender.DialogueType.PLAYER, -1, Animation.FacialAnimation.CALM_1, "have been put into this Draynor Village");            }            host.face(World.getWorld().getWorld901().getPlayer().get(Misc.random(World.getWorld().getWorld901().getPlayer().size() - 1)).getLocation());        }        if (timer == 23) {            host.forceChat("in order to prove who is the best player.");            for (Player player : World.getWorld().getWorld901().getPlayer()) {                player.getActionSender().sendDialogue(host.getName(), ActionSender.DialogueType.PLAYER, -1, Animation.FacialAnimation.CALM_1, "in order to prove who is the best player.");            }            host.face(World.getWorld().getWorld901().getPlayer().get(Misc.random(World.getWorld().getWorld901().getPlayer().size() - 1)).getLocation());        }        if (timer == 32) {            host.forceChat("Only one of you will leave this place with a grand prize");            for (Player player : World.getWorld().getWorld901().getPlayer()) {                player.getActionSender().turnCameraToLocation(Location.create(2149, 4916, 0), 2);                player.getActionSender().moveCameraToLocation(Location.create(2149, 4916, 0), 1000, 0, 5);                player.getActionSender().sendDialogue(host.getName(), ActionSender.DialogueType.PLAYER, -1, Animation.FacialAnimation.CALM_1, "Only one of you will leave this place with a grand prize");            }            host.face(World.getWorld().getWorld901().getPlayer().get(Misc.random(World.getWorld().getWorld901().getPlayer().size() - 1)).getLocation());        }        if (timer == 38) {            host.forceChat("The winner will get more money and pride");            for (Player player : World.getWorld().getWorld901().getPlayer()) {                player.getActionSender().sendDialogue(host.getName(), ActionSender.DialogueType.PLAYER, -1, Animation.FacialAnimation.CALM_1, "The winner will get more money and pride");            }            host.face(World.getWorld().getWorld901().getPlayer().get(Misc.random(World.getWorld().getWorld901().getPlayer().size() - 1)).getLocation());        }        if (timer == 45) {            host.forceChat("and of course some extra, true rewards.");            for (Player player : World.getWorld().getWorld901().getPlayer()) {                player.getActionSender().turnCameraToLocation(Location.create(2120, 4914, 0), 2);                player.getActionSender().moveCameraToLocation(Location.create(2125, 4915, 0), 3250, 1, 5);                player.getActionSender().sendDialogue(host.getName(), ActionSender.DialogueType.PLAYER, -1, Animation.FacialAnimation.CALM_1, "and of course some extra, true rewards.");            }            host.face(World.getWorld().getWorld901().getPlayer().get(Misc.random(World.getWorld().getWorld901().getPlayer().size() - 1)).getLocation());        }        if (timer == 53) {            host.forceChat("I wish you all good luck...");            for (Player player : World.getWorld().getWorld901().getPlayer()) {                player.getActionSender().sendDialogue(host.getName(), ActionSender.DialogueType.PLAYER, -1, Animation.FacialAnimation.CALM_2, "I wish you all good luck...");            }            host.face(World.getWorld().getWorld901().getPlayer().get(Misc.random(World.getWorld().getWorld901().getPlayer().size() - 1)).getLocation());        }        if (timer == 58) {            for (final Player player : World.getWorld().getWorld901().getPlayer()) {                player.getActionSender().removeAllInterfaces();                player.setTeleportTarget(World.getWorld().getWorld901().getPseudoRandomLocation());                player.getActionSender().stopCinematics();                player.getActionSender().playSound(Sound.create(3302, (byte) 1, 0));                player.getActionSender().sendDialogue(host.getName(), ActionSender.DialogueType.PLAYER, -1, Animation.FacialAnimation.DISTRESSED, "FIGHT!");                player.getCombatState().setCanMove(true);                World.getWorld().submit(new Event(100000) {                    @Override                    public void execute() {                        if (player.getMinigame() == null || !World.getWorld().getWorld901().gameStarted) {                            this.stop();                        }                        player.incrementWorld901Duration(1);                        if (player.getMinigame() == null || !World.getWorld().getWorld901().gameStarted) {                            this.stop();                        }                    }                });            }            World901.canAttack = true;            World.getWorld().unregister(host);            this.stop();        }        if (timer >= 0) {            timer++;        }    }}
Lol

Project Territh:

I've been trying to implement several things into my server, as I am still a newbie in Java it's challenging. If you want to take a look at some of my ideas in action head over to
https://forum.moparscape.org/index.php/board,125.0.html/


Anyway, here are some ideas I have.

-Good karma bad karma system, can be seen at work in my server above.
-Capturing players for bounties and getting a cash reward for it.
-Discoverable locations, once you find a location on the map you gain access to it by fast travel.
-NPC followers that you can give commands to, similar to summoning.
-Each city depending on your karma is neutral, enemy, ally. Those who are ally you can trade with and barter, those who are neutral you can visit but not trade, those who are enemy will attack you once you are close.
-Perks that increase a player of having a special dialogue option.
-Some dialogue options require a certain level of speech.
-Repair and make own equipment with a certain smithing level.
-Custom quest that are lengthy and rewarding.


An example of perks within the karma system...




https://gyazo.com/650a0305c5b440cb1b869037ae8fa09b


Bounties




Custom titles




I'll add more later.

Cres:

Perks. Unlockable passive abilities which only apply in specific conditions.

e.g.:

Duelist; for every 3 stab or slash based attacks from any sword or longsword, the fourth hit will have a decreased attack delay.
Berserker; every crush based attack has a chance of stunning the enemy. The same enemy cannot be stunned again for 3 seconds.
Back-at-ya; while autocasting, you will instantly cast the last spell used against you against your target, for no additional cost of runes.
Metal fatigue; succesfull ranged attacks will decrease the target's defence against the next ranged attack.

arham 4:


--- Quote from: Cres on February 02, 2015, 03:42:42 PM ---Perks. Unlockable passive abilities which only apply in specific conditions.

e.g.:

Duelist; for every 3 stab or slash based attacks from any sword or longsword, the fourth hit will have a decreased attack delay.
Berserker; every crush based attack has a chance of stunning the enemy. The same enemy cannot be stunned again for 3 seconds.
Back-at-ya; while autocasting, you will instantly cast the last spell used against you against your target, for no additional cost of runes.
Metal fatigue; succesfull ranged attacks will decrease the target's defence against the next ranged attack.

--- End quote ---
I, in the past, have made tons of extensions to this idea too:


--- Quote ---RuneScape's combat tends to be the same. Now we aren't looking to make a new EoC or anything, but we ARE looking to add some nice features.

If the player is using the slash combat style, the player has a chance to make the opponent bleed. If the player is using Ranged, the player has a chance to make an arrow stuck in the opponent's skin. Also, if the player is using Ranged, and the combat style is accurate then they have a more accurate chance of getting the arrow stuck in the opponents skin. The victim, in turn, will try every turn of theirs to get the arrow out until they succeed doing so. Now, I will summarize every possibility.

Combat Type (Melee or Ranged) --- Combat style (Stab, Accurate, Slash, etc.) --- Effect --- Percent chance for effect
Melee --- Stab --- The ability to make the opponents Attack decrease by 2 - 5. --- 10%
Melee --- Slash --- The ability to make the opponent Bleed. --- 5%
Melee --- Crush --- Crush the player. Inflicting 1/8 of their health. --- 10%
Ranged --- Make an arrow stuck on the victim. --- 5%
Effect --- Remedies
Bleed --- Put a bandage on.
Having an arrow stuck on you --- Wear Magic Secateurs or wait for the effect to go away. Your player has a 70% chance of taking the arrow out themseves. However, if he does, it will hurt your player considerable damage.
Having a stat drained --- Drink a restore potion.
Having yourself get crushed --- Wearing something that neutralizes crush effect (chainbodies, or a sq shield, or defenders).

--- End quote ---
From: [474]World 901 - Your soon to be destiny, just steps away... - The Last Destiny.


--- Quote from: arham 4 on May 21, 2013, 05:45:25 PM ---A Ranking System
Inspired by Call of Duty: Modern Warfare 2
Features:

* Pk Points
* Killstreaks
* Most killed record
* Experience
* Rank names
* Bonuses by killstreak
* No use of process

--- End quote ---


BUMP TO THIS GENIUS TOPIC

Pages: <<< (23/23)

Go to full version