04-25-2012, 04:29 PM
Возникла проблема с переходом на 4 профу сборке INProjectrev.547 GoD.
Суть проблемы в том что професия меняется только до 3 хотя в java файле прописано 4 профы!
Вот собственно сам java файл помогите найти ошибку.
Суть проблемы в том что професия меняется только до 3 хотя в java файле прописано 4 профы!
Вот собственно сам java файл помогите найти ошибку.
PHP код:
<?php
package npc.model;
import inproject.nuc.Config;
import inproject.nuc.cache.Msg;
import inproject.nuc.data.xml.holder.ItemHolder;
import inproject.nuc.model.Player;
import inproject.nuc.model.base.ClassId;
import inproject.nuc.model.instances.MerchantInstance;
import inproject.nuc.serverpackets.NpcHtmlMessage;
import inproject.nuc.serverpackets.components.SystemMsg;
import inproject.nuc.templates.item.ItemTemplate;
import inproject.nuc.templates.npc.NpcTemplate;
import inproject.nuc.utils.HtmlUtils;
import inproject.nuc.utils.Util;
import java.util.StringTokenizer;
public final class ClassMasterInstance extends MerchantInstance {
public ClassMasterInstance(int objectId, NpcTemplate template) {
super(objectId, template);
}
private String makeMessage(Player player) {
ClassId classId = player.getClassId();
int jobLevel = classId.getLevel();
int level = player.getLevel();
StringBuilder html = new StringBuilder();
if (Config.ALLOW_CLASS_MASTERS_LIST.isEmpty() || !Config.ALLOW_CLASS_MASTERS_LIST.contains(jobLevel ))
jobLevel = 5;
if ((level >= 20 && jobLevel == 1 || level >= 40 && jobLevel == 2 || level >= 76 && jobLevel == 3 || level >= 85 && jobLevel == 4) && Config.ALLOW_CLASS_MASTERS_LIST.contains(jobLevel) ) {
ItemTemplate item = ItemHolder.getInstance().getTemplate(Config.CLASS_ MASTERS_PRICE_ITEM);
if (Config.CLASS_MASTERS_PRICE_LIST[jobLevel] > 0)
html.append("Price: ").append(Util.formatAdena(Config.CLASS_MASTERS_PR ICE_LIST[jobLevel])).append(" ").append(item.getName()).append("<br1>");
for (ClassId cid : ClassId.VALUES) {
// Инспектор является наследником trooper и warder, но сменить его как профессию нельзя,
// т.к. это сабкласс. Наследуется с целью получения скилов родителей.
if (cid == ClassId.inspector)
continue;
if (cid.childOf(classId) && cid.getLevel() == classId.getLevel() + 1)
html.append("<a action=\"bypass -h npc_").append(getObjectId()).append("_change_class ").append(cid.getId()).append(" ").append(Config.CLASS_MASTERS_PRICE_LIST[jobLevel]).append("\">").append(HtmlUtils.htmlClassName(cid .getId())).append("</a><br>");
}
player.sendPacket(new NpcHtmlMessage(player, this).setHtml(html.toString()));
} else
switch (jobLevel) {
case 1:
html.append("Come back here when you reached level 20 to change your class.");
break;
case 2:
html.append("Come back here when you reached level 40 to change your class.");
break;
case 3:
html.append("Come back here when you reached level 76 to change your class.");
break;
case 4:
html.append("Come back here when you reached level 85 to change your class.");
break;
case 5:
html.append("There is no class changes for you any more.");
break;
}
return html.toString();
}
@Override
public void showChatWindow(Player player, int val, Object... arg) {
NpcHtmlMessage msg = new NpcHtmlMessage(player, this);
msg.setFile("custom/31860.htm");
msg.replace("%classmaster%", makeMessage(player));
player.sendPacket(msg);
}
@Override
public void onBypassFeedback(Player player, String command) {
if (!canBypassCheck(player, this))
return;
StringTokenizer st = new StringTokenizer(command);
if (st.nextToken().equals("change_class")) {
int val = Integer.parseInt(st.nextToken());
long price = Long.parseLong(st.nextToken());
if (player.getInventory().destroyItemByItemId(Config. CLASS_MASTERS_PRICE_ITEM, price))
changeClass(player, val);
else if (Config.CLASS_MASTERS_PRICE_ITEM == 57)
player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_ADENA );
else
player.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT);
} else
super.onBypassFeedback(player, command);
}
private void changeClass(Player player, int val) {
if (player.getClassId().getLevel() == 4)
player.sendPacket(Msg.YOU_HAVE_COMPLETED_THE_QUEST _FOR_3RD_OCCUPATION_CHANGE_AND_MOVED_TO_ANOTHER_CL ASS_CONGRATULATIONS);
if (player.getClassId().getLevel() == 3)
player.sendPacket(Msg.YOU_HAVE_COMPLETED_THE_QUEST _FOR_3RD_OCCUPATION_CHANGE_AND_MOVED_TO_ANOTHER_CL ASS_CONGRATULATIONS);
else
player.sendPacket(Msg.CONGRATULATIONS_YOU_HAVE_TRA NSFERRED_TO_A_NEW_CLASS);
player.setClassId(val, false, false);
player.broadcastCharInfo();
}