/** * <font color=red>Использовать осторожно! Служебная функция!</font><br> * <br> * * <p>Устанавливает переменную и сохраняет в базу, если установлен флаг. Если получен cond * обновляет список квестов игрока (только с флагом). * * @param var : String pointing out the name of the variable for quest * @param val : String pointing out the value of the variable for quest * @param store : Сохраняет в базу и если var это cond обновляет список квестов игрока. * @return String (equal to parameter "val") */ public String set(String var, String val, boolean store) { if (val == null) { val = StringUtils.EMPTY; } _vars.put(var, val); if (store) { Quest.updateQuestVarInDb(this, var, val); } return val; }
public String setCond(int newCond, boolean store) { if (newCond == getCond()) { return String.valueOf(newCond); } int oldCond = getInt(VAR_COND); _cond = newCond; if ((oldCond & 0x80000000) != 0) { // уже используется второй формат if (newCond > 2) // Если этап меньше 3 то возвращаемся к первому варианту. { oldCond &= 0x80000001 | ((1 << newCond) - 1); newCond = oldCond | (1 << (newCond - 1)); } } else { // Второй вариант теперь используется всегда если этап больше 2 if (newCond > 2) { newCond = 0x80000001 | (1 << (newCond - 1)) | ((1 << oldCond) - 1); } } final String sVal = String.valueOf(newCond); final String result = set(VAR_COND, sVal, false); if (store) { Quest.updateQuestVarInDb(this, VAR_COND, sVal); } final Player player = getPlayer(); if (player != null) { player.sendPacket(new QuestList(player)); if ((newCond != 0) && getQuest().isVisible(player) && isStarted()) { player.sendPacket(new ExShowQuestMark(getQuest().getQuestIntId())); } } return result; }