Fulfilled merge of Drago's AriantPQ PR #438 into the source! Adjusted MCPQ map limits predicted within battlefield's map info node. Added max number-of-players option when creating a AriantPQ lobby. Added party creation check when trying to create one inside the AriantPQ rooms. Adjusted several AriantPQ mechanics, in order to either improve the existent features or make those that was still unavailable work seamlessly (score update, ariant batlle points).
178 lines
6.5 KiB
JavaScript
178 lines
6.5 KiB
JavaScript
/*2101014.js - Lobby and Entrance
|
||
* @author Jvlaple
|
||
* For Jvlaple's AriantPQ
|
||
*/
|
||
|
||
importPackage(Packages.server.expeditions);
|
||
|
||
var status = 0;
|
||
var toBan = -1;
|
||
var choice;
|
||
var arenaType;
|
||
var arena;
|
||
var arenaName;
|
||
var type;
|
||
var map;
|
||
var exped = MapleExpeditionType.ARIANT;
|
||
var exped1 = MapleExpeditionType.ARIANT1;
|
||
var exped2 = MapleExpeditionType.ARIANT2;
|
||
|
||
function start() {
|
||
status = -1;
|
||
action(1, 0, 0);
|
||
}
|
||
|
||
function action(mode, type, selection) {
|
||
if (mode == -1) {
|
||
cm.dispose();
|
||
} else {
|
||
if (mode == 0 && status == 0) {
|
||
cm.dispose();
|
||
return;
|
||
}
|
||
if (mode == 1) {
|
||
status++;
|
||
} else {
|
||
status--;
|
||
}
|
||
if (cm.getPlayer().getMapId() == 980010000) {
|
||
if (cm.getLevel() > 30) {
|
||
cm.sendOk("You are already over #rlevel 30#k, therefore you can't participate in this instance anymore.");
|
||
cm.dispose();
|
||
return;
|
||
}
|
||
|
||
if (status == 0) {
|
||
var expedicao = cm.getExpedition(exped);
|
||
var expedicao1 = cm.getExpedition(exped1);
|
||
var expedicao2 = cm.getExpedition(exped2);
|
||
|
||
var channelMaps = cm.getClient().getChannelServer().getMapFactory();
|
||
var startSnd = "Voc<6F> gostaria de participar do Desafio #eAriant Coliseu#n?\r\n\r\n#e#r (Escolha uma arena)#n#k\r\n#b";
|
||
var toSnd = startSnd;
|
||
|
||
if (expedicao == null) {
|
||
toSnd += "#L0#Comece Ariant Coliseu (1)#l\r\n";
|
||
} else if (channelMaps.getMap(980010101).getCharacters().isEmpty()) {
|
||
toSnd += "#L0#Junte-se ao Ariant Coliseu (1) Dono (" + expedicao.getLeader().getName() + ")" + " Membros Atuais: " + cm.getExpeditionMemberNames(exped) + "\r\n";
|
||
}
|
||
if (expedicao1 == null) {
|
||
toSnd += "#L1#Comece Ariant Coliseu (2)#l\r\n";
|
||
} else if (channelMaps.getMap(980010201).getCharacters().isEmpty()) {
|
||
toSnd += "#L1#Junte-se ao Ariant Coliseu (2) Dono (" + expedicao1.getLeader().getName() + ")" + " Membros Atuais: " + cm.getExpeditionMemberNames(exped1) + "\r\n";
|
||
}
|
||
if (expedicao2 == null) {
|
||
toSnd += "#L2#Comece Ariant Coliseu (3)#l\r\n";
|
||
} else if (channelMaps.getMap(980010301).getCharacters().isEmpty()) {
|
||
toSnd += "#L2#Junte-se ao Ariant Coliseu (3) Dono (" + expedicao2.getLeader().getName() + ")" + " Membros Atuais: " + cm.getExpeditionMemberNames(exped2) + "\r\n";
|
||
}
|
||
if (toSnd.equals(startSnd)) {
|
||
cm.sendOk("Todas as arenas esta ocupadas agora. Eu sugiro que voc<6F> volte mais tarde ou mudar de canal.");
|
||
cm.dispose();
|
||
} else {
|
||
cm.sendSimple(toSnd);
|
||
}
|
||
} else if (status == 1) {
|
||
arenaType = selection;
|
||
expedicao = fetchArenaType();
|
||
if (expedicao == "") {
|
||
cm.dispose();
|
||
return;
|
||
}
|
||
|
||
if (expedicao != null) {
|
||
enterArena(-1);
|
||
} else {
|
||
cm.sendGetText("Quantos jogadores voce quer em sua instancia?");
|
||
}
|
||
} else if (status == 2) {
|
||
var players = parseInt(cm.getText()); // AriantPQ option limit found thanks to NarutoFury (iMrSiN)
|
||
if (isNaN(players)) {
|
||
cm.sendNext("Por favor insira um valor numérico de limite de jogadores permitidos em sua instancia.");
|
||
status = 0;
|
||
} else if (players < 2) {
|
||
cm.sendNext("Sua instancia precisa ter ao menos 2 jogadores.");
|
||
status = 0;
|
||
} else {
|
||
enterArena(players);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function fetchArenaType() {
|
||
switch (arenaType) {
|
||
case 0 :
|
||
exped = MapleExpeditionType.ARIANT;
|
||
expedicao = cm.getExpedition(exped);
|
||
map = 980010100;
|
||
break;
|
||
case 1 :
|
||
exped = MapleExpeditionType.ARIANT1;
|
||
expedicao = cm.getExpedition(exped);
|
||
map = 980010200;
|
||
break;
|
||
case 2 :
|
||
exped = MapleExpeditionType.ARIANT2;
|
||
expedicao = cm.getExpedition(exped);
|
||
map = 980010300;
|
||
break;
|
||
default :
|
||
exped = null;
|
||
map = 0;
|
||
expedicao = "";
|
||
}
|
||
|
||
return expedicao;
|
||
}
|
||
|
||
function enterArena(arenaPlayers) {
|
||
expedicao = fetchArenaType();
|
||
if (expedicao == "") {
|
||
cm.dispose();
|
||
return;
|
||
} else if (expedicao == null) {
|
||
if (arenaPlayers != -1) {
|
||
if (cm.createExpedition(exped, true, 0, arenaPlayers)) {
|
||
cm.warp(map, 0);
|
||
cm.getPlayer().dropMessage("Sua Arena foi criada. Aguarde as pessoas entrarem agora!");
|
||
} else {
|
||
cm.sendOk("An unexpected error has occurred when starting the expedition, please try again later.");
|
||
}
|
||
} else {
|
||
cm.sendOk("An unexpected error has occurred when locating the expedition, please try again later.");
|
||
}
|
||
|
||
cm.dispose();
|
||
} else {
|
||
if (playerAlreadyInLobby(cm.getPlayer())) {
|
||
cm.sendOk("Desculpe, você já pertence a alguma Lobby.");
|
||
cm.dispose();
|
||
return;
|
||
}
|
||
|
||
var playerAdd = expedicao.addMemberInt(cm.getPlayer());
|
||
if (playerAdd == 3) {
|
||
cm.sendOk("Desculpe, a Lobby esta cheia agora.");
|
||
cm.dispose();
|
||
} else {
|
||
if (playerAdd == 0) {
|
||
cm.warp(map, 0);
|
||
cm.dispose();
|
||
} else if (playerAdd == 2) {
|
||
cm.sendOk("Desculpe, mas o l<>der pediu para nao ser autorizado a entrar.");
|
||
cm.dispose();
|
||
} else {
|
||
cm.sendOk("erro.");
|
||
cm.dispose();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function playerAlreadyInLobby(player) {
|
||
return cm.getExpedition(MapleExpeditionType.ARIANT) != null && cm.getExpedition(MapleExpeditionType.ARIANT).contains(player) ||
|
||
cm.getExpedition(MapleExpeditionType.ARIANT1) != null && cm.getExpedition(MapleExpeditionType.ARIANT1).contains(player) ||
|
||
cm.getExpedition(MapleExpeditionType.ARIANT2) != null && cm.getExpedition(MapleExpeditionType.ARIANT2).contains(player);
|
||
} |