📄 c_attr.java
字号:
}
}
break;
case 951: // チャットパーティー招待を許可しますか?(Y/N)
c = readC();
L1PcInstance chatPc = (L1PcInstance) L1World.getInstance()
.findObject(pc.getPartyID());
if (chatPc != null) {
if (c == 0) { // No
chatPc.sendPackets(new S_ServerMessage(423, pc.getName())); // %0が招待を拒否しました。
pc.setPartyID(0);
} else if (c == 1) { // Yes
if (chatPc.isInChatParty()) {
if (chatPc.getChatParty().isVacancy() || chatPc
.isGm()) {
chatPc.getChatParty().addMember(pc);
} else {
chatPc.sendPackets(new S_ServerMessage(417)); // これ以上パーティーメンバーを受け入れることはできません。
}
} else {
L1ChatParty chatParty = new L1ChatParty();
chatParty.addMember(chatPc);
chatParty.addMember(pc);
chatPc.sendPackets(new S_ServerMessage(424, pc
.getName())); // %0がパーティーに入りました。
}
}
}
break;
case 953: // パーティー招待を許可しますか?(Y/N)
c = readC();
L1PcInstance target = (L1PcInstance) L1World.getInstance()
.findObject(pc.getPartyID());
if (target != null) {
if (c == 0) // No
{
target.sendPackets(new S_ServerMessage(423, pc.getName())); // %0が招待を拒否しました。
pc.setPartyID(0);
} else if (c == 1) // Yes
{
if (target.isInParty()) {
// 招待主がパーティー中
if (target.getParty().isVacancy() || target.isGm()) {
// パーティーに空きがある
target.getParty().addMember(pc);
} else {
// パーティーに空きがない
target.sendPackets(new S_ServerMessage(417)); // これ以上パーティーメンバーを受け入れることはできません。
}
} else {
// 招待主がパーティー中でない
L1Party party = new L1Party();
party.addMember(target);
party.addMember(pc);
target.sendPackets(new S_ServerMessage(424, pc
.getName())); // %0がパーティーに入りました。
}
}
}
break;
case 479: // どの能力値を向上させますか?(str、dex、int、con、wis、cha)
if (readC() == 1) {
String s = readS();
if (!(pc.getLevel() - 50 > pc.getBonusStats())) {
return;
}
if (s.toLowerCase().equals("str".toLowerCase())) {
// if(l1pcinstance.get_str() < 255)
if (pc.getBaseStr() < Config.MAX_ABILITY) {
pc.addBaseStr((byte) 1); // 素のSTR値に+1
pc.setBonusStats(pc.getBonusStats() + 1);
pc.sendPackets(new S_OwnCharStatus2(pc));
pc.sendPackets(new S_CharVisualUpdate(pc));
pc.save(); // DBにキャラクター情報を書き込む
} else {
pc.sendPackets(new S_SystemMessage("屬性最大數值只能到"+
Config.MAX_ABILITY+"。請重試一次。"));
}
} else if (s.toLowerCase().equals("dex".toLowerCase())) {
// if(l1pcinstance.get_dex() < 255)
if (pc.getBaseDex() < Config.MAX_ABILITY) {
pc.addBaseDex((byte) 1); // 素のDEX値に+1
pc.resetBaseAc();
pc.setBonusStats(pc.getBonusStats() + 1);
pc.sendPackets(new S_OwnCharStatus2(pc));
pc.sendPackets(new S_CharVisualUpdate(pc));
pc.save(); // DBにキャラクター情報を書き込む
} else {
pc.sendPackets(new S_SystemMessage("屬性最大數值只能到"+
Config.MAX_ABILITY+"。請重試一次。"));
}
} else if (s.toLowerCase().equals("con".toLowerCase())) {
// if(l1pcinstance.get_con() < 255)
if (pc.getBaseCon() < Config.MAX_ABILITY) {
pc.addBaseCon((byte) 1); // 素のCON値に+1
pc.setBonusStats(pc.getBonusStats() + 1);
pc.sendPackets(new S_OwnCharStatus2(pc));
pc.sendPackets(new S_CharVisualUpdate(pc));
pc.save(); // DBにキャラクター情報を書き込む
} else {
pc.sendPackets(new S_SystemMessage("屬性最大數值只能到"+
Config.MAX_ABILITY+"。請重試一次。"));
}
} else if (s.toLowerCase().equals("int".toLowerCase())) {
// if(l1pcinstance.get_int() < 255)
if (pc.getBaseInt() < Config.MAX_ABILITY) {
pc.addBaseInt((byte) 1); // 素のINT値に+1
pc.setBonusStats(pc.getBonusStats() + 1);
pc.sendPackets(new S_OwnCharStatus2(pc));
pc.sendPackets(new S_CharVisualUpdate(pc));
pc.save(); // DBにキャラクター情報を書き込む
} else {
pc.sendPackets(new S_SystemMessage("屬性最大數值只能到"+
Config.MAX_ABILITY+"。請重試一次。"));
}
} else if (s.toLowerCase().equals("wis".toLowerCase())) {
// if(l1pcinstance.get_wis() < 255)
if (pc.getBaseWis() < Config.MAX_ABILITY) {
pc.addBaseWis((byte) 1); // 素のWIS値に+1
pc.resetBaseMr();
pc.setBonusStats(pc.getBonusStats() + 1);
pc.sendPackets(new S_OwnCharStatus2(pc));
pc.sendPackets(new S_CharVisualUpdate(pc));
pc.save(); // DBにキャラクター情報を書き込む
} else {
pc.sendPackets(new S_SystemMessage("屬性最大數值只能到"+
Config.MAX_ABILITY+"。請重試一次。"));
}
} else if (s.toLowerCase().equals("cha".toLowerCase())) {
// if(l1pcinstance.get_cha() < 255)
if (pc.getBaseCha() < Config.MAX_ABILITY) {
pc.addBaseCha((byte) 1); // 素のCHA値に+1
pc.setBonusStats(pc.getBonusStats() + 1);
pc.sendPackets(new S_OwnCharStatus2(pc));
pc.sendPackets(new S_CharVisualUpdate(pc));
pc.save(); // DBにキャラクター情報を書き込む
} else {
pc.sendPackets(new S_SystemMessage("屬性最大數值只能到"+
Config.MAX_ABILITY+"。請重試一次。"));
}
}
}
break;
default:
break;
}
}
private void changeClan(ClientThread clientthread,
L1PcInstance pc, L1PcInstance joinPc, int maxMember) {
int clanId = pc.getClanid();
String clanName = pc.getClanname();
L1Clan clan = L1World.getInstance().getClan(clanName);
String clanMemberName[] = clan.getAllMembers();
int clanNum = clanMemberName.length;
int oldClanId = joinPc.getClanid();
String oldClanName = joinPc.getClanname();
L1Clan oldClan = L1World.getInstance().getClan(oldClanName);
String oldClanMemberName[] = oldClan.getAllMembers();
int oldClanNum = oldClanMemberName.length;
if (clan != null && oldClan != null && joinPc.isCrown() && // 自分が君主
joinPc.getId() == oldClan.getLeaderId()) {
if (maxMember < clanNum + oldClanNum) { // 空きがない
joinPc.sendPackets( // %0はあなたを血盟員として受け入れることができません。
new S_ServerMessage(188, pc.getName()));
return;
}
L1PcInstance clanMember[] = clan.getOnlineClanMember();
for (int cnt = 0; cnt < clanMember.length; cnt++) {
clanMember[cnt].sendPackets(new S_ServerMessage(94, joinPc
.getName())); // \f1%0が血盟の一員として受け入れられました。
}
for (int i = 0; i < oldClanMemberName.length; i++) {
L1PcInstance oldClanMember = L1World.getInstance().getPlayer(
oldClanMemberName[i]);
if (oldClanMember != null) { // オンライン中の旧クランメンバー
oldClanMember.setClanid(clanId);
oldClanMember.setClanname(clanName);
// 血盟連合に加入した君主はガーディアン
// 君主が連れてきた血盟員は見習い
if (oldClanMember.getId() == joinPc.getId()) {
oldClanMember.setClanRank(L1Clan.CLAN_RANK_GUARDIAN);
} else {
oldClanMember.setClanRank(L1Clan.CLAN_RANK_PROBATION);
}
try {
// DBにキャラクター情報を書き込む
oldClanMember.save();
} catch (Exception e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
}
clan.addMemberName(oldClanMember.getName());
oldClanMember.sendPackets(new S_ServerMessage(95,
clanName)); // \f1%0血盟に加入しました。
} else { // オフライン中の旧クランメンバー
try {
L1PcInstance offClanMember = CharacterTable
.getInstance().restoreCharacter(
oldClanMemberName[i]);
offClanMember.setClanid(clanId);
offClanMember.setClanname(clanName);
offClanMember.setClanRank(L1Clan.CLAN_RANK_PROBATION);
offClanMember.save(); // DBにキャラクター情報を書き込む
clan.addMemberName(offClanMember.getName());
} catch (Exception e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
}
}
}
// 旧クラン削除
String emblem_file = String.valueOf(oldClanId);
File file = new File("emblem/" + emblem_file);
file.delete();
ClanTable.getInstance().deleteClan(oldClanName);
}
}
private static void renamePet(L1PetInstance pet, String name) {
if (pet == null || name == null) {
throw new NullPointerException();
}
int petItemObjId = pet.getItemObjId();
L1Pet petTemplate = PetTable.getInstance().getTemplate(petItemObjId);
if (petTemplate == null) {
throw new NullPointerException();
}
L1PcInstance pc = (L1PcInstance) pet.getMaster();
if (PetTable.isNameExists(name)) {
pc.sendPackets(new S_ServerMessage(327)); // 同じ名前がすでに存在しています。
return;
}
L1Npc l1npc = NpcTable.getInstance().getTemplate(pet.getNpcId());
if (!(pet.getName().equalsIgnoreCase(l1npc.get_name())) ) {
pc.sendPackets(new S_ServerMessage(326)); // 一度決めた名前は変更できません。
return;
}
pet.setName(name);
petTemplate.set_name(name);
PetTable.getInstance().storePet(petTemplate); // DBに書き込み
L1ItemInstance item = pc.getInventory().getItem(pet.getItemObjId());
pc.getInventory().updateItem(item);
pc.sendPackets(new S_ChangeName(pet.getId(), name));
pc.broadcastPacket(new S_ChangeName(pet.getId(), name));
}
private void callClan(L1PcInstance pc) {
L1PcInstance callClanPc = (L1PcInstance) L1World.getInstance()
.findObject(pc.getTempID());
pc.setTempID(0);
if (callClanPc == null) {
return;
}
if (!pc.getMap().isEscapable() && !pc.isGm()) {
// 周辺のエネルギーがテレポートを妨害しています。そのため、ここでテレポートは使用できません。
pc.sendPackets(new S_ServerMessage(647));
L1Teleport.teleport(pc, pc.getLocation(), pc.getHeading(), false);
return;
}
if (pc.getId() != callClanPc.getCallClanId()) {
return;
}
boolean isInWarArea = false;
int castleId = L1CastleLocation.getCastleIdByArea(callClanPc);
if (castleId != 0) {
isInWarArea = true;
if (WarTimeController.getInstance().isNowWar(castleId)) {
isInWarArea = false; // 戦争時間中は旗内でも使用可能
}
}
short mapId = callClanPc.getMapId();
if (mapId != 0 && mapId != 4 && mapId != 304 || isInWarArea) {
// \f1あなたのパートナーは今あなたが行けない所でプレイ中です。
pc.sendPackets(new S_ServerMessage(547));
return;
}
L1Map map = callClanPc.getMap();
int callCalnX = callClanPc.getX();
int callCalnY = callClanPc.getY();
int locX = 0;
int locY = 0;
int heading = 0;
switch (callClanPc.getCallClanHeading()) {
case 0:
locY = callCalnY - 1;
heading = 4;
break;
case 1:
locX = callCalnX + 1;
locY = callCalnY - 1;
heading = 5;
break;
case 2:
locX = callCalnX + 1;
heading = 6;
break;
case 3:
locX = callCalnX + 1;
locY = callCalnY + 1;
heading = 7;
break;
case 4:
locY = callCalnY + 1;
heading = 0;
break;
case 5:
locX = callCalnX - 1;
locY = callCalnY + 1;
heading = 1;
break;
case 6:
locX = callCalnX - 1;
heading = 2;
break;
case 7:
locX = callCalnX - 1;
locY = callCalnY - 1;
heading = 3;
break;
default:
break;
}
boolean isExsistCharacter = false;
for (L1Object object : L1World.getInstance()
.getVisibleObjects(callClanPc, 1)) {
if (object instanceof L1Character) {
L1Character cha = (L1Character) object;
if (cha.getX() == locX && cha.getY() == locY
&& cha.getMapId() == mapId) {
isExsistCharacter = true;
break;
}
}
}
if (locX == 0 && locY == 0 || !map.isPassable(locX, locY)
|| isExsistCharacter) {
// 障害物があってそこまで移動することができません。
pc.sendPackets(new S_ServerMessage(627));
return;
}
L1Teleport.teleport(pc, locX, locY, mapId, heading, true, L1Teleport
.CALL_CLAN);
}
@Override
public String getType() {
return C_ATTR;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -