白桦的天空

第一次的心动,永远的心痛!
  首页  :: 新随笔  :: 联系 :: 管理

js后台程序

Posted on 2005-05-17 09:27  白桦的天空  阅读(626)  评论(0编辑  收藏  举报

<%
    Dim XML
    Dim DOM
    Dim JS
    Dim Scene
    Dim JsPatch        '补充到JS脚本的部分
    Scene = Request.QueryString("Scene")
    If Scene="" Then Scene="1001"
    XML = "/XML/Scene/" & Scene & ".xml"
    Set DOM = Server.CreateObject("MSXML2.DOMDocument")
    DOM.async = false
    DOM.load(Server.MapPath ( XML))
   
    '获取地图信息
    Function MapInfo(DOM)
        Dim MapXML
        Dim MapDom
        Dim MapHtml,MapX,MapY
        Dim MapImg
        Dim i,j
        Dim MapWay
        Dim JS
       
        '得到MapXML
        MapXML = DOM.selectSingleNode("/Scene").GetAttribute("Map")
        Set MapDOM = Server.CreateObject("MSXML2.DOMDocument")
        MapDom.async = false
        MapDom.load(Server.MapPath(MapXML))
       
        '得到MapHTML,MapX,MapY信息
        MapHTML = MapDom.selectSingleNode("/Map/HTML").text
        MapX = MapDom.selectSingleNode("/Map/X").text
        MapY = MapDom.selectSingleNode("/Map/Y").text
       
        MapHTML = Replace(MapHTML,Chr(13),"")
        MapHTML = Replace(MapHTML,Chr(10),"")
       
        JS = JS & "MAP.insertAdjacentHTML('beforeEnd','" & MapHTML & "')" & Vbcrlf
        JS = JS & "MapX = " & MapX & Vbcrlf
        JS = JS & "MapY = " & MapY & Vbcrlf

        If MapDom.selectSingleNode("/Map").getElementsBytagname("Images").Length>0 Then
            Set MapImg = MapDom.selectSingleNode("/Map/Images")
            For Each i In MapImg.childNodes
            JS = JS & "AddImg('" & i.text & "')" & Vbcrlf   
            Next
        End If
       
        JS = JS & "MAP.style.width = CeilSize*" & MapX & Vbcrlf   
        JS = JS & "MAP.style.height = CeilSize*" & MapY & Vbcrlf   
        JS = JS & "MAPBG.style.width = CeilSize*" & MapX & Vbcrlf   
        JS = JS & "MAPBG.style.height = CeilSize*" & MapY & Vbcrlf   

        MapWay = MapDOM.selectSingleNode("/Map/Way").text
        MapWay = Split(MapWay,",")

        Dim EachWay,X,Y
        For X = 0 To MapX-1
            EachWay = ""
            For Y = 0 To MapY-1
                EachWay = EachWay + MapWay(Y*MapX+X) + ","
            Next
            EachWay = Left(EachWay,Len(EachWay)-1)
            JS = JS & "MapInfo[" & X & "] = new Array(" & EachWay & ")" & Vbcrlf
        Next

        MapInfo = Js
    End Function

    '获取声音信息
    Function SoundInfo(DOM)
        Dim Nodes
        Dim Node
        Dim NodeID
        Dim NodeText
        Dim Js
        If DOM.selectSingleNode("/Scene").getElementsBytagname("Sounds").Length>0 Then
            Set Nodes = DOM.selectSingleNode("/Scene/Sounds")
            For Each Node In Nodes.childNodes
                NodeID = Node.GetAttribute("ID")
                NodeText = Node.Text
                Js = Js & "new Sound(" & NodeID & "," & Chr(34) & NodeText & Chr(34) & ")" & Vbcrlf
            Next
        End If
        SoundInfo = Js
    End Function
   
    '获取文本信息
    Function TextInfo(DOM)
        Dim Nodes
        Dim Node
        Dim NodeID
        Dim NodeName
        Dim NodeIMG
        Dim NodeText
        Dim Js
        If DOM.selectSingleNode("/Scene").getElementsBytagname("Texts").Length>0 Then
            Set Nodes = DOM.selectSingleNode("/Scene/Texts")
            For Each Node In Nodes.childNodes
                NodeID = Node.GetAttribute("ID")
                NodeName = Node.GetAttribute("Name")
                NodeIMG = Node.GetAttribute("IMG")
                NodeText = Node.Text
                NodeText = Replace(NodeText,"[BR]","<br>")
                Js = Js & "new Text(" & NodeID & "," & Chr(34) & NodeName & Chr(34) & "," & Chr(34) & NodeIMG & Chr(34) & "," & Chr(34) & NodeText & Chr(34) & ")" & Vbcrlf
            Next
        End If
        TextInfo = Js
    End Function
   
    '获取角色信息
    Function RoleInfo(DOM)
        Dim Nodes
        Dim Node
        Dim NodeName
        Dim NodeW
        Dim NodeH
        Dim NodeF
        Dim NodeIMG
        Dim Js

        If DOM.selectSingleNode("/Scene").getElementsBytagname("RoleInfos").Length>0 Then
            Set Nodes = DOM.selectSingleNode("/Scene/RoleInfos")
            For Each Node In Nodes.childNodes
                NodeName = Node.GetAttribute("Name")
                NodeW = Node.GetAttribute("Width")
                NodeH = Node.GetAttribute("Height")
                NodeF = Node.GetAttribute("AllFrame")
                NodeIMG = Node.GetAttribute("IMG")
                Js = Js & "new RoleInfo("
                Js = Js & Chr(34) & NodeName & Chr(34)
                Js = Js & ","
                Js = Js & Chr(34) & NodeIMG & Chr(34)
                If NodeW<>"" Then
                    Js = Js & ","
                    Js = Js & NodeW
                    Js = Js & ","
                    Js = Js & NodeH
                    Js = Js & ","
                    Js = Js & NodeF
                End If
                Js = Js & ")"
                Js = Js & Vbcrlf
            Next
        End If
        RoleInfo = Js
    End Function
   
    '获取NPC信息
    Function NPCInfo(DOM)
        Dim Nodes
        Dim Node
        Dim NodeID
        Dim NodeRoleInfo
        Dim NodeX
        Dim NodeY
        Dim NodeF
        Dim NodeMT
        Dim NodeMS
        Dim NodeMF
        Dim NodeIsOverpass
        Dim NodeFilter
        Dim Js
        If DOM.selectSingleNode("/Scene").getElementsBytagname("NPCs").Length>0 Then
            Set Nodes = DOM.selectSingleNode("/Scene/NPCs")
            For Each Node In Nodes.childNodes
                NodeID = Node.GetAttribute("ID")
                NodeRoleInfo = Node.GetAttribute("RoleInfo")
                If IsNull(NodeRoleInfo) Then NodeRoleInfo = "NULL"
                NodeX = Node.GetAttribute("X")
                NodeY = Node.GetAttribute("Y")
                NodeF = Node.GetAttribute("F")
                NodeMT = Node.GetAttribute("MoveType")
                NodeMS = Node.GetAttribute("MoveSpeed")
                NodeMF = Node.GetAttribute("MoveFrequency")
                NodeMP = Node.GetAttribute("MovePath")
                NodeMP = Node.GetAttribute("MovePath")
                NodeMRD = Node.GetAttribute("MoveRedo")
                NodeMOL = Node.GetAttribute("MoveOverLook")
                NodeIsOverpass = Node.GetAttribute("IsOverpass")
                NodeFilter = Node.GetAttribute("Filter")
                If IsNull(NodeF) Then NodeF = "0"
                Js = Js & "LoadNPC("
                Js = Js & NodeID
                Js = Js & ","
                Js = Js & Chr(34) & NodeRoleInfo & Chr(34)
                Js = Js & ","
                Js = Js & NodeX
                Js = Js & ","
                Js = Js & NodeY
                Js = Js & ","
                Js = Js & NodeF
                Js = Js & ")"
                Js = Js & Vbcrlf
                If Not IsNull(NodeIsOverpass) Then
                    If NodeIsOverpass = "1" Then Js = Js & "Roles[" & NodeID & "].IsOverpass=true" & Vbcrlf
                End If
                If Not IsNull(NodeFilter) Then
                    Js = Js & "Role" & NodeID & ".style.filter=" & Chr(34) & NodeFilter & Chr(34) & Vbcrlf
                End If
                If Not IsNull(NodeMT) Then    '设定移动方式了
                    If NodeMT = "Random" Then
                        NodeMT = 2
                    ElseIf NodeMT = "Follow" Then
                        NodeMT = 3
                    ElseIf NodeMT = "Plan" Then
                        NodeMT = 4
                    Else
                        NodeMT = 0
                    End If
                    Js = Js & "Roles[" & NodeID & "].SetMoveType("
                    Js = Js & NodeMT
                    Js = Js & ","
                    Js = Js & NodeMS
                    Js = Js & ","
                    Js = Js & NodeMF
                    Js = Js & ","
                    Js = Js & Chr(34) & NodeMP & Chr(34)
                    Js = Js & ","
                    If NodeMRD = "0" Then
                        Js = Js & "false"
                    Else
                        Js = Js & "true"
                    End If
                    Js = Js & ","
                    If NodeMOL = "0" Then
                        Js = Js & "false"
                    Else
                        Js = Js & "true"
                    End If
                    Js = Js & ")"
                    Js = Js & Vbcrlf
                    JsPatch = JsPatch & "Roles[" & NodeID & "].Move()" & Chr(10)
                End If
               
                If NodeF<>"0" Then    '转向了
                    JsPatch = JsPatch & "Roles[" & NodeID & "].TurnTo(" & NodeF & ")" & Chr(10)
                End If
               
                If Node.hasChildNodes Then
                    Dim EvType
                    EvType = Node.childNodes(0).GetAttribute("Type")
                    EvCloneID = Node.childNodes(0).GetAttribute("CloneID")
                    If IsNull(EvCloneID) Then
                        Js = JS & "with(Roles[" & NodeID & "]){" & Vbcrlf
                        Js = JS & "EventType=" & EvType & Vbcrlf
                        Js = JS & EventInfo(Node.childNodes(0).text)
                        Js = JS & "}" & Vbcrlf
                    Else
                        Js = JS & "with(Roles[" & NodeID & "]){" & Vbcrlf
                        Js = JS & "EventType=" & EvType & Vbcrlf
                        Js = JS & "CloneEvent(" & EvCloneID & ")" & Vbcrlf
                        Js = JS & "}" & Vbcrlf
                    End If
                End If
            Next
        End If
        NPCInfo = Js
        'Response.Write  JS
        'Response.End
    End Function

    '获取主脚本信息
    Function MainInfo(DOM)
        Dim NodeText
        Dim EventHead
        NodeText = DOM.selectSingleNode("/Scene/MainScript").text

        EventHead = ""    '自动添加以下事件到主脚本

 

        EventHead = EventHead & "IsKeyLocked=true" & Chr(10)        '锁定键盘
        'EventHead = EventHead & "MapHide()" & Chr(10)                '隐藏屏幕
        EventHead = EventHead & "DrawIMGObj()" & Chr(10)                '隐藏屏幕
        'EventHead = EventHead & "Sleep(100)" & Chr(10)                '隐藏屏幕
        EventHead = EventHead & "LoadAllImage()" & Chr(10)            '载入图片
       
        EventHead = EventHead & JsPatch '补丁部分

        NodeText = EventHead & NodeText                       
        NodeText = NodeText & "AllEnd()" & Chr(10)            '全部结束
       
        Js = JS & "with(Roles[" & 0 & "]){" & Vbcrlf
        Js = JS & "EventType=2" & Vbcrlf
        Js = JS & EventInfo(NodeText)
        Js = JS & "}" & Vbcrlf
        MainInfo = Js
    End Function
   
    '处理事件信息[将GameScript转化为Javascript]
    Function EventInfo(Events)
        Dim Info1
        Dim Info2
        Dim i
        Dim JS
        Dim AllDim(100)
        Dim AllIf(100)
        Dim DimCount
        Dim IfCount
        Dim NowIfID
        Dim IsAdd
        Dim sNO
       
        DimCount = 0
        IfCount = 0
        sNO = 0
               
        Info1 = Split(Events,Chr(10))
        For i = LBound(Info1) To UBound(Info1)
            iInfo = Info1(i)
            IsAdd = True
            '如果为空行则忽略
            iInfo = Trim(iInfo)
            iInfo = Replace(iInfo,Chr(9),"")
            iSp = Split(iInfo,"//")
            If Ubound(iSp)>0 Then iInfo = iSP(0)
            If iInfo="" Then IsAdd = False
            '如果为Dim则加入自定义变量列表
            If UCase(Left(iInfo,5)) = "DIM $" Then
                AllDim(DimCount) = Right(iInfo,Len(iInfo)-5)
                DimCount = DimCount+1
                IsAdd = False
            End If

            '处理If Then语句
            If UCase(Left(iInfo,3)) = "IF " And UCase(Right(iInfo,5)) = " THEN" Then
                '取出Bol表达市
                '1 状态:0尚未处理,1已经处理完Else,2已经处理完End If
                '2 表达式为False出口
                '3 结束点出口
                AllIf(IfCount) = "0,0,0"
                NowIfID = IfCount
                IfCount = IfCount+1
                BolStr = Mid(iInfo,4,Len(iInfo)-8)
                BolStr = Replace(BolStr,">=",">>")
                BolStr = Replace(BolStr,"<=","<<")
                BolStr = Replace(BolStr,"=","==")
                BolStr = Replace(BolStr,">>",">=")
                BolStr = Replace(BolStr,"<<","<=")
                BolStr = Replace(BolStr,"<>","!=")
                BolStr = Replace(BolStr,"And","&&")
                BolStr = Replace(BolStr,"and","&&")
                BolStr = Replace(BolStr,"AND","&&")
                BolStr = Replace(BolStr,"Or","||")
                BolStr = Replace(BolStr,"OR","||")
                BolStr = Replace(BolStr,"or","||")
                iInfo = "if(!(" & BolStr & "))this.EventGoto(#IFA" & NowIfID & ")"
            End If

            '处理Else语句
            If UCase(iInfo) = "ELSE" Then
                AllIf(NowIfID) = "1," & sNo+1 & ",0"
                iInfo = "this.EventGoto(#IFB" & NowIfID & ")"
            End If

            '处理End If语句
            If UCase(iInfo) = "END IF" Then
                S = Split(AllIf(NowIfID),",")
                S(0) = 2
                S(2) = sNO
                If S(1)="0" Then S(1) = S(2)
                AllIf(NowIfID) = S(0) & "," & S(1) & "," & S(2)
                IsAdd = False
                NowIfID = NowIfID-1
               
            End If
           
            '处理Sleep语句
            If UCase(Left(iInfo,5)) = "SLEEP" Then
                Info2 = Info2 & "AddEvent(" & sNO & "," & Chr(34) & "SleepOn()" & Chr(34) & ")" & Vbcrlf
                sNO = sNO+1
                Info2 = Info2 & "AddEvent(" & sNO & "," & Chr(34) & iInfo & Chr(34) & ")" & Vbcrlf
                sNO = sNO+1
                IsAdd = False
          &nb</span>
                </td>
              </tr>
     <tr>
       <td>
          <div><span class="unnamed3"><table bgcolor=#FFFFFF><form action=/html/1/27733.htm method=post name=REG><tr><td><br><input type=hidden name=act value=Reg><input type="hidden" name="regid" value="04393435b58bb5a260509b0428c2e3e1"><fieldset class="Text2"><legend><b>验证码确认</b></legend><table cellspacing=0><tr><td width=1%>确认验证码<div class=Text2>请输入图片上的 6 位数字.</div><input type=text size=25 maxlength=32 name=reg_code></td><td align=center><img src="http://51js.zahui.net/show_image.php?rc=04393435b58bb5a260509b0428c2e3e1"></td></tr></table></td></tr><tr><td><input type=submit value="提交验证查看全部文章"></td></tr></form></table></span></div>
                </td>
              </tr>
            </table>
            <table width="100%" border="0" cellpadding="9" cellspacing="0" align="center" bgcolor="#FFFFFF">
              <tr>
                <td><span class="unnamed2"><table><tr><td><fieldset class="Text2"><legend><b>相关文章</b></legend><a href= http://51js.zahui.net/html/1/27723.htm>????????????</a><br><a href= http://51js.zahui.net/html/1/27724.htm>为什么flash下载到附件上就播放不出来</a><br><a href= http://51js.zahui.net/html/1/27725.htm>投票测试</a><br><a href= http://51js.zahui.net/html/1/27726.htm>如何让层在N秒后自动消逝?</a><br><a href= http://51js.zahui.net/html/1/27727.htm>如何实现静态页内容的搜索</a><br><a href= http://51js.zahui.net/html/1/27728.htm>调查电脑使用寿命!</a><br><a href= http://51js.zahui.net/html/1/27729.htm>在Netscape中的鼠标事件属性怎么使用?(JS)</a><br><a href= http://51js.zahui.net/html/1/27730.htm>链接标准化?</a><br><a href= http://51js.zahui.net/html/1/27731.htm>不知?</a><br><a href= http://51js.zahui.net/html/1/27732.htm>初学PHP的疑问!</a><br><a href= http://51js.zahui.net/html/1/27734.htm>PHP的资料有吗?</a><br><a href= http://51js.zahui.net/html/1/27735.htm>======关于字符转码问题....========</a><br><a href= http://51js.zahui.net/html/1/27736.htm>求助:关于复选框[已解决]</a><br><a href= http://51js.zahui.net/html/1/27737.htm>dw的问题</a><br><a href= http://51js.zahui.net/html/1/27738.htm>关于变量的问题?谢谢解答!</a><br><a href= http://51js.zahui.net/html/1/27739.htm>页面中按钮控制新开窗口页中的IFRAME的SRC问题?</a><br><a href= http://51js.zahui.net/html/1/27740.htm>菜鸟写聊天室又遇到难题了!高人来帮我一下吧!</a><br><a href= http://51js.zahui.net/html/1/27741.htm>急问:http://www.stedy.com中2k3Select的问题</a><br><a href= http://51js.zahui.net/html/1/27742.htm>请教关于select表单的option事件</a><br></td></tr></table>
</span></td>
              </tr>
              <tr>
                <td><span class="unnamed2"><table><tr><td><fieldset class="Text2"><legend><b>所有分类</b></legend><a href= http://51js.zahui.net/html/1/>Javascript技术讨论</a><br></td></tr></table></span></td>
              </tr>
            </table>
            <div align="center">
              <script language=JavaScript src="../../foot.js"></script>
            </div>
            <table width="100%" border="0" cellpadding="3" cellspacing="0" bgcolor="#FFFFFF" align="center">
              <tr align="center" bgcolor="#006633">
                <td height="27"> <span><font color="#FFFFFF">合作事项</font> <font color="#FFFFFF">|
                  业务联系</font> <font color="#FFFFFF">|</font> <font color="#FFFFFF">广告刊登</font>
                  <font color="#FFFFFF">|</font> <a href=http://www.zhaocount.com><font color="#FFFFFF">计数器</font></a>
                  <font color="#FFFFFF">|</font> <a href="javascript:window.external.AddFavorite('http://51js.zahui.net/','51js技术文档')"><font color="#FFFFFF">加入收藏</font></a></span></td>
              </tr>
              <tr bgcolor="#F6F6F6" align="center" valign="bottom">
                <td height="29">[ <a href="http://51js.zahui.net">51js.zahui.net</a>
                  ]
                </td>
              </tr>
              <tr bgcolor="#F6F6F6" align="center">
                <td height="29">Copyright © 2000-2004 <a href="http://51js.zahui.net">51js.zahui.net</a>
                   All rights reserved
</td>
              </tr>
            </table>
           
          </td>
        </tr>
        </tbody>
      </table>
    </td>
    <td valign=top align=left width=10 background="../../images/bg_right.gif" height="231"><img src="../../images/blank.gif" width="8" height="1"></td>
  </tr>
  </tbody>
</table>


<script>var a="w51js";</script>
<script src="http://51js.zahui.net/stat.js"></script>
</body>
</html>