Partial solution on Guild Alliances

Revamped DB tables and enabled some functionalities on Guild Alliances,
such as create one, expel/quit one and rank players.
This commit is contained in:
ronancpl
2017-05-24 19:52:00 -03:00
parent 53927576e7
commit a636f63114
19 changed files with 553 additions and 273 deletions

View File

@@ -55,6 +55,7 @@ import net.server.PlayerCoolDownValueHolder;
import net.server.PlayerDiseaseValueHolder;
import net.server.Server;
import net.server.channel.Channel;
import net.server.guild.MapleAlliance;
import net.server.guild.MapleGuild;
import net.server.guild.MapleGuildCharacter;
import net.server.world.MapleMessenger;
@@ -2205,6 +2206,18 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
return null;
}
}
public MapleAlliance getAlliance() {
if(mgc != null) {
try {
return Server.getInstance().getAlliance(getGuild().getAllianceId());
} catch (Exception ex) {
ex.printStackTrace();
}
}
return null;
}
public int getGuildId() {
return guildid;
@@ -3351,7 +3364,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
ret.dojoStage = rs.getInt("lastDojoStage");
ret.dataString = rs.getString("dataString");
if (ret.guildid > 0) {
ret.mgc = new MapleGuildCharacter(ret);
ret.mgc = new MapleGuildCharacter(ret); // oh boy, that's quite funny
}
int buddyCapacity = rs.getInt("buddyCapacity");
ret.buddylist = new BuddyList(buddyCapacity);
@@ -4147,8 +4160,8 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
}
}
public void resetMGC() {
this.mgc = null;
public void resetMGC(MapleGuildCharacter mgc) {
this.mgc = mgc;
}
public synchronized void saveCooldowns() {
@@ -4179,7 +4192,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
ps.setInt(2, guildrank);
ps.setInt(3, allianceRank);
ps.setInt(4, id);
ps.execute();
ps.executeUpdate();
}
} catch (SQLException se) {
se.printStackTrace();

View File

@@ -786,6 +786,8 @@ public class MapleClient {
final MapleGuild guild = player.getGuild();
if (channel == -1 || shutdown) {
chrg.setCharacter(null);
removePlayer();
player.saveCooldowns();
player.saveToDB();
@@ -944,7 +946,7 @@ public class MapleClient {
}
if (rs.getInt("guildid") > 0) {
try {
Server.getInstance().deleteGuildCharacter(new MapleGuildCharacter(cid, 0, rs.getString("name"), (byte) -1, (byte) -1, 0, rs.getInt("guildrank"), rs.getInt("guildid"), false, rs.getInt("allianceRank")));
Server.getInstance().deleteGuildCharacter(new MapleGuildCharacter(player, cid, 0, rs.getString("name"), (byte) -1, (byte) -1, 0, rs.getInt("guildrank"), rs.getInt("guildid"), false, rs.getInt("allianceRank")));
} catch (Exception re) {
re.printStackTrace();
return false;

View File

@@ -316,7 +316,12 @@ public class Commands {
switch (sub[0]) {
case "help":
case "commands":
player.yellowMessage("After you vote, talk to Rooney to get a leaf and redeem it for prizes!");
case "playercommands":
player.message("============================================================");
player.message("MapleSolaxiaV2 Player Commands");
player.message("============================================================");
player.message("@dispose: Fixes your character if it is stuck.");
player.message("@online: Displays a list of all online players.");
player.message("@time: Displays the current server time.");
@@ -368,10 +373,6 @@ public class Commands {
player.yellowMessage("Solaxia has been online for " + days + " days " + hours + " hours " + minutes + " minutes and " + seconds + " seconds.");
break;
case "gacha":
if (player.gmLevel() == 0) { // Sigh, need it for now...
player.yellowMessage("Player Command " + heading + sub[0] + " does not exist, see @help for a list of commands.");
return false;
}
Gachapon gacha = null;
String search = joinStringFrom(sub, 1);
String gachaName = "";
@@ -478,7 +479,11 @@ public class Commands {
player.message("You've been disposed.");
break;
case "rates":
c.resetVoteTime();
//c.resetVoteTime();
player.yellowMessage("BOSSDROP RATE");
player.message(">>Total BOSSDROP Rate: " + c.getWorldServer().getBossDropRate() + "x");
player.message(">>------------------------------------------------");
player.yellowMessage("DROP RATE");
player.message(">>Base DROP Rate: " + c.getWorldServer().getDropRate() + "x");
player.message(">>Your DROP Rate: " + player.getDropRate() / c.getWorldServer().getDropRate() + "x");
@@ -671,7 +676,7 @@ public class Commands {
default:
if (player.gmLevel() == 0) {
player.yellowMessage("Player Command " + heading + sub[0] + " does not exist, see @help for a list of commands.");
player.yellowMessage("Player Command " + heading + sub[0] + " does not exist, see @playercommands for a list of commands.");
}
return false;
}
@@ -683,7 +688,12 @@ public class Commands {
Channel cserv = c.getChannelServer();
Server srv = Server.getInstance();
if (sub[0].equals("sp")) {
if (sub[0].equals("commands")) {
player.message("============================================================");
player.message("MapleSolaxiaV2 GM/Admin Commands Available");
player.message("============================================================");
}
else if (sub[0].equals("sp")) {
if (sub.length < 2){
player.yellowMessage("Syntax: !sp [<playername>] <newsp>");
return true;
@@ -1571,7 +1581,6 @@ public class Commands {
SkillFactory.getSkill(9101004).getEffect(SkillFactory.getSkill(9101004).getMaxLevel()).applyTo(player);
} else if (sub[0].equals("unhide")) {
SkillFactory.getSkill(9101004).getEffect(SkillFactory.getSkill(9101004).getMaxLevel()).applyTo(player);
} else if (sub[0].equals("healmap")) {
for (MapleCharacter mch : player.getMap().getCharacters()) {
if (mch != null) {
@@ -1581,6 +1590,39 @@ public class Commands {
mch.updateSingleStat(MapleStat.MP, mch.getMaxMp());
}
}
} else if (sub[0].equals("healperson")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(sub[1]);
victim.setHp(victim.getMaxHp());
victim.updateSingleStat(MapleStat.HP, victim.getMaxHp());
victim.setMp(victim.getMaxMp());
victim.updateSingleStat(MapleStat.MP, victim.getMaxMp());
} else if (sub[0].equals("hurt")) {
MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(sub[1]);
victim.setHp(1);
victim.updateSingleStat(MapleStat.HP, 1);
} else if (sub[0].equals("killmap")) {
for (MapleCharacter mch : player.getMap().getCharacters()) {
mch.setHp(0);
mch.updateSingleStat(MapleStat.HP, 0);
}
} else if (sub[0].equals("mesorate")) {
if (sub.length < 2){
player.yellowMessage("Syntax: !mesorate <newrate>");
return true;
}
c.getWorldServer().setMesoRate(Integer.parseInt(sub[1]));
} else if (sub[0].equals("droprate")) {
if (sub.length < 2){
player.yellowMessage("Syntax: !droprate <newrate>");
return true;
}
c.getWorldServer().setDropRate(Integer.parseInt(sub[1]));
} else if (sub[0].equals("bossdroprate")) {
if (sub.length < 2){
player.yellowMessage("Syntax: !bossdroprate <newrate>");
return true;
}
c.getWorldServer().setBossDropRate(Integer.parseInt(sub[1]));
} else if (sub[0].equalsIgnoreCase("night")) {
player.getMap().broadcastNightEffect();
player.yellowMessage("Done.");
@@ -1806,14 +1848,14 @@ public class Commands {
break;
case "clearquest":
if(sub.length < 1) {
player.dropMessage(5, "Plese include a quest ID.");
player.dropMessage(5, "Please include a quest ID.");
return;
}
MapleQuest.clearCache(Integer.parseInt(sub[1]));
player.dropMessage(5, "Quest Cache for quest " + sub[1] + " cleared.");
break;
default:
player.yellowMessage("Command " + heading + sub[0] + " does not exist.");
player.yellowMessage("Command " + heading + sub[0] + " does not exist. See !commands for a list of available commands.");
break;
}
}