|
主题:废弃都市组队任务NPC脚本,从XX端提取出来的(供高手研究) 作者:玫瑰天使 时间:2010-10-07 12:49 | ||
importPackage(net.貌似会被和谐自己打上去.odinms.tools); importPackage(net.貌似会被和谐自己打上去.odinms.server.life); importPackage(java.awt); var status; var curMap; var playerStatus; var chatState; var questions = Array("首先给你出一个问题!请仔细听好:作为一名战士,他在1转的时候需要达到的等级是多少,那么请交给我同样数量的通行证。", "首先给你出一个问题! 请仔细听好:作为一名战士,他在1转的时候需要力量的能力值最小是多少点,那么请交给我同样数量的通行证。", "首先给你出一个问题!请仔细听好: 作为一名法师,他在1转的时候需要智力的能力值最小是多少点,那么请交给我同样数量的通行证。", "首先给你出一个问题!请仔细听好: 作为一名弓箭手,他在1转的时候需要敏捷的能力值最小是多少点,那么请交给我同样数量的通行证。", "首先给你出一个问题!请仔细听好: 作为一名飞侠,他在1转的时候需要敏捷的能力值最小是多少点,那么请交给我同样数量的通行证。", "首先给你出一个问题!请仔细听好: 所有职业在2转的时候需要达到的等级是多少,那么请交给我同样数量的通行证。"); var qanswers = Array(10, 35, 20, 25, 25, 30); var party; var preamble; var stage2rects = Array(Rectangle(-755,-132,4,218),Rectangle(-721,-340,4,166), Rectangle(-586,-326,4,150),Rectangle(-483,-181,4,222)); var stage2combos = Array(Array(0,1,1,1),Array(1,0,1,1),Array(1,1,0,1),Array(1,1,1,0)); var stage3rects = Array(Rectangle(608,-180,140,50),Rectangle(791,-117,140,45), Rectangle(958,-180,140,50),Rectangle(876,-238,140,45), Rectangle(702,-238,140,45)); var stage3combos = Array(Array(0,0,1,1,1),Array(0,1,0,1,1),Array(0,1,1,0,1), Array(0,1,1,1,0),Array(1,0,0,1,1),Array(1,0,1,0,1), Array(1,0,1,1,0),Array(1,1,0,0,1),Array(1,1,0,1,0), Array(1,1,1,0,0)); var stage4rects = Array(Rectangle(910,-236,35,5),Rectangle(877,-184,35,5), Rectangle(946,-184,35,5),Rectangle(845,-132,35,5), Rectangle(910,-132,35,5),Rectangle(981,-132,35,5)); var stage4combos = Array(Array(0,0,0,1,1,1),Array(0,0,1,0,1,1),Array(0,0,1,1,0,1), Array(0,0,1,1,1,0),Array(0,1,0,0,1,1),Array(0,1,0,1,0,1), Array(0,1,0,1,1,0),Array(0,1,1,0,0,1),Array(0,1,1,0,1,0), Array(0,1,1,1,0,0),Array(1,0,0,0,1,1),Array(1,0,0,1,0,1), Array(1,0,0,1,1,0),Array(1,0,1,0,0,1),Array(1,0,1,0,1,0), Array(1,0,1,1,0,0),Array(1,1,0,0,0,1),Array(1,1,0,0,1,0), Array(1,1,0,1,0,0),Array(1,1,1,0,0,0)); var eye = 9300002; var necki = 9300000; var slime = 9300003; var monsterIds = Array(eye, eye, eye, necki, necki, necki, necki, necki, necki, slime); var prizeIdScroll = Array(2040502,2040505,2040514,2040517, // overall 2040802, 2040805, // glove 2040002, 2040402, 2040602, 2040902, // armor def (top/bottom/shield/hat) 2044502, 2044702, 2044602, 2043302, // weapon atk 2043102, 2043202, 2043002, 2044402, 2044302, 2044102, 2044202, 2044002); var prizeIdUse = Array( 2000001, 2000002, 2000003, 2000006, // orange white blue manalixir pots 2000004, 2000005, 2001000, 2001001, // elix/p.elix, watermelon/sundae 2002006, 2002007, 2002008, 2002010); // warrior/sniper/magic/speed pills var prizeQtyUse = Array(100, 75, 100, 45, 20, 10, 35, 30, 10, 10, 10, 10); var prizeIdEquip = Array(1032000, 1032009, 1032004, 1032005, // 20-25 earrings 1032006, 1032007, 1032010, // 30 earrings 1032002, 1032008, // 35 earrings 1002026, 1002089, 1002090); // bamboo hats var prizeIdEtc = Array( 4010000, 4010001, 4010002, 4010003, // Mineral ores 4010004, 4010005, 4010006, // Mineral ores + gold 4020000, 4020001, 4020002, 4020003, // Jewel ores 4020004, 4020005, 4020006, // Jewel ores 4020007, 4020007, 4003000); // Diamond/BC/screws var prizeQtyEtc = Array(15, 15, 15, 15, 15, 15, 8, 15, 15, 15, 15, 15, 15, 15, 8, 5, 20); function start() { status = -1; mapId = cm.getChar().getMapId(); if (mapId == 103000800) curMap = 1; else if (mapId == 103000801) curMap = 2; else if (mapId == 103000802) curMap = 3; else if (mapId == 103000803) curMap = 4; else if (mapId == 103000804) curMap = 5; playerStatus = cm.isLeader(); preamble = null; action(1, 0, 0); } function action(mode, type, selection) { if (mode == -1) { cm.dispose(); } else { if (mode == 0 && status == 0) { cm.dispose(); return; } if (mode == 1) status++; else status--; if (curMap == 1) { // First Stage. if (playerStatus) { // party leader if (status == 0) { var eim = cm.getChar().getEventInstance(); party = eim.getPlayers(); preamble = eim.getProperty("leader1stpreamble"); if (preamble == null) { cm.sendNext("Hello,欢迎您的第一阶段。环顾四周,你会看到很多鳄鱼游荡。当你打败他们,他们就会咳嗽了#bpasses#k队长应该对我说话,收集了相同数量的#bpasses#k为回答这个问题我给他们。\r\n如果你收集的数额#bpasses#k,我给了#bpass#k该成员。当所有的队员聚集了#bpasses#k和给他们的队长,队长将交出#bpasses#k对我来说,清理阶段的进程。更快你照顾的阶段,更多的阶段就可以挑战。因此,我建议你照顾快速和迅速。那么,最好的你好运。"); eim.setProperty("leader1stpreamble","done"); cm.dispose(); } else { // check how many they have compared to number of party members // check for stage completed var complete = eim.getProperty(curMap.toString() + "stageclear"); if (complete != null) { cm.sendNext("请赶紧去下一关,们已经打开了"); cm.dispose(); } else { var numpasses = party.size()-1; var passes = cm.haveItem(4001008,numpasses); var strpasses = "#b" + numpasses.toString() + " passes#k"; if (!passes) { cm.sendNext("对不起,你的通行证没有达到指定的数目。你需要给指定的通行证数目给我;应当的队员数目减去你的队长, " + strpasses + ",以明确的阶段。告诉您的队员解决问题,收集了通行证,并让他们给你."); cm.dispose(); } else { cm.sendNext("你们已经通过 " + strpasses + "! 恭喜大家完成本阶段的挑战! 我将打开传送门,带大家进入到下一关的挑战.因为本次任务有时间限制,请大家抓紧时间,祝大家好运!"); clear(1,eim,cm); cm.givePartyExp(100, party); cm.gainItem(4001008,-numpasses); cm.dispose(); // TODO: make the shiny thing flash } } } } /*debug cm.sendNext("你好,这仅仅只是一个测试."); cm.dispose();*/ } else { // non leader var eim = cm.getChar().getEventInstance(); pstring = "member1stpreamble" + cm.getChar().getId().toString(); preamble = eim.getProperty(pstring); if (status == 0 && preamble == null) { var qstring = "member1st" + cm.getChar().getId().toString(); var question = eim.getProperty(qstring); if (question == null) { // Select a random question to ask the player. var questionNum = Math.floor(Math.random() * questions.length); eim.setProperty(qstring, questionNum.toString()); } cm.sendNext("在这里,你需要收集#bcoupons#k击败同样数目的Ligators作为回答提问个别。"); } else if (status == 0) {// otherwise // check for stage completed var complete = eim.getProperty(curMap.toString() + "stageclear"); if (complete != null) { cm.sendNext("请赶紧去下一关,们已经打开了"); cm.dispose(); } else { // else correct/incorrect response to question here var qstring = "member1st" + cm.getChar().getId().toString(); var numcoupons = qanswers[parseInt(eim.getProperty(qstring))]; var qcorr = cm.haveItem(4001007,(numcoupons+1)); var enough = false; if (!qcorr) { // not too many qcorr = cm.haveItem(4001007,numcoupons); if (qcorr) { // just right cm.sendNext("这是正确的答案!对于你刚才收到了#bpass#k请交给你的队长。"); cm.gainItem(4001007,-numcoupons); cm.gainItem(4001008,1); enough = true; } } if (!enough) { cm.sendNext("很抱歉,你数量错误! 请仔细对照问题,再来给我正确数量的通行证吧."); } cm.dispose(); } } else if (status == 1) { if (preamble == null) { var qstring = "member1st" + cm.getChar().getId().toString(); var question = parseInt(eim.getProperty(qstring)); cm.sendNextPrev(questions[question]); } else { // shouldn't happen, if it does then just dispose cm.dispose(); } } else if (status == 2) { // preamble completed eim.setProperty(pstring,"done"); cm.dispose(); } else { // shouldn't happen, but still... eim.setProperty(pstring,"done"); // just to be sure cm.dispose(); } } |