⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fw.js

📁 “星际争霸”地球人都知道吧
💻 JS
📖 第 1 页 / 共 2 页
字号:
					if(u.children(1).style.display!="none"){
						var aimu=eval(u.aimu)
						dp.setv(this.getMinLen(u,aimu)[1])
						this.setDir(u,dp)
						this.setFight(u)
						//if(aimu.task!="attack"){
						//	aimu.aimu=u.id
						//	aimu.task="attack"
						//}
					}
					eval(u.aimu).chp-=0.2
				}
			}
			if(u.task=="build"){
				o=eval(u.aimu)
				u.tmMove=parseInt(u.tmMove)+1
				if(u.tmMove==10){
					dp.setv(o.px==sp.x ? 0 : (o.px>sp.x ? 1 : -1),o.py==sp.y ? 0 : (o.py>sp.y ? 1 : -1))
					this.setDir(u,dp)
					this.setSpark(u)
				}
				o.bn=parseInt(o.bn)+1
				var per=parseInt(0.3*o.bn/udf[o.name].btime)
				o.children(0).children(1).children(0).style.width=per+"%"
				if(per==50)
					o.children(1).children(0).style.posLeft=-o.children(1).style.posWidth
				if(per>=100){
					o.children(1).children(0).style.posLeft=0
					o.bn=-1
					u.task=""
					u.aimu=""
					if(o.name=="0_academy"){
						race[cRace].keyBuild+=o.name+","
						if(menu_build.children(0).children.length==3){
							menu_build.children(0).children(1).style.filter=""
							menu_build.children(0).children(2).style.filter=""
						}
					}
					if(o.name=="0_supply")
						race[cRace].supply+=8
					if(o.name=="0_barrack")
						menu_work.children(0).children(3).style.filter=""
					refVal()
					u.children(2).innerHTML=""
					if(o.name=="0_refinery")
						o.children(2).innerHTML="<img src='block/ves_gas.gif' style=left:55;top:-20>"
				}
			}
			if(u.aimPos!=""){
				var a=u.aimPos.split(";"),ad,s
				u.aimn=parseInt(u.aimn)
				ad=a[u.aimn].split(",")
				if(isNaN(ad[0])){
					o=eval(ad[0])
					if(u.task=="gasing"){
						if(o.aimu=="")
							o.aimu=u.id
						if(o.aimu!=u.id){
							dp.setv((parseInt(o.px)+1)==sp.x ? 0 : ((parseInt(o.px)+1)>sp.x ? 1 : -1),o.py==sp.y ? 0 : (o.py>sp.y ? 1 : -1))
							this.setDir(u,dp)
							return
						}
					}
					u.tmMove=parseInt(u.tmMove)+1
					if(u.tmMove==5){
						if(u.task=="mining"){
							dp.setv(o.px==sp.x ? 0 : (o.px>sp.x ? 1 : -1),o.py==sp.y ? 0 : (o.py>sp.y ? 1 : -1))
							this.setDir(u,dp)
							this.setSpark(u)
						}
						if(u.task=="gasing")
							u.style.display="none"
					}
					if(u.tmMove<ad[1])
						return
					if(u.task=="gasing"){
						u.style.display=""
						o.aimu=""
					}
					u.children(2).innerHTML=""
				}
				else{
					fw1.bList[2]=""
					ep.setv(a[u.aimn])
					u.path=this.getPath(sp,ep)
				}
				if(u.task=="mining"&&u.aimn==1)
					u.children(1).children(0).style.posLeft=-u.cw
				if(u.task=="gasing"&&u.aimn==1)
					u.children(1).children(0).style.posLeft=-2*u.cw
				if((u.task=="mining")&&u.aimn==2){
					u.children(1).children(0).style.posLeft=0
					race[cRace].mine+=8
					refVal()
				}
				if((u.task=="gasing")&&u.aimn==2){
					u.children(1).children(0).style.posLeft=0
					race[cRace].ves+=8
					refVal()
				}
				u.aimn=(u.aimn+1)%a.length
			}
			return
		}
		u.tmDir=(parseInt(u.tmDir)+1)%4
		u.tmMove=(parseInt(u.tmMove)+1)%5
		ep.setv(u.path.slice(0,(u.path+";").indexOf(";")))
		ep.setv(ep.x*40-(u.cw-40)/2,ep.y*30-(u.cw-30)/2)
		if(Math.abs(ep.x-u.style.posLeft)<u.speed)
			u.style.posLeft=ep.x
		if(Math.abs(ep.y-u.style.posTop)<u.speed)
			u.style.posTop=ep.y
		sp.setv(u.style.posLeft,u.style.posTop)
		dp.setv(ep.x==sp.x ? 0 : (ep.x>sp.x ? 1 : -1),ep.y==sp.y ? 0 : (ep.y>sp.y ? 1 : -1))
		if(u.task=="attack"){
			var aimu=eval(u.aimu)
			if(this.getMinLen(u,aimu)[0]<=udf[u.name].range&&Math.abs(u.px*40-(u.cw-40)/2-u.style.posLeft)<=u.speed&&Math.abs(u.py*30-(u.cw-30)/2-u.style.posTop)<=u.speed){
				u.path=""
				return
			}
		}
		if(dp.v=="0,0"){
			u.path=u.path.slice((u.path+";").indexOf(";")+1)
			if(u.children(1).offsetWidth==u.offsetWidth*3)
				u.children(1).scrollLeft=u.children(1).style.filter=="" ? 0 : 2*u.offsetWidth
			if(u.path==""&&u.uType=="unit"){
				this.searchEnemy()
			}
			return
		}
		this.setDir(u,dp)
		if(dp.x*dp.y==0){
			u.style.posLeft+=dp.x*u.speed
			u.style.posTop+=dp.y*u.speed
		}
		else{
			u.style.posLeft+=dp.x*(u.speed>2 ? u.speed-1 : u.speed)
			if(u.tmDir!=0)
				u.style.posTop+=dp.y*(u.speed>2 ? u.speed-1 : u.speed)
		}
		sp.setv(parseInt((u.style.posLeft+u.cw/2)/40),parseInt((u.style.posTop+u.cw/2)/30))
		u.px=sp.x
		u.py=sp.y
		if(u.className=="unit_ground")
			u.style.zIndex =sp.y
		eval(u.id+"_mini").style.posLeft=sp.x*2
		eval(u.id+"_mini").style.posTop=sp.y*2
	}
	this.searchEnemy=function(){
		var n,u,aimu,a1=this.uList[3].split(","),a2=(this.uList[2]+","+this.uList[3]).split(",")
		for(var i in a1){
			u=eval(a1[i])
			if(u.name!="0_scv"&&u.name!="0_medic"){
				for(var j in a2){
					aimu=eval(a2[j])
					if(aimu.race!=u.race){
						n=this.getMinLen(u,aimu)[0]
						if(n<=6){
							var sp=new pt(u.px,u.py),ep=new pt(aimu.px,aimu.py)
							this.setUBlock(u)
							this.bList[2]=""
							u.path=this.getPath(sp,ep)
							u.aimu=aimu.id
							u.task="attack"
							break
						}
					}
				}
			}
		}
	}
	this.setDir=function(u,dp){
		var n=2,f=""
		if(dp.v=="1,1"||dp.v=="-1,1")
			n=3
		if(dp.v=="0,1")
			n=4
		if(dp.v=="-1,1")
			f="fliph"
		if(dp.v=="-1,0")
			f="fliph"
		if(dp.v=="-1,-1")
			f="fliph"
		if(dp.v=="0,-1")
			n=0
		if(dp.v=="1,-1"||dp.v=="-1,-1")
			n=1
		u.children(1).children(0).style.posTop=-n*u.children(1).style.posWidth
		u.children(1).style.filter=f
		u.face=n+f.slice(0,1)
		if(u.mvstyle=="walk"&&u.tmMove==4){
			u.pose=(parseInt(u.pose)+1)%4
			n=u.pose<2 ? u.pose : (u.pose==2 ? 0 : 2)
			u.children(1).scrollLeft=n*u.children(1).style.posWidth
		}
	}
	this.inBlock=function(p){
		return (";"+this.bList[0]+";"+this.bList[1]+";"+this.bList[2]+";").indexOf(";"+p.v+";")>-1 ? true : false
	}
	this.paint=function(p,c){
		if(p.x>=0&&p.y>=0)
			tbMap.rows(p.y).cells(p.x).bgColor=c
	}	
	this.isPass=function(sp,ep){
		var cp=new pt(sp.v),b=true
		for(var ti=0;ti<500;ti++){
			cp.setv(ep.x==cp.x ? cp.x : (ep.x>cp.x ? cp.x+1 : cp.x-1),ep.y==cp.y ? cp.y : (ep.y>cp.y ? cp.y+1 : cp.y-1))
			if(this.inBlock(cp)){
				b=false
				break
			}
			if(cp.v==ep.v)
				break
		}
		return b
	}
	this.getEndPos=function(ep,ut){
		var rv=new Array("","")
		var cp=new pt(),i,j,ol,o
		var ad,a=new Array("0,0","1,0","1,1","0,1","-1,1","-1,0","-1,-1","0,-1","1,-1","2,0","2,1","2,2","1,2","0,2","-1,2","-2,2","-2,1","-2,0","-2,-1","-2,-2","-1,-2","0,-2","1,-2","2,-2","2,-1")
		for(i=this.cEndPos;i<a.length;i++){
			a[i]=a[i].split(",")
			cp.setv(ep.x+parseInt(a[i][0]),ep.y+parseInt(a[i][1]))
			if(ut=="airUnit"){
				rv[0]=cp.v
				break
			}
			else if(!this.inBlock(cp)&&cp.x>-1&&cp.y>-1){
				if(ut=="mining"){
					ad=this.uList[1].split(",")
					for(j in ad){
						o=eval(ad[j])
						if(Math.abs(cp.x-o.px)+Math.abs(cp.y-o.py)==1){
							rv[0]=cp.v
							rv[1]=o.id
							break
						}
					}
					if(rv[0]!="")
						break
				}
				else{
					rv[0]=cp.v
					break
				}
			}
		}
		this.cEndPos=i+1
		return rv
	}
	this.getPath=function(sp,ep){
		var cp=new pt(sp.v),op=new pt(),np=new pt()
		var l="",s,f=0
		while(cp.v!=ep.v){
			np.setv(ep.x==cp.x ? cp.x : (ep.x>cp.x ? cp.x+1 : cp.x-1),ep.y==cp.y ? cp.y : (ep.y>cp.y ? cp.y+1 : cp.y-1))
			if(this.inBlock(np)&&!this.inBlock(cp)&&f==0){
				l+=cp.v+";"
				op.setv(cp.v)
			}
			if(!this.inBlock(np)&&this.inBlock(cp)){
				s=this.getSeg(op,np)
				f=s=="" ? 1 : 0
				l+=s
			}
			if(!this.inBlock(cp)&&f==0)
				l+=cp.v+";"
			cp.setv(np.v)
		}
		l=sp.v+";"+l
		l=f==0 ? l+ep.v : l.slice(0,-1)
		a=l.split(";")
		l=""
		var tp1=new pt(),tp2=new pt()
		for(i=0;i<a.length-1;i++){
			tp1.setv(a[i])
			n=i
			for(j=i+1;j<a.length;j++){
				tp2.setv(a[j])
				if(this.isPass(tp1,tp2)){
					n=j
				}
			}
			if(i!=0)
				l+=tp1.v+";"
			tp2.setv(a[n])
			l+=tp2.v+";"
			i=n
		}
		l=l.slice(0,-1)
		return l
	}
	this.getSeg=function(sp,ep){
		var bpt=new pt(),cpt=new pt(),bp1=new pt(),bp2=new pt(),cp1=new pt(sp.v),cp2=new pt(sp.v)
		var l="",l1="",l2="",f,open1=true,open2=true
		bp1.setv(ep.x==sp.x ? sp.x : (ep.x>sp.x ? sp.x+1 : sp.x-1),ep.y==sp.y ? sp.y : (ep.y>sp.y ? sp.y+1 : sp.y-1))
		bp2.setv(bp1.v)
		for(var ti=0;ti<100;ti++){
			f=0
			for(i=0;i<14;i++){
				cpt.setv(cp1.x+this.adp[i][0],cp1.y+this.adp[i][1])
				if(bp1.v==cpt.v)
					f=1
				if(f==1&&!this.inBlock(cpt)&&this.adp[i][0]*this.adp[i][1]==0)
					break
				if(this.inBlock(cpt))
					bpt.setv(cpt.v)
			}
			bp1.setv(bpt.v)
			cp1.setv(cpt.v)
			l1+=cp1.v+";"
			f=0
			for(i=13;i>=0;i--){
				cpt.setv(cp2.x+this.adp[i][0],cp2.y+this.adp[i][1])
				if(bp2.v==cpt.v)
					f=1
				if(f==1&&!this.inBlock(cpt)&&this.adp[i][0]*this.adp[i][1]==0)
					break
				bpt.setv(cpt.v)
			}
			bp2.setv(bpt.v)
			cp2.setv(cpt.v)
			if(cp1.v==sp.v&&cp2.v==sp.v)
				break
			l2+=cp2.v+";"
			if(cp1.x<0||cp1.y<0)
				open1=false
			if(cp2.x<0||cp2.y<0)
				open2=false
			if(!open1&&!open2)
				break
			if(cp1.v==ep.v&&open1){
				l=l1
				break
			}
			if(cp2.v==ep.v&&open2){
				l=l2
				break
			}
		}
		return l
	}
}
function pt(x,y){
	this.setv=function(x,y){
		if(y!=null){
			this.x=parseInt(x)
			this.y=parseInt(y)
		}
		else{
			var a=x.split(",")
			this.x=parseInt(a[0])
			this.y=parseInt(a[1])
		}
		this.v=this.x+","+this.y
	}
	if(x!=null)
		this.setv(x,y)
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -