- 精华
- 阅读权限
- 80
- 好友
- 相册
- 分享
- 听众
- 收听
- 注册时间
- 2010-12-26
- 在线时间
- 小时
- 最后登录
- 1970-1-1
|
本帖最后由 大笨猪 于 2012-7-20 15:15 编辑
最近在玩冒险岛v101的单机打发时间,但是有一些任务要求至少要2人以上才可以进行。好奇心的驱使,我越发的想解决这个问题。下面是我收集的一些js文件的东东。
声明:这个是收集来的,不是我分析的,所以不是我的功劳。
[ post]全部代码前锹
cm.[Commands]
============================================================================
dispose
下一句关闭对话框
用法: cm.dispose();
sendNext
下一句显示有[Next]的对话框
用法: cm.sendNext("[内容]");
sendPrev
下一句显示有[Prev]的对话框
用法: cm.sendPrev("[内容]");
sendNextPrev
下一句显示有[Next,Prev]的对话框
用法: cm.sendNextPrev("[内容]");
sendOk
下一句显示有[OK]的对话框
用法: cm.sendOk("[内容]");
sendYesNo
下一句显示有[Yes,No]的对话框
用法: cm.sendYesNo("[内容]");
sendAcceptDecline
下一句显示有[Accprt,Decline]的对话框
用法: cm.sendAcceptDecline("[内容]");
sendSimple
下一句显示普通内容的对话框
How to use: cm.sendAcceptSimple("[内容]");
warp
传送玩家到mapid
用法: cm.warp([mapid]);
openShop
打开shopid
用法: cm.openShop([shopid]);
haveItem
检查玩家是否有装备或携带itemid
用法: cm.haveItem([itemid]);
gainItem
给与玩家itemid/没收itemid
用法: cm.gainItem([itemid],[数量]); //如果要没收[数量]换到[-数量]
changeJob
更换玩家职业
用法: cm.changeJob([jobid]);
getJob
检查玩家什么职业
用法: cm.getJob();
startQuest
开始任务
用法: cm.startQuest([任务代码]);
completeQuest
完成任务
用法: cm.completeQuest([任务代码]);
forfeitQuest
忘记任务
用法: cm.forfeitQuest([任务代码]);
getMeso
检查玩家的金钱
用法: cm.getMeso();
gainMeso
给与或者没收金钱[用法同道具]
用法: cm.gainMeso([数量]); // use -[ammount] to take mesos.
gainExp
给与玩家经验[exp][用法同上]
用法: cm.gainExp([数量]); // use -[ammount] to take exp.
getLevel
检查玩家等级
用法: cm.getLevel();
teachSkill
给与玩家学习技能
用法: cm.teachSkill([技能id],[技能等级],[多少级满]);
isGM
检查玩家是否是GM
How to use: cm.isGM();
get[Stat]
检查玩家属性点[Hp,Sp,Str,Dex,Int,Luk]
How to use: cm.get[Stat]();
=================================================================
这里是1转Rogue职业示范:
if (cm.getJob().equals(net.s f【把左边的s f中空格去掉.【】的内容和"【】"去掉】.odinms.client.MapleJob.BEGINNER)) {
if (cm.getLevel() >= 10 && cm.getChar().getDex() >= 25) {
cm.sendNext("So you decided to become a #rThief#k?");
} else {
cm.sendOk("Train a bit more and I can show you the way of
the #rThief#k.")
cm.dispose();
}
} else if (status == 1) {
cm.sendNextPrev("It is an important and final choice. You will not
be able to turn back.");
} else if (status == 2) {
cm.sendYesNo("Do you want to become a #rThief#k?");
} else if (status == 3) {
if (cm.getJob().equals(net.s f.odinms.client.MapleJob.BEGINNER))
{
cm.changeJob(net.s f.【把左边的s f中空格去掉.【】的内容和"【】"去掉】odinms.client.MapleJob.THIEF);
cm.sendOk("So be it! Now go, and go with pride.");
cm.dispose();
}
}
}
________________________________________________________________________
MapleJob.[Job]代码
BEGINNER
WARRIOR
FIGHTER
CRUSADER
HERO
PAGE
WHITEKNIGHT
PALADIN
SPEARMAN
DRAGONKNIGHT
DARKKNIGHT
MAGICIAN
FP_WIZARD
FP_MAGE
FP_ARCHMAGE
IL_WIZARD
IL_MAGE
IL_ARCHMAGE
CLERIC
PRIEST
BISHOP
BOWMAN
HUNTER
RANGER
BOWMASTER
CROSSBOWMAN
SNIPER
CROSSBOWMASTER
THIEF
ASSASSIN
HERMIT
NIGHTLORD
BANDIT
CHIEFBANDIT
SHADOWER
GM
SUPERGM
示范
if (cm.getJob().equals(net.s f.【把左边的s f中空格去掉.【】的内容和"【】"去掉】odinms.client.MapleJob.SUPERGM))
{
cm.sendNext("Hi, GM!");
}
______________________________________________________________________
NPC 文字 代码
#n = 先是普通字体/移除加黑
#b = 蓝色字体
#g = 青色字体
#d = 紫色字体
#r = 红色字体
#k = 黑色字体
#e = 字体加黑
#c[itemid]# = 显示有多少[itemid]在玩家inventory
#l = Selection close. [不知道=.=||]
#m[mapid]# = 显示地图名字
#o[m o b i d ]# = 显示怪物名字【先把m o b i d 各空格去掉】
#p[npcid]# = 显示NPC名字
#q[skillid]# = 显示技能名字
#t[itemid]# = 显示道具名字[和#Z冲突名字,多数用这个]
#z[itemid]# - 显示道具名称
#h # = 显示玩家名字
#f[imagelocation]# = 显示在.wz文件夹里面的图案
#i[itemid]# = 显示道具图片
#s[skillid]# = 显示技能图片
#v[itemid]# = 显示道具图片
#x = Returns "0%" [未知]{好像是exp返回0%}
#B[%]# = Shows a 'progress' bar.[不知道]
\r\n = 换行
由上面的一些分析我得到启发在服务端的NPC的JS文件上动手脚解决任务的要求。
步骤如下,
1打开服务端,
找到scripts 并打开。
2找到NPC文件并打开。
3找到NPC的代码,比如副本的那个NPC就叫佳佳,代码是9001100 找到这个代码的JS文件,右击,编辑。(有些副本要传送去跟别的NPC对话才可以,比如进阶扎昆要和利拉对话,那就找利拉的代码)
4找到你要修改的任务,比如进阶扎昆,这个任务至少要3人。找到利拉的代码2032003,右击编辑会出现如下
var status;
var minPlayers = 3;
var maxPlayers = 6;
function start() {
status = -1;
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == 1)
status++;
else {
cm.dispose();
return;
}
if (status == 0) {
if (cm.getPlayer().getClient().getChannel() != 1 ){
cm.sendOk("进阶扎昆大怪物只能在 1 频道召唤!");
cm.dispose();
}else if (cm.getPlayer().getParty() == null) {
cm.sendOk("#e<组队任务:进阶扎昆组队BOSS挑战任务>#n\r\n你想和你的队员们一起努力,打败扎昆大怪物吗?\r\n那么请开启组队,组上3~6个队员在来找我说话吧。");
cm.dispose();
} else if (!cm.isLeader()) {
cm.sendOk("想挑战进阶扎昆大怪物的话,请叫你的队长来和我谈话!");
cm.dispose();
} else {
cm.sendYesNo("#d你确定你们已经准备好进去对抗进阶扎昆大怪物了吗?准备好了的话我这就送你们进去!");
}
}
else if (status == 1) {
var party = cm.getParty().getMembers();
var inMap = cm.partyMembersInMap();
if (inMap < minPlayers || inMap > maxPlayers) {
cm.sendOk("队伍人数没有达到要求的最低 "+minPlayers+"人, 最多 "+maxPlayers+"人!");
cm.dispose();
} else {
var em = cm.getEventManager("Zakumjj");
var map = net.sf.odinms.net.channel.ChannelServer.getInstance(cm.getC().getChannel()).getMapFactory().getMap(280030001);
var playercount = map.getCharacters().toArray().length;
if (playercount < 1)
{
em.setProperty("ZakumjjOpen" , "true");
}
if (em == null) {
cm.sendOk("本任务暂未开放.");
cm.dispose();
}else if (cm.getPlayer().getBossLog("vipjjzk") >= 20) {
cm.sendOk("每天只能进5次 【进阶扎昆】!明天再来吧!");
cm.dispose();
} else if (em.getProperty("ZakumjjOpen").equals("true")) {
cm.getChar().setBossLog('vipjjzk');
var zakumMap = cm.getC().getChannelServer().getMapFactory().getMap(280030001);
zakumMap.resetReactors();
em.startInstance(cm.getParty(), cm.getPlayer().getMap());
em.setProperty("ZakumjjOpen" , "false");
cm.serverNotice("[副本公告]:勇敢的玩家 ["+ cm.getChar().getName() +"] 带领着远征军团挑战进阶扎昆,为它们加油吧!");//系统发出蓝色提示;
cm.dispose();
} else {
cm.sendNext("已经有队伍正在对抗进阶扎昆大怪物,请稍后在尝试!");
cm.dispose();
找到var minPlayers = 3;
var maxPlayers = 6; 这2个。意思是至少组队人数3人,最多6人。 把3改成1就可以了。
注意,有些任务的代码中要求人数的不是这个两个代码。比如佳佳这个NPC中的副本中的大王蜈蚣任务。party.size() < 1 意思是至少1人.
几个可以帮助我们玩游戏的代码,party.size() 人数
else if (cm.getPlayer().getBossLog("vipszwble") >= 50) {
cm.sendOk("每天只能进50次
!cm.haveItem(4001355, 1)需要4001355物品一个才可以进行任务、
另外,NPC代码可以用MapleStoryDB 查询。湾里有我就不上传了。
感谢大家看我的帖子,希望对大家有帮助。
这个是下载js文件编辑器的地址 http://115.com/file/e72omqy2#
下载完后压解出来吧后缀名改为XX.exe再点击运行。然后右击目标文件右击编辑就可以了。 |
|