zevms02

/*

 拓展事件02
 指令 *重载事件2

*/

//初始化
function init() {}

/************************************************************************************************
切换地图 ,只对xml的传送有效,如果有脚本的话要另外在传送脚本中写
chr 玩家
mapid 前往的地图ID
time 当前时间戳
返回true则阻止
************************************************************************************************/
function ChangeMap(chr, mapid,time) {
	try{
		/*var 开放 = 1757417678000;
		if(mapid == 100000000 && time < 开放){
			chr.dropMessage(1,"要前往的地图未开放,开放时间:\r\n"+em.getCurrentReadable(开放));
			return true;
		}/*
	}catch(err){
		return false;
	}
}

/************************************************************************************************
星星失败后道具是否损坏 
chr 玩家
nEquip 装备
return true不炸  false炸
************************************************************************************************/
function scrollEnhanceS(chr, nEquip) {
	try {
		//当前装备的星星
		var Enhance = nEquip.getEnhance();
		//大于等于7星
		if(Enhance>=7){
			if(Math.floor(Math.random() * 100)<50){//不炸
				return true;
			}else{
				return false;//炸
			}
		}else{
			return true;//不炸
		}
	} catch(err) {
		em.console("scrollEnhanceS出错:" + err);
	}
}

/************************************************************************************************
装备变换卷轴 
chr 玩家
item 道具
scrollid 卷轴ID
返回true则阻止
************************************************************************************************/
function transform(chr, item,scroll) {
	try{
		if(scroll == 1000000 && item.getItemId()==1302000){
			item.setItemId(1302001);//将装备ID变为
			return true;
		}
	}catch(err){
		return false;
	}
}

/************************************************************************************************
拾取物品后引用的提示
chr 玩家
itemid 物品ID
t 1=玩家 2=宠物
************************************************************************************************/
function Pickup(chr, itemid,t) {
	
}

/************************************************************************************************
砸卷,砸卷后的接口
chr 玩家
equip 装备
scrollid 卷轴ID
result true 成功
************************************************************************************************/
function scrollEquipWithId(chr, equip,scrollid,result) {

}

/************************************************************************************************
开始任务 
chr 玩家
qid 任务ID
************************************************************************************************/
function forceStart(chr, qid) {
	
}

/************************************************************************************************
完成任务 
chr 玩家
qid 任务ID
************************************************************************************************/
function forceComplete(chr, qid) {
	
}

/************************************************************************************************
副职业制作
chr 玩家
item 道具
type 类型 1=装备
************************************************************************************************/
function itemMake(chr,item,type) {
	var itemS;
	try{
		if(type == 1){
			var id = item.getId();//传入的制作ID
			var Equip = em.getEquipById(id);//声明成新的装备ID
			return em.randomizeStats(Equip);//属性浮动
			//return Equip;//属性不浮动
		}else{
			return item;
		}
	}catch(err){
		return item;
	}
}

/************************************************************************************************
雇佣相关接口
t 类型
merchant 雇佣
chr 玩家
************************************************************************************************/
function merchant(t,merchant,chr) {
	//游客进入雇佣
	if(t==0){
		var qq = getQq(merchant.getOwnerAccId());
		if(qq==""||qq==null){
			chr.shopChat("系统提示,卖家绑定QQ "+qq);
			chr.shopChat("系统提示,该卖家非常诚信,可以大量购买。 ");
		}else{
			chr.shopChat("系统提示,该卖家未绑定QQ。 ");
		}
	}
}

function getQq(a) {
	var con = em.getMysql();
	var ps = null;
	var rs = null;
	var qq = "";
	try {
		ps = con.prepareStatement("SELECT * FROM accounts WHERE id = ?;");
		ps.setInt(1, a);
		rs = ps.executeQuery();
        if (rs.next()) {
            qq = rs.getString("qq");
        }
	} catch(err) {
		//console.log(err);
	} finally{
		if(rs!=null){
			rs.close();
		}
		if(ps!=null){
			ps.close();
		}
		if(con!=null){
			con.close();
		}
	}
	return qq;
}

/************************************************************************************************
解卡后的提示语
chr 玩家
************************************************************************************************/
function jk(chr) {
	var text = "解卡完成";
	text += chr.DetailedMagnification_txt();
	chr.sendHint(text,300,5);
}

/************************************************************************************************
采矿 
chr 玩家
reactor 反应堆
************************************************************************************************/
function doHarvest(chr, reactor, rID, pID, pName) {
	try{
		var succ = false;
		var masteryIncrease = 10;
		if(Math.floor(Math.random() * 99) < 10){
			masteryIncrease = 1;
			em.dropSingleItem(reactor,chr,rID < 200000 ? 4022023 : 4011010);
		}else{
			succ = true;
			if(rID < 200000){
				em.addTrait(chr,"sense", 5);
				if(Math.floor(Math.random() * 99) < 50){
					em.dropSingleItem(reactor,chr,2440000);
				}
				if(Math.floor(Math.random() * 99) < 10){
					em.dropSingleItem(reactor,chr,4032933);
				}
			}else{
				em.addTrait(chr,"insight", 5);
				if(Math.floor(Math.random() * 99) < 10){
					em.dropSingleItem(reactor,chr,2440001);
				}
			}
			em.dropItems(chr, reactor);
		}
		em.cancelHarvest(chr,succ);
		chr.dropMessage(-5, pName + "'的熟练度(+" + masteryIncrease + ")提高了。");
		if (chr.addProfessionExp(pID, masteryIncrease)) {
			chr.dropMessage(-5, pName + " 的等级提升了。");
		}
		return true;
	}catch(err){
		chr.dropMessage(5, "出现错误:"+err);
		return false;
	}
}


/************************************************************************************************
彩票生成

************************************************************************************************/
function GenerateNumber() {
	if(em.isNumber()){
		var data;
		//data = [1,2,3,4,5,6,7,8,9,10];//暗改
		data = em.GenerateNumberS();//随机
		em.isQnumber(data);//写入数据库
		em.sceneLaba("第"+em.getNumber()+"期彩票号码("+data+")出来了。");//喇叭
	}
}

/************************************************************************************************
玩家debuff 
chr 玩家
skillid debuffid
返回true则阻止
************************************************************************************************/
function giveDebuff(chr, skillid) {

	return false;
}

/************************************************************************************************
受到伤害 
chr 玩家
damage 受到伤害
返回0则无敌
************************************************************************************************/
function TakeDamage(chr, damage) {
	
	//无敌a无敌啊
	if(chr.isInvincibleTime()){
		return 0;
	}

	return parseInt(damage);
}

/************************************************************************************************
穿戴装备 
chr 玩家
src 位置1
dst 位置2
返回true则阻止
************************************************************************************************/
function equip(chr, src, dst, stats, levelBonus) {
	var equipItem = chr.getInventory(1).getItem(src); //穿戴
	if (equipItem != null) {
		var id = equipItem.getItemId();
		if (id == 1112105) {
			if (chr.getEquipItemid(id)) {
				chr.dropMessage(1, "该装备类型只允许佩戴一个。");
				return true;
			}
		}
	}
	try{
		chr.setTemporaryData("canEquip",false);//关闭默认判断
		if(chr.getLevel() + levelBonus < (stats.containsKey("reqLevel") ? stats.get("reqLevel") : 0)){
			chr.dropMessage(1, "等级不够。");
			return true;
		}
		if(chr.getTotalStr() < (stats.containsKey("reqSTR") ? stats.get("reqSTR") : 0)){
			chr.dropMessage(1, "力量不够。");
			return true;
		}
		if(chr.getTotalDex() < (stats.containsKey("reqDEX") ? stats.get("reqDEX") : 0)){
			chr.dropMessage(1, "敏捷不够。");
			return true;
		}
		if(chr.getTotalLuk() < (stats.containsKey("reqLUK") ? stats.get("reqLUK") : 0)){
			chr.dropMessage(1, "运气不够。");
			return true;
		}
		if(chr.getTotalInt() < (stats.containsKey("reqINT") ? stats.get("reqINT") : 0)){
			chr.dropMessage(1, "智力不够。");
			return true;
		}
		if(chr.getFame() < (stats.containsKey("reqPOP") ? stats.get("reqPOP") : 0)){
			chr.dropMessage(1, "人气不够。");
			return true;
		}
	}catch(err){
		chr.setTemporaryData("canEquip",true);//开启默认判断
		chr.dropMessage(5, "出现错误:"+err);
	}
	return false;
}

/************************************************************************************************
脱下装备 
chr 玩家
src 位置1
dst 位置2
返回true则阻止
************************************************************************************************/
function unequip(chr, src, dst) {

	return false;
}

/************************************************************************************************
丢弃道具 
chr 玩家
item 道具
返回true则阻止
************************************************************************************************/
function drop(chr, item) {

	return false;
}

/************************************************************************************************
接收来自QQ的信息
userName 名字
userId QQ
text 说的什么
************************************************************************************************/
function qqhandle(userName, userId, text,groupld) {
	em.dropMessageQQ(5,"[QQ."+userName+"("+userId+")]:"+text);
}

/************************************************************************************************
说话 
chr 玩家
text 说的啥
************************************************************************************************/
function GeneralChat(chr, text) {
	//发送至QQ频道
	var s = chr.getName()+" 在"+chr.getChannel()+"频道"+chr.getMap().getMapName()+"说:"+text;
	//向QQ群发送消息
	em.sendQqMessage("http://ip:9600",s);
}

/************************************************************************************************
表情 
chr 玩家
emote 表情ID
************************************************************************************************/
function Expression(chr, emote) {
	//chr.dropMessage(5, "表情:"+emote);
}

/************************************************************************************************
升级 
chr 玩家
************************************************************************************************/
function levelUp(chr, Channel) {
	try {
		if (chr == null) {
			return;
		}
		if (!chr.isGM()) {
			if (chr.getLevel() >= 10) {
				em.sceneLaba("玩家“" + chr.getName() + "”在 " + chr.getMap().getName() + " 达到了 " + chr.getLevel() + " 级。");
				//Channel.broadcast(17,"[升级公告] : 恭喜 "+chr.getName()+" 在 "+chr.getMap().getName()+" 达到了 "+chr.getLevel()+" 级。");
				if (chr.getGui() != null) {
					chr.getGui().gainGP(10);
				}
			}
		}
	} catch(err) {
		em.console("zevms02-levelUp出错1:" + err);
	}

}

/************************************************************************************************
升级 
chr 玩家
************************************************************************************************/
function levelUpHPMP(chr,stats,job,isBeginnerJob) {
	try {
		var maxhp = stats.getMaxHp();
		var maxmp = stats.getMaxMp();
		if (isBeginnerJob) { 
            maxhp += randS(12, 16);
            maxmp += randS(10, 12);
        } else if (job >= 3100 && job <= 3112) {
            maxhp += randS(48, 52);
        } else if ((job >= 100 && job <= 132) || (job >= 1100 && job <= 1111)) {
            maxhp += randS(48, 52);
            maxmp += randS(4, 6);
        } else if ((job >= 200 && job <= 232) || (job >= 1200 && job <= 1211)) { 
            maxhp += randS(10, 14);
            maxmp += randS(48, 52);
        } else if (job >= 3200 && job <= 3212) {
            maxhp += randS(20, 24);
            maxmp += randS(42, 44);
        } else if ((job >= 300 && job <= 322) || (job >= 400 && job <= 434) || (job >= 1300 && job <= 1311) || (job >= 1400 && job <= 1411) || (job >= 3300 && job <= 3312) || (job >= 2300 && job <= 2312)) { 
            maxhp += randS(20, 24);
            maxmp += randS(14, 16);
        } else if ((job >= 510 && job <= 512) || (job >= 1510 && job <= 1512)) {
            maxhp += randS(37, 41);
            maxmp += randS(18, 22);
        } else if ((job >= 500 && job <= 532) || (job >= 3500 && job <= 3512) || job == 1500) { 
            maxhp += randS(20, 24);
            maxmp += randS(18, 22);
        } else if (job >= 2100 && job <= 2112) {
            maxhp += randS(50, 52);
            maxmp += randS(4, 6);
        } else if (job >= 2200 && job <= 2218) {
            maxhp += randS(12, 16);
            maxmp += randS(50, 52);
        } else { 
            maxhp += randS(50, 100);
            maxmp += randS(50, 100);
        }
		//maxmp += stats.getTotalInt() / 10;
		chr.setMaxMp(maxmp);
		chr.setMaxHp(maxhp);
		return true;
	} catch(err) {
		return false;
	}
}

/************************************************************************************************
转职加最大血量和蓝量
chr 玩家
************************************************************************************************/
function changeJobUpHPMP(chr,stats,job) {
	try{
		var maxhp = stats.getMaxHp();
		var maxmp = stats.getMaxMp();
		switch (job) {
			case 100: // Warrior
			case 1100: // Soul Master
			case 2100: // Aran
			case 3200:
				maxhp += randS(200, 250);
				break;
			case 3100:
				maxhp += randS(200, 250);
				maxmp = 10;
				break;
			case 3110:
				maxhp += randS(300, 350);
				maxmp = 10;
				break;
			case 3111:
				maxmp = 10;
				break;
			case 3112:
				maxmp = 10;
				break;
			case 200: // Magician
			case 2200: //evan
			case 2210: //evan
				maxmp += randS(100, 150);
				break;
			case 300: // Bowman
			case 400: // Thief
			case 500: // Pirate
			case 2300:
			case 3300:
			case 3500:
				maxhp += randS(100, 150);
				maxmp += randS(25, 50);
				break;
			case 110: // Fighter
			case 120: // Page
			case 130: // Spearman
			case 1110: // Soul Master
			case 2110: // Aran
			case 3210:
				maxhp += randS(300, 350);
				break;
			case 210: // FP
			case 220: // IL
			case 230: // Cleric
				maxmp += randS(400, 450);
				break;
			case 310: // Bowman
			case 320: // Crossbowman
			case 410: // Assasin
			case 420: // Bandit
			case 430: // Semi Dualer
			case 510:
			case 520:
			case 530:
			case 2310:
			case 1310: // Wind Breaker
			case 1410: // Night Walker
			case 3310:
			case 3510:
				maxhp += randS(200, 250);
				maxhp += randS(150, 200);
				break;
			case 900: // GM
			case 800: // Manager
				maxhp += 20;
				maxmp += 20;
				break;
		}
		chr.setMaxMp(maxmp);
		chr.setMaxHp(maxhp);
		return true;
	} catch(err) {
		return false;
	}
}


/************************************************************************************************
死亡 
chr 玩家
************************************************************************************************/
function playerDead(chr) {

}

/************************************************************************************************
退出组队 
chr 玩家
party 队伍
返回true则阻止
************************************************************************************************/
function SignOutParty(chr, party) {

	return false;
}

/************************************************************************************************
加入组队 
chr 玩家
party 队伍
返回true则阻止
************************************************************************************************/
function JoinParty(chr, party) {

	return false;
}

/************************************************************************************************
更换队长 
chr 玩家
party 队伍
cid 给队长给玩家ID
返回true则阻止
************************************************************************************************/
function changeLeader(chr, party, cid) {

	return false;
}

/************************************************************************************************
进入游戏 
chr 玩家
newcomer 是否第一次进入游戏  true/false
************************************************************************************************/
function EntertheGame(chr, newcomer) {
	var log = "出生奖励";
	if (chr.getForever(log) <= 0) {
		chr.setForever(log);
		chr.gainItem(2430191, 1, 7 * 24);
		chr.dropMessage(-5, "获得出生奖励。");
		em.sceneLaba("玩家“" + chr.getName() + "”加入冒险世界。");
		//直接就解锁群宠
		chr.groupPetSkill();
	}

	//第一次进游戏
	if (newcomer) {

	}
}

/************************************************************************************************
断开连接 
chr 玩家
************************************************************************************************/
function Disconnect(chr) {

}

/************************************************************************************************
更换频道 
chr 玩家
channel 目标频道
返回true则阻止
************************************************************************************************/
function ChangeChannel(chr, channel) {
	if(em.isVipChannel(channel)&&!chr.isVipL(1)){
		chr.dropMessage(1,"会员频道你无法进入。");
		return true;
	}
	return false;
}

/************************************************************************************************
超时空传送
chr 玩家
Map 地图
返回true则阻止
默认哪里都不能传送~免得到处飞~必须到过的地方才可以传送
************************************************************************************************/
function UseChronosphere(chr, Map) {
	try {
		if (chr == null) {
			return true;
		}
		/*if(!chr.isGM()){
			//解锁记录 角色
			var log = "解锁时空传送_";
			if(chr.getForever(log+Map.getId())<=0){
				chr.dropMessage(1, "未解锁该地图的传送。");
				return true;
			}
		}*/	
	} catch(err) {
		em.console("zevms02-UseChronosphere出错:" + err);
	}
	return false;
}

/************************************************************************************************
切换地图
chr 玩家
每到一个地图就解锁一个地图
************************************************************************************************/
function SwitchMap(chr) {
	try {
		if (chr != null) {
			/*if(!chr.isGM()){
				//解锁时空传送地图
				var log = "解锁时空传送_";
				if(chr.getForever(log+chr.getMap().getId())<=0){
					chr.setForever(log+chr.getMap().getId());
				}
			}*/
		}
	} catch(err) {
		em.console("zevms02-SwitchMap出错:" + err);
	}
}

/************************************************************************************************
分配能力点
chr 玩家
readInt 分配类型
返回true则阻止
************************************************************************************************/
function DistributeAP(chr, readInt) {

	return false;
}

/************************************************************************************************
升级技能
chr 玩家
skillid 技能ID
返回true则阻止
************************************************************************************************/
function UpgradeSkill(chr, skillid) {

	return false;
}

/************************************************************************************************
使用buff
chr 玩家
buffid buffid
返回true则阻止
************************************************************************************************/
function UseBuff(chr, buffid) {

	return false;
}

/************************************************************************************************
使用现金道具 
chr 玩家
item 道具
返回true则阻止
************************************************************************************************/
function UseCashItem(chr, item) {

	return false;
}

/************************************************************************************************
循环执行 
chr 玩家
每一分执行一次
************************************************************************************************/
function LoopExecution(chr, numTimes) {
	try {
		if (chr != null) {
			chr.gainTodayOnlineTime(1); //增加今日在线时间
			chr.gainTotalOnlineTime(1); //增加总在线时间
			//每10分钟恢复1点疲劳度
			if (numTimes % 10 == 0) {
				chr.gainFatigue(-1);
			}
		}
	} catch(err) {
		em.console("zevms02-LoopExecution出错:" + err);
	}
}


/************************************************************************************************
钓鱼配置
itemId 椅子ID
MapId 地图ID
************************************************************************************************/
function doFishS(itemId,MapId) {
	if(itemId==3011000&&MapId==910000000){
		return true;
	}
	return false;
}

/************************************************************************************************
钓鱼 
chr 玩家
yeid 鱼饵
5340000 5340001 钓鱼竿
2300000 2300001 鱼饵
************************************************************************************************/
var rand = 1000;
//1=金币 2=经验 其他=物品
//类型,数量,概率
var doFishdata = [[1, 100, 1000], [2, 100, 1000], [4031627, 1, 1000], [4031628, 1, 1000], [4031629, 1, 1000], [4031630, 1, 1000], [4031631, 1, 1000], [4031632, 1, 1000], [4031633, 1, 1000], [4031634, 1, 1000], [4031635, 1, 1000], [4031636, 1, 1000], [4031637, 1, 1000], [4031638, 1, 1000], [4031639, 1, 1000], [4031640, 1, 1000], [4031641, 1, 1000], [4031642, 1, 1000], [4031643, 1, 1000], [4031644, 1, 1000], [4031645, 1, 1000], [4031646, 1, 1000], [4031647, 1, 1000], [4031648, 1, 1000], ];

function doFish(chr,yeid) {
	try {
		if (chr != null) {
			var dycg = 0;//初始钓鱼成功率
			var yzid = chr.getChair();//坐的椅子ID
			
			//如果是高级鱼饵
			if(yeid==2300001){
				dycg+=75;//增加钓鱼成功率
			}else if(yeid==2300000){//普通鱼饵
				dycg+=50;//增加钓鱼成功率
			}
			
			//高级钓鱼
			if (chr.haveItem(5340001)) {
				dycg+=15;//增加钓鱼成功率
            } else if (chr.haveItem(5340000)) {//普通鱼竿
                dycg+=5;//增加钓鱼成功率
            }
			
			if(Math.floor(Math.random() * 99)<dycg){
				//钓鱼成功
				var randomPick = Math.floor(Math.random() * rand);
				var dataS = Array();
				for (var i = 0; i < doFishdata.length; i++) {
					if (doFishdata[i][2] >= randomPick) {
						dataS.push(doFishdata[i]);
					}
				}
				var sj = Math.floor(Math.random() * dataS.length);
				var id = dataS[sj][0];
				var count = dataS[sj][1];
				if (id == 1) { //金币
					chr.gainMeso(count);
					chr.fishingUpdate(1, count);
				} else if (id == 2) { //经验
					chr.gainExp(count);
					chr.fishingUpdate(2, count);
				} else {
					chr.gainItem(id, count);
					chr.fishingUpdate(3, id);
				}
				chr.fishingCaught(0); //钓鱼成功
			}else{
				//钓鱼失败
			}
		}
	} catch(err) {
		chr.cancelFishingTask();
		em.console("zevms02-doFish出错:" + err);
	}
}

/************************************************************************************************
凌晨执行一次 
************************************************************************************************/
function beforeDawn() {
	DropRate=true;
	ExpRate=true;
	MesoRate=true;
	em.broadcast(6, "新的一天开始了。");
}

/************************************************************************************************
周一凌晨执行一次 
************************************************************************************************/
function Monday() {

}

/************************************************************************************************
一分钟执行一次
hour 时
minute 分
xq 星期(星期一=1 星期六=6 星期日=0)
setMesoRate
setExpRate
setDropRate
************************************************************************************************/
function Everyminute(hour, minute, xq) {
	//星期一到星期五
	if(xq>=1&&xq<=5){
		//20点开启60分钟双倍经验倍率
		if(hour==20&&ExpRate){
			ExpRate=false;
			em.setExpRate(2,60);
		}
		//20点开启60分钟双倍爆物倍率
		if(hour==20&&DropRate){
			DropRate=false;
			em.setDropRate(2,60);
		}
	}
	//星期六到星期日
	if(xq==6||xq==0){
		//20点开启120分钟双倍经验倍率
		if(hour==20&&ExpRate){
			ExpRate=false;
			em.setExpRate(2,120);
		}
		//20点开启120分钟双倍爆物倍率
		if(hour==20&&DropRate){
			DropRate=false;
			em.setDropRate(2,120);
		}
	}
}

var MesoRate=true;
var ExpRate=true;
var DropRate=true;

/************************************************************************************************
装备掉落属性浮动 
自己发挥自己发挥
************************************************************************************************/
function randomizeStats(equip) {
	try {
		equip.setStr(getRandStat(equip.getStr(), 5));
		equip.setDex(getRandStat(equip.getDex(), 5));
		equip.setInt(getRandStat(equip.getInt(), 5));
		equip.setLuk(getRandStat(equip.getLuk(), 5));
		equip.setMatk(getRandStat(equip.getMatk(), 5));
		equip.setWatk(getRandStat(equip.getWatk(), 5));
		equip.setAcc(getRandStat(equip.getAcc(), 5));
		equip.setAvoid(getRandStat(equip.getAvoid(), 5));
		equip.setJump(getRandStat(equip.getJump(), 5));
		equip.setHands(getRandStat(equip.getHands(), 5));
		equip.setSpeed(getRandStat(equip.getSpeed(), 5));
		equip.setWdef(getRandStat(equip.getWdef(), 10));
		equip.setMdef(getRandStat(equip.getMdef(), 10));
		equip.setHp(getRandStat(equip.getHp(), 10));
		equip.setMp(getRandStat(equip.getMp(), 10));
		//2%的概率出现未鉴定装备
		if(Math.floor(Math.random() * 100)<2){
			equip.setPotential1(-17);
		}
	} catch(err) {
		em.console("randomizeStats出错:" + err);
	}
	return equip;
}

function getRandStat(defaultValue, maxRange) {
	try {
		if (defaultValue <= 0) {
			return 0;
		}
		var lMaxRange = Math.min(Math.ceil(defaultValue * 0.1), maxRange);
		return ((defaultValue - lMaxRange) + Math.floor(Math.random() * lMaxRange * 2 + 1));
	} catch(err) {
		return 0;
	}
}

/************************************************************************************************
创建家族
chr 玩家
Guild 家族
************************************************************************************************/
function establishGuild(chr, Guild) {
	Guild.gainGP(500, chr.getId());
	chr.dropMessage(1, "恭喜你成功创建了一个家族。");
}

/************************************************************************************************
家族成员加入
chr 玩家
mgcc 也是玩家
Guild 家族
************************************************************************************************/
function addGuildMember(mgcc, chr, Guild) {
	Guild.gainGP(500, true, mgcc.getId());
}

/************************************************************************************************
家族成员离开
chr 玩家
mgcc 也是玩家
Guild 家族
************************************************************************************************/
function leaveGuild(mgcc, chr, Guild) {
	Guild.gainGP(mgcc.getGuildContribution() > 0 ? -mgcc.getGuildContribution() : -50);
}

/************************************************************************************************
家族成员驱逐
chr 玩家
mgcc 也是玩家
Guild 家族
************************************************************************************************/
function expelMember(mgcc, chr, Guild) {
	Guild.gainGP(mgcc.getGuildContribution() > 0 ? -mgcc.getGuildContribution() : -50);
}

/************************************************************************************************
给经验,基于怪物的exp 
chr 玩家
exp 最终值
************************************************************************************************/
function gainExpMonster(chr, exp) {
	var strNum = exp;
	/*if(chr.getLevel()>90){
		strNum*=2;
	}*/
	if(chr.getName().equals("小z")){
		strNum*=2;
	}
	return parseInt(strNum);
}

/************************************************************************************************
角色背包商城道具加载 
chr 玩家
item 道具
hour 时
weekDay 星期
************************************************************************************************/
function recalcLocalStats(chr, item, hour, weekDay) {
	var expMod = chr.getEXPMod();
	//经验倍率
	if (item.getItemId() >= 5200000 && item.getItemId() < 5300000) {
		if (expMod < 3 && (item.getItemId() == 5211060 || item.getItemId() == 5211050 || item.getItemId() == 5211051 || item.getItemId() == 5211052 || item.getItemId() == 5211053 || item.getItemId() == 5211054)) {
			chr.setEXPMod(3);
		} else if (expMod < 2 && (item.getItemId() == 5211061 || item.getItemId() == 5211000 || item.getItemId() == 5211001 || item.getItemId() == 5211002 || item.getItemId() == 5211003 || item.getItemId() == 5211046 || item.getItemId() == 5211047 || item.getItemId() == 5211048 || item.getItemId() == 5211049)) {
			chr.setEXPMod(2);
		} else if (expMod < 2 && (item.getItemId() == 5210002 || item.getItemId() == 5210003) && (((hour >= 6 && hour <= 18) && (weekDay >= 2 && weekDay <= 6)) || (weekDay == 1 || weekDay == 7))) {
			chr.setEXPMod(2);
		} else if (expMod < 2 && (item.getItemId() == 5210004 || item.getItemId() == 5210005 || item.getItemId() == 521000) && (((hour >= 18 || hour <= 6) && (weekDay >= 2 && weekDay <= 6)) || (weekDay == 1 || weekDay == 7))) {
			chr.setEXPMod(2);
		} else if (expMod < 2 && (item.getItemId() == 5210000 || item.getItemId() == 5210001) && (((hour >= 10 && hour <= 22) && (weekDay >= 2 && weekDay <= 6)) || (weekDay == 1 || weekDay == 7))) {
			chr.setEXPMod(2);
		}
	}
	//物品爆率,这是设置角色爆率的
	if (item.getItemId() >= 5360000 && item.getItemId() < 5360016) {
		if (item.getItemId() == 5360015) {
			chr.setDropMod(2);
		} else if (item.getItemId() == 5360014) {
			chr.setDropMod(2);
		} else if (item.getItemId() == 5360016) {
			chr.setDropMod(2);
		} else if (item.getItemId() == 5360000 && hour >= 0 && hour <= 6) {
			chr.setDropMod(2);
		} else if (item.getItemId() == 5360001 && hour >= 6 && hour <= 12) {
			chr.setDropMod(2);
		} else if (item.getItemId() == 5360002 && hour >= 12 && hour <= 18) {
			chr.setDropMod(2);
		} else if (item.getItemId() == 5360003 && hour >= 18 && hour <= 24) {
			chr.setDropMod(2);
		}
	}
}

/************************************************************************************************
商城购买道具后重新定义属性
比如~限时
************************************************************************************************/
function CashItemInfobuy(chr, item, Time) {
	try {
		if (item.getItemId() == 5360014) {
			item.setExpiration(Time + 2 * 60 * 60 * 1000);
		}
	} catch(err) {
		em.console("CashItemInfobuy出错:" + err);
	}
}

/************************************************************************************************
地图怪物倍率
map 地图
返回1就是1倍
************************************************************************************************/
function getMonsterSpawn(map) {
	//map.dropMessage(5,"[测试信息]:"+map.spawnDebug());
	var strNum = 2;
	//开启轮回墓碑后
	if (map.mobCount(1) != 0) {
		strNum += 2;
	}
	return strNum;
}

/************************************************************************************************
登陆成功后的提示语,如果不想提示留空
************************************************************************************************/
function Accountlogin(c) {
	var text = "";
	text += "恭喜您登陆成功!\r\n";
	text += "您的盛大通行证为" + c.getAccountName() + "\r\n";
	text += "对应的数字帐号为" + c.getAccID() + "\r\n";
	text += "请牢记您的账号,要善保管您的密码您可以登陆网站www.baidu.com了解更多服务!";
	text += "点击确定,进入游戏!";
	return text;
}

/************************************************************************************************
登陆频道后的背景
MapLogin  //双弩精灵
MapLogin1 //恶魔猎手
MapLogin2 //飞跃,开启传说新时代
MapLogin3 //飞跃,开启传说新时代
如果客户端不存在的,就会显示MapLogin
************************************************************************************************/
function LoginAUTH() {
	var data = ["MapLogin", "MapLogin1", "MapLogin2", "MapLogin3"];
	return data[Math.floor(Math.random() * data.length)];
}


/************************************************************************************************
炼金 合成
chr 玩家
item1 装备1
item2 装备2
cr `
fatigue 疲劳
返回true则阻止
************************************************************************************************/
function synthesis(chr, item1, item2, cr, fatigue) {
	try {
		if (chr.getInventory(1).isFull(0)) {
			chr.dropMessage(1, "你背包装备栏空间不够。");
			return true;
		}
		if (!chr.haveItem(4021017,1)) {
            chr.dropMessage(1, "合成时需要1个炼金术士之石。");
            return true;
        }
		chr.loseItem(4021017);
		var id = item1.getItemId();
		chr.removeSlot(1,item1.getPosition(),1);
		chr.removeSlot(1,item2.getPosition(),1);
		chr.gainItem(id,1);
		chr.settempData("fatigue", 5);
		chr.settempData("cr", 0);
		chr.settempData("toGet", id);
		return false;
	} catch(err) {
		em.console("synthesis出错:" + err);
		return true;
	}
}

/************************************************************************************************
分解机 分解技能 分解装备
chr 玩家
itemId 分解的ID
cr `
reqLevel 分解的装备的等级
fatigue 疲劳
quantity 显示数量
返回true则阻止
************************************************************************************************/
function Decompose(chr, itemId, cr, reqLevel, fatigue, quantity, toGet) {
	try {
		if (chr.getInventory(4).isFull(0)) {
			chr.dropMessage(1, "你背包其他栏空间不够。");
			return true;
		}
		if (reqLevel < 40) {
			chr.dropMessage(1, "装备等级过低,无法分解。");
			return true;
		}

		fatigue = 3;
		cr = 0;
		toGet = 4021013;
		quantity = 1;
		if (reqLevel >= 40 && reqLevel <= 69) {
			toGet = 4021013; //低级物品结晶
			quantity = 1;
		} else if (reqLevel >= 70 && reqLevel <= 99) {
			toGet = 4021014; //中级物品结晶
			quantity = 1;
		} else if (reqLevel >= 100 && reqLevel <= 129) {
			toGet = 4021015; //高级物品结晶
			quantity = 1;
		} else if (reqLevel >= 130) {
			toGet = 4021016; //最高级物品结晶
			quantity = 1;
		}
		chr.settempData("quantity", quantity);
		chr.settempData("toGet", toGet);
		chr.settempData("fatigue", fatigue);
		chr.settempData("cr", cr);
		chr.gainItem(toGet, quantity);
		return false;
	} catch(err) {
		em.console("Decompose出错:" + err);
		return true;
	}
}

/************************************************************************************************
锻造制作怪物结晶
chr 玩家
etcitemId 制作的道具
reqLevel 道具的等级
返回true则阻止
************************************************************************************************/
function ProduceCrystals(chr, etcitemId, reqLevel) {
	try {
		if (chr.getInventory(4).isFull(0)) {
			chr.dropMessage(1, "你背包其他栏空间不够。");
			return true;
		}
		if (!chr.haveItem(etcitemId, 100)) {
			chr.dropMessage(1, "你好像没有足够的材料啊。");
			return true;
		}
		var itemid = 0;
		var quantity = 1;
		if (reqLevel >= 31 && reqLevel <= 50) {
			itemid = 4260000;
		} else if (reqLevel >= 51 && reqLevel <= 60) {
			itemid = 4260001;
		} else if (reqLevel >= 61 && reqLevel <= 70) {
			itemid = 4260002;
		} else if (reqLevel >= 71 && reqLevel <= 80) {
			itemid = 4260003;
		} else if (reqLevel >= 81 && reqLevel <= 90) {
			itemid = 4260004;
		} else if (reqLevel >= 91 && reqLevel <= 100) {
			itemid = 4260005;
		} else if (reqLevel >= 101 && reqLevel <= 110) {
			itemid = 4260006;
		} else if (reqLevel >= 111 && reqLevel <= 120) {
			itemid = 4260007;
		} else if (reqLevel >= 121) {
			itemid = 4260008;
		} else {
			chr.dropMessage(1, "材料的等级过低,不能制作。");
			return true;
		}
		chr.loseItem(etcitemId, 100);
		chr.gainItem(itemid, quantity);
		chr.dropMessage(1, "制作成功。");
		return false;
	} catch(err) {
		em.console("Decompose出错:" + err);
		return true;
	}
}

/************************************************************************************************
使用配方
chr 玩家
itemId 使用的道具
返回true则阻止
************************************************************************************************/
function UseRecipe(chr, itemId) {
	try {
		return false;
	} catch(err) {
		em.console("UseRecipe出错:" + err);
		return true;
	}
}

/************************************************************************************************
使用分解机
chr 玩家
itemId 使用的道具
meso 分解费用
************************************************************************************************/
function UseExtractor(chr, itemId, meso) {
	try {
		chr.getMap().spawnExtractor(chr.getExtractor());
	} catch(err) {
		em.console("UseRecipe出错:" + err);
	}
}

/************************************************************************************************
使用怪物卡片
chr 玩家
cardid 怪物卡ID
返回true则阻止
************************************************************************************************/
function monsterCaught(chr, cardid) {
	try {
		if (chr.getCardCount(cardid) >= 100) {
			chr.dropMessage(1, "怪物卡片等级不能提高了。");
			return true;
		}
	} catch(err) {
		em.console("monsterCaught出错:" + err);
	}
	return false;
}

/************************************************************************************************
强化星星卷轴
chr 玩家
返回false则为默认
************************************************************************************************/
//是否是武器
function isWeapon(itemId) {
	return itemId >= 1210000 && itemId < 1600000;
}

//随机数值1
function randS(mixStats, maxStats) {
	return Math.floor(Math.random() * (maxStats - mixStats + 1)) + mixStats;
}

//随机数值2
function nextInt(m) {
	return Math.floor(Math.random() * m);
}

//砸卷后加数值
function scrollEnhance(chr, nEquip, Randomizer, mixStats, maxStats) {
	try {
		//当前装备的星星
		var Enhance = nEquip.getEnhance();
		//力量
		if (nEquip.getStr() > 0 || nextInt(100) <= 50) {
			nEquip.setStr((nEquip.getStr() + randS(mixStats, maxStats)));
		}
		//敏捷
		if (nEquip.getDex() > 0 || nextInt(100) <= 50) {
			nEquip.setDex((nEquip.getDex() + randS(mixStats, maxStats)));
		}
		//智力
		if (nEquip.getInt() > 0 || nextInt(100) <= 50) {
			nEquip.setInt((nEquip.getInt() + randS(mixStats, maxStats)));
		}
		//运气
		if (nEquip.getLuk() > 0 || nextInt(100) <= 50) {
			nEquip.setLuk((nEquip.getLuk() + randS(mixStats, maxStats)));
		}
		//攻击力  武器才加
		if (nEquip.getWatk() > 0 && (isWeapon(nEquip.getItemId()))) {
			if (nEquip.getWatk() < 150) {
				nEquip.setWatk((nEquip.getWatk() + 3));
			} else if (nEquip.getWatk() < 200) {
				nEquip.setWatk((nEquip.getWatk() + 4));
			} else if (nEquip.getWatk() < 250) {
				nEquip.setWatk((nEquip.getWatk() + 5));
			} else {
				nEquip.setWatk((nEquip.getWatk() + 5 + (nextInt(100) <= 50 ? 1 : 0)));
			}
		}
		//魔法力 武器才加
		if (nEquip.getMatk() > 0 && isWeapon(nEquip.getItemId())) {
			if (nEquip.getMatk() < 50) {
				nEquip.setMatk((nEquip.getMatk() + 1));
			} else if (nEquip.getMatk() < 100) {
				nEquip.setMatk((nEquip.getMatk() + 2));
			} else if (nEquip.getMatk() < 150) {
				nEquip.setMatk((nEquip.getMatk() + 3));
			} else if (nEquip.getMatk() < 200) {
				nEquip.setMatk((nEquip.getMatk() + 4));
			} else if (nEquip.getMatk() < 250) {
				nEquip.setMatk((nEquip.getMatk() + 5));
			} else {
				nEquip.setMatk((nEquip.getMatk() + 5 + (nextInt(100) <= 50 ? 1 : 0)));
			}
		}
		//物理防御
		if (nEquip.getWdef() > 0 || nextInt(100) <= 50) {
			nEquip.setWdef((nEquip.getWdef() + nextInt(5)));
		}
		//魔法防御
		if (nEquip.getMdef() > 0 || nextInt(100) <= 50) {
			nEquip.setMdef((nEquip.getMdef() + nextInt(5)));
		}
		//命中
		if (nEquip.getAcc() > 0 || nextInt(100) <= 50) {
			nEquip.setAcc((nEquip.getAcc() + nextInt(5)));
		}
		//闪避
		if (nEquip.getAvoid() > 0 || nextInt(100) <= 50) {
			nEquip.setAvoid((nEquip.getAvoid() + nextInt(5)));
		}
		//移动速度
		if (nEquip.getSpeed() > 0 || nextInt(100) <= 50) {
			nEquip.setSpeed((nEquip.getSpeed() + nextInt(5)));
		}
		//跳跃
		if (nEquip.getJump() > 0 || nextInt(100) <= 50) {
			nEquip.setJump((nEquip.getJump() + nextInt(5)));
		}
		//血量
		if (nEquip.getHp() > 0 || nextInt(100) <= 50) {
			nEquip.setHp((nEquip.getHp() + randS(mixStats, maxStats)));
		}
		//魔力
		if (nEquip.getMp() > 0 || nextInt(100) <= 50) {
			nEquip.setMp((nEquip.getMp() + randS(mixStats, maxStats)));
		}
		//加一颗星星
		nEquip.setEnhance((Enhance + 1));
		return true;
	} catch(err) {
		em.console("scrollEnhance出错:" + err);
		return false;
	}
}

/************************************************************************************************
最大星星上限
itemid 物品ID
itemReqLevel 物品等级
isSuperiorEquip
不过客户端貌似有限制最多15星星哦~~
************************************************************************************************/
function getEnchantSstarts(itemReqLevel, isSuperiorEquip) {
	/*if (itemReqLevel >= 0 && itemReqLevel <= 94) {
        return isSuperiorEquip ? 3 : 5;
    } else if (itemReqLevel > 94 && itemReqLevel <= 107) {
        return isSuperiorEquip ? 5 : 8;
    } else if (itemReqLevel > 107 && itemReqLevel <= 117) {
        return isSuperiorEquip ? 8 : 10;
    } else if (itemReqLevel > 117 && itemReqLevel <= 127) {
        return isSuperiorEquip ? 10 : 15;
    } else if (itemReqLevel > 127 && itemReqLevel <= 137) {
        return isSuperiorEquip ? 12 : 20;
    } else if (itemReqLevel > 137 && itemReqLevel <= 147) {
        return isSuperiorEquip ? 15 : 25;
    } else if (itemReqLevel > 147) {
        return isSuperiorEquip ? 15 : 25;
    }*/
	return 100;
}

/************************************************************************************************
角色战力值计算
这里写战力计算公式
chr.setDisplaytext("");//则关闭战力显示
************************************************************************************************/
function combatEffectiveness(chr) {
	var Str = chr.getStat().getTotalStr(); //力量
	var Dex = chr.getStat().getTotalDex(); //敏捷
	var Int = chr.getStat().getTotalInt(); //智力
	var Luk = chr.getStat().getTotalLuk(); //运气
	var Magic = chr.getStat().getTotalMagic(); //魔法力
	var Watk = chr.getStat().getTotalWatk(); //攻击力
	var Hp = chr.getStat().getMaxHp(); //血量
	var Mp = chr.getStat().getMaxMp(); //魔量
	var data = (Str * 10) + (Dex * 10) + (Int * 10) + (Luk * 10) + (Magic * 100) + (Watk * 50) + (Hp * 1) + (Mp * 1);
	chr.setCombatEffectiveness(data);
	chr.setDisplaytext("战力:");
}

/************************************************************************************************
转生
chr.setDisplaytext2("");//则关闭转生显示
************************************************************************************************/
function reincarnation(chr) {
	chr.setDisplaytext2(" 转生:");
}

/************************************************************************************************
拜师
p 自己
chr 目标
收徒上限在脚本中设置
************************************************************************************************/
function baishi(p, chr) {
	if (chr == null) {
		return;
	}
	if (p.getMasterId() != 0) {
		p.dropMessage(1, "你已经有师傅了。");
		return;
	}
	/*if (chr.isGM()) {
		return;
	}*/
	if (p.getLevel() > 50) {
		p.dropMessage(1, "你的等级高于15级后,无法拜师。");
		return;
	}
	if (chr.getLevel() < 70) {
		p.dropMessage(1, "目前等级低于70级无法收徒。");
		return;
	}
	p.dropMessage(5, "已经发送拜师申请。");
	chr.addMasterApprenticeList(p.getId());
	chr.dropMessage(5, "收到来自“" + p.getName() + "”的拜师申请。");
}

/************************************************************************************************
砸卷 
chr 玩家
scrollid 卷轴ID
legendarySpirit 技能
Equipid 装备
返回true则阻止
************************************************************************************************/
function UseUpgradeScroll(chr, scrollid, legendarySpirit, Equipid) {

	return false;
}

/************************************************************************************************
放大镜
chr 玩家
Equipid 装备id
Itemid 放大镜   返回0就是背包下面的引用
Equip 装备
返回true则阻止
************************************************************************************************/
function UseMagnify(chr, Equipid, Itemid, Equip) {
	//提示,如果等于0就出现提示,下次就直接鉴定
	var prompt = chr.getUseMagnify();
	//0的话就不是放大镜了
	/*if(Itemid==0){
		chr.dropMessage(1, "不允许使用这个鉴定。");
		return true;
	}*/
	//装备等级
	var level = em.wzEquip_getReqLevel(Equipid);
	var meso = 0;
	if(level >= 0 && level <= 29){
		meso = 10000;
	}else if(level >= 30 && level <= 69){
		meso = 100000;
	}else if(level >= 70 && level <= 119){
		meso = 1000000;
	}else if(level >= 120 && level <= 255){
		meso = 100000000;
	}
	//背包放大镜,出现提示语
	if(Itemid==0 && prompt != Equipid){
		chr.setUseMagnify(Equipid);
		chr.dropMessage(1, "鉴定需要消耗\r\n"+meso+"金币,\r\n确定要鉴定吗?");
		return true;
	}
	if(chr.getMeso() < meso){
		chr.dropMessage(1, "鉴定需要消耗\r\n"+meso+"金币,你的金币不够。");
		return true;
	}
	chr.loseMeso(meso);
	chr.setUseMagnify(0);
	return false;
}


/************************************************************************************************
花生机
chr 玩家
itemId 道具ID
************************************************************************************************/
function Peanuts(chr, itemId) {
	var sj1 = Math.floor(Math.random() * PeanutsData.length);
	var sj2 = Math.floor(Math.random() * PeanutsData.length);
	var item1id = PeanutsData[sj1][0];
	var item1count = PeanutsData[sj1][1];
	var item2id = PeanutsData[sj2][0];
	var item2count = PeanutsData[sj2][1];
	chr.sendPeanutResult(item1id, item1count, item2id, item2count, itemId);
}

//奖励随机
var PeanutsData = [[2000000, 1], [2000001, 2], [2000002, 2], [2000003, 2], [2000004, 2], ];

/************************************************************************************************
装备穿戴判断 
chr 玩家
dst 穿戴位置
itemid 物品id
isCash 是否时装
返回true则阻止 false则是可以穿戴
************************************************************************************************/
function getEquipJudge(chr, dst, itemid,isCash) {
	if (((itemid >= 1300000 && itemid < 1539999) && !(itemid >= 1340000 && itemid < 1359999)) || (itemid >= 1700000 && itemid < 1709999)) {
        return (!isCash || dst != -111) && (isCash || dst != -11);
    } else if ((itemid >= 1000000 && itemid < 1009999)) {//帽子
        return (!isCash || (dst != -101 && dst != -1200)) && (isCash || dst != -1);
    } else if ((itemid >= 1010000 && itemid < 1019999)) {//脸饰
        return (!isCash || (dst != -102 && dst != -1202)) && (isCash || dst != -2);
    } else if ((itemid >= 1020000 && itemid < 1029999)) {//眼饰
        return (!isCash || dst != -103) && (isCash || dst != -3);
    } else if ((itemid >= 1030000 && itemid < 1039999)) {//耳环
        return (!isCash || dst != -104) && (isCash || dst != -4);
    } else if ((itemid >= 1040000 && itemid < 1049999) || (itemid >= 1050000 && itemid < 1059999)) {//上衣 套服
        return (!isCash || (dst != -105 && dst != -1203)) && (isCash || dst != -5);
    } else if ((itemid >= 1060000 && itemid < 1069999)) {//裤子
        return (!isCash || (dst != -106 && dst != -1204)) && (isCash || dst != -6);
    } else if ((itemid >= 1070000 && itemid < 1079999)) {//鞋子
        return (!isCash || (dst != -107 && dst != -1205)) && (isCash || dst != -7);
    } else if ((itemid >= 1080000 && itemid < 1089999)) {//手套
        return (!isCash || (dst != -108 && dst != -1206)) && (isCash || dst != -8);
    } else if ((itemid >= 1090000 && itemid < 1099999) || (itemid >= 1340000 && itemid < 1359999)) {//盾牌 刀 魔法箭
        return (!isCash || dst != -110) && (isCash || dst != -10);
    } else if ((itemid >= 1100000 && itemid < 1109999)) {//披风
        return (!isCash || (dst != -109 && dst != -1201)) && (isCash || dst != -9);
    } else if ((itemid >= 1110000 && itemid < 1119999)) {//戒指
        if (isCash) {
            if (dst == -112 || dst == -113 || dst == -115 || dst == -116 || dst == -127 || dst == -128) {
                return false;
            }
        } else {
            if (dst == -12 || dst == -13 || dst == -15 || dst == -16 || dst == -27 || dst == -28) {
                return false;
            }
        }
    } else if ((itemid >= 1120000 && itemid < 1129999)) {//吊坠
        return (!isCash || (dst != -117 && dst != -137)) && (isCash || (dst != -17 && dst != -37));
    } else if ((itemid >= 1130000 && itemid < 1139999)) {//腰带
        return (!isCash || dst != -129) && (isCash || dst != -29);
    } else if ((itemid >= 1140000 && itemid < 1149999)) {//勋章
        return (!isCash || dst != -126) && (isCash || dst != -26);
    } else if ((itemid >= 1150000 && itemid < 1159999)) {//肩饰
        return (!isCash || dst != -130) && (isCash || dst != -30);
    } else if ((itemid >= 1160000 && itemid < 1169999)) {//口袋物品
        return (!isCash || dst != -133) && (isCash || dst != -33);
    } else if ((itemid >= 1180000 && itemid < 1189999)) {//徽章
        return (!isCash || dst != -136) && (isCash || dst != -36);
    } else if ((itemid >= 1610000 && itemid < 1619999)) {//机甲引擎
        return dst != -1100;
    } else if ((itemid >= 1620000 && itemid < 1629999)) {//机甲机械臂
        return dst != -1101;
    } else if ((itemid >= 1630000 && itemid < 1639999)) {//机甲机械腿
        return dst != -1102;
    } else if ((itemid >= 1640000 && itemid < 1649999)) {//机甲机身材质
        return dst != -1103;
    } else if ((itemid >= 1650000 && itemid < 1659999)) {//机甲晶体管
        return dst != -1104;
    } else if ((itemid >= 1660000 && itemid < 1669999)) {//智能机器人
        return dst != -34;
    } else if ((itemid >= 1670000 && itemid < 1679999)) {//机械心脏
        return dst != -35;
    } else if ((itemid >= 1800000 && itemid < 1809999)) {//宠物装备
        return dst != -114 && dst != -121 && dst != -122 && dst != -123 && dst != -124 && dst != -125;
    } else if ((itemid >= 1900000 && itemid < 1909999)) {//驯服的怪物
        return (!isCash || dst != -118) && (isCash || dst != -18);
    } else if ((itemid >= 1910000 && itemid < 1919999)) {//鞍子
        return (!isCash || dst != -119) && (isCash || dst != -19);
    } else if ((itemid >= 1940000 && itemid < 1949999)) {//龙神帽子
        return dst != -1000;
    } else if ((itemid >= 1950000 && itemid < 1959999)) {//龙神吊坠
        return dst != -1001;
    } else if ((itemid >= 1960000 && itemid < 1969999)) {//龙神翅膀
        return dst != -1002;
    } else if ((itemid >= 1970000 && itemid < 1979999)) {//龙神尾巴
        return dst != -1003;
    }
    return true;
}

/************************************************************************************************
宠物使用BUFF
chr 玩家
skillId 技能
返回true则阻止
************************************************************************************************/
function ChangePetBuff(chr, sskillId) {
	if (skillId == 4121006) {
		chr.dropMessage(1, "无法添加该技能。");
		return true;
	}
	return false;
}

//不能删
function cancelSchedule() {}



zevms01

//初始化
function init() {
    scheduleNew();
	for (var i = 0; i < data.length; i++) {
		var mobid = data[i][0];
		var mapid = data[i][1];
		em.addEliteBoss(mobid,mapid);
	}
}

//怪物id,刷新地图,重生时间min,max(秒),x,y,msg,是否展示在脚本
var data=[
	[9001043,924000200,10000,12000,-7,444,"",true],
	[2220000,104010200,1000,1200,189,2,"蜗牛王出现了。",true],
	[3220000,102020500,1000,1200,1121,2130,"",true],
	[6130101,100020101,1000,1200,-311,201,"",true],
	[8220007,100020301,1000,1200,-188,-657,"",true],
	[6300005,100020401,1000,1200,-130,-773,"",true],
	[5220001,120030500,1000,1200,-411,170,"",true],//5220000
	[8220008,105020400,1000,1200,1490,560,"",true],//8220009
	[7220000,250010304,1000,1200,-210,33,"",true],
	[8220000,200010300,1000,1200,665,83,"",true],
	[7220002,250010503,1000,1200,-303,543,"",true],
	[7220001,222010310,1000,1200,-169,-147,"",true],
	[6220000,103030400,1000,1200,-831,109,"",true],
	[5220002,101040300,1000,1200,600,-600,"",true],
	[5220003,220050100,1000,1200,-467,1032,"",true],
	[6220001,221040301,1000,1200,-3662,776,"",true],
	[8220003,240040401,1000,1200,-15,2481,"",true],
	[3220001,260010201,1000,1200,-215,275,"",true],
	[5220004,251010102,1000,1200,-41,124,"",true],
	[8220002,261030000,1000,1200,-1094,-405,"",true],
	[4220000,230020100,1000,1200,-291,-20,"",true],
	[5090000,103020320,1000,1200,79,174,"",true],
	[7090000,261020300,1000,1200,312,157,"",true],
	[8090000,261020401,1000,1200,-263,155,"",true],
	[5090001,250020300,1000,1200,1208,27,"",true],
	[6090001,211050000,1000,1200,-233,-431,"",true],
	[6090004,261010003,1000,1200,-861,301,"",true],
	[6090003,222010300,1000,1200,1300,-400,"",true],
	[6090002,251010101,1000,1200,-15,-449,"",true],
	[6090000,211041400,1000,1200,1672,82,"",true],
	[8130100,105030500,1000,1200,801,130,"",true],
	[4300013,103040430,1000,1200,240,88,"",true],
	[8220001,211040101,1000,1200,485,244,"",true],
	[9500317,209000000,1000,1200,-115,154,"",true],
	[9400612,677000001,1000,1200,99,60,"",true],
	[9400610,677000003,1000,1200,6,35,"",true],
	[9400609,677000005,1000,1200,-277,78,"",true],
	[9400611,677000007,1000,1200,117,73,"",true],
	[9400613,677000009,1000,1200,85,66,"",true],
	[9304005,931000500,10000,12000,-872,-332,"",true],
	
];


//击杀怪物后引用~
function Killmob(chr,map,mob) {

	//处理升级的装备
	try{
		if(mob == 100100){
			var item = chr.getInventory(-1).getItem(-11);
			if(item!==null && item.getId()==1302000){
				item.gainExperience(10);//给经验
				if(item.getExperience()>=100){
					item.setItemId(1302001);//设置装备ID
					Item.setStr(1);//力量
					item.setDex(2);//敏捷
					item.setInt(3);//智力
					item.setLuk(4);//运气
					item.setHp(5);//生命值
					item.setMp(6);//魔力值
					item.setWatk(9999);//攻击力
					item.setMatk(8);//魔法力
					item.setWdef(9);//防御力
					item.setMdef(10);//魔法防御力
					item.setAcc(11);//命中率
					item.setAvoid(12);//回避率
					item.setHands(13);//手技
					item.setSpeed(14);//移动速度
					item.setJump(15);//跳跃力
					item.setUpgradeSlots(16);//可升级砸卷次数
					//item.setViciousHammer(1);//金锤子
					//item.setLevel(18);//砸卷等级
					//item.setEnhance(19);//星星
					//item.setPotential1(1);//潜能1
					//item.setPotential2(2);//潜能2
					//item.setPotential3(3);//潜能3
					//item.setOwner("小z");//前缀
					//item.setExpiration(cm.getCurrentTimeMillis()+3*60*1000);//限时
					item.setExperience(0);//重置经验
					//item.setData(1,0);//重置data
					em.forceReAddItem(chr,-1,-11);//刷新
				}
			}
		}
	}catch(err){
		em.console("升级装备处理出错:"+err);
	}

	var dr = 1;
	//穿戴XX装备后增加斗燃值获取
	if(chr.isWear(1302000)){
		dr+=1;
	}
	map.gainDouranData(dr);//增加斗燃
	
	
	//加个判断,防止击杀什么怪物都进入循环
	if(em.getEliteBoss(mob)!=0){
		try {
			for (var i = 0; i < data.length; i++) {
				var mobid = data[i][0];
				var mapid = data[i][1];
				if(mob==8220009){
					mob=8220008;
				}else if(mob==5220000){
					mob=5220001;
				}
				if(map.getId()==mapid && mob==mobid ){
					var min = data[i][2];
					var max = data[i][3];
					var t = Math.floor(Math.random() * (max-min))+min;
					insertmobdata(mapid,mobid,(getTime()+(t*1000)));
					break;
				}
			}
		} catch(err) {
			em.console("Killmob出错:"+err);
		}
	}
}

//循环执行
function loop() {
	try {
		if(em.isShutDown()){
			return;
		}
		var get = 0;
		var timestamp = getTime();
		for (var i = 0; i < data.length; i++) {
			var mobid = data[i][0];
			var mapid = data[i][1];
			var mob = em.getMonster(mobid);
			try{
				if(mob!=null){
					var map = em.getMapFactory().getMap(mapid);
					if(map!=null){
						get = 0;
						if(mobid==5220001){//巨居蟹 5220000
							if(map.countMonsterById(mobid) == 0 && map.countMonsterById(5220000) == 0 && timestamp > getMobTime(mapid,mobid)){
								get = 1;
							}
						}else if(mobid==8220008){//小吃店 8220009
							if(map.countMonsterById(mobid) == 0 && map.countMonsterById(8220009) == 0 && timestamp > getMobTime(mapid,mobid)){
								get = 1;
							}
						}else{
							if(map.countMonsterById(mobid) == 0 && timestamp > getMobTime(mapid,mobid)){
								get = 1;
							}
						}
						if(get == 1){
							var x = data[i][4];
							var y = data[i][5];
							map.spawnMonster(mobid,x,y);
							var msg = data[i][6];
							if(msg!=""){
								map.dropMessage(6,msg);
							}
							deletemobdata(mapid,mobid);//刷新后删除数据库记录
						}
					}
				}
			} catch(errr) {
				em.console(mobid+" "+mobid+" loop2出错:"+errr);//报错就不执行了
			}
		}
		em.schedule("loop", 1*60*1000);//每1分钟执行一次
	} catch(err) {
		em.console("loop出错:"+err);//报错就不执行了
	}
}

//获取刷新时间
function getMobTime(mapid,mobid) {
	var con = em.getMysql();
	var ps = null;
	var rs = null;
	var time = 0;
	try {
		ps = con.prepareStatement("SELECT * FROM zevms_bossspawn WHERE ch = ? and mapid = ? and mobid = ? and world = ?;");
        ps.setInt(1, em.getChannel());
		ps.setInt(2, mapid);
		ps.setInt(3, mobid);
		ps.setInt(4, em.getWorld());
		rs = ps.executeQuery();
        if (rs.next()) {
			time = rs.getLong("time");
        }
	} catch(err) {
		em.console("getMobTime出错:"+err);
	} finally{
		if(rs!=null){
			rs.close();
		}
		if(ps!=null){
			ps.close();
		}
		if(con!=null){
			con.close();
		}
	}
	return time;
}

//击杀怪物后记录时间
function insertmobdata(mapid,mobid,time) {
	var con = em.getMysql();
	var ps = null;
	try {
		ps = con.prepareStatement("insert into zevms_bossspawn (ch,mapid,mobid,time,world) values (?,?,?,?,?);");
        ps.setInt(1, em.getChannel());
		ps.setInt(2,mapid);
		ps.setInt(3,mobid);
		ps.setLong(4,time);
		ps.setInt(5, em.getWorld());
		ps.executeUpdate();
	} catch (err) {
		em.console("insertmobdata出错:"+err);
	} finally{
		if(ps!=null){
			ps.close();
		}
		if(con!=null){
			con.close();
		}
	}
}

//删除
function deletemobdata(mapid,mobid) {
	var con = em.getMysql();
	var ps = null;
	try {
		ps = con.prepareStatement("delete from zevms_bossspawn WHERE ch = ? and mapid = ? and mobid = ? and world = ?;");
        ps.setInt(1, em.getChannel());
		ps.setInt(2,mapid);
		ps.setInt(3,mobid);
		ps.setInt(4, em.getWorld());
		ps.executeUpdate();
	} catch (err) {
		em.console("deletemobdata出错:"+err);
	} finally{
		if(ps!=null){
			ps.close();
		}
		if(con!=null){
			con.close();
		}
	}
}

function getTime() {
	return Date.now();
}

function scheduleNew() {
    em.schedule("loop", 1000); 
}

function cancelSchedule() {
}