找回密码
 加入
搜索
查看: 3009|回复: 10

如何把2个脚本连接起来运行[高手请指点]

[复制链接]
发表于 2008-9-4 22:27:06 | 显示全部楼层 |阅读模式
我是一个新手网管!
最近在网上看到有CGO出盘配合讯闪来运行游戏!
但是我这里用的是ISCSI的,然后下了讯闪来学习结合使用,经过了大量的资料查找和实验。目前碰到了这样一个问题。就是我点讯闪游戏图标运行游戏后,第一次只能出盘,然后需要再点一次才能运行游戏。请高手帮我看看我的脚本有什么问题。能让我只用点一次图标就能达到出盘和游戏直接运行的目的。
以下是我的脚本
#NoTrayIcon
$g_szVersion = "My Script 1.1"
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)
HotKeySet("{Esc}","Exit_qout")
dim $test="K:"
dim $game="c:Program FilesCFsoft原调用.Exe"
Dim $path_l = "192.168.1.90"
dim $scsipath ="c:windowssystem32iscsicpl.cpl"
If Not FileExists ($scsipath) Then
MsgBox (48,"连接服务器"," 没有找到ISCSI客户端,不能连接到游戏服务器."&@CRLF&@CRLF&"您可以重启计算机,来尝试解决此问题.或者联系网吧管理员.",30)
Exit
EndIf

if FileExists ($test) Then
Sleep(1)

Else
$Main = GUICreate("飞衡网吧", 263, 120, -1, -1)
;~ GUISetBkColor(0xFFFFFF)
$Group1 = GUICtrlCreateGroup("", 8, 8, 249, 105)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$progress=GUICtrlCreateProgress(38,79,180,15)
GUICtrlSetColor(-1, 0x9999FF)
GUISetState(@SW_SHOW)
for $x = 1 To 6
GUICtrlCreateLabel("请稍候... 正在连接游戏服务器", 50, 30, 200, 15)
GUICtrlCreateLabel("第 次连接", 100, 60, 100, 15)
GUICtrlCreateLabel($x, 116, 60, 6, 15)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlCreateLabel("按{E&SC}键中止连接", 84, 96, 150, 15)
For $m = 10 to 100 Step 10
GUICtrlSetData ($progress,$m)
Sleep(220)
IFTEST()
Next
RunWait(@ComSpec & " /c " & "iscsicli AddTargetPortal "&$path_l&" 3260", "",@SW_HIDE)
Run(@ComSpec & " /c " & "iscsicli LoginTarget iqn.2005-02.com.ricecake.iscsi:00 T * * * * * * * * * * * * * * * 0", "",@SW_HIDE)
IFTEST()
Next
if Not FileExists ($test) Then
MsgBox (48,"连接失败","无法连接到游戏服务器.可能是由于网络故障,或者服务器异常关闭."&@CRLF&@CRLF&"请尝试使用本机游戏 [E:网络游戏] 进行游戏,或者联系网吧管理员.")
Exit
EndIf
EndIf
Func Exit_qout()
Exit
EndFunc
Func IFTEST()
If FileExists ($test) Then
Sleep(1)
Exit
EndIf
EndFunc
If $cmdline[0] <> 0 Then
    $filename = $cmdline[1]
    if StringLeft($filename,1)="/" Then  ;=======>去掉有的参数前加的"/"
        $filename=StringMid($filename,2)
    EndIf
    $A=StringSplit($filename,"")
    $WKPath=""
    For $i=1 to $A[0]-1
        $WKPath=$WKPath & $A[$i] & ""
    Next
     Run($filename,$WKPath,@SW_HIDE)
Else   
    MsgBox(64, "注意", '请带参数运行此程序')
EndIf

[ 本帖最后由 nfcwindy 于 2008-9-26 00:25 编辑 ]
发表于 2008-9-5 12:34:27 | 显示全部楼层
太专业了,什么叫“出盘”?
发表于 2008-9-5 13:14:02 | 显示全部楼层
原帖由 顽固不化 于 2008-9-5 12:34 发表
太专业了,什么叫“出盘”?



"出盘"_安装一些虚拟磁盘程序时,会多一个或多个盘符;出现这个盘符就是"出盘"

个人理解,如有不对请高人指出!
发表于 2008-9-5 13:32:42 | 显示全部楼层
本人太笨,完全不懂什么意思= =
发表于 2008-9-5 13:55:04 | 显示全部楼层
LZ的意思是:
出盘=运行例如虚拟光驱之类软件的时候会出现一个新的盘符,这种情况就叫做出盘。
是这个意思吧?
 楼主| 发表于 2008-9-5 14:26:57 | 显示全部楼层
我的游戏是装在虚拟盘里面的,当运行游戏的时候,第一次只是把虚拟盘装载到本机里面,然后需要再点击一次后游戏才能实现运行。
发表于 2008-9-5 14:49:20 | 显示全部楼层
说简单点就是“要成功运行一个游戏需要2次运行,第一次运行是装载虚拟镜像,第二次运行才正常运行游戏”,是这样吗?

如果是这样,那么au3这样写:
run("游戏.exe")
ProcessWaitClose("游戏.exe")
run("游戏.exe")
 楼主| 发表于 2008-9-5 15:52:52 | 显示全部楼层
这样说吧,以下是第一部分出虚拟盘的脚本
#NoTrayIcon
$g_szVersion = "My Script 1.1"
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)
HotKeySet("{Esc}","Exit_qout")
dim $test="K:"
dim $game="c:Program FilesCFsoft原调用.Exe"
Dim $path_l = "192.168.1.90"
dim $scsipath ="c:windowssystem32iscsicpl.cpl"
If Not FileExists ($scsipath) Then
MsgBox (48,"连接服务器"," 没有找到ISCSI客户端,不能连接到游戏服务器."&@CRLF&@CRLF&"您可以重启计算机,来尝试解决此问题.或者联系网吧管理员.",30)
Exit
EndIf

if FileExists ($test) Then
Sleep(1)

Else
$Main = GUICreate("飞衡网吧", 263, 120, -1, -1)
;~ GUISetBkColor(0xFFFFFF)
$Group1 = GUICtrlCreateGroup("", 8, 8, 249, 105)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$progress=GUICtrlCreateProgress(38,79,180,15)
GUICtrlSetColor(-1, 0x9999FF)
GUISetState(@SW_SHOW)
for $x = 1 To 6
GUICtrlCreateLabel("请稍候... 正在连接游戏服务器", 50, 30, 200, 15)
GUICtrlCreateLabel("第 次连接", 100, 60, 100, 15)
GUICtrlCreateLabel($x, 116, 60, 6, 15)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlCreateLabel("按{E&SC}键中止连接", 84, 96, 150, 15)
For $m = 10 to 100 Step 10
GUICtrlSetData ($progress,$m)
Sleep(220)
IFTEST()
Next
RunWait(@ComSpec & " /c " & "iscsicli AddTargetPortal "&$path_l&" 3260", "",@SW_HIDE)
Run(@ComSpec & " /c " & "iscsicli LoginTarget iqn.2005-02.com.ricecake.iscsi:00 T * * * * * * * * * * * * * * * 0", "",@SW_HIDE)
IFTEST()
Next
if Not FileExists ($test) Then
MsgBox (48,"连接失败","无法连接到游戏服务器.可能是由于网络故障,或者服务器异常关闭."&@CRLF&@CRLF&"请尝试使用本机游戏 [E:网络游戏] 进行游戏,或者联系网吧管理员.")
Exit
EndIf
EndIf
Func Exit_qout()
Exit
EndFunc
Func IFTEST()
If FileExists ($test) Then
Sleep(1)
Exit
EndIf
EndFunc
因为我现在是配合讯闪菜单来用的,讯闪菜单执行游戏的时候,需要加载参数来运行。所以我又找到了带参数运行的脚本。就是下面这个。
If $cmdline[0] <> 0 Then
    $filename = $cmdline[1]
    if StringLeft($filename,1)="/" Then  ;=======>去掉有的参数前加的"/"
        $filename=StringMid($filename,2)
    EndIf
    $A=StringSplit($filename,"")
    $WKPath=""
    For $i=1 to $A[0]-1
        $WKPath=$WKPath & $A[$i] & ""
    Next
     Run($filename,$WKPath,@SW_HIDE)
Else   
    MsgBox(64, "注意", '请带参数运行此程序')
EndIf
现在问题就出来了,出虚拟盘的脚本,需要等待出盘的时间。但是我把2个脚本结合放在一起的时候,它在还没有把虚拟盘读出的时候,带参数运行的脚本就已经运行终止了,所以没有把办法让游戏在带参数下正常运行起来,只有再运行一次讯闪菜单里的游戏才能把游戏正常运行起来。
发表于 2008-9-5 15:54:55 | 显示全部楼层
循环????
 楼主| 发表于 2008-9-5 16:23:24 | 显示全部楼层
我个人对AU3的脚本编写能力太潜,  我个人觉得要解决我的问题,需要这样的一个流程,首先让出盘脚本先运行(参数运行脚本先暂停),等出了虚拟盘后,再运行参数脚本跟着带动游戏运行。中间环节似乎要定一个变量来识别参数脚本的运行准则。谁比较精通AU3脚本的,能否帮我写写看。
发表于 2008-9-5 22:02:06 | 显示全部楼层
帖子编辑那里有au3脚本插入器,建议以后像这种au3代码用它粘贴到帖子中去,这样的代码行就清晰多了。
是否“出盘”完成,可以用读取驱动器的方法解决。如果想更准确,还可以判断“出盘”里的特殊文件来解决。“出盘”正确后再运行第二段代码(运行游戏)。
不知我的理解是否正确,供参考。

附:一个判断光驱数量和盘符的代码
$CDROM=DriveGetDrive ( "CDROM" )
If $CDROM[0]=0 Then
        MsgBox(0,"","你未安装光驱?")
Else
        $CDROMMSG=""
        for $I=1 to $CDROM[0]
                $CDROMMSG=$CDROMMSG&" "&$CDROM[$i]
        Next
        MsgBox(0,"","存在"&$CDROM[0]&"个光驱,盘符是:"&@CRLF&StringUpper($CDROMMSG))
EndIf


[ 本帖最后由 顽固不化 于 2008-9-5 22:13 编辑 ]
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-12 18:43 , Processed in 0.077051 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表