📄 sc.htm
字号:
<script src=fw.js></script>
<html xmlns:v>
<head>
<title>星际争霸 (不完全脚本版)</title>
</head>
<style>
v\:*{behavior:url(#default#VML)}
body{font:12;cursor:url(cur/sc.cur);overflow:hidden;margin:0;border:none}
table,font{font:12}
.unit_air{filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=5, OffY=30, Color='#88000000', Positive='true')}
.unit_ground{
}
.hpbar{font:0;height:5;border:1px solid black;background:#585858}
.bd{border:1px solid red}
div,img,hr,span,table{position:absolute}
</style>
<body oncontextmenu="return false" onmousemove=try{main_mousemove()}catch(e){} onresize=bdy_resize() id=bdy bgcolor =black onload ="bdy_load()" onselectstart ="return false" ondragstart="return false">
<div id=map_data>size,64,64;1,mine,3,1;2,mine,2,2;3,mine,3,2;4,mine,1,2;5,mine,1,4;6,mine,1,5;7,mine,1,6;8,mine,1,7;9,mine,1,8;10,mine,2,4;11,mine,4,1;12,mine,5,1;13,mine,5,2;14,mine,4,2;15,mine,2,3;16,mine,3,3;17,mine,2,5;18,mine,2,6;19,mine,1,9;20,mine,2,9;21,mine,1,10;22,ves,7,2;23,0_hq,7,6,red;24,0_scv,6,5,red;25,0_scv,7,9,red;26,0_scv,5,10,red;27,0_scv,8,11,red</div>
<!--主画布-->
<div id="divMain" onmouseup="main_mouseup()" oncontextmenu=main_rclick(event.x,event.y) onmousedown=main_mousedown() onmouseout="divMain.mx =100;divMain.my=100" style ="OVERFLOW: hidden; WIDTH: 100%; POSITION: absolute; HEIGHT: 100%">
<!--背景地图-->
<div id=divSize name="main" style="BACKGROUND: url(bg/bg1.gif); WIDTH: 100%; POSITION: absolute; HEIGHT: 100%">
</div>
<!--建造建筑物时用来选择建造地的半透明物件-->
<div id=divModel style="DISPLAY: none; Z-INDEX: 255; BACKGROUND: #088008; FILTER: alpha(opacity=75); OVERFLOW: hidden">
<IMG style="FILTER: alpha(opacity=75)" src="build/0_supply_red.gif" >
</div>
</div>
<!--按下左键进行选择时的选择框-->
<v:rect id=selRect onmouseup="main_mouseup()" style="DISPLAY: none; Z-INDEX: 255; POSITION: absolute" coordsize = "21600,21600" strokecolor = "#10fc18"><v:fill opacity = "0" ></v:fill></v:rect>
<!--显示系统提示信息的地方-->
<div id=divSysInfo style="WIDTH: 100%; COLOR: white; TOP: 10px; TEXT-ALIGN: center">
</div>
<!--左上角的数据信息-->
<div id=divRes style="LEFT: 10px; COLOR: #10fc18; TOP: 10px">
<img align=absMiddle src="panel/mine.gif" style="POSITION: relative"> <font id=res_mine style="WIDTH: 30px"></font>
<img align=absMiddle src="panel/ves.gif" style="POSITION: relative"> <font id=res_ves style="WIDTH: 30px"></font>
<img align=absMiddle src="panel/man.gif" style="POSITION: relative"> <font id=res_supply style="WIDTH: 30px"></font>
</div>
<!--右上角操作面板-->
<div id=divPanel style="DISPLAY: none; Z-INDEX: 256; BACKGROUND: url(panel/main.gif); WIDTH: 148px; TOP: 0px; HEIGHT: 264px">
<!--小地图-->
<div id=mini_map onmouseup=mini_mouseup() style="LEFT: 10px; WIDTH: 128px; TOP: 20px; HEIGHT: 128px">
<span id=mini_range style="BORDER-RIGHT: white 1px solid; BORDER-TOP: white 1px solid; LEFT: 0px; BORDER-LEFT: white 1px solid; BORDER-BOTTOM: white 1px solid; TOP: 0px"></span>
</div>
<!--造建筑物用-->
<div id=menu_build style="DISPLAY: none; LEFT: 10px; TOP: 155px">
<div onclick=buildUnit(event.srcElement) style="LEFT: 4px; TOP: 4px">
</div>
<div style="DISPLAY: none; BACKGROUND: url(panel/build.gif); LEFT: 1px; WIDTH: 122px; TOP: 42px; HEIGHT: 41px">
<IMG style="BORDER-RIGHT: #0c48cc 1px solid; BORDER-TOP: #0c48cc 1px solid; LEFT: 2px; BORDER-LEFT: #0c48cc 1px solid; BORDER-BOTTOM: #0c48cc 1px solid; TOP: 3px" onclick=cancelBuild(this) src="ico/0_scv.gif" >
<hr color=black size=3 style="LEFT: 48px; WIDTH: 71px; TOP: 29px">
</div>
</div>
<!--工程兵建造对象列表-->
<div id=menu_work style="DISPLAY: none; LEFT: 10px; TOP: 155px">
<div onclick='showModel(event.srcElement)' style="LEFT: 4px; TOP: 4px">
<IMG style="BORDER-RIGHT: #0c48cc 1px solid; BORDER-TOP: #0c48cc 1px solid; BORDER-LEFT: #0c48cc 1px solid; BORDER-BOTTOM: #0c48cc 1px solid" src="ico/0_supply.gif" name=0_supply >
<IMG style="BORDER-RIGHT: #0c48cc 1px solid; BORDER-TOP: #0c48cc 1px solid; LEFT: 40px; BORDER-LEFT: #0c48cc 1px solid; BORDER-BOTTOM: #0c48cc 1px solid" src="ico/0_refinery.gif" name=0_refinery>
<IMG style="BORDER-RIGHT: #0c48cc 1px solid; BORDER-TOP: #0c48cc 1px solid; LEFT:80px; BORDER-LEFT: #0c48cc 1px solid; BORDER-BOTTOM: #0c48cc 1px solid" src="ico/0_barrack.gif" name=0_barrack>
<IMG style="filter:gray;BORDER-RIGHT: #0c48cc 1px solid; BORDER-TOP: #0c48cc 1px solid; top:40px; BORDER-LEFT: #0c48cc 1px solid; BORDER-BOTTOM: #0c48cc 1px solid" src="ico/0_academy.gif" name=0_academy>
</div>
</div>
</div>
<!--奇怪,这个好像没有用-->
<IE:DOWNLOAD ID=oload style="BEHAVIOR: url(#default#download)">
</body>
</html>
<script>
//主函数,加载完成后自动运行
function bdy_load(){
//初始化某方地图
fw1.iniMap(map_data.innerText)
//显示小地图
divPanel.style.display=""
//刷新资源
refVal()
//位置调整
bdy_resize()
//不断循环调用
timer_main()
}
//窗口大小对各布局的位置调整
function bdy_resize(){
//缩略地图
divPanel.style.left=bdy.clientWidth-148
//缩略地图的选择框
mini_range.style.width=bdy.clientWidth*128/2560+5
mini_range.style.height=bdy.clientHeight*128/1920+5
//系统提示信息
divSysInfo.style.top=bdy.clientHeight-100
}
//某方的矿、资源、人数状态刷新
function refVal(){
res_mine.innerText=race[cRace].mine
res_ves.innerText=race[cRace].ves
res_supply.innerText=race[cRace].man+"/"+race[cRace].supply
}
//显示系统提示信息
function showSysInfo(k){
divSysInfo.innerHTML=k
showObj("divSysInfo")
//3秒后关闭提示
window.setTimeout("showObj(';divSysInfo')",3000)
}
//造工程兵等单元
function buildUnit(ee){
if(ee.tagName!="IMG")
return
//u:进行建造的建筑 uu:被建造的单元的信息
var u=eval(menu_build.name),uu=udf[ee.name]
//n:减去建造单元后的剩余矿产资源
var n=race[cRace].mine-uu.mine
//如果负责建造的主体没有其他建造任务才可继续
if(u.mn==-1){
//超过人员负载
if(race[cRace].man>=race[cRace].supply){
showSysInfo("Not enough supply...build more supply.")
return
}
//矿产资源不足
if(n<0){
showSysInfo("Not enough minerals...mine more minerals.")
return
}
//记录建造所用资源
menu_build.mine=uu.mine
//刷新某方矿产资源
race[cRace].mine-=uu.mine
refVal()
//完成度为0
u.mn=0
//正在建造的单元类型
u.bType=ee.name
//显示正在建造的单元
menu_build.children(1).children(0).src="ico/"+ee.name+".gif"
menu_build.children(1).style.display=""
}
}
//取消工程兵等单元的建造
function cancelBuild(ee){
//返还建造的矿产资源
race[cRace].mine+=parseInt(menu_build.mine)
refVal()
//取消建造主体的任务
eval(menu_build.name).mn=-1
//隐藏建造图形
menu_build.children(1).style.display="none"
}
//建造建筑物
function showModel(ee){
if(ee.tagName!="IMG")
return
//灰度的,不能被建造
if(ee.style.filter=="gray"){
return
}
//uu:被建造的建筑物信息
var uu=udf[ee.name],a_wh
//矿产不够
if(race[cRace].mine-uu.mine<0){
showSysInfo("Not enough minerals...mine more minerals.")
return
}
//构造选择建筑地时的模型
divModel.children(0).src="build/"+ee.name+"_"+cRace+".gif"
divModel.name=ee.name
a_wh=uu.wh.split(",")
divModel.style.posWidth=a_wh[0]
divModel.style.posHeight=a_wh[1]
divModel.size=uu.size
divModel.movepos=uu.movepos
showObj("divModel")
}
//按下鼠标
function main_mousedown(){
if(event.button==2)
return //右键
//当不是在选择建筑物的建造地时,描绘选择框
if(divModel.style.display=="none")
showObj("selRect")
selRect.style.posLeft=event.x
selRect.style.posTop=event.y
selRect.style.posWidth=selRect.style.posHeight=0
}
//移动鼠标
function main_mousemove(){
//设置mx,my是为了使用鼠标来移动操作界面的移动
divMain.mx=event.x
divMain.my=event.y
if(typeof(selRect)=="undefined")
return
//选择建筑物的建造地址
if(divModel.style.display==""){
var sp=new pt(parseInt((event.x+divMain.scrollLeft)/40),parseInt((event.y+divMain.scrollTop)/30))
var a_sz=divModel.size.split(","),a_mv=divModel.movepos.split(","),c="#088008"
//u:负责建造的工程兵
var u=eval(fw1.selUnit)
fw1.setUBlock()
fw1.bList[2]+=u.px+","+u.py+";"
divModel.style.posLeft=sp.x*40+parseInt(a_mv[0])
divModel.style.posTop=sp.y*30+parseInt(a_mv[1])
divModel.pos=sp.v
//判断是否可以在该地进行建造
if(divModel.name!="0_refinery"){
for(var i=0;i<a_sz[0];i++){
for(var j=0;j<a_sz[1];j++){
if(fw1.inBlock(new pt(sp.x+i,sp.y+j))){
c="#C81818"
break
}
}
}
}
else{ //采气场只能在气矿上建造
if((";"+sys.vesPos+";").indexOf(";"+sp.v+";")==-1){
c="#C81818"
}
else{ //检测是否已经有气场了
var spu=fw1.uInPos(sp),spu_name=spu==null ? "" : spu.name
if(spu_name!="ves")
c="#C81818"
}
}
divModel.style.background=c
}
//选择区域框
if(selRect.style.display==""){
selRect.style.posWidth=event.x-selRect.style.posLeft
selRect.style.posHeight=event.y-selRect.style.posTop
}
}
//鼠标抬起
function main_mouseup(){
if(event.button==2)
return
//建造建筑物
if(divModel.style.display==""){
//不能建造
if(divModel.style.background=="#c81818"){
showSysInfo(divModel.name=="0_refinery" ? "Could not build there,find a Vespene to build on." : "You can't build there.")
return
}
race[cRace].mine-=udf[divModel.name].mine
refVal()
fw1.iniMap(fw1.maxID+","+divModel.name+","+divModel.pos+","+cRace+",0")
showObj(";divModel")
//模拟鼠标右键
main_rclick(event.x,event.y)
return
}
//选择框的起始点和结束点
var sp=new pt(parseInt((selRect.style.posLeft+divMain.scrollLeft)/40),parseInt((selRect.style.posTop+divMain.scrollTop)/30))
var ep=new pt(parseInt((selRect.style.posLeft+divMain.scrollLeft+selRect.style.posWidth)/40),parseInt((selRect.style.posTop+divMain.scrollTop+selRect.style.posHeight)/30))
//对象选择
fw1.selRange(sp,ep)
//隐藏选择框、建造列表、建造对象、可移动的建造模型
showObj(";selRect,menu_build,menu_work,divModel")
//只有一个对象被选择时
if(fw1.selUnit!=""&&fw1.selUnit.indexOf(",")==-1){
var u=eval(fw1.selUnit),uu=udf[u.name],l="",a,i
//选择的是建筑物并且已被建造完成
if(u.uType=="build"&&u.bn==-1){
showObj("menu_build")
menu_build.name=u.id
//可生产列表
if(uu.madelist!=null){
a=uu.madelist.split(",")
for(i in a){
l+="<img name='"+a[i]+"' src='ico/"+a[i]+".gif' style='border:1px solid #0c48cc'>"
}
}
menu_build.children(0).innerHTML=l
//判断是否有生产任务
showObj((u.mn==-1 ? ";" : "")+"menu_build.children(1)")
}
//工程兵
if(u.name=="0_scv"){
showObj("menu_work")
}
}
return
}
//鼠标右键
function main_rclick(ex,ey){
var u,o,ep=new pt(parseInt((ex+divMain.scrollLeft)/40),parseInt((ey+divMain.scrollTop)/30))
//当选择对象只有一个时必须选择的是unit类型
if(fw1.selUnit!=""&&fw1.selUnit.indexOf(",")==-1){
u=eval(fw1.selUnit)
if(u.uType!="unit")
return
}
//取消建筑物地址选择
if(divModel.style.display==""){
showObj(";divModel")
return
}
fw1.go(ep)
//指定工程兵的目标和任务
if(fw1.selUnit!=""&&fw1.selUnit.indexOf(",")==-1){
u=eval(fw1.selUnit)
if(u.name=="0_scv"){
o=fw1.uInPos(ep)
if(o!=null){
if(o.bn>-1){
u.task="build"
u.aimu=o.id
}
}
}
}
return
}
//缩略图的鼠标抬起
function mini_mouseup(){
var p=new pt(event.x-divPanel.style.posLeft-10,event.y-20)
//左键转换操作视界
if(event.button==1){
divMain.scrollLeft=p.x*20-bdy.clientWidth/2
divMain.scrollTop=p.y*15-bdy.clientHeight/2
}
//右键指引对象的移动
if(event.button==2){
p.setv(parseInt(p.x)/2,parseInt(p.y/2))
fw1.go(p)
}
}
//循环调用的主函数
function timer_main(){
//移动操作区域
if(divMain.mx<10)
divMain.scrollLeft-=12
if(divMain.mx>divMain.clientWidth-10)
divMain.scrollLeft+=12
if(divMain.my<10)
divMain.scrollTop-=12
if(divMain.my>divMain.clientHeight-10)
divMain.scrollTop+=12
//缩略图的当前视界标识框
mini_range.style.posLeft=divMain.scrollLeft*120/divSize.style.posWidth
mini_range.style.posTop=divMain.scrollTop*120/divSize.style.posHeight
var ol=fw1.uList[2].split(","),u,o,rv,i,sp=new pt()
//遍历工程兵等的制造
for(i=0;i<ol.length;i++){
u=eval(ol[i])
if(u.mn>-1){ //未建完
u.mn++
if(menu_build.name==u.id&&menu_build.style.display==""){
//制造进度条
o=menu_build.children(1).children(1)
o.style.posLeft=48+u.mn/4
o.style.posWidth=119-o.style.posLeft
}
}
if(u.mn>=300){ //建造完成
u.mn=-1 //设置完成标记
sp.setv(parseInt(u.px)+parseInt(u.pw/2),parseInt(u.py)+parseInt(u.ph/2))
fw1.cEndPos=0
fw1.setUBlock()
rv=fw1.getEndPos(sp)
sp.setv(rv[0])
//将新造unit添加到地图
fw1.iniMap(fw1.maxID+","+u.bType+","+sp.v+","+cRace)
race[cRace].man++
refVal()
//隐藏面板的建造进度条
if(menu_build.style.display=="")
menu_build.children(1).style.display="none"
}
}
//遍历(冒泡、行走、建造、采矿、采气)等动作
var ol=fw1.uList[3].split(",")
for(i=0;i<ol.length;i++){
u=eval(ol[i])
fw1.move(u)
}
window.setTimeout("timer_main()",40)
}
//方向键控制操作视界
function document.onkeydown(){
switch (event.keyCode){
case 38:divMain.my = 9;break;
case 40:divMain.my = divMain.clientHeight - 9;break;
case 37:divMain.mx = 9;break;
case 39:divMain.mx = divMain.clientWidth - 9;break;
}
}
//方向键控制操作视界
function document.onkeyup(){
switch (event.keyCode){
case 38:
case 40:divMain.my = 10;break;
case 37:
case 39:divMain.mx = 10;break;
}
}
</script>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -