Rearranged travel packets

An approach on infinite loopings on "Before Takeoff" maps.
This commit is contained in:
ronancpl
2017-04-06 19:26:48 -03:00
parent 67af338f8a
commit f6935d3d3b
10 changed files with 124 additions and 121 deletions

View File

@@ -3,13 +3,13 @@
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group> <group>
<file>file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/9201134.js</file> <file>file:/C:/Nexon/MapleSolaxia/src/scripting/event/EventManager.java</file>
<file>file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2030010.js</file> <file>file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2012001.js</file>
<file>file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2091005.js</file> <file>file:/C:/Nexon/MapleSolaxia/src/net/SendOpcode.java</file>
<file>file:/C:/Nexon/MapleSolaxia/src/server/life/SpawnPoint.java</file> <file>file:/C:/Nexon/MapleSolaxia/src/server/life/SpawnPoint.java</file>
<file>file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2012002.js</file> <file>file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2012002.js</file>
<file>file:/C:/Nexon/MapleSolaxia/src/server/maps/MapleMapFactory.java</file> <file>file:/C:/Nexon/MapleSolaxia/src/server/maps/MapleMapFactory.java</file>
<file>file:/C:/Nexon/MapleSolaxia/src/server/life/MapleMonster.java</file> <file>file:/C:/Nexon/MapleSolaxia/src/tools/MaplePacketCreator.java</file>
<file>file:/C:/Nexon/MapleSolaxia/scripts/event/Boats.js</file> <file>file:/C:/Nexon/MapleSolaxia/scripts/event/Boats.js</file>
<file>file:/C:/Nexon/MapleSolaxia/src/server/maps/MapleMap.java</file> <file>file:/C:/Nexon/MapleSolaxia/src/server/maps/MapleMap.java</file>
</group> </group>

View File

@@ -22,6 +22,8 @@ function init() {
} }
function scheduleNew() { function scheduleNew() {
em.setProperty("docked", "true");
em.setProperty("entry", "true");
em.schedule("stopEntry", closeTime); em.schedule("stopEntry", closeTime);
em.schedule("takeoff", beginTime); em.schedule("takeoff", beginTime);
} }
@@ -31,16 +33,17 @@ function stopEntry() {
} }
function takeoff() { function takeoff() {
em.setProperty("entry", "true"); em.setProperty("docked","false");
KC_bfd.warpEveryone(Plane_to_CBD.getId()); KC_bfd.warpEveryone(Plane_to_CBD.getId());
CBD_bfd.warpEveryone(Plane_to_KC.getId()); CBD_bfd.warpEveryone(Plane_to_KC.getId());
em.schedule("arrived", rideTime); em.schedule("arrived", rideTime); //The time that require move to destination
scheduleNew();
} }
function arrived() { function arrived() {
Plane_to_CBD.warpEveryone(CBD_docked.getId()); Plane_to_CBD.warpEveryone(CBD_docked.getId());
Plane_to_KC.warpEveryone(KC_docked.getId()); Plane_to_KC.warpEveryone(KC_docked.getId());
scheduleNew();
} }
function cancelSchedule() { function cancelSchedule() {

View File

@@ -25,21 +25,22 @@ function init() {
Ellinia_docked = em.getChannelServer().getMapFactory().getMap(101000300); Ellinia_docked = em.getChannelServer().getMapFactory().getMap(101000300);
Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100); Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100);
Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000111); Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000111);
OBoatsetup();
EBoatsetup();
scheduleNew(); scheduleNew();
} }
function scheduleNew() { function scheduleNew() {
em.setProperty("docked", "true");
Ellinia_docked.setDocked(true); Ellinia_docked.setDocked(true);
Orbis_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("entry", "true");
em.setProperty("haveBalrog", "false"); em.setProperty("haveBalrog", "false");
em.schedule("stopentry", closeTime); em.schedule("stopentry", closeTime);
em.schedule("takeoff", beginTime); em.schedule("takeoff", beginTime);
Boat_to_Orbis.killAllMonsters();
Boat_to_Ellinia.killAllMonsters();
} }
function stopentry() { function stopentry() {
@@ -48,16 +49,16 @@ function stopentry() {
Ellinia_Boat_Cabin.resetReactors(); Ellinia_Boat_Cabin.resetReactors();
} }
function takeoff() { function takeoff() {
em.setProperty("docked","false");
Orbis_btf.warpEveryone(Boat_to_Ellinia.getId()); Orbis_btf.warpEveryone(Boat_to_Ellinia.getId());
Ellinia_btf.warpEveryone(Boat_to_Orbis.getId()); Ellinia_btf.warpEveryone(Boat_to_Orbis.getId());
Ellinia_docked.broadcastShip(false);
Orbis_docked.broadcastShip(false);
em.setProperty("docked","false");
Ellinia_docked.setDocked(false); Ellinia_docked.setDocked(false);
Orbis_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("invasion", invasionTime);
em.schedule("arrived", rideTime); em.schedule("arrived", rideTime);
} }
@@ -67,37 +68,31 @@ function arrived() {
Orbis_Boat_Cabin.warpEveryone(Orbis_Station.getId()); Orbis_Boat_Cabin.warpEveryone(Orbis_Station.getId());
Boat_to_Ellinia.warpEveryone(Ellinia_docked.getId()); Boat_to_Ellinia.warpEveryone(Ellinia_docked.getId());
Ellinia_Boat_Cabin.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_Orbis.killAllMonsters();
Boat_to_Ellinia.killAllMonsters(); Boat_to_Ellinia.killAllMonsters();
em.setProperty("haveBalrog", "false");
scheduleNew(); scheduleNew();
} }
function invasion() { function invasion() {
var numspawn = 2; if (Math.floor(Math.random() * 10) < 10) {
if(numspawn > 0) { var map1 = Boat_to_Ellinia;
for(var i=0; i < numspawn; i++) { var pos1 = new java.awt.Point(-538, 143);
Boat_to_Orbis.spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8150000), new java.awt.Point(485, -221)); map1.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos1);
Boat_to_Ellinia.spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8150000), new java.awt.Point(-590, -221)); map1.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos1);
}
Boat_to_Orbis.setDocked(true); var map2 = Boat_to_Orbis;
Boat_to_Ellinia.setDocked(true); var pos2 = new java.awt.Point(339, 148);
Boat_to_Orbis.broadcastMessage(MaplePacketCreator.boatPacket(true)); map2.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos2);
Boat_to_Ellinia.broadcastMessage(MaplePacketCreator.boatPacket(true)); map2.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos2);
Boat_to_Orbis.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate"));
Boat_to_Ellinia.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate"));
em.setProperty("haveBalrog","true"); 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() { function cancelSchedule() {
} }

View File

@@ -61,18 +61,18 @@ function init() {
Leafre_docked = em.getChannelServer().getMapFactory().getMap(240000110); Leafre_docked = em.getChannelServer().getMapFactory().getMap(240000110);
Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100); Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100);
Leafre_Station = em.getChannelServer().getMapFactory().getMap(240000100); Leafre_Station = em.getChannelServer().getMapFactory().getMap(240000100);
scheduleNew(); scheduleNew();
} }
function 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"); em.setProperty("docked", "true");
Orbis_docked.setDocked(true);
Leafre_docked.setDocked(true);
em.setProperty("entry", "true"); em.setProperty("entry", "true");
em.schedule("stopEntry", closeTime); em.schedule("stopEntry", closeTime); //The time to close the gate
em.schedule("takeoff", beginTime); em.schedule("takeoff", beginTime); //The time to begin the ride
} }
function stopEntry() { function stopEntry() {
@@ -80,19 +80,26 @@ function stopEntry() {
} }
function takeoff() { 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()); Orbis_btf.warpEveryone(Cabin_to_Leafre.getId());
Leafre_btf.warpEveryone(Cabin_to_Orbis.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() { function arrived() {
Cabin_to_Orbis.warpEveryone(Orbis_Station.getId()); Cabin_to_Orbis.warpEveryone(Orbis_Station.getId());
Cabin_to_Leafre.warpEveryone(Leafre_Station.getId()); Cabin_to_Leafre.warpEveryone(Leafre_Station.getId());
Orbis_docked.broadcastShip(true);
Leafre_docked.broadcastShip(true);
scheduleNew(); scheduleNew();
} }

View File

@@ -40,18 +40,18 @@ function init() {
Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000151); Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000151);
Ariant_docked = em.getChannelServer().getMapFactory().getMap(260000100); Ariant_docked = em.getChannelServer().getMapFactory().getMap(260000100);
Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100); Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100);
scheduleNew(); scheduleNew();
} }
function 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"); em.setProperty("docked", "true");
Orbis_docked.setDocked(true);
Ariant_docked.setDocked(true);
em.setProperty("entry", "true"); em.setProperty("entry", "true");
em.schedule("stopEntry", closeTime); em.schedule("stopEntry", closeTime); //The time to close the gate
em.schedule("takeoff", beginTime); em.schedule("takeoff", beginTime); //The time to begin the ride
} }
function stopEntry() { function stopEntry() {
@@ -59,19 +59,24 @@ function stopEntry() {
} }
function takeoff() { function takeoff() {
em.setProperty("docked","false");
Orbis_btf.warpEveryone(Genie_to_Ariant.getId()); Orbis_btf.warpEveryone(Genie_to_Ariant.getId());
Ariant_btf.warpEveryone(Genie_to_Orbis.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); Orbis_docked.setDocked(false);
Ariant_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); Ariant_docked.setDocked(false);
Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false));
em.schedule("arrived", rideTime); em.schedule("arrived", rideTime); //The time that require move to destination
} }
function arrived() { function arrived() {
Genie_to_Orbis.warpEveryone(Orbis_Station.getId()); Genie_to_Orbis.warpEveryone(Orbis_Station.getId());
Genie_to_Ariant.warpEveryone(Ariant_docked.getId()); Genie_to_Ariant.warpEveryone(Ariant_docked.getId());
Orbis_docked.broadcastShip(true);
Ariant_docked.broadcastShip(true);
scheduleNew(); scheduleNew();
} }

View File

@@ -1,5 +1,3 @@
importPackage(Packages.tools);
var returnTo = new Array(200000141, 250000100); var returnTo = new Array(200000141, 250000100);
var rideTo = new Array(250000100, 200000141); var rideTo = new Array(250000100, 200000141);
var birdRide = new Array(200090300, 200090310); var birdRide = new Array(200090300, 200090310);
@@ -7,44 +5,28 @@ var myRide;
var returnMap; var returnMap;
var map; var map;
var docked; var docked;
var timeOnRide = 60; //Seconds var timeOnRide = 60; //Seconds
var onRide;
function init() { function init() {
} em.setProperty("isRiding","false");
function setup() {
var eim = em.newInstance("Hak_" + + em.getProperty("player"));
return eim;
} }
function playerEntry(eim, player) { function playerEntry(eim, player) {
if (player.getMapId() == returnTo[0]) { myRide = em.getProperty("myRide");
myRide = 0; docked = em.getChannelServer().getMapFactory().getMap(rideTo[myRide]);
} else { returnMap = em.getChannelServer().getMapFactory().getMap(returnTo[myRide]);
myRide = 1; onRide = em.getChannelServer().getMapFactory().getMap(birdRide[myRide]);
}
docked = eim.getEm().getChannelServer().getMapFactory().getMap(rideTo[myRide]); em.setProperty("isRiding","true");
returnMap = eim.getMapFactory().getMap(returnTo[myRide]); em.schedule("timeOut", timeOnRide * 1000);
onRide = eim.getMapFactory().getMap(birdRide[myRide]);
player.changeMap(onRide, onRide.getPortal(0)); player.changeMap(onRide, onRide.getPortal(0));
player.getClient().getSession().write(MaplePacketCreator.getClock(timeOnRide)); player.getClient().getSession().write(tools.MaplePacketCreator.getClock(timeOnRide));
eim.schedule("timeOut", timeOnRide * 1000);
} }
function timeOut() {
onRide.warpEveryone(docked.getId());
}
function playerDisconnected(eim, player) { function playerDisconnected(eim, player) {
return 0; return 0;
} }
function cancelSchedule() {} function cancelSchedule() {
function dispose() {
em.cancelSchedule();
} }

View File

@@ -23,18 +23,18 @@ function init() {
Ludibrium_docked = em.getChannelServer().getMapFactory().getMap(220000110); Ludibrium_docked = em.getChannelServer().getMapFactory().getMap(220000110);
Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100); Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100);
Ludibrium_Station = em.getChannelServer().getMapFactory().getMap(220000100); Ludibrium_Station = em.getChannelServer().getMapFactory().getMap(220000100);
scheduleNew(); scheduleNew();
} }
function 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"); em.setProperty("docked", "true");
Orbis_docked.setDocked(true);
Ludibrium_docked.setDocked(true);
em.setProperty("entry", "true"); em.setProperty("entry", "true");
em.schedule("stopEntry", closeTime); em.schedule("stopEntry", closeTime); //The time to close the gate
em.schedule("takeoff", beginTime); em.schedule("takeoff", beginTime); //The time to begin the ride
} }
function stopEntry() { function stopEntry() {
@@ -42,19 +42,23 @@ function stopEntry() {
} }
function takeoff() { 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()); Orbis_btf.warpEveryone(Train_to_Ludibrium.getId());
Ludibrium_btf.warpEveryone(Train_to_Orbis.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() { function arrived() {
Train_to_Orbis.warpEveryone(Orbis_Station.getId()); Train_to_Orbis.warpEveryone(Orbis_Station.getId());
Train_to_Ludibrium.warpEveryone(Ludibrium_Station.getId()); Train_to_Ludibrium.warpEveryone(Ludibrium_Station.getId());
Orbis_docked.broadcastShip(true);
Ludibrium_docked.broadcastShip(true);
scheduleNew(); scheduleNew();
} }

View File

@@ -20,6 +20,9 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
function init() { function init() {
em.getChannelServer().getMapFactory().getMap(222020100).resetReactors();
em.getChannelServer().getMapFactory().getMap(222020200).resetReactors();
scheduleNew(); scheduleNew();
} }

View File

@@ -99,7 +99,7 @@ public class MapleMap {
private byte monsterRate; private byte monsterRate;
private boolean clock; private boolean clock;
private boolean boat; private boolean boat;
private boolean docked; private boolean docked = false;
private String mapName; private String mapName;
private String streetName; private String streetName;
private MapleMapEffect mapEffect = null; private MapleMapEffect mapEffect = null;
@@ -1504,10 +1504,9 @@ public class MapleMap {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
chr.getClient().announce((MaplePacketCreator.getClockTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND)))); chr.getClient().announce((MaplePacketCreator.getClockTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND))));
} }
if (hasBoat() == 2) { if (hasBoat() > 0) {
chr.getClient().announce((MaplePacketCreator.boatPacket(true))); if(hasBoat() == 1) chr.getClient().announce((MaplePacketCreator.boatPacket(true)));
} else if (hasBoat() == 1 && (chr.getMapId() != 200090000 || chr.getMapId() != 200090010)) { else chr.getClient().announce(MaplePacketCreator.boatPacket(false));
chr.getClient().announce(MaplePacketCreator.boatPacket(false));
} }
chr.receivePartyMemberHP(); chr.receivePartyMemberHP();
} }
@@ -2120,7 +2119,7 @@ public class MapleMap {
} }
private int hasBoat() { private int hasBoat() {
return docked ? 2 : (boat ? 1 : 0); return !boat ? 0 : (docked ? 1 : 2);
} }
public void setBoat(boolean hasBoat) { public void setBoat(boolean hasBoat) {
@@ -2434,4 +2433,8 @@ public class MapleMap {
restoreMapSpawnPoints(); restoreMapSpawnPoints();
instanceMapFirstSpawn(); instanceMapFirstSpawn();
} }
public void broadcastShip(final boolean state) {
broadcastMessage(MaplePacketCreator.boatPacket(state));
}
} }

View File

@@ -4440,6 +4440,7 @@ public class MaplePacketCreator {
return mplew.getPacket(); return mplew.getPacket();
} }
public static byte[] boatPacket(boolean type) {//don't think this is correct.. public static byte[] boatPacket(boolean type) {//don't think this is correct..
final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendOpcode.CONTI_STATE.getValue()); mplew.writeShort(SendOpcode.CONTI_STATE.getValue());