GuildPQ Queue system + revamped Warp mechanic
Added a queue system for waiting guilds outside the GPQ area. Changed the way players are transported through maps on non-portal passing cases: if not defined, a spawn point is chosen randomly for each player.
This commit is contained in:
@@ -57,7 +57,7 @@ public class PlayerStorage {
|
||||
public MapleCharacter getCharacterByName(String name) {
|
||||
rlock.lock();
|
||||
try {
|
||||
for (MapleCharacter chr : storage.values()) {
|
||||
for (MapleCharacter chr : storage.values()) {
|
||||
if (chr.getName().toLowerCase().equals(name.toLowerCase()))
|
||||
return chr;
|
||||
}
|
||||
|
||||
@@ -296,14 +296,16 @@ public final class Channel {
|
||||
private static String [] getEvents(){
|
||||
List<String> events = new ArrayList<String>();
|
||||
for (File file : new File("scripts/event").listFiles()){
|
||||
events.add(file.getName().substring(0, file.getName().length() - 3));
|
||||
events.add(file.getName().substring(0, file.getName().length() - 3));
|
||||
}
|
||||
return events.toArray(new String[0]);
|
||||
}
|
||||
|
||||
public int getStoredVar(int key) {
|
||||
if(storedVars.containsKey(key))
|
||||
public int getStoredVar(int key) {
|
||||
if(storedVars.containsKey(key)) {
|
||||
return storedVars.get(key);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
|
||||
chr.setStance(0);
|
||||
}
|
||||
chr.setHp(50);
|
||||
chr.changeMap(to, to.getPortal(0));
|
||||
chr.changeMap(to, to.getRandomPlayerSpawnpoint());
|
||||
}
|
||||
} else if (targetid != -1 && chr.isGM()) {
|
||||
MapleMap to = c.getChannelServer().getMapFactory().getMap(targetid);
|
||||
|
||||
@@ -37,6 +37,8 @@ import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.Set;
|
||||
import java.util.HashSet;
|
||||
|
||||
import net.server.PlayerStorage;
|
||||
import net.server.Server;
|
||||
@@ -65,6 +67,7 @@ public class World {
|
||||
private Map<Integer, MapleFamily> families = new LinkedHashMap<>();
|
||||
private Map<Integer, MapleGuildSummary> gsStore = new HashMap<>();
|
||||
private PlayerStorage players = new PlayerStorage();
|
||||
private Set<Integer> queuedGuilds = new HashSet<>();
|
||||
|
||||
public World(int world, int flag, String eventmsg, int exprate, int droprate, int mesorate, int bossdroprate) {
|
||||
this.id = world;
|
||||
@@ -300,6 +303,18 @@ public class World {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isGuildQueued(int guildId) {
|
||||
return queuedGuilds.contains(guildId);
|
||||
}
|
||||
|
||||
public void putGuildQueued(int guildId) {
|
||||
queuedGuilds.add(guildId);
|
||||
}
|
||||
|
||||
public void removeGuildQueued(int guildId) {
|
||||
queuedGuilds.remove(guildId);
|
||||
}
|
||||
|
||||
public MapleParty createParty(MaplePartyCharacter chrfor) {
|
||||
int partyid = runningPartyId.getAndIncrement();
|
||||
MapleParty party = new MapleParty(partyid, chrfor);
|
||||
@@ -364,13 +379,14 @@ public class World {
|
||||
party.updateMember(target);
|
||||
break;
|
||||
case CHANGE_LEADER:
|
||||
if(party.getLeader().getPlayer().getEventInstance() != null) {
|
||||
party.getLeader().getPlayer().getEventInstance().changedLeader(target.getPlayer());
|
||||
MapleCharacter mc = party.getLeader().getPlayer();
|
||||
if(mc.getEventInstance() != null && mc.getEventInstance().isEventLeader(mc)) {
|
||||
mc.getEventInstance().changedLeader(target.getPlayer());
|
||||
}
|
||||
party.setLeader(target);
|
||||
break;
|
||||
default:
|
||||
System.out.println("Unhandeled updateParty operation " + operation.name());
|
||||
System.out.println("Unhandled updateParty operation " + operation.name());
|
||||
}
|
||||
updateParty(party, operation, target);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user