|
主题:冒险岛资源下载整合帖【资源下载链接】【已编辑完成~】【转自无忧小雪】 作者:wby238 时间:2010-08-07 09:44 | ||
各位冒险岛的fans你们好,现在集合了冒险岛062,075,079,082,架设端,一键端给大家下载,只要1铜币,详细见三楼。 | ||
| 1楼:wby238(2010-08-07 09:46) | ||
由于刚才发错,三楼才是连接 服务端修改文字教程 1、[079咖啡端]添加打开一个没有JS的NPC出现对话框 打开scr/net/s(和谐)f/odinms/scripting/npc/NPCScriptManager.java 找到 public void start(MapleClient c, int npc) { try { NPCConversationManager cm = new NPCConversationManager(c, npc); if (cms.containsKey(c)) { return; } cms.put(c, cm); Invocable iv = getInvocable("npc/" + npc + ".js", c); if (iv == null || NPCScriptManager.getInstance() == null) { cm.dispose(); return; } engine.put("cm", cm); NPCScript ns = iv.getInterface(NPCScript.class); scripts.put(c, ns); ns.start(); } catch (Exception e) { log.error("Error executing NPC script " + npc, e); dispose(c); cms.remove(c); } } 全选替换掉 将下面一段代码替换进去 public void start(MapleClient c, int npc) { try { if (c.getPlayer().isGM()) c.getPlayer().dropMessage("[系统提示]您已经建立与NPC:" + npc + "的对话。"); NPCConversationManager cm = new NPCConversationManager(c, npc); if (this.cms.containsKey(c)) return; this.cms.put(c, cm); Invocable iv = getInvocable("npc/" + npc + ".js", c); if ((iv == null) || (getInstance() == null)) { cm.sendOk("对不起,我并没有被管理员设置可使用,如果你觉得我应该工作的,那就请你汇报给管理员.\r\n我的ID编号: #r" + npc + "#k."); cm.dispose(); return; } this.engine.put("cm", cm); NPCScript ns = (NPCScript)iv.getInterface(NPCScript.class); this.scripts.put(c, ns); ns.start(); } catch (Exception e) { log.error("Error executing NPC script " + npc, e); dispose(c); this.cms.remove(c); } } 2、[079咖啡端]修复怪物打不死 1.打开源码找到net\s(和谐)f\odinms\net\channel\handler\AbstractDealDamageHandler.java 找到这个函数parseDamage() 然后用下面的代码替换 注意替换前先备份! --------------------------------------------------------------------------------- public AttackInfo parseDamage(MapleCharacter c, LittleEndianAccessor lea, boolean ranged) { AttackInfo ret = new AttackInfo(); lea.readByte(); lea.skip(8); ret.numAttackedAndDamage = lea.readByte(); lea.skip(8); ret.numAttacked = (ret.numAttackedAndDamage >>> 4 & 0xF); ret.numDamage = (ret.numAttackedAndDamage & 0xF); ret.allDamage = new ArrayList(); ret.skill = lea.readInt(); lea.skip(8); if ((ret.skill == 2121001) || (ret.skill == 2221001) || (ret.skill == 2321001) || (ret.skill == 5201002) || (ret.skill == 14111006) || (ret.skill == 5101004) || (ret.skill == 15101003)) ret.charge = lea.readInt(); else { ret.charge = 0; } if (ret.skill == 1221011) ret.isHH = true; lea.readInt(); ret.aresCombo = lea.readByte(); int sourceid = ret.skill; if ((sourceid == 21100004) || (sourceid == 21100005) || (sourceid == 21110003) || (sourceid == 21110004) || (sourceid == 21120006) || (sourceid == 21120007)) c.setCombo(1); ret.pos = lea.readByte(); ret.stance = lea.readByte(); if (ret.skill == 4211006) { return parseMesoExplosion(lea, ret); } if (ranged) { lea.readByte(); ret.speed = lea.readByte(); lea.readByte(); ret.direction = lea.readByte(); lea.skip(7); if ((ret.skill == 3121004) || (ret.skill == 3221001) || (ret.skill == 5221004) || (ret.skill == 13111002)) lea.skip(4); } else { lea.readByte(); ret.speed = lea.readByte(); lea.skip(4); } for (int i = 0; i < ret.numAttacked; ++i) { int oid = lea.readInt(); lea.skip(14); List allDamageNumbers = new ArrayList(); for (int j = 0; j < ret.numDamage; ++j) { int damage = lea.readInt(); MapleStatEffect effect = null; if (ret.skill != 0) effect = SkillFactory.getSkill(ret.skill).getEffect(c.getSkillLevel(SkillFactory.getSkill (ret.skill))); if ((damage != 0) && (effect != null) && (effect.getFixedDamage() != 0)) damage = effect.getFixedDamage(); allDamageNumbers.add(Integer.valueOf(damage)); } |