当前位置:首页 » 编程软件 » 33出品脚本

33出品脚本

发布时间: 2022-12-06 21:16:49

Ⅰ 如何编写一个shell脚本

如何编写一个shell脚本

本文结合大量实例阐述如何编写一个shell脚本。

为什么要进行shell编程

linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。
下面,让我们一起来看看shell是如何工作的:

建立一个脚本

Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在bash的大姐,bourne shell中运行)。

如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、vi
等来编写我们的shell程序。
程序必须以下面的行开始(必须方在文件的第一行):
#!/bin/sh

符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。
当编辑好脚本时,如果要执行该脚本,还必须使其可执行。
要使脚本可执行:
chmod +x filename
然后,您可以通过输入: ./filename 来执行您的脚本。

注释

在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。

变量

在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:

变量名=值

取出变量值可以加一个美元符号($)在变量前面:

#!/bin/sh
#对变量赋值:
a="hello world"
# 现在打印变量a的内容:
echo "A is:"
echo $a

在您的编辑器中输入以上内容,然后将其保存为一个文件first。之后执行chmod +x first
使其可执行,最后输入./first执行该脚本。
这个脚本将会输出:
A is:
hello world

有时候变量名很容易与其他文字混淆,比如:
num=2
echo "this is the $numnd"
这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,但是这个变量时没有值的。可以使用花括号来告诉shell我们要打印的是num变量:
num=2
echo "this is the ${num}nd"
这将打印: this is the 2nd

有许多变量是系统自动设定的,这将在后面使用这些变量时进行讨论。

如果您需要处理数学表达式,那么您需要使用诸如expr等程序(见下面)。
除了一般的仅在程序内有效的shell变量以外,还有环境变量。由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。

Shell命令和流程控制

在shell脚本中可以使用三类命令:

1)Unix 命令:

虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令。这些命令通常是用来进行文件和文字操作的。

常用命令语法及功能

echo "some text": 将文字内容打印在屏幕上

ls: 文件列表

wc –l filewc -w filewc -c file: 计算文件行数计算文件中的单词数计算文件中的字符数

cp sourcefile destfile: 文件拷贝

mv oldname newname : 重命名文件或移动文件

rm file: 删除文件

grep 'pattern' file: 在文件内搜索字符串比如:grep 'searchstring' file.txt

cut -b colnum file: 指定欲显示的文件内容范围,并将它们输出到标准输出设备比如:输出每行第5个到第9个字符cut -b5-9 file.txt千万不要和cat命令混淆,这是两个完全不同的命令

cat file.txt: 输出文件内容到标准输出设备(屏幕)上

file somefile: 得到文件类型

read var: 提示用户输入,并将输入赋值给变量

sort file.txt: 对file.txt文件中的行进行排序

uniq: 删除文本文件中出现的行列比如: sort file.txt | uniq

expr: 进行数学运算Example: add 2 and 3expr 2 "+" 3

find: 搜索文件比如:根据文件名搜索find . -name filename -print

tee: 将数据输出到标准输出设备(屏幕) 和文件比如:somecommand | tee outfile

basename file: 返回不包含路径的文件名比如: basename /bin/tux将返回 tux

dirname file: 返回文件所在路径比如:dirname /bin/tux将返回 /bin

head file: 打印文本文件开头几行

tail file : 打印文本文件末尾几行

sed: Sed是一个基本的查找替换程序。可以从标准输入(比如命令管道)读入文本,并将结果输出到标准输出(屏幕)。该命令采用正则表达式(见参考)进行搜索。不要和shell中的通配符相混淆。比如:将linuxfocus 替换为 LinuxFocus :cat text.file | sed 's/linuxfocus/LinuxFocus/' > newtext.file

awk: awk 用来从文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符。cat file.txt | awk -F, '{print $1 "," $3 }'这里我们使用,作为字段分割符,同时打印第一个和第三个字段。如果该文件内容如下: Adam Bor, 34, IndiaKerry Miller, 22, USA命令输出结果为:Adam Bor, IndiaKerry Miller, USA

2) 概念: 管道, 重定向和 backtick

这些不是系统命令,但是他们真的很重要。

管道 (|) 将一个命令的输出作为另外一个命令的输入。
grep "hello" file.txt | wc -l
在file.txt中搜索包含有”hello”的行并计算其行数。
在这里grep命令的输出作为wc命令的输入。当然您可以使用多个命令。

重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。
> 写入文件并覆盖旧文件
>> 加到文件的尾部,保留旧文件内容。

反短斜线
使用反短斜线可以将一个命令的输出作为另外一个命令的一个命令行参数。
命令:
find . -mtime -1 -type f -print
用来查找过去24小时(-mtime –2则表示过去48小时)内修改过的文件。如果您想将所有查找到的文件打一个包,则可以使用以下脚本:
#!/bin/sh
# The ticks are backticks (`) not normal quotes ('):
tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`

3) 流程控制

"if" 表达式 如果条件为真则执行then后面的部分:
if ....; then
....
elif ....; then
....
else
....
fi
大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等…
通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等

执行man test可以查看所有测试表达式可以比较和判断的类型。
直接执行以下脚本:
#!/bin/sh
if [ "$SHELL" = "/bin/bash" ]; then
echo "your login shell is the bash (bourne again shell)"
else
echo "your login shell is not bash but $SHELL"
fi
变量$SHELL包含了登录shell的名称,我们和/bin/bash进行了比较。

快捷操作符

熟悉C语言的朋友可能会很喜欢下面的表达式:
[ -f "/etc/shadow" ] && echo "This computer uses shadow passwors"
这里 && 就是一个快捷操作符,如果左边的表达式为真则执行右边的语句。您也可以认为是逻辑运算中的与操作。上例中表示如果/etc/shadow文件存在则打印” This computer uses shadow passwors”。同样或操作(||)在shell编程中也是可用的。这里有个例子:
#!/bin/sh
mailfolder=/var/spool/mail/james
[ -r "$mailfolder" ]' '{ echo "Can not read $mailfolder" ; exit 1; }
echo "$mailfolder has mail from:"
grep "^From " $mailfolder
该脚本首先判断mailfolder是否可读。如果可读则打印该文件中的"From" 一行。如果不可读则或操作生效,打印错误信息后脚本退出。这里有个问题,那就是我们必须有两个命令:
-打印错误信息
-退出程序
我们使用花括号以匿名函数的形式将两个命令放到一起作为一个命令使用。一般函数将在下文提及。
不用与和或操作符,我们也可以用if表达式作任何事情,但是使用与或操作符会更便利很多。

case表达式可以用来匹配一个给定的字符串,而不是数字。
case ... in
...) do something here ;;
esac
让我们看一个例子。 file命令可以辨别出一个给定文件的文件类型,比如:
file lf.gz
这将返回:
lf.gz: gzip compressed data, deflated, original filename,
last modified: Mon Aug 27 23:09:18 2001, os: Unix
我们利用这一点写了一个叫做smartzip的脚本,该脚本可以自动解压bzip2, gzip 和zip 类型的压缩文件:
#!/bin/sh
ftype=`file "$1"`
case "$ftype" in
"$1: Zip archive"*)
unzip "$1" ;;
"$1: gzip compressed"*)
gunzip "$1" ;;
"$1: bzip2 compressed"*)
bunzip2 "$1" ;;
*) error "File $1 can not be uncompressed with smartzip";;
esac

您可能注意到我们在这里使用了一个特殊的变量$1。该变量包含了传递给该程序的第一个参数值。也就是说,当我们运行:
smartzip articles.zip
$1 就是字符串 articles.zip

select 表达式是一种bash的扩展应用,尤其擅长于交互式使用。用户可以从一组不同的值中进行选择。
select var in ... ; do
break
done
.... now $var can be used ....
下面是一个例子:
#!/bin/sh
echo "What is your favourite OS?"
select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
break
done
echo "You have selected $var"
下面是该脚本运行的结果:
What is your favourite OS?
1) Linux
2) Gnu Hurd
3) Free BSD
4) Other
#? 1
You have selected Linux

您也可以在shell中使用如下的loop表达式:
while ...; do
....
done

while-loop 将运行直到表达式测试为真。will run while the expression that we test for is true. 关键字"break" 用来跳出循环。而关键字”continue”用来不执行余下的部分而直接跳到下一个循环。

for-loop表达式查看一个字符串行表 (字符串用空格分隔) 然后将其赋给一个变量:
for var in ....; do
....
done

在下面的例子中,将分别打印ABC到屏幕上:
#!/bin/sh
for var in A B C ; do
echo "var is $var"
done

下面是一个更为有用的脚本showrpm,其功能是打印一些RPM包的统计信息:
#!/bin/sh
# list a content summary of a number of RPM packages
# USAGE: showrpm rpmfile1 rpmfile2 ...
# EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm
for rpmpackage in $*; do
if [ -r "$rpmpackage" ];then
echo "=============== $rpmpackage =============="
rpm -qi -p $rpmpackage
else
echo "ERROR: cannot read file $rpmpackage"
fi
done

这里出现了第二个特殊的变量$*,该变量包含了所有输入的命令行参数值。如果您运行showrpm openssh.rpm w3m.rpm webgrep.rpm
此时 $* 包含了 3 个字符串,即openssh.rpm, w3m.rpm and webgrep.rpm.

引号
在向程序传递任何参数之前,程序会扩展通配符和变量。这里所谓扩展的意思是程序会把通配符(比如*)替换成合适的文件名,它变量替换成变量值。为了防止程序作这种替换,您可以使用引号:让我们来看一个例子,假设在当前目录下有一些文件,两个jpg文件, mail.jpg 和tux.jpg。

#!/bin/sh
echo *.jpg
这将打印出"mail.jpg tux.jpg"的结果。
引号 (单引号和双引号) 将防止这种通配符扩展:
#!/bin/sh
echo "*.jpg"
echo '*.jpg'
这将打印"*.jpg" 两次。
单引号更严格一些。它可以防止任何变量扩展。双引号可以防止通配符扩展但允许变量扩展。
#!/bin/sh
echo $SHELL
echo "$SHELL"
echo '$SHELL'

运行结果为:
/bin/bash
/bin/bash
$SHELL

最后,还有一种防止这种扩展的方法,那就是使用转义字符——反斜杆:
echo *.jpg
echo $SHELL
这将输出:
*.jpg
$SHELL
Here documents

当要将几行文字传递给一个命令时,here documents(译者注:目前还没有见到过对该词适合的翻译)一种不错的方法。对每个脚本写一段帮助性的文字是很有用的,此时如果我们四有那个here documents就不必用echo函数一行行输出。 一个 "Here document" 以 << 开头,后面接上一个字符串,这个字符串还必须出现在here document的末尾。下面是一个例子,在该例子中,我们对多个文件进行重命名,并且使用here documents打印帮助:

#!/bin/sh
# we have less than 3 arguments. Print the help text:
if [ $# -lt 3 ] ; then
cat <<HELP
ren -- renames a number of files using sed regular expressions

USAGE: ren 'regexp' 'replacement' files...

EXAMPLE: rename all *.HTM files in *.html:
ren 'HTM$' 'html' *.HTM

HELP
exit 0
fi
OLD="$1"
NEW="$2"
# The shift command removes one argument from the list of
# command line arguments.
shift
shift
# $* contains now all the files:
for file in $*; do
if [ -f "$file" ] ; then
newfile=`echo "$file" | sed "s/${OLD}/${NEW}/g"`
if [ -f "$newfile" ]; then
echo "ERROR: $newfile exists already"
else
echo "renaming $file to $newfile ..."
mv "$file" "$newfile"
fi
fi
done

这是一个复杂一些的例子。让我们详细讨论一下。第一个if表达式判断输入命令行参数是否小于3个 (特殊变量$# 表示包含参数的个数) 。如果输入参数小于3个,则将帮助文字传递给cat命令,然后由cat命令将其打印在屏幕上。打印帮助文字后程序退出。 如果输入参数等于或大于3个,我们就将第一个参数赋值给变量OLD,第二个参数赋值给变量NEW。下一步,我们使用shift命令将第一个和第二个参数从参数列表中删除,这样原来的第三个参数就成为参数列表$*的第一个参数。然后我们开始循环,命令行参数列表被一个接一个地被赋值给变量$file。接着我们判断该文件是否存在,如果存在则通过sed命令搜索和替换来产生新的文件名。然后将反短斜线内命令结果赋值给newfile。这样我们就达到了我们的目的:得到了旧文件名和新文件名。然后使用mv命令进行重命名。

函数

如果您写了一些稍微复杂一些的程序,您就会发现在程序中可能在几个地方使用了相同的代码,并且您也会发现,如果我们使用了函数,会方便很多。一个函数是这个样子的:
functionname()
{
# inside the body $1 is the first argument given to the function
# $2 the second ...
body
}
您需要在每个程序的开始对函数进行声明。

下面是一个叫做xtitlebar的脚本,使用这个脚本您可以改变终端窗口的名称。这里使用了一个叫做help的函数。正如您可以看到的那样,这个定义的函数被使用了两次。
#!/bin/sh
# vim: set sw=4 ts=4 et:

help()
{
cat <<HELP
xtitlebar -- change the name of an xterm, gnome-terminal or kde konsole

USAGE: xtitlebar [-h] "string_for_titelbar"

OPTIONS: -h help text

EXAMPLE: xtitlebar "cvs"

HELP
exit 0
}

# in case of error or if -h is given we call the function help:
[ -z "$1" ] && help
[ "$1" = "-h" ] && help

# send the escape sequence to change the xterm titelbar:
echo -e "33]0;$107"
#

在脚本中提供帮助是一种很好的编程习惯,这样方便其他用户(和您)使用和理解脚本。

命令行参数

我们已经见过$* 和 $1, $2 ... $9 等特殊变量,这些特殊变量包含了用户从命令行输入的参数。迄今为止,我们仅仅了解了一些简单的命令行语法(比如一些强制性的参数和查看帮助的-h选项)。但是在编写更复杂的程序时,您可能会发现您需要更多的自定义的选项。通常的惯例是在所有可选的参数之前加一个减号,后面再加上参数值 (比如文件名)。

有好多方法可以实现对输入参数的分析,但是下面的使用case表达式的例子无遗是一个不错的方法。
#!/bin/sh
help()
{
cat <<HELP
This is a generic command line parser demo.
USAGE EXAMPLE: cmdparser -l hello -f -- -somefile1 somefile2
HELP
exit 0
}

while [ -n "$1" ]; do
case $1 in
-h) help;shift 1;; # function help is called
-f) opt_f=1;shift 1;; # variable opt_f is set
-l) opt_l=$2;shift 2;; # -l takes an argument -> shift by 2
--) shift;break;; # end of options
-*) echo "error: no such option $1. -h for help";exit 1;;
*) break;;
esac
done

echo "opt_f is $opt_f"
echo "opt_l is $opt_l"
echo "first arg is $1"
echo "2nd arg is $2"

您可以这样运行该脚本:
cmdparser -l hello -f -- -somefile1 somefile2

返回的结果是:
opt_f is 1
opt_l is hello
first arg is -somefile1
2nd arg is somefile2

这个脚本是如何工作的呢?脚本首先在所有输入命令行参数中进行循环,将输入参数与case表达式进行比较,如果匹配则设置一个变量并且移除该参数。根据unix系统的惯例,首先输入的应该是包含减号的参数。

实例

一般编程步骤

现在我们来讨论编写一个脚本的一般步骤。任何优秀的脚本都应该具有帮助和输入参数。并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意。这时候,在写一个新的脚本时我们只需要执行一下命令:
cp framework.sh myscript
然后再插入自己的函数。

让我们再看两个例子:

二进制到十进制的转换

脚本 b2d 将二进制数 (比如 1101) 转换为相应的十进制数。这也是一个用expr命令进行数学运算的例子:
#!/bin/sh
# vim: set sw=4 ts=4 et:
help()
{
cat <<HELP
b2h -- convert binary to decimal

USAGE: b2h [-h] binarynum

OPTIONS: -h help text

EXAMPLE: b2h 111010
will return 58
HELP
exit 0
}

error()
{
# print an error and exit
echo "$1"
exit 1
}

lastchar()
{
# return the last character of a string in $rval
if [ -z "$1" ]; then
# empty string
rval=""
return
fi
# wc puts some space behind the output this is why we need sed:
numofchar=`echo -n "$1" | wc -c | sed 's/ //g' `
# now cut out the last char
rval=`echo -n "$1" | cut -b $numofchar`
}

chop()
{
# remove the last character in string and return it in $rval
if [ -z "$1" ]; then
# empty string
rval=""
return
fi
# wc puts some space behind the output this is why we need sed:
numofchar=`echo -n "$1" | wc -c | sed 's/ //g' `
if [ "$numofchar" = "1" ]; then
# only one char in string
rval=""
return
fi
numofcharminus1=`expr $numofchar "-" 1`
# now cut all but the last char:
rval=`echo -n "$1" | cut -b 0-${numofcharminus1}`
}

while [ -n "$1" ]; do
case $1 in
-h) help;shift 1;; # function help is called
--) shift;break;; # end of options
-*) error "error: no such option $1. -h for help";;
*) break;;
esac
done

# The main program
sum=0
weight=1
# one arg must be given:
[ -z "$1" ] && help
binnum="$1"
binnumorig="$1"

while [ -n "$binnum" ]; do
lastchar "$binnum"
if [ "$rval" = "1" ]; then
sum=`expr "$weight" "+" "$sum"`
fi
# remove the last position in $binnum
chop "$binnum"
binnum="$rval"
weight=`expr "$weight" "*" 2`
done

echo "binary $binnumorig is decimal $sum"
#
该脚本使用的算法是利用十进制和二进制数权值 (1,2,4,8,16,..),比如二进制"10"可以这样转换成十进制:
0 * 1 + 1 * 2 = 2
为了得到单个的二进制数我们是用了lastchar 函数。该函数使用wc –c计算字符个数,然后使用cut命令取出末尾一个字符。Chop函数的功能则是移除最后一个字符。

文件循环程序
或许您是想将所有发出的邮件保存到一个文件中的人们中的一员,但是在过了几个月以后,这个文件可能会变得很大以至于使对该文件的访问速度变慢。下面的脚本rotatefile 可以解决这个问题。这个脚本可以重命名邮件保存文件(假设为outmail)为outmail.1,而对于outmail.1就变成了outmail.2 等等等等...
#!/bin/sh
# vim: set sw=4 ts=4 et:
ver="0.1"
help()
{
cat <<HELP
rotatefile -- rotate the file name

USAGE: rotatefile [-h] filename

OPTIONS: -h help text

EXAMPLE: rotatefile out
This will e.g rename out.2 to out.3, out.1 to out.2, out to out.1
and create an empty out-file

The max number is 10

version $ver
HELP
exit 0
}

error()
{
echo "$1"
exit 1
}
while [ -n "$1" ]; do
case $1 in
-h) help;shift 1;;
--) break;;
-*) echo "error: no such option $1. -h for help";exit 1;;
*) break;;
esac
done

# input check:
if [ -z "$1" ] ; then
error "ERROR: you must specify a file, use -h for help"
fi
filen="$1"
# rename any .1 , .2 etc file:
for n in 9 8 7 6 5 4 3 2 1; do
if [ -f "$filen.$n" ]; then
p=`expr $n + 1`
echo "mv $filen.$n $filen.$p"
mv $filen.$n $filen.$p
fi
done
# rename the original file:
if [ -f "$filen" ]; then
echo "mv $filen $filen.1"
mv $filen $filen.1
fi
echo touch $filen
touch $filen

这个脚本是如何工作的呢?在检测用户提供了一个文件名以后,我们进行一个9到1的循环。文件9被命名为10,文件8重命名为9等等。循环完成之后,我们将原始文件命名为文件1同时建立一个与原始文件同名的空文件。
调试
最简单的调试命令当然是使用echo命令。您可以使用echo在任何怀疑出错的地方打印任何变量值。这也是绝大多数的shell程序员要花费80%的时间来调试程序的原因。Shell程序的好处在于不需要重新编译,插入一个echo命令也不需要多少时间。

shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误,您可以这样来进行调试:
sh -x strangescript
这将执行该脚本并显示所有变量的值。
shell还有一个不需要执行脚本只是检查语法的模式。可以这样使用:
sh -n your_script
这将返回所有语法错误。

Ⅱ 武易传奇祖玛阁升级脚本

及时雨私服脱机祖马阁挂机脚本

作者:把大象放冰箱里

逐鹿中原版

$衣服="白虎战甲(男)"

$武器="神龙天翔"

$项链="帝王项链"

$左手镯="白虎手镯"

$右手镯="白虎手镯"

$头盔="霸王头盔"

$左戒指="白虎戒指"

$右戒指="白虎戒指"

<全局脚本开始>

如果[自己][HP]<1200

那么系统显示[危险!!!,回城]

那么跳转到<逃离>

如果[攻击目标][HP]>750

那么使用技能[魔法盾]

如果[自己][衣服][持久]<6

那么系统显示[衣服持久太低,回城]

那么跳转到<回城>

如果[自己][武器][持久]<3

那么系统显示[武器持久太低,回城]

那么跳转到<回城>

如果[自己][头盔][持久]<3

那么系统显示[头盔持久太低,装备特修]

那么跳转到<回城>

如果[自己][项链][持久]<2

那么系统显示[项链持久太低,装备特修]

那么跳转到<回城>

如果[自己][左手镯][持久]<2

那么系统显示[手镯持久太低,装备特修]

那么跳转到<回城>

如果[自己][右手镯][持久]<2

那么系统显示[手镯持久太低,装备特修]

那么跳转到<回城>

如果[自己][左戒指][持久]<2

那么系统显示[戒指持久太低,装备特修]

那么跳转到<回城>

如果[自己][右戒指][持久]<2

那么系统显示[戒指持久太低,装备特修]

那么跳转到<回城>

如果[打捆超强金创药][数量]<1

那么系统显示[红药数量太少,药品购买]

那么跳转到<回城>

如果[打捆超强魔法药][数量]<1

那么系统显示[蓝药数量太少,药品购买]

那么跳转到<回城>

<全局脚本结束>

<挂机脚本开始>

系统显示[逐鹿中原祖马阁挂机脚本。及时雨私服脱机ぁ大象出品!]

<地图选择>

如果[地图名]=祖玛阁

那么跳转到<战斗>

如果[当前地图名]=D5071

那么跳转到<祖玛六层>

如果[当前地图名]=D501

那么跳转到<去祖玛阁>

如果[当前地图名]=D502

那么跳转到<去祖玛阁>

如果[当前地图名]=D503

那么跳转到<去祖玛阁>

如果[当前地图名]=D504

那么跳转到<去祖玛阁>

如果[当前地图名]=D505

那么跳转到<去祖玛阁>

如果[当前地图名]=818

那么跳转到<总控>

否则跳转到<回城>

<回城>

关闭全局脚本

停止战斗

躲避PKER关闭

使用[回城卷]

等待[2000]毫秒

<总控>

关闭全局脚本

停止战斗

躲避PKER关闭

如果[当前地图名]=8

那么调用<返回出发点>

调用<衣服修理>

调用<武器修理>

调用<头盔修理>

调用<项链修理>

调用<左手镯修理>

调用<右手镯修理>

调用<左戒指修理>

调用<右戒指修理>

调用<杂物购买>

调用<自动存物>

调用<药品购买>

调用<杂物购买>

<出发>

系统显示[准备出发]

走到附近[818,62,67]

对话[房三哥]

等待[1000]毫秒

发送命令[@dong]

等待[1000]毫秒

开启全局脚本

躲避PKER开启

走到[8,928,645]

走到门点[8,930,642]检查地图改变[0157]

等待[1000]毫秒

走到[D501,168,213]

<去祖玛阁>

开启全局脚本

躲避PKER开启

边打边走到[D505,116,12]

走到门点[D505,123,10]到达[D5061,8,16]

等待[1000]毫秒

检查地图改变[D5061]

跳转到<地图选择>

<战斗>

开启全局脚本

如果[地图名]=祖玛阁

那么$A=[当前地图名]

如果[$A,11,13][距离]<7

那么边打边走到[$A,7,10]

如果[$A,37,13][距离]<7

那么边打边走到[$A,33,10]

如果[$A,63,13][距离]<7

那么边打边走到[$A,59,10]

如果[$A,87,14][距离]<7

那么边打边走到[$A,84,11]

如果[$A,14,41][距离]<7

那么边打边走到[$A,7,38]

如果[$A,37,41][距离]<7

那么边打边走到[$A,33,45]

如果[$A,62,42][距离]<7

那么边打边走到[$A,59,38]

如果[$A,89,41][距离]<7

那么边打边走到[$A,85,38]

如果[$A,12,74][距离]<7

那么边打边走到[$A,8,78]

如果[$A,36,73][距离]<7

那么边打边走到[$A,33,70]

如果[$A,63,73][距离]<7

那么边打边走到[$A,59,70]

如果[$A,87,74][距离]<7

那么边打边走到[$A,83,70]

否则跳转到<地图选择>

跳转到<战斗>

否则跳转到<地图选择>

<祖玛六层>

等待[1000]毫秒

走到[D5071,10,12]

走到门点[D5071,7,9]到达[D5068,91,43]

检查地图改变[D501]

跳转到<地图选择>

<自动存物>

对话[小红]

发送命令[@cangku]

走到附近[01251,12,16]

对话[库管]

自动存物

使用[回城卷]

返回

<衣服修理>

系统显示[衣服修理]

走到附近[818,70,74]

对话[小红]

如果[自己][衣服][名称]="$衣服"

那么特修[衣服]

否则特修[$衣服]装备到[衣服]

返回

<武器修理>

系统显示[武器修理]

走到附近[818,70,74]

对话[小红]

如果[自己][武器][名称]="$武器"

那么特修[武器]

否则特修[$武器]装备到[武器]

返回

<头盔修理>

系统显示[头盔修理]

走到附近[818,70,74]

对话[小红]

如果[自己][头盔][名称]="$头盔"

那么特修[头盔]

否则特修[$头盔]装备到[头盔]

返回

<项链修理>

系统显示[项链修理]

走到附近[818,70,74]

对话[小红]

如果[自己][项链][名称]="$项链"

那么特修[项链]

否则特修[$项链]装备到[项链]

返回

<左手镯修理>

系统显示[修理左手镯]

走到附近[818,64,74]

对话[小红]

如果[自己][左手镯][名称]="$左手镯"

那么特修[左手镯]

否则特修[$左手镯]装备到[左手镯]

返回

<右手镯修理>

系统显示[修理右手镯]

走到附近[818,70,74]

对话[小红]

如果[自己][右手镯][名称]="$右手镯"

那么特修[右手镯]

否则特修[$右手镯]装备到[右手镯]

返回

<左戒指修理>

系统显示[修理左戒指]

走到附近[818,70,74]

对话[小红]

如果[自己][左戒指][名称]="$左戒指"

那么特修[左戒指]

否则特修[$左戒指]装备到[左戒指]

返回

<右戒指修理>

系统显示[修理右戒指]

走到附近[818,70,74]

对话[小红]

如果[自己][右戒指][名称]="$右戒指"

那么特修[右戒指]

否则特修[$右戒指]装备到[右戒指]

返回

<杂物购买>

系统显示[购买杂物]

走到附近[818,64,74]

对话[杂货李]

买够[回城卷]2个

买够[随机传送卷]2个

如果[回城卷][数量]<2

那么跳转到<杂物购买>

返回

<药品购买>

系统显示[购买药品]

走到附近[818,70,74]

对话[小红]

发送命令[@Gpo]

等待[1000]毫秒

对话[姚老板]

买够[打捆超强金创药]10个

买够[打捆超强魔法药]15个

使用[回城卷]

返回

<逃离>

使用[回城卷]

关闭全局脚本

停止战斗

躲避PKER关闭

等待[2000]毫秒

跳转到<地图选择>

<返回出发点>

走到附近[8,631,456]

对话[流浪汉]

买够[回城卷]2个

买够[随机传送卷]4个

系统显示[去女儿国]

走到附近[8,634,457]

对话[旅行者]

等待[1000]毫秒

选择[去迷花村]

等待[1000]毫秒

走到附近[818,62,67]

返回

<挂机脚本结束>

这要楼主要的祖玛阁组对脚本装备楼主可以自己改,组队的话可以在设置那调。

Ⅲ 魔兽争霸3冰封王座脚本解析

1.if(not(施放技能()=='A0CX'))then
2.return false
3.endif
4.return true
5.endfunction
6.function Trig_XN001_Actions takes nothing returns nothing
7.set udg_Xiann_dw[1]=触发单位()
8.set udg_Xiann_zs[0]=转换实数为整数(面向角度(udg_Xiann_dw[1]))
9.set udg_Xiann_dian[1]=单位位置(udg_Xiann_dw[1])
10.set udg_Xiann_dian[2]=极坐标位移点(udg_Xiann_dian[1],150.00,I2R(udg_Xiann_zs[0]))
11.set udg_Xiann_dw[2]=创建单位(指定点) [新](单位所有者(udg_Xiann_dw[1]),'e036',udg_Xiann_dian[2],12.(面向角度(udg_Xiann_dw[1])-180.00))
13.call 清除点 [R](udg_Xiann_dian[1])
14.call 清除点 [R](udg_Xiann_dian[2])
15.call 允许/禁用技能 [R](单位所有者(udg_Xiann_dw[1]),'A0CX',false)
16.call 添加技能 [R](udg_Xiann_dw[1],'A0CY')
17.call 设置技能永久性 [R](udg_Xiann_dw[1],true,'A0CY')
18.set udg_Xiann_zu[1]=新建的单位组 [R]()
19.call 开启计时器(udg_Xiann_jsq[1],true,0.03)
20.endfunction
21.function InitTrig_XN001 takes nothing returns nothing
22.set gg_trg_XN001=新建触发 [新]()
23.call 任意单位事件(gg_trg_XN001,玩家单位事件-开始一种技能的效)
24.call 添加触发器限制条件(gg_trg_XN001,Condition(function Trig_XN001_Conditions))
25.call 添加触发器动作(gg_trg_XN001,function Trig_XN001_Actions)
26.endfunction
27.function Trig_XN002_Func001Func016002003001001 takes nothing returns boolean
28.return(单位存活(匹配单位())==true)
29.endfunction
30.function Trig_XN002_Func001Func016002003001002 takes nothing returns boolean
31.return(在单位组(匹配单位(),udg_Xiann_zu[1])==false)
32.endfunction
33.function Trig_XN002_Func001Func016002003001 takes nothing returns boolean
34.return 条件A与条件B(Trig_XN002_Func001Func016002003001001(),Trig_XN002_Func001Func016002003001002())
35.endfunction
36.function Trig_XN002_Func001Func016002003002 takes nothing returns boolean
37.return(是玩家的敌对单位(匹配单位(),单位所有者(udg_Xiann_dw[1]))==true)
38.endfunction

Ⅳ 那为大哥给我一个传家宝炼狱魔城2.3的挂机脚本

触发器:如果待存物品个数>=3 或者物品[雷裂刀]的数量>=1个 或者物品[道玄剑]的数量>=1个 或者物品[霹雳法杖]的数量>=1个 或者物品[龙魂项链]的数量>=1个 或者物品[如意项链]的数量>=1个 或者物品[镇神项链]的数量>=1个,那么跳转到脚本标记<脚本开始>
触发器:如果当前地图名=[炼狱魔境六层] 并且 包裹物品[回城卷轴]的数量<=1个,那么跳转到脚本标记<买回城>
触发器:如果当前地图名=[中州],那么跳转到脚本标记<中州处理>
触发器:如果当前地图名=[热砂荒漠],那么跳转到脚本标记<土城处理>
触发器:如果当前地图名=[死水沼泽],那么跳转到脚本标记<死水处理>
触发器:如果当前地图名=[禁地],那么跳转到脚本标记<禁地处理>
触发器:如果当前地图名=[西域奇境],那么跳转到脚本标记<西域处理>
触发器:如果HP<=15%,那么跳转到脚本标记<脚本开始>
触发器:如果当前地图名=[炼狱魔城一层],那么跳转到脚本标记<1>
触发器:如果当前地图名=[炼狱魔城二层],那么跳转到脚本标记<2>
触发器:如果当前地图名=[炼狱魔城三层],那么跳转到脚本标记<3>
*--------------------- 变量设定 ----------------------------*
<变量设定>
全局变量[&武器&]
全局变量[&头盔&]
全局变量[&衣服&]
全局变量[&腰带&]
全局变量[&靴子&]
全局变量[&项链&]
全局变量[&左手镯&]
全局变量[&右手镯&]
全局变量[&左戒指&]
全局变量[&右戒指&]
全局变量[&荣誉勋章&]
全局变量[&散红数&]
全局变量[&散红名&]
全局变量[&红药包数&]
全局变量[&蓝药包数&]
全局变量[&红药品种&]
全局变量[&蓝药品种&]
全局变量[&随机数&]
全局变量[&回城卷数&]
全局变量[&随机包数&]
全局变量[&练级点&]
全局变量[&修手数&]
全局变量[&修戒数&]
全局变量[&修链数&]
全局变量[&修武器数&]
全局变量[&修衣服数&]
全局变量[&修头数&]
全局变量[&修靴子数&]
全局变量[&修腰带数&]
if 读取脚本设置[]
打印[读取以前的设置]
else
endif
<指定变量>
&练级地图&=炼狱魔境十层
&武器&=&身上[武器]位置的装备&
&头盔&=&身上[头盔]位置的装备&
&衣服&=&身上[衣服]位置的装备&
&腰带&=&身上[腰带]位置的装备&
&靴子&=&身上[靴子]位置的装备&
&项链&=&身上[项链]位置的装备&
&左手镯&=&身上[左手镯]位置的装备&
&右手镯&=&身上[右手镯]位置的装备&
&左戒指&=&身上[左戒指]位置的装备&
&右戒指&=&身上[右戒指]位置的装备&
&荣誉勋章&=&身上[马牌]位置的装备&
&红药品种&=特级金创药包
&蓝药品种&=超级魔法药
&散红数&=2
&散红名&=金创药(大量)
&散蓝数&=2
&散蓝名&=特级魔法药
&蓝药包数&=4
&红药包数&=22
&随机数&=0
&随机包数&=0
&回城卷数&=1
调用子脚本<定义界面>
<脚本开始>
*----------------------回城处理-----------------------------*
使用[回城卷轴]
走到地图(落霞岛,0,0)
打印[老子准备回城买药修装备,我草他妈的!]
*----------------------仓库存物-----------------------------*
<拆金条>
if 物品[金条]的数量>0个
走到(落霞岛,210,237)
找到[仓库管理员](落霞岛,210,237)
与[仓库管理员]对话
选择[捆扎物品]
选择[用金条交换金币]
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
跳转到标记<拆金条>
endif
<存物>
if 待存物品个数>0
走到(落霞岛,210,237)
找到[仓库管理员](落霞岛,210,237)
与[仓库管理员]对话
选择[存放物品]
自动存物
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
*------------------------首饰-------------------------------*
<出售首饰>
if 待卖[手镯]个数>0 或者待卖[戒指]个数>0 或者待卖[项链]个数>0
走到(落霞岛,241,232)
找到[首饰店店员](落霞岛,241,232)
与[首饰店店员]对话
选择[出售首饰]
等待[3000]毫秒
自动卖掉[手镯]类别物品
等待[3000]毫秒
自动卖掉[戒指]类别物品
等待[3000]毫秒
自动卖掉[项链]类别物品
等待[3000]毫秒
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
<修项链>
if [项链]位置的持久<&修链数&
卸下[项链] 位置的装备
走到(落霞岛,241,232)
找到[首饰店店员](落霞岛,241,232)
与[首饰店店员]对话
选择[特殊修理]
修理[&项链&]
装备[&项链&]到[项链]
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
<修左手镯>
if [左手镯]位置的持久<&修手数&
卸下[左手镯] 位置的装备
走到(落霞岛,241,232)
找到[首饰店店员](落霞岛,241,232)
与[首饰店店员]对话
选择[特殊修理]
修理[&左手镯&]
装备[&左手镯&]到[左手镯]
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
<修左戒指>
if [左戒指]位置的持久<&修戒数&
卸下[左戒指] 位置的装备
走到(落霞岛,241,232)
找到[首饰店店员](落霞岛,241,232)
与[首饰店店员]对话
选择[特殊修理]
修理[&左戒指&]
装备[&左戒指&]到[左戒指]
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
<修右手镯>
if [右手镯]位置的持久<&修手数&
卸下[右手镯] 位置的装备
走到(落霞岛,241,232)
找到[首饰店店员](落霞岛,241,232)
与[首饰店店员]对话
选择[特殊修理]
修理[&右手镯&]
装备[&右手镯&]到[右手镯]
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
<修右戒指>
if [右戒指]位置的持久<&修戒数&
卸下[右戒指] 位置的装备
走到(落霞岛,241,232)
找到[首饰店店员](落霞岛,241,232)
与[首饰店店员]对话
选择[特殊修理]
修理[&右戒指&]
装备[&右戒指&]到[右戒指]
选择[返 回]
选择[关闭选单]
等待[2000]毫秒
endif
*------------------------武器-------------------------------*
<出售武器>
if 待卖[武器]个数>0
走到(落霞岛,227,216)
找到[铁匠](落霞岛,227,216)
与[铁匠]对话
选择[出售武器]
自动卖掉[武器]类别物品
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
<修武器>
if [武器]位置的持久<&修武器数&
卸下[武器] 位置的装备
走到(落霞岛,227,216)
找到[铁匠](落霞岛,227,216)
与[铁匠]对话
选择[特殊修理]
修理[&武器&]
装备[&武器&]到[武器]
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
*------------------------防具-------------------------------*
<出售衣服>
if 待卖[衣服]个数>0 或者待卖[头盔]个数>0 或者待卖[靴子]个数>0 或者待卖[腰带]个数>0
走到(落霞岛,218,230)
找到[服装店老板娘](落霞岛,218,230)
与[服装店老板娘]对话
选择[出售衣服]
自动卖掉[衣服]类别物品
等待[2000]毫秒
自动卖掉[头盔]类别物品
等待[2000]毫秒
自动卖掉[靴子]类别物品
等待[2000]毫秒
自动卖掉[腰带]类别物品
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
<修衣服>
if [衣服]位置的持久<&修衣服数&
卸下[衣服] 位置的装备
走到(落霞岛,218,230)
找到[服装店老板娘](落霞岛,218,230)
与[服装店老板娘]对话
选择[特殊修理]
修理[&衣服&]
装备[&衣服&]到[衣服]
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
<修头盔>
if [头盔]位置的持久<&修头数&
卸下[头盔] 位置的装备
走到(落霞岛,218,230)
找到[服装店老板娘](落霞岛,218,230)
与[服装店老板娘]对话
选择[特殊修理]
修理[&头盔&]
装备[&头盔&]到[头盔]
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
<修靴子>
if [靴子]位置的持久<&修靴子数&
卸下[靴子] 位置的装备
走到(落霞岛,218,230)
找到[服装店老板娘](落霞岛,218,230)
与[服装店老板娘]对话
选择[特殊修理]
修理[&靴子&]
装备[&靴子&]到[靴子]
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
<修腰带>
if [腰带]位置的持久<&修腰带数&
卸下[腰带] 位置的装备
走到(落霞岛,218,230)
找到[服装店老板娘](落霞岛,218,230)
与[服装店老板娘]对话
选择[特殊修理]
修理[&腰带&]
装备[&腰带&]到[腰带]
选择[返 回]
选择[关闭选单]
等待[1000]毫秒
endif
打印[妈的一身崭新装备,老子是不是很帅?]
*------------------------杂货-------------------------------*
<购买杂物>
if 包裹物品[回城卷轴]的数量<=&回城卷数&个 并且 包裹物品[随机卷轴]的数量<=&随机数&个 并且 包裹物品[随机传送卷包]的数量<=&随机包数&个
走到(落霞岛,233,255)
找到[杂货小贩](落霞岛[1],233,255)
与[杂货小贩]对话
选择[购入物品]
买够&随机数&个随机卷轴
买够&随机包数&个随机传送卷包
买够&回城卷数&个回城卷轴
选择[返 回]
结束对话
等待[1000]毫秒
endif
*------------------------药品-------------------------------*
<购买药品>
if 包裹物品[&蓝药品种&]的数量<=&蓝药包数&个 并且 包裹物品[&红药品种&]的数量<=&红药包数&个
走到(落霞岛,225,269)
找到[药店掌柜](落霞岛[1],222,267)
与[药店掌柜]对话
选择[购入药品]
买够&散红数&个&散红名&
等待[1500]毫秒
打印[已经成功购买&散红数&个&散红名&]
买够&散蓝数&个&散蓝名&
等待[1500]毫秒
打印[已经成功购买&散蓝数&个&散蓝名&]
买够&蓝药包数&个&蓝药品种&
等待[1500]毫秒
打印[已经成功购买&蓝药包数&个&蓝药品种&]
买够&红药包数&个&红药品种&
等待[1000]毫秒
打印[已经成功购买&红药包数&个&红药品种&]
选择[返 回]
结束对话
等待[1000]毫秒
endif
*------------------------战斗-------------------------------*
<开始战斗>
走到(落霞岛,247,252)
找到[老兵](落霞岛[1],253,248)
与[老兵]对话
选择[传送服务’┆‘]
选择[想快速到达险恶区域]
选择[炼狱魔城’┆]
选择[进入练狱]
走到门点(落霞岛,248,248)到达地图(炼狱魔城一层,108,31)
等待[1000]毫秒
<1>
边打边走到(炼狱魔城一层,193,32)
找到[传送门](炼狱魔城一层[NL011],192,31)
与[传送门]对话
选择[继续挑战炼狱魔城]
走到门点(炼狱魔城一层,193,32)到达地图(炼狱魔城二层,150,21)
等待[1000]毫秒
<2>
边打边走到(炼狱魔城二层,237,51)
走到(炼狱魔城二层,233,45)
找到[传送门](炼狱魔城二层[NL014],232,43)
与[传送门]对话
选择[继续挑战炼狱魔城]
走到门点(炼狱魔城二层,231,49)到达地图(炼狱魔城三层,160,31)
等待[1000]毫秒
<3>
边打边走到(炼狱魔城三层,319,83)
走到(炼狱魔城三层,322,81)
找到[传送门](炼狱魔城三层[NL017],322,79)
与[传送门]对话
选择[继续挑战炼狱魔城]
走到门点(炼狱魔城三层,199,21)到达地图(炼狱魔境十层,199,21)
等待[2000]毫秒
丢剩1个回城卷轴
等待[2000]毫秒
<开始巡逻战斗>
打印[他妈妈的,开始挂机了,大家都给我注意了!]
等待[500]毫秒
边打边走到(炼狱魔境十层,220,45)
边打边走到(炼狱魔境十层,153,72)
边打边走到(炼狱魔境十层,243,71)
边打边走到(炼狱魔境十层,333,102)
边打边走到(炼狱魔境十层,140,165)
边打边走到(炼狱魔境十层,121,204)
边打边走到(炼狱魔境十层,55,214)
边打边走到(炼狱魔境十层,25,145)
边打边走到(炼狱魔境十层,47,123)
边打边走到(炼狱魔境十层,94,168)
边打边走到(炼狱魔境十层,114,136)
边打边走到(炼狱魔境十层,335,90)
走到(炼狱魔境十层,339,85)
等待[2000]毫秒
边打边走到(炼狱魔境十层,336,191)
边打边走到(炼狱魔境十层,312,251)
边打边走到(炼狱魔境十层,261,279)
边打边走到(炼狱魔境十层,239,244)
边打边走到(炼狱魔境十层,311,137)
边打边走到(炼狱魔境十层,227,147)
边打边走到(炼狱魔境十层,176,204)
边打边走到(炼狱魔境十层,97,258)
边打边走到(炼狱魔境十层,180,274)
边打边走到(炼狱魔境十层,142,303)
边打边走到(炼狱魔境十层,179,344)
边打边走到(炼狱魔境十层,221,384)
边打边走到(炼狱魔境十层,279,321)
边打边走到(炼狱魔境十层,304,206)
边打边走到(炼狱魔境十层,358,185)
走到(炼狱魔境十层,360,183)
等待[2000]毫秒
向上跳转到标记<开始巡逻战斗>
<买回城>
if 物品[回城卷轴]的数量>0个
走到(炼狱魔境六层,38,39)
找到[流浪商人](炼狱魔境六层[NL006],39,39)
与[流浪商人]对话
选择[购入物品]
买够&回城卷数&个回城卷轴
选择[返 回]
结束对话
endif
向上跳转到标记<脚本开始>
<中州处理>
走到(中州,467,222)
找到[老兵](中州[0],468,226)
与[老兵]对话
选择[传送服务’┆‘]
选择[想快速到达其它城市]
选择[落霞岛屿’┆‘]
走到门点(中州,467,222)到达地图(落霞岛,253,250)
向上跳转到标记<脚本开始>
<土城处理>
走到(热砂荒漠,225,446)
找到[老兵](热砂荒漠[2],222,444)
与[老兵]对话
选择[传送服务’┆‘]
选择[想快速到达其它城市]
选择[落霞岛屿’┆‘]
走到门点(热砂荒漠,225,446)到达地图(落霞岛,253,250)
向上跳转到标记<脚本开始>
<死水处理>
走到(死水沼泽,52,39)
找到[老兵](死水沼泽[7],55,39)
与[老兵]对话
选择[传送服务’┆‘]
选择[想快速到达其它城市]
选择[落霞岛屿’┆‘]
走到门点(死水沼泽,52,39)到达地图(落霞岛,253,250)
向上跳转到标记<脚本开始>
<禁地处理>
走到(禁地,343,172)
找到[老兵](禁地[4],340,174)
与[老兵]对话
选择[传送服务’┆‘]
选择[想快速到达其它城市]
选择[落霞岛屿’┆‘]
走到门点(禁地,343,172)到达地图(落霞岛,253,250)
向上跳转到标记<脚本开始>
<西域处理>
走到(西域奇境,465,107)
找到[老兵](西域奇境[5],462,107)
与[老兵]对话
选择[传送服务’┆‘]
选择[想快速到达其它城市]
选择[落霞岛屿’┆‘]
走到门点(西域奇境,465,107)到达地图(落霞岛,253,250)
向上跳转到标记<脚本开始>
<定义界面>
定义界面[ClassName=TForm,Name=Form1,Width=424,Height=297,Caption=私服魔境10挂机脚本-飚风浪子出品 ,Color=$D8E9EC,FontColor=$000000,TitleBar=True,Alpha=255,]
定义界面[ClassName=TLabel,Caption=练级地图:,Left=14,Top=14,Width=60,Color=$D8E9EC,Name=ct66,]
定义界面[ClassName=TLabel,Caption=私服挂机脚本,Left=218,Top=12,Width=144,Height=23,Color=$D8E9EC,FontColor=$0000FF,FontName=楷体_GB2312,FontSize=17,Name=ct71,]
定义界面[ClassName=TComboBox,ValueName=练级地图,Text=炼狱魔境十层,Items=;,Left=76,Top=11,Width=97,Name=ct67,]
定义界面[ClassName=TGroupBox,Caption=补给设置(战士专用),Left=12,Top=42,Width=401,Height=189,Color=$D8E9EC,Name=ct0,]
定义界面[ClassName=TGroupBox,Caption=药品设置,Left=14,Top=19,Width=372,Height=67,Color=$D8E9EC,Name=ct1,ParentName=ct0,]
定义界面[ClassName=TLabel,Caption=补足,Left=6,Top=18,Width=24,Color=$D8E9EC,Name=ct2,ParentName=ct1,]
定义界面[ClassName=TLabel,Caption=个,Left=54,Top=18,Width=12,Color=$D8E9EC,Name=ct5,ParentName=ct1,]
定义界面[ClassName=TLabel,Caption=个,Left=54,Top=40,Width=12,Color=$D8E9EC,Name=ct9,ParentName=ct1,]
定义界面[ClassName=TLabel,Caption=补足,Left=6,Top=41,Width=24,Color=$D8E9EC,Name=ct7,ParentName=ct1,]
定义界面[ClassName=TLabel,Caption=补足,Left=188,Top=18,Width=24,Color=$D8E9EC,Name=ct11,ParentName=ct1,]
定义界面[ClassName=TLabel,Caption=补足,Left=188,Top=41,Width=24,Color=$D8E9EC,Name=ct15,ParentName=ct1,]
定义界面[ClassName=TLabel,Caption=个,Left=239,Top=20,Width=12,Color=$D8E9EC,Name=ct13,ParentName=ct1,]
定义界面[ClassName=TLabel,Caption=个,Left=238,Top=41,Width=12,Color=$D8E9EC,Name=ct17,ParentName=ct1,]
定义界面[ClassName=TEdit,ValueName=&蓝药包数&,Text=5,Left=215,Top=38,Width=20,Name=ct16,ParentName=ct1,]
定义界面[ClassName=TComboBox,ValueName=&散红名&,Text=金创药(大量),Items=金创药(中量);金创药(大量);特级金创药;,ItemIndex=1,Left=68,Top=15,Width=109,Name=ct6,ParentName=ct1,]
定义界面[ClassName=TEdit,ValueName=&红药包数&,Text=2,Left=32,Top=38,Width=20,Name=ct8,ParentName=ct1,]
定义界面[ClassName=TPanel,Caption=ct65,Left=181,Top=7,Width=2,Height=57,Name=ct65,ParentName=ct1,Ctl3D=False,]
定义界面[ClassName=TEdit,ValueName=&散蓝数&,Text=2,Left=215,Top=16,Width=20,Name=ct12,ParentName=ct1,]
定义界面[ClassName=TComboBox,ValueName=&散蓝名&,Text=特级魔法药,Items=魔法药(中量);魔法药(大量);特级魔法药;,ItemIndex=2,Left=254,Top=15,Width=109,Name=ct14,ParentName=ct1,]
定义界面[ClassName=TComboBox,ValueName=&蓝药包名&,Text=特级魔法药包,Items=超级魔法药;特级魔法药包;,Left=254,Top=38,Width=109,Name=ct18,ParentName=ct1,]
定义界面[ClassName=TEdit,ValueName=&散红数&,Text=2,Left=32,Top=16,Width=20,Name=ct3,ParentName=ct1,]
定义界面[ClassName=TComboBox,ValueName=&红药包名&,Text=超级金创药,Items=金创药(中)包;超级金创药;特级金创药包;,ItemIndex=1,Left=68,Top=38,Width=109,Name=ct10,ParentName=ct1,]
定义界面[ClassName=TGroupBox,Caption=卷轴设置,Left=14,Top=93,Width=184,Height=89,Color=$D8E9EC,Name=ct19,ParentName=ct0,]
定义界面[ClassName=TLabel,Caption=补足,Left=5,Top=40,Width=24,Color=$D8E9EC,Name=ct22,ParentName=ct19,]
定义界面[ClassName=TLabel,Caption=个,Left=57,Top=17,Width=12,Color=$D8E9EC,Name=ct21,ParentName=ct19,]
定义界面[ClassName=TLabel,Caption=个,Left=57,Top=39,Width=12,Color=$D8E9EC,Name=ct23,ParentName=ct19,]
定义界面[ClassName=TLabel,Caption=随机卷轴,Left=73,Top=18,Width=48,Color=$D8E9EC,Name=ct41,ParentName=ct19,]
定义界面[ClassName=TLabel,Caption=随机传送卷包,Left=73,Top=39,Width=72,Color=$D8E9EC,Name=ct42,ParentName=ct19,]
定义界面[ClassName=TLabel,Caption=补足,Left=6,Top=18,Width=25,Height=22,Color=$D8E9EC,Name=ct72,ParentName=ct19,]
定义界面[ClassName=TLabel,Caption=回城卷轴,Left=73,Top=62,Width=48,Color=$D8E9EC,Name=ct74,ParentName=ct19,]
定义界面[ClassName=TLabel,Caption=补足,Left=6,Top=61,Width=24,Color=$D8E9EC,Name=ct20,ParentName=ct19,]
定义界面[ClassName=TLabel,Caption=个,Left=57,Top=62,Width=12,Height=18,Color=$D8E9EC,Name=ct76,ParentName=ct19,]
定义界面[ClassName=TEdit,ValueName=&随机包数&,Text=0,Left=33,Top=37,Width=20,Name=ct31,ParentName=ct19,]
定义界面[ClassName=TEdit,ValueName=&回城卷数&,Text=1,Left=33,Top=59,Width=20,Name=ct75,ParentName=ct19,]
定义界面[ClassName=TEdit,ValueName=&随机数&,Text=2,Left=33,Top=15,Width=20,Name=ct28,ParentName=ct19,]
定义界面[ClassName=TGroupBox,Caption={装备修理(为特修,暂无勋章)},Left=206,Top=93,Width=184,Height=89,Color=$D8E9EC,Name=ct77,ParentName=ct0,]
定义界面[ClassName=TLabel,Caption=手镯持久<,Left=10,Top=16,Width=54,Color=$D8E9EC,Name=ct78,ParentName=ct77,]
定义界面[ClassName=TLabel,Caption=戒指持久<,Left=10,Top=32,Width=54,Color=$D8E9EC,Name=ct81,ParentName=ct77,]
定义界面[ClassName=TLabel,Caption=项链持久<,Left=9,Top=48,Width=54,Color=$D8E9EC,Name=ct83,ParentName=ct77,]
定义界面[ClassName=TLabel,Caption=武器持久<,Left=9,Top=64,Width=54,Color=$D8E9EC,Name=ct85,ParentName=ct77,]
定义界面[ClassName=TLabel,Caption=衣服持久<,Left=97,Top=16,Width=54,Color=$D8E9EC,Name=ct87,ParentName=ct77,]
定义界面[ClassName=TLabel,Caption=头盔持久<,Left=97,Top=33,Width=54,Color=$D8E9EC,Name=ct89,ParentName=ct77,]
定义界面[ClassName=TLabel,Caption=靴子持久<,Left=97,Top=49,Width=54,Color=$D8E9EC,Name=ct91,ParentName=ct77,]
定义界面[ClassName=TLabel,Caption=腰带持久<,Left=97,Top=64,Width=54,Color=$D8E9EC,Name=ct93,ParentName=ct77,]
定义界面[ClassName=TEdit,ValueName=&修腰带数&,Text=4,Left=153,Top=65,Width=29,Height=16,Name=ct94,ParentName=ct77,]
定义界面[ClassName=TEdit,ValueName=&修手数&,Text=4,Left=66,Top=14,Width=29,Height=16,Name=ct80,ParentName=ct77,]
定义界面[ClassName=TEdit,ValueName=&修头数&,Text=4,Left=153,Top=32,Width=29,Height=16,Name=ct90,ParentName=ct77,]
定义界面[ClassName=TEdit,ValueName=&修靴子数&,Text=4,Left=153,Top=49,Width=29,Height=16,Name=ct92,ParentName=ct77,]
定义界面[ClassName=TEdit,ValueName=&修武器数&,Text=20,Left=66,Top=65,Width=29,Height=16,Name=ct86,ParentName=ct77,]
定义界面[ClassName=TEdit,ValueName=&修链数&,Text=5,Left=66,Top=48,Width=29,Height=16,Name=ct84,ParentName=ct77,]
定义界面[ClassName=TEdit,ValueName=&修戒数&,Text=3,Left=66,Top=31,Width=29,Height=16,Name=ct82,ParentName=ct77,]
定义界面[ClassName=TEdit,ValueName=&修衣服数&,Text=18,Left=153,Top=16,Width=29,Height=16,Name=ct88,ParentName=ct77,]
显示界面[60]
保存脚本设置[]
打印[你将买够&红药包数&个红药包,&蓝药包数&个蓝药包,&回城卷数&个回城卷,&随机包数&个随机传送卷包,&随机数&个随机卷轴,然后开始你的挂机]
打印[你现在身穿[&衣服&] 手拿[&武器&] 头带[&头盔&] 佩带[&项链&]]
打印[左手镯[&左手镯&] 右手镯[&右手镯&] 左戒指[&左戒指&] 右戒指[&右戒指&] 腰带[&腰带&] 靴子[&靴子&]]
打印[以上这些装备都是特修,带什么修什么,OK?请设定好需要购买的物品个数]
打印[系统版本号=&系统版本号&]
返回父脚本

Ⅳ 按键精灵脚本

按键精灵
里面有vba脚本程序,可以调用按键精灵判断屏幕某范围内的图像与已知的bmp图像是否一致(完全一致或模糊一致),很简单的,看看就知道了

Ⅵ 分享70个经典的 Shell 脚本面试题与答案

我们为你的面试准备选择了 70 个你可能遇到的 shell 脚本面试问题及解答。了解脚本或至少知道基础知识对系统管理员来说至关重要,它也有助于你在工作环境中自动完成很多任务。在过去的几年里,我们注意到所有的 linux 工作职位都要求脚本技能。

1) 如何向脚本传递参数 ?

./script argument

例子: 显示文件名称脚本

(LCTT 译注:谢谢某匿名访客的提醒,原题有误,修改之。)

2) 如何在脚本中使用参数 ?

第一个参数 : 2

例子 : 脚本会复制文件(arg1) 到目标地址(arg2)

3) 如何计算传递进来的参数 ?

4) 如何在脚本中获取脚本名称 ?

5) 如何检查之前的命令是否运行成功 ?

6) 如何获取文件的最后一行 ?

7) 如何获取文件的第一行 ?

8) 如何获取一个文件每一行的第三个元素 ?

9) 假如文件中每行第一个元素是 FIND,如何获取第二个元素

10) 如何调试 bash 脚本

将 -xv 参数加到 #!/bin/bash 后

例子:

11) 举例如何写一个函数 ?

12) 如何向连接两个字符串 ?

输出

HelloWorld

13) 如何进行两个整数相加 ?

输出

3

据 @kashu 的意见,本题的更佳回答为:

两个整数相加,还有若干种方法实现:

14) 如何检查文件系统中是否存在某个文件 ?

15) 写出 shell 脚本中所有循环语法 ?

for 循环 :

while 循环 :

until 循环 :

16) 每个脚本开始的 #!/bin/sh 或 #!/bin/bash 表示什么意思 ?

这一行说明要使用的 shell。#!/bin/bash 表示脚本使用 /bin/bash。对于 python 脚本,就是

17) 如何获取文本文件的第 10 行 ?

18) bash 脚本文件的第一个符号是什么

19) 命令:[ -z "" ] && echo 0 || echo 1 的输出是什么

20) 命令 “export” 有什么用 ?

21) 如何在后台运行脚本 ?

在脚本后面添加 “&”。

据 @kashu 的意见,更好的答案是:

大部分时间我们可能是远程使用Linux,我碰到过由于网络断线使得在后台运行的command &没了...

22) "chmod 500 script" 做什么 ?

使脚本所有者拥有可执行权限。

23) ">" 做什么 ?

重定向输出流到文件或另一个流。

24) & 和 && 有什么区别

25) 什么时候要在 [ condition ] 之前使用 “if” ?

当条件满足时需要运行多条命令的时候。

26) 命令: name=John && echo 'My name is $name' 的输出是什么

variable

27) bash shell 脚本中哪个符号用于注释 ?

28) 命令: echo ${new:-variable} 的输出是什么

variable

29) ' 和 " 引号有什么区别 ?

30) 如何在脚本文件中重定向标准输出和标准错误流到 log.txt 文件 ?

在脚本文件中添加 "exec >log.txt 2>&1" 命令。

31) 如何只用 echo 命令获取字符串变量的一部分 ?

例子:

32) 如果给定字符串 variable="User:123:321:/home/dir",如何只用 echo 命令获取 home_dir ?

33) 如何从上面的字符串中获取 “User” ?

34) 如何使用 awk 列出 UID 小于 100 的用户 ?

35) 写程序为用户计算主组数目并显示次数和组名

36) 如何在 bash shell 中更改标准的域分隔符为 ":" ?

37) 如何获取变量长度 ?

38) 如何打印变量的最后 5 个字符 ?

39) {variable: -10} 有什么区别?

40) 如何只用 echo 命令替换字符串的一部分 ?

41) 哪个命令将命令替换为大写 ?

42) 如何计算本地用户数目 ?

43) 不用 wc 命令如何计算字符串中的单词数目 ?

44) "export $variable" 或 "export variable" 哪个正确 ?

45) 如何列出第二个字母是 a 或 b 的文件 ?

46) 如何将整数 a 加到 b 并赋值给 c ?

47) 如何去除字符串中的所有空格 ?

48) 重写这个命令,将输出变量转换为复数: item="car"; echo "I like $item" ?

49) 写出输出数字 0 到 100 中 3 的倍数(0 3 6 9 …)的命令 ?

50) 如何打印传递给脚本的所有参数 ?

51) [ b ] 和 [ b ] 有什么区别

52) = 和 == 有什么区别

53) 写出测试 $a 是否大于 12 的命令 ?

[ $a -gt 12 ]

54) 写出测试 $b 是否小于等于 12 的命令 ?

[ $b -le 12 ]

55) 如何检查字符串是否以字母 "abc" 开头 ?

[[ $string == abc* ]]

56) [[ string == "abc " ]] 有什么区别*

57) 如何列出以 ab 或 xy 开头的用户名 ?

egrep " ab| xy" /etc/passwd|cut -d: -f1

58) bash 中 $! 表示什么意思 ?

后台最近执行命令的 PID.

59) $? 表示什么意思 ?

前台最近命令的结束状态。

60) 如何输出当前 shell 的 PID ?

echo $$

61) 如何获取传递给脚本的参数数目 ?

echo $#

(LCTT 译注:和第3题重复了。)

62) @ 有什么区别

63) 如何在 bash 中定义数组 ?

64) 如何打印数组的第一个元素 ?

65) 如何打印数组的所有元素 ?

66) 如何输出所有数组索引 ?

67) 如何移除数组中索引为 2 的元素 ?

68) 如何在数组中添加 id 为 333 的元素 ?

69) shell 脚本如何获取输入的值 ?

a) 通过参数

b) 通过 read 命令

70) 在脚本中如何使用 "expect" ?

Ⅶ 赛尔号混地脚本带些啥

狂野和33模式。在赛尔号这款游戏中混地脚本最常见的是狂野和33模式,就是自动战斗方式,特点是阵容较为固定,出招方式较为固定,无法主动切换精灵。

热点内容
war3存储空间不足 发布:2024-04-28 13:20:54 浏览:949
微信密码已经忘记了如何找回 发布:2024-04-28 11:54:13 浏览:304
腾讯云服务器可以备案几个网站 发布:2024-04-28 11:54:12 浏览:458
影响编译速度的因素有哪些 发布:2024-04-28 11:53:58 浏览:255
安全配置汽车有哪些 发布:2024-04-28 11:48:07 浏览:830
存储链路中断 发布:2024-04-28 11:11:39 浏览:734
安卓锤子手机怎么改文字 发布:2024-04-28 11:09:52 浏览:100
列举贪心算法 发布:2024-04-28 10:44:15 浏览:698
文具店疫情演练脚本 发布:2024-04-28 10:23:40 浏览:25
绿色商城源码 发布:2024-04-28 10:04:45 浏览:587