脚本模块.bas
上传用户:pcw2004
上传日期:2022-02-02
资源大小:743k
文件大小:11k
源码类别:

DirextX编程

开发平台:

Visual Basic

  1. Attribute VB_Name = "脚本模块"
  2. Option Explicit
  3. Public Type ScriptType  '脚本属性
  4.     ScriptName As String
  5.     ScriptStr As String
  6. End Type
  7. Public Type NpcType 'NPC属性
  8.     X As Integer
  9.     Y As Integer
  10.     Name_名称 As String
  11.     Image As Integer
  12.     Pic As Integer
  13.     PicSpeed As Integer
  14.     PTime As Long
  15. '    ScriptCount As Integer
  16. '    Script() As ScriptType
  17. '    ScriptFileName As String
  18. End Type
  19. Public SelNpcNum As Integer
  20. Public NpcCount As Integer
  21. Public NPCInfo() As NpcType
  22. Public mScript As String
  23. 'Public Function ActScript(ByVal mNpc As Long, ByVal mScript As String, Optional ByVal inValue As String) As String
  24. '    Dim IFstr, ACTstr, ELSEstr, ELSESAYstr As String
  25. '    Dim IFvalue As Boolean
  26. '    Dim mWord, mData, mVal As Variant
  27. '    Dim i, j, k As Long
  28. '    Dim tmpStr, mStr As String
  29. '    Dim tmpNum, MonID As Long
  30. '    Dim N1 As Integer, N2 As Integer
  31. '    Dim S1 As String, S2 As String
  32. '    Dim mSay As String
  33. '    '系统变量
  34. '    mScript = SysVariable(mNpc, mScript, inValue)
  35. '    IFvalue = True
  36. '
  37. '    '去掉TAB字符
  38. '    mScript = Replace(mScript, vbTab & vbTab, " ")
  39. '    mScript = Replace(mScript, vbTab, " ")
  40. '    '去掉多余的空格
  41. '    For i = 9 To 2 Step -1
  42. '        mScript = Replace(mScript, String(i, " "), " ")
  43. '    Next i
  44. '    mScript = Replace(mScript, " " & vbCrLf, vbCrLf)
  45. '    IFstr = TakeStr(mScript, "#IF" & vbCrLf, vbCrLf & "#ACT")
  46. '    If IFstr = "" Then IFstr = TakeStr(mScript, "#if" & vbCrLf, vbCrLf & "#act")
  47. '    If IFstr = "" Then IFstr = TakeStr(mScript, "#IF" & vbCrLf, vbCrLf & "#SAY")
  48. '    If IFstr = "" Then IFstr = TakeStr(mScript, "#if" & vbCrLf, vbCrLf & "#say")
  49. '    '#ACT后面可能是#ELSE也可能是#ELSESAY
  50. '    ACTstr = TakeStr(mScript, "#ACT" & vbCrLf, vbCrLf & "#ELSE")
  51. '    If ACTstr = "" Then ACTstr = TakeStr(mScript, "#act" & vbCrLf, vbCrLf & "#else")
  52. '    If ACTstr = "" Then ACTstr = TakeStr(mScript, "#ACT" & vbCrLf, vbCrLf & "")
  53. '    If ACTstr = "" Then ACTstr = TakeStr(mScript, "#act" & vbCrLf, vbCrLf & "")
  54. '
  55. '    '如果没有ELSE语句
  56. '    If ACTstr = "" Then ACTstr = TakeStr(mScript, "#ACT" & vbCrLf, "")
  57. '    ELSEstr = TakeStr(mScript, "#ELSE" & vbCrLf, "")
  58. '    If ELSEstr = "" Then ELSEstr = TakeStr(mScript, "#else" & vbCrLf, "")
  59. '    ELSESAYstr = TakeStr(mScript, "#ELSESAY" & vbCrLf, "")
  60. '    If ELSESAYstr = "" Then ELSESAYstr = TakeStr(mScript, "#elsesay" & vbCrLf, "")
  61. '    If ELSESAYstr = "" Then ELSESAYstr = TakeStr(mScript, "#SAY" & vbCrLf, "")
  62. '
  63. '    '如果脚本中不含有IF ACT成分,那么呈现整个脚本给客户端
  64. '    If (IFstr = "") And (ACTstr = "") And (ELSESAYstr = "") Then IFvalue = False: ELSESAYstr = mScript
  65. '
  66. '    '如果只包含ACT语句,则执行
  67. '    If (IFstr = "") And (ACTstr <> "") Then IFvalue = True
  68. '    '执行判断语句
  69. '    mWord = Split(IFstr, vbCrLf)
  70. '    For i = 0 To UBound(mWord)
  71. '        mData = Split(mWord(i), " ")
  72. '        If UBound(mData) >= 0 Then
  73. '            Select Case UCase(mData(0))
  74. '                Case "CHECKLEVEL"
  75. '                    IFvalue = IFvalue And Hero.Level_等级 >= mData(1)
  76. '                Case "CHECKPK"
  77. '                    IFvalue = IFvalue And Hero.PK值 >= mData(1)
  78. '                Case "CHECKJOB"
  79. '                    IFvalue = IFvalue And (Hero.Job_职业 = mData(1))
  80. '                Case "CHECKSEX"
  81. '                    IFvalue = IFvalue And (Hero.Sex_性别 = mData(1))
  82. '                Case "CHECKGOLD"
  83. '                    IFvalue = IFvalue And (Hero.Gold_金币 >= mData(1))
  84. '                Case "CHECKITEM"
  85. '                    Dim AA As String
  86. '                    AA = mData(1)
  87. '                    tmpNum = GetItemCount(AA)
  88. '                    If UBound(mData) >= 2 Then
  89. '                        N1 = mData(2)
  90. '                        IFvalue = IFvalue And (tmpNum) >= N1
  91. '                    Else
  92. '                        IFvalue = IFvalue And 1
  93. '                    End If
  94. '
  95. '            End Select
  96. '        End If
  97. '    Next i
  98. '    '根据上面的判断,生成相应的字符串
  99. '    If Not IFvalue Then ACTstr = ELSEstr
  100. '    If ACTstr <> "" Then
  101. '        mWord = Split(Replace(ACTstr, vbCrLf & vbCrLf, vbCrLf), vbCrLf)
  102. '        For i = 0 To UBound(mWord)
  103. '            If mWord(i) <> "" Then
  104. '                tmpStr = ""
  105. '                mData = Split(mWord(i), " ")
  106. '                Select Case UCase(mData(0))
  107. '                    Case "MSG"
  108. '                        MsgBox Hero.PK值, , "PK"
  109. '                    Case "SAY"
  110. '                        mSay = TakeStr(mWord(i), "say ", "")
  111. '                        If mSay = "" Then mSay = TakeStr(mWord(i), "Say ", "")
  112. '                        If mSay = "" Then mSay = TakeStr(mWord(i), "SAY ", "")
  113. '                        tmpStr = NPCInfo(mNpc).Name_名称 & "/" & mSay
  114. '                    Case "ADDFAME" '声望
  115. '                        Hero.Fame_声望值 = Hero.Fame_声望值 + mData(1)
  116. '                    Case "TAKE" '拿走包裹装备
  117. '                        S1 = mData(1)
  118. '
  119. '                        If mData(1) = "金币" Then
  120. '                            If UBound(mData) >= 2 Then
  121. '                                N1 = mData(2)
  122. '                                Hero.Gold_金币 = Hero.Gold_金币 - N1
  123. '                                ReDim Preserve SystemInfo(UBound(SystemInfo) + 1)
  124. '                                SystemInfo(UBound(SystemInfo)).Enabled = True
  125. '                                SystemInfo(UBound(SystemInfo)).mStr = "金币" & "    已被收取"
  126. '                                SystemInfo(UBound(SystemInfo)).LTime = GetTickCount
  127. '                            End If
  128. '                        Else
  129. '                            If UBound(mData) >= 2 Then
  130. '                                N1 = mData(2)
  131. '                            Else
  132. '                                N1 = 1
  133. '                            End If
  134. '                            ShouItemCount S1, N1
  135. '
  136. '                        End If
  137. '                    Case "FAMEUP"
  138. '                        Hero.Fame_声望值 = Hero.Fame_声望值 + mData(1)
  139. '                    Case "MAPMOVE"
  140. '                        Hero.Map_地图 = mData(1)
  141. '                    Case "GIVE" '给物品
  142. '                        If mData(1) = "金币" Then
  143. '                            Hero.Gold_金币 = Hero.Gold_金币 + mData(2)
  144. '                            ReDim Preserve SystemInfo(UBound(SystemInfo) + 1)
  145. '                            SystemInfo(UBound(SystemInfo)).Enabled = True
  146. '                            SystemInfo(UBound(SystemInfo)).mStr = "金币" & "    被发现"
  147. '                            SystemInfo(UBound(SystemInfo)).LTime = GetTickCount
  148. '                        Else
  149. '                            S1 = mData(1)
  150. '                            If UBound(mData) >= 2 Then
  151. '                                N1 = mData(2)
  152. '                            Else
  153. '                                N1 = 1
  154. '                            End If
  155. '                            tmpNum = GetItemNum(S1)
  156. '                            If tmpNum > 0 Then
  157. '                                GiveItem Items(tmpNum), N1
  158. '
  159. '                            End If
  160. '                        End If
  161. '
  162. '                    Case "LEVELUP"  '升级
  163. '                        Hero.Level_等级 = Hero.Level_等级 + mData(1)
  164. '                    Case "LEVELDOWN"  '降级
  165. '                        Hero.Level_等级 = Hero.Level_等级 - mData(1)
  166. '
  167. '                End Select
  168. '            End If
  169. '        Next i
  170. '    Else
  171. '        tmpStr = ELSESAYstr
  172. '
  173. '    End If
  174. '
  175. '    '字符串变量
  176. '    tmpStr = SysVariable(mNpc, tmpStr, inValue)
  177. ''    tmpStr = JiaMiC(tmpStr)
  178. '
  179. '    '要向客户端发送的字符串
  180. '    ActScript = tmpStr '执行结果已加密
  181. 'End Function
  182. '
  183. '
  184. 'Public Function SysVariable(ByVal mNpc As Long, ByVal mScript As String, Optional ByVal inValue As String) As String
  185. '    Dim mStr As String
  186. '    Dim i As Long
  187. '    '系统变量
  188. '    mScript = Replace(mScript, "<$NPCNAME>", NPCInfo(mNpc).Name_名称)
  189. '    mScript = Replace(mScript, "<$USERNAME>", Hero.Name_名称)
  190. '    mScript = Replace(mScript, "<$USERLEVEL>", Hero.Level_等级)
  191. ''    mScript = Replace(mScript, "<$USERLUCKY>", Hero.Lucky)
  192. '    mScript = Replace(mScript, "<$USERPK>", Hero.PK值)
  193. ''    mScript = Replace(mScript, "<$USERIP>", P7200.sckPost(hero.SocksID).RemoteHostIP)
  194. '    mScript = Replace(mScript, "<$USERFAME>", Hero.Fame_声望值)
  195. ''    mScript = Replace(mScript, "<$USEGUILD>", Hero.Guild)
  196. ''    mScript = Replace(mScript, "<$USERSUBHUMAN>", Hero.SubHuman)
  197. '    mScript = Replace(mScript, "<$USERMAP>", Hero.Map_地图)
  198. '    mScript = Replace(mScript, "<$USERX>", Hero.X)
  199. '    mScript = Replace(mScript, "<$USERY>", Hero.Y)
  200. '    mScript = Replace(mScript, "<$USERHOMEMAP>", Hero.HomeMap)
  201. '    mScript = Replace(mScript, "<$USERHOMEX>", Hero.HomeX)
  202. '    mScript = Replace(mScript, "<$USERHOMEY>", Hero.HomeY)
  203. '
  204. '
  205. '    mScript = Replace(mScript, "<$YEAR>", Year(Now))
  206. '    mScript = Replace(mScript, "<$DATE>", Date)
  207. '    mScript = Replace(mScript, "<$TIME>", Time)
  208. '    mScript = Replace(mScript, "<$LOGINLONG>", Hero.LoginTime)
  209. ''    mScript = Replace(mScript, "<$RUNTIME>", Sec2Min(timeGetTime  1000))
  210. '
  211. ''    mScript = Replace(mScript, "<$SABUKGUILD>", SABUK.OwnerGuild)
  212. ''    mScript = Replace(mScript, "<$SABUKGUILDBOSS>", SABUK.OwnerBoss)
  213. ''    mScript = Replace(mScript, "<$SABUKGOLD>", SABUK.Gold)
  214. '    mScript = Replace(mScript, "<$INPUTVAL>", inValue)
  215. '    SysVariable = mScript
  216. 'End Function
  217. '
  218. 'Function TakeStr(Str As Variant, StartStr As String, EndStr As String) As String
  219. '    Dim Len1 As Integer
  220. '    Dim Len2 As Integer
  221. '    Dim SS As String
  222. '    Len1 = InStr(Str, StartStr)
  223. '    If Len1 = 0 Then Exit Function
  224. '    Len2 = InStr(Len1, Str, EndStr)
  225. '    If Len2 > Len1 + Len(StartStr) Then
  226. '        SS = Mid(Str, Len1 + Len(StartStr), Len2 - Len1 - Len(StartStr))
  227. '    Else
  228. '        SS = Mid(Str, Len1 + Len(StartStr), Len(Str) - Len1 - Len(StartStr))
  229. '    End If
  230. '    TakeStr = SS
  231. '
  232. 'End Function
  233. 'Public Sub LoadScriptFile(mNpc As Integer, FileName As String)
  234. '    Dim i As Integer
  235. '    Dim Str As String
  236. '    Dim Work1 As Boolean
  237. '    open FileName For Input As #1
  238. '        Do While Not EOF(1)
  239. '            Line Input #1, Str
  240. '            If Left(Str, 1) = "[" Then
  241. '                NPCInfo(mNpc).ScriptCount = NPCInfo(mNpc).ScriptCount + 1
  242. '                ReDim Preserve NPCInfo(mNpc).Script(NPCInfo(mNpc).ScriptCount)
  243. '                NPCInfo(mNpc).Script(NPCInfo(mNpc).ScriptCount).ScriptName = Mid(Str, 2, Len(Str) - 2)
  244. '            Else
  245. '                NPCInfo(mNpc).Script(NPCInfo(mNpc).ScriptCount).ScriptStr = NPCInfo(mNpc).Script(NPCInfo(mNpc).ScriptCount).ScriptStr & Str & vbCrLf
  246. '            End If
  247. '            DoEvents
  248. '        Loop
  249. '    close #1
  250. 'End Sub