當前位置:首頁 » 編程軟體 » 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模式,就是自動戰斗方式,特點是陣容較為固定,出招方式較為固定,無法主動切換精靈。

熱點內容
華盛國際的密碼是多少 發布:2023-02-09 04:07:50 瀏覽:600
補丁和腳本 發布:2023-02-09 04:04:46 瀏覽:447
安卓投屏大師pc端在哪裡下載 發布:2023-02-09 04:04:45 瀏覽:794
安卓投屏帕拉梅拉怎麼設置 發布:2023-02-09 04:02:48 瀏覽:220
java基本類型存儲 發布:2023-02-09 04:02:41 瀏覽:62
安卓微信在哪裡打開 發布:2023-02-09 03:49:35 瀏覽:216
安卓藍牙耳機哪個版本好 發布:2023-02-09 03:47:30 瀏覽:110
用linux做什麼 發布:2023-02-09 03:42:37 瀏覽:770
故事分鏡頭腳本 發布:2023-02-09 03:42:22 瀏覽:180
雲存儲馬雲 發布:2023-02-09 03:41:39 瀏覽:216