From f6935d3d3b875693e295b5c678e6550fafdd2052 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Thu, 6 Apr 2017 19:26:48 -0300 Subject: [PATCH] Rearranged travel packets An approach on infinite loopings on "Before Takeoff" maps. --- nbproject/private/private.xml | 8 ++-- scripts/event/AirPlane.js | 17 +++++--- scripts/event/Boats.js | 71 ++++++++++++++----------------- scripts/event/Cabin.js | 33 ++++++++------ scripts/event/Genie.js | 27 +++++++----- scripts/event/Hak.js | 40 +++++------------ scripts/event/Trains.js | 28 ++++++------ scripts/event/elevator.js | 3 ++ src/server/maps/MapleMap.java | 17 +++++--- src/tools/MaplePacketCreator.java | 1 + 10 files changed, 124 insertions(+), 121 deletions(-) diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml index 43285ef1ba..f3d2fb934b 100644 --- a/nbproject/private/private.xml +++ b/nbproject/private/private.xml @@ -3,13 +3,13 @@ - file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/9201134.js - file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2030010.js - file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2091005.js + file:/C:/Nexon/MapleSolaxia/src/scripting/event/EventManager.java + file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2012001.js + file:/C:/Nexon/MapleSolaxia/src/net/SendOpcode.java file:/C:/Nexon/MapleSolaxia/src/server/life/SpawnPoint.java file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2012002.js file:/C:/Nexon/MapleSolaxia/src/server/maps/MapleMapFactory.java - file:/C:/Nexon/MapleSolaxia/src/server/life/MapleMonster.java + file:/C:/Nexon/MapleSolaxia/src/tools/MaplePacketCreator.java file:/C:/Nexon/MapleSolaxia/scripts/event/Boats.js file:/C:/Nexon/MapleSolaxia/src/server/maps/MapleMap.java diff --git a/scripts/event/AirPlane.js b/scripts/event/AirPlane.js index 7348719d71..4d9286cb13 100644 --- a/scripts/event/AirPlane.js +++ b/scripts/event/AirPlane.js @@ -22,6 +22,8 @@ function init() { } function scheduleNew() { + em.setProperty("docked", "true"); + em.setProperty("entry", "true"); em.schedule("stopEntry", closeTime); em.schedule("takeoff", beginTime); } @@ -31,16 +33,17 @@ function stopEntry() { } function takeoff() { - em.setProperty("entry", "true"); - KC_bfd.warpEveryone(Plane_to_CBD.getId()); - CBD_bfd.warpEveryone(Plane_to_KC.getId()); - em.schedule("arrived", rideTime); - scheduleNew(); + em.setProperty("docked","false"); + KC_bfd.warpEveryone(Plane_to_CBD.getId()); + CBD_bfd.warpEveryone(Plane_to_KC.getId()); + em.schedule("arrived", rideTime); //The time that require move to destination } function arrived() { - Plane_to_CBD.warpEveryone(CBD_docked.getId()); - Plane_to_KC.warpEveryone(KC_docked.getId()); + Plane_to_CBD.warpEveryone(CBD_docked.getId()); + Plane_to_KC.warpEveryone(KC_docked.getId()); + + scheduleNew(); } function cancelSchedule() { diff --git a/scripts/event/Boats.js b/scripts/event/Boats.js index 7dd342bfc6..c2ee975b45 100644 --- a/scripts/event/Boats.js +++ b/scripts/event/Boats.js @@ -25,21 +25,22 @@ function init() { Ellinia_docked = em.getChannelServer().getMapFactory().getMap(101000300); Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100); Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000111); - OBoatsetup(); - EBoatsetup(); + scheduleNew(); } function scheduleNew() { + em.setProperty("docked", "true"); Ellinia_docked.setDocked(true); Orbis_docked.setDocked(true); - Ellinia_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); - Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); - em.setProperty("docked", "true"); + em.setProperty("entry", "true"); - em.setProperty("haveBalrog","false"); + em.setProperty("haveBalrog", "false"); em.schedule("stopentry", closeTime); em.schedule("takeoff", beginTime); + + Boat_to_Orbis.killAllMonsters(); + Boat_to_Ellinia.killAllMonsters(); } function stopentry() { @@ -48,56 +49,50 @@ function stopentry() { Ellinia_Boat_Cabin.resetReactors(); } - - function takeoff() { + Orbis_btf.warpEveryone(Boat_to_Ellinia.getId()); + Ellinia_btf.warpEveryone(Boat_to_Orbis.getId()); + Ellinia_docked.broadcastShip(false); + Orbis_docked.broadcastShip(false); + em.setProperty("docked","false"); - Orbis_btf.warpEveryone(Boat_to_Ellinia.getId()); - Ellinia_btf.warpEveryone(Boat_to_Orbis.getId()); Ellinia_docked.setDocked(false); Orbis_docked.setDocked(false); - Ellinia_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); - Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); + em.schedule("invasion", invasionTime); em.schedule("arrived", rideTime); } function arrived() { - Boat_to_Orbis.warpEveryone(Orbis_Station.getId()); - Orbis_Boat_Cabin.warpEveryone(Orbis_Station.getId()); - Boat_to_Ellinia.warpEveryone(Ellinia_docked.getId()); - Ellinia_Boat_Cabin.warpEveryone(Ellinia_docked.getId()); + Boat_to_Orbis.warpEveryone(Orbis_Station.getId()); + Orbis_Boat_Cabin.warpEveryone(Orbis_Station.getId()); + Boat_to_Ellinia.warpEveryone(Ellinia_docked.getId()); + Ellinia_Boat_Cabin.warpEveryone(Ellinia_docked.getId()); + Orbis_docked.broadcastShip(true); + Ellinia_docked.broadcastShip(true); Boat_to_Orbis.killAllMonsters(); Boat_to_Ellinia.killAllMonsters(); + em.setProperty("haveBalrog", "false"); scheduleNew(); } function invasion() { - var numspawn = 2; - if(numspawn > 0) { - for(var i=0; i < numspawn; i++) { - Boat_to_Orbis.spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8150000), new java.awt.Point(485, -221)); - Boat_to_Ellinia.spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8150000), new java.awt.Point(-590, -221)); - } - Boat_to_Orbis.setDocked(true); - Boat_to_Ellinia.setDocked(true); - Boat_to_Orbis.broadcastMessage(MaplePacketCreator.boatPacket(true)); - Boat_to_Ellinia.broadcastMessage(MaplePacketCreator.boatPacket(true)); - Boat_to_Orbis.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate")); - Boat_to_Ellinia.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate")); + if (Math.floor(Math.random() * 10) < 10) { + var map1 = Boat_to_Ellinia; + var pos1 = new java.awt.Point(-538, 143); + map1.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos1); + map1.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos1); + + var map2 = Boat_to_Orbis; + var pos2 = new java.awt.Point(339, 148); + map2.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos2); + map2.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos2); + em.setProperty("haveBalrog","true"); + Boat_to_Ellinia.broadcastShip(true); + Boat_to_Orbis.broadcastShip(true); } } -function OBoatsetup() { - em.getChannelServer().getMapFactory().getMap(200090011).getPortal("out00").setScriptName("OBoat1"); - em.getChannelServer().getMapFactory().getMap(200090011).getPortal("out01").setScriptName("OBoat2"); -} - -function EBoatsetup() { - em.getChannelServer().getMapFactory().getMap(200090001).getPortal("out00").setScriptName("EBoat1"); - em.getChannelServer().getMapFactory().getMap(200090001).getPortal("out01").setScriptName("EBoat2"); -} - function cancelSchedule() { } \ No newline at end of file diff --git a/scripts/event/Cabin.js b/scripts/event/Cabin.js index cb35d0a89f..b5009c0488 100644 --- a/scripts/event/Cabin.js +++ b/scripts/event/Cabin.js @@ -26,7 +26,7 @@ -- By --------------------------------------------------------------------------------------------- Information -- Version Info ----------------------------------------------------------------------------------- - 1.5 - Fix for infinity looping [Information] + 1.5 - Fix for infinity looping [Information] 1.4 - Ship/boat is now showed - Removed temp message[Information] - Credit to Snow/superraz777 for old source @@ -61,18 +61,18 @@ function init() { Leafre_docked = em.getChannelServer().getMapFactory().getMap(240000110); Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100); Leafre_Station = em.getChannelServer().getMapFactory().getMap(240000100); + scheduleNew(); } function scheduleNew() { - Leafre_docked.setDocked(true); - Orbis_docked.setDocked(true); - Leafre_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); - Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); em.setProperty("docked", "true"); + Orbis_docked.setDocked(true); + Leafre_docked.setDocked(true); + em.setProperty("entry", "true"); - em.schedule("stopEntry", closeTime); - em.schedule("takeoff", beginTime); + em.schedule("stopEntry", closeTime); //The time to close the gate + em.schedule("takeoff", beginTime); //The time to begin the ride } function stopEntry() { @@ -80,19 +80,26 @@ function stopEntry() { } function takeoff() { - Leafre_docked.setDocked(false); - Orbis_docked.setDocked(false); - Leafre_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); - Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); - em.setProperty("docked","false"); Orbis_btf.warpEveryone(Cabin_to_Leafre.getId()); Leafre_btf.warpEveryone(Cabin_to_Orbis.getId()); - em.schedule("arrived", rideTime); + + Orbis_docked.broadcastShip(false); + Leafre_docked.broadcastShip(false); + + em.setProperty("docked","false"); + Orbis_docked.setDocked(false); + Leafre_docked.setDocked(false); + + em.schedule("arrived", rideTime); //The time that require move to destination } function arrived() { Cabin_to_Orbis.warpEveryone(Orbis_Station.getId()); Cabin_to_Leafre.warpEveryone(Leafre_Station.getId()); + + Orbis_docked.broadcastShip(true); + Leafre_docked.broadcastShip(true); + scheduleNew(); } diff --git a/scripts/event/Genie.js b/scripts/event/Genie.js index b3d7cd3d7d..c1dd41b9e1 100644 --- a/scripts/event/Genie.js +++ b/scripts/event/Genie.js @@ -40,18 +40,18 @@ function init() { Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000151); Ariant_docked = em.getChannelServer().getMapFactory().getMap(260000100); Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100); + scheduleNew(); } function scheduleNew() { - Ariant_docked.setDocked(true); - Orbis_docked.setDocked(true); - Ariant_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); - Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); em.setProperty("docked", "true"); + Orbis_docked.setDocked(true); + Ariant_docked.setDocked(true); + em.setProperty("entry", "true"); - em.schedule("stopEntry", closeTime); - em.schedule("takeoff", beginTime); + em.schedule("stopEntry", closeTime); //The time to close the gate + em.schedule("takeoff", beginTime); //The time to begin the ride } function stopEntry() { @@ -59,19 +59,24 @@ function stopEntry() { } function takeoff() { - em.setProperty("docked","false"); Orbis_btf.warpEveryone(Genie_to_Ariant.getId()); Ariant_btf.warpEveryone(Genie_to_Orbis.getId()); - Ariant_docked.setDocked(false); + Orbis_docked.broadcastShip(false); + Ariant_docked.broadcastShip(false); + + em.setProperty("docked","false"); Orbis_docked.setDocked(false); - Ariant_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); - Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); - em.schedule("arrived", rideTime); + Ariant_docked.setDocked(false); + + em.schedule("arrived", rideTime); //The time that require move to destination } function arrived() { Genie_to_Orbis.warpEveryone(Orbis_Station.getId()); Genie_to_Ariant.warpEveryone(Ariant_docked.getId()); + Orbis_docked.broadcastShip(true); + Ariant_docked.broadcastShip(true); + scheduleNew(); } diff --git a/scripts/event/Hak.js b/scripts/event/Hak.js index b0a792c654..25618e3db6 100644 --- a/scripts/event/Hak.js +++ b/scripts/event/Hak.js @@ -1,5 +1,3 @@ -importPackage(Packages.tools); - var returnTo = new Array(200000141, 250000100); var rideTo = new Array(250000100, 200000141); var birdRide = new Array(200090300, 200090310); @@ -7,44 +5,28 @@ var myRide; var returnMap; var map; var docked; + var timeOnRide = 60; //Seconds -var onRide; function init() { -} - -function setup() { - var eim = em.newInstance("Hak_" + + em.getProperty("player")); - return eim; + em.setProperty("isRiding","false"); } function playerEntry(eim, player) { - if (player.getMapId() == returnTo[0]) { - myRide = 0; - } else { - myRide = 1; - } - docked = eim.getEm().getChannelServer().getMapFactory().getMap(rideTo[myRide]); - returnMap = eim.getMapFactory().getMap(returnTo[myRide]); - onRide = eim.getMapFactory().getMap(birdRide[myRide]); + myRide = em.getProperty("myRide"); + docked = em.getChannelServer().getMapFactory().getMap(rideTo[myRide]); + returnMap = em.getChannelServer().getMapFactory().getMap(returnTo[myRide]); + onRide = em.getChannelServer().getMapFactory().getMap(birdRide[myRide]); + + em.setProperty("isRiding","true"); + em.schedule("timeOut", timeOnRide * 1000); player.changeMap(onRide, onRide.getPortal(0)); - player.getClient().getSession().write(MaplePacketCreator.getClock(timeOnRide)); - eim.schedule("timeOut", timeOnRide * 1000); + player.getClient().getSession().write(tools.MaplePacketCreator.getClock(timeOnRide)); } -function timeOut() { - onRide.warpEveryone(docked.getId()); -} - - - - function playerDisconnected(eim, player) { return 0; } -function cancelSchedule() {} - -function dispose() { - em.cancelSchedule(); +function cancelSchedule() { } \ No newline at end of file diff --git a/scripts/event/Trains.js b/scripts/event/Trains.js index 5e1c69fbe0..385e6ca178 100644 --- a/scripts/event/Trains.js +++ b/scripts/event/Trains.js @@ -23,18 +23,18 @@ function init() { Ludibrium_docked = em.getChannelServer().getMapFactory().getMap(220000110); Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100); Ludibrium_Station = em.getChannelServer().getMapFactory().getMap(220000100); + scheduleNew(); } function scheduleNew() { - Ludibrium_docked.setDocked(true); - Orbis_docked.setDocked(true); - Ludibrium_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); - Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); em.setProperty("docked", "true"); + Orbis_docked.setDocked(true); + Ludibrium_docked.setDocked(true); + em.setProperty("entry", "true"); - em.schedule("stopEntry", closeTime); - em.schedule("takeoff", beginTime); + em.schedule("stopEntry", closeTime); //The time to close the gate + em.schedule("takeoff", beginTime); //The time to begin the ride } function stopEntry() { @@ -42,19 +42,23 @@ function stopEntry() { } function takeoff() { - Ludibrium_docked.setDocked(false); - Orbis_docked.setDocked(false); - Ludibrium_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); - Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); - em.setProperty("docked","false"); Orbis_btf.warpEveryone(Train_to_Ludibrium.getId()); Ludibrium_btf.warpEveryone(Train_to_Orbis.getId()); - em.schedule("arrived", rideTime); + Orbis_docked.broadcastShip(false); + Ludibrium_docked.broadcastShip(false); + + em.setProperty("docked","false"); + Orbis_docked.setDocked(false); + Ludibrium_docked.setDocked(false); + + em.schedule("arrived", rideTime); //The time that require move to destination } function arrived() { Train_to_Orbis.warpEveryone(Orbis_Station.getId()); Train_to_Ludibrium.warpEveryone(Ludibrium_Station.getId()); + Orbis_docked.broadcastShip(true); + Ludibrium_docked.broadcastShip(true); scheduleNew(); } diff --git a/scripts/event/elevator.js b/scripts/event/elevator.js index 3bcc720390..6be6035ccb 100644 --- a/scripts/event/elevator.js +++ b/scripts/event/elevator.js @@ -20,6 +20,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ function init() { + em.getChannelServer().getMapFactory().getMap(222020100).resetReactors(); + em.getChannelServer().getMapFactory().getMap(222020200).resetReactors(); + scheduleNew(); } diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java index 5a07d69f7f..8c932edcf7 100644 --- a/src/server/maps/MapleMap.java +++ b/src/server/maps/MapleMap.java @@ -99,7 +99,7 @@ public class MapleMap { private byte monsterRate; private boolean clock; private boolean boat; - private boolean docked; + private boolean docked = false; private String mapName; private String streetName; private MapleMapEffect mapEffect = null; @@ -1278,7 +1278,7 @@ public class MapleMap { public void startMapEffect(String msg, int itemId) { startMapEffect(msg, itemId, 30000); } - + public void startMapEffect(String msg, int itemId, long time) { if (mapEffect != null) { return; @@ -1504,10 +1504,9 @@ public class MapleMap { Calendar cal = Calendar.getInstance(); chr.getClient().announce((MaplePacketCreator.getClockTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND)))); } - if (hasBoat() == 2) { - chr.getClient().announce((MaplePacketCreator.boatPacket(true))); - } else if (hasBoat() == 1 && (chr.getMapId() != 200090000 || chr.getMapId() != 200090010)) { - chr.getClient().announce(MaplePacketCreator.boatPacket(false)); + if (hasBoat() > 0) { + if(hasBoat() == 1) chr.getClient().announce((MaplePacketCreator.boatPacket(true))); + else chr.getClient().announce(MaplePacketCreator.boatPacket(false)); } chr.receivePartyMemberHP(); } @@ -2120,7 +2119,7 @@ public class MapleMap { } private int hasBoat() { - return docked ? 2 : (boat ? 1 : 0); + return !boat ? 0 : (docked ? 1 : 2); } public void setBoat(boolean hasBoat) { @@ -2434,4 +2433,8 @@ public class MapleMap { restoreMapSpawnPoints(); instanceMapFirstSpawn(); } + + public void broadcastShip(final boolean state) { + broadcastMessage(MaplePacketCreator.boatPacket(state)); + } } diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java index 812accec33..7e7fa9bddb 100644 --- a/src/tools/MaplePacketCreator.java +++ b/src/tools/MaplePacketCreator.java @@ -4440,6 +4440,7 @@ public class MaplePacketCreator { return mplew.getPacket(); } + public static byte[] boatPacket(boolean type) {//don't think this is correct.. final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); mplew.writeShort(SendOpcode.CONTI_STATE.getValue());