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"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group>
<file>file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/9201134.js</file>
<file>file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2030010.js</file>
<file>file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2091005.js</file>
<file>file:/C:/Nexon/MapleSolaxia/src/scripting/event/EventManager.java</file>
<file>file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2012001.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/scripts/npc/world0/2012002.js</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/src/server/maps/MapleMap.java</file>
</group>

View File

@@ -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() {

View File

@@ -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() {
}

View File

@@ -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();
}

View File

@@ -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();
}

View File

@@ -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() {
}

View File

@@ -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();
}

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/>.
*/
function init() {
em.getChannelServer().getMapFactory().getMap(222020100).resetReactors();
em.getChannelServer().getMapFactory().getMap(222020200).resetReactors();
scheduleNew();
}

View File

@@ -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));
}
}

View File

@@ -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());