Пример #1
0
 /** 识别一个表达式是否匹配本模板。如果匹配,返回一个新的表达式片段对象,否则返回null。 */
 public IExpr recognize(QuestInfo qinfo, Expression expr) {
   if (expr.getLeftExpr().type == Expr0.TYPE_FUNC
       && expr.getLeftExpr().getFunctionCall().funcName.equals("Message")
       && expr.getRightExpr() == null) {
     FunctionCall fc = expr.getLeftExpr().getFunctionCall();
     if (fc.getParamCount() != 3) {
       return null;
     }
     Expression param1 = fc.getParam(0);
     Expression param2 = fc.getParam(1);
     Expression param3 = fc.getParam(2);
     if (param1.getRightExpr() == null
         && param1.getLeftExpr().type == Expr0.TYPE_STRING
         && param2.getRightExpr() == null
         && param2.getLeftExpr().type == Expr0.TYPE_NUMBER
         && param3.getRightExpr() == null
         && param3.getLeftExpr().type == Expr0.TYPE_NUMBER) {
       A_Message ret = (A_Message) createNew(qinfo);
       ret.message = PQEUtils.translateStringConstant(param1.getLeftExpr().value);
       ret.timeout = PQEUtils.translateNumberConstant(param2.getLeftExpr().value);
       ret.notifyID = PQEUtils.translateNumberConstant(param3.getLeftExpr().value);
       return ret;
     }
   }
   return null;
 }
 /** 识别一个表达式是否匹配本模板。如果匹配,返回一个新的表达式片段对象,否则返回null。 */
 public IExpr recognize(QuestInfo qinfo, Expression expr) {
   if (expr.getLeftExpr().type == Expr0.TYPE_FUNC
       && expr.getLeftExpr().getFunctionCall().funcName.equals("AI_ChooseSingleFriend")) {
     if (expr.getLeftExpr().getFunctionCall().getParamCount() != 8) {
       return null;
     }
     Expression param1 = expr.getLeftExpr().getFunctionCall().getParam(0);
     Expression param2 = expr.getLeftExpr().getFunctionCall().getParam(1);
     Expression param3 = expr.getLeftExpr().getFunctionCall().getParam(2);
     Expression param4 = expr.getLeftExpr().getFunctionCall().getParam(3);
     Expression param5 = expr.getLeftExpr().getFunctionCall().getParam(4);
     Expression param6 = expr.getLeftExpr().getFunctionCall().getParam(5);
     Expression param7 = expr.getLeftExpr().getFunctionCall().getParam(6);
     Expression param8 = expr.getLeftExpr().getFunctionCall().getParam(7);
     if (param1.getRightExpr() == null
         && param1.getLeftExpr().type == Expr0.TYPE_NUMBER
         && param2.getRightExpr() == null
         && param2.getLeftExpr().type == Expr0.TYPE_NUMBER
         && param3.getRightExpr() == null
         && param3.getLeftExpr().type == Expr0.TYPE_NUMBER
         && param4.getRightExpr() == null
         && param4.getLeftExpr().type == Expr0.TYPE_NUMBER
         && param5.getRightExpr() == null
         && param5.getLeftExpr().type == Expr0.TYPE_NUMBER
         && param6.getRightExpr() == null
         && param6.getLeftExpr().type == Expr0.TYPE_NUMBER
         && param7.getRightExpr() == null
         && param7.getLeftExpr().type == Expr0.TYPE_NUMBER
         && param8.getRightExpr() == null
         && param8.getLeftExpr().type == Expr0.TYPE_NUMBER) {
       C_AI_ChooseSingleFriend ret = (C_AI_ChooseSingleFriend) createNew(qinfo);
       ret.minDist = PQEUtils.translateNumberConstant(param1.getLeftExpr().value);
       ret.maxDist = PQEUtils.translateNumberConstant(param2.getLeftExpr().value);
       ret.minHp = PQEUtils.translateNumberConstant(param3.getLeftExpr().value);
       ret.maxHp = PQEUtils.translateNumberConstant(param4.getLeftExpr().value);
       ret.minHpPer = PQEUtils.translateNumberConstant(param5.getLeftExpr().value);
       ret.maxHpPer = PQEUtils.translateNumberConstant(param6.getLeftExpr().value);
       ret.orderType = PQEUtils.translateNumberConstant(param7.getLeftExpr().value);
       ret.index = PQEUtils.translateNumberConstant(param8.getLeftExpr().value);
       if (expr.getRightExpr() == null) {
         return ret;
       } else if (expr.getRightExpr().type == Expr0.TYPE_IDENTIFIER
           && expr.getRightExpr().value.equals("false")) {
         ret.checkTrue = false;
         return ret;
       }
     }
   }
   return null;
 }
Пример #3
0
 /** 取得生成的表达式。 */
 public String getExpression() {
   return "Message(\"" + PQEUtils.reverseConv(message) + "\", " + timeout + ", " + notifyID + ")";
 }