double calculateAllPrices(Land… Lands) { //or Land[ ] Lands
double total = 0; // 加總變數
for(Land l : Lands) { // 一一取出各個物件
total += calculatePrice(l); // 個別計算並累加
}
return total;
}
// ================================================
Easy is power
double calculateAllPrices(Land… Lands) { //or Land[ ] Lands
double total = 0; // 加總變數
for(Land l : Lands) { // 一一取出各個物件
total += calculatePrice(l); // 個別計算並累加
}
return total;
}
// ================================================
物件導向程式設計邏輯尋找線上遊戲bug
舉例:
遊戲內有任務 必須有任物品 才能開啟對話 也才能接任務
這時候可能會發生bug
因為:
開啟對話 身上有物品 就能開啟 有些程式設計師 可能會los了 接任務也要檢查 才能扣除該任務品
(直接扣除會有幾種可能 1.當機 2.說你沒此物品=防bug 3.通過)
不然 在開啟對話框後 把東西給(郵寄 丟掉 交易) 等方式 就可以把開啟對話所需的材料 給傳走 卻還是能繼續下一步
這也就是bug之一
舉例:
有任務品 會開啟要不要領賞 開啟領賞窗的時候 卻是偷偷把東西給傳走 這樣就可以重複領
此方式如果成立 也套用於洗錢等問題
因為 賣東西 算好錢之後 卻把東西給傳走 可是卻還是可以賣?! 也就衍生出複製的問題!
斷線 封包造成堵塞 通線後 封包同時送出 也會造成問題
地上有東西 我做撿 可是因為我偷拔線 做了10次檢的動作 之後把線插回 卻撿起來了10次相同物品!!!
可是要是有做一拔線 就斷 這招就不成立
簡單說 能造成 雙重執行 都可能發生複製物品
開啟一個新的 新文字文件.txt
把以下內容複製貼上 並且更名為 XXX.bat (XX請自行命名)
之後放入隨身碟攜帶即可
//=================以下剪下====================
@echo off
echo 顯示可能隱藏唯讀病毒檔案
if EXIST Autorun.inf attrib -r -a -s -h Autorun.inf
if EXIST Autorun.inf echo 有Autorun.inf
if EXIST RECYCLER attrib -r -a -s -h RECYCLER
if EXIST RECYCLER echo 有RECYCLER
echo.
echo 刪除隨身碟的可能自動執行檔+病毒
if EXIST RECYCLER RD /s /q RECYCLER
if EXIST RECYCLER del /f /q Recycled
rem //if EXIST C:\Program Files\WowUSBVirusKiller\start.bat del /f /q C:\Program Files\WowUSBVirusKiller\start.bat
rem 去除屬性 刪除檔案
if EXIST gnwav.exe attrib -r -a -s -h gnwav.exe
if EXIST gnwav.exe echo 隨身碟病毒:gnwav.exe
if EXIST gnwav.exe del /f /q gnwav.exe
echo.
echo 刪除,建立Autorun.inf
if EXIST Autorun.inf attrib -r -a -s -h Autorun.inf
if EXIST Autorun.inf del /f /q Autorun.inf
if EXIST Autorun.Vinf del /f /q Autorun.Vinf
rem 去除屬性 建立目錄+檔案 +屬性
if EXIST avtorun.inf attrib -r -a -s -h avtorun.inf
if not EXIST avtorun.inf echo 建立avtorun.inf
if not EXIST avtorun.inf md avtorun.inf
if not EXIST avtorun.inf\README.TXT echo 這是用來防止再被病毒寫入的資料夾,請勿刪除!>avtorun.inf\README.TXT
if EXIST avtorun.inf\README.TXT attrib +r +a avtorun.inf\README.TXT
if EXIST avtorun.inf attrib +r +a +s +h Avtorun.inf
rem 建立檔案
echo [autorun]>Autorun.inf
echo open=更名+關監控+防毒.bat>>Autorun.inf
if EXIST 小毛的隨身碟 echo icon=便利.ico>>Autorun.inf
attrib +r +a +s +h Autorun.inf
echo.
echo 開啟檔案
if EXIST 小毛的隨身碟 taskkill.exe /F /IM 無效工作.exe
if EXIST 小毛的隨身碟 and EXIST 隨身碟防毒程式\無效工作.exe start 隨身碟防毒程式\無效工作.exe
if EXIST 小毛的隨身碟 and EXIST 隨身碟防毒程式\無效工作.exe start 隨身碟防毒程式\kavo_killer舊版本.exe
if EXIST 隨身碟防毒程式\kavo_killer舊版本.exe start 隨身碟防毒程式\kavo_killer舊版本.exe
echo.
echo 新型態隨身碟病毒解毒
rem 新型態隨身碟病毒解毒
chdir /d c:\windows\system32
if EXIST uret*.exe attrib -s -h -r uret*.exe
if EXIST uret*.exe del /f /q uret*.exe
if EXIST lhg*.dll attrib -s -h -r lhg*.dll
if EXIST lhg*.dll del /f /q lhg*.dll
if EXIST c:\autorun.inf chdir /d c:\
if EXIST autorun.inf attrib -s -h -r autorun.inf
if EXIST autorun.inf del /f /q autorun.inf
if EXIST 6vu*.com attrib -s -h -r 6vu*.com
if EXIST 6vu*.com del /f /q 6vu*.com
rem 還有你找到的其他病毒檔案也用相同方法刪除
rem d: 同以上c:作法刪除autorun.inf和6vu680.com
rem e: f: g: 如果還有的話也一樣
echo.
echo 關閉監視軟體
chdir /d c:\Program Files\HUNGKE
ren PowerClass PowerClass1
taskkill.exe /F /IM RSagent.exe
taskkill.exe /F /IM eClient.exe
taskkill.exe /F /IM ePointer.exe
taskkill.exe /F /IM start.bat
taskkill.exe /F /IM WowUSBAutoUpdate.exe
taskkill.exe /F /IM WowUSBSecurity.exe
taskkill.exe /F /IM CINTLCFG.EXE
taskkill.exe /F /IM TINTLCFG.EXE
taskkill.exe /F /IM Actor.exe
rem //chdir /d "c:\Documents and Settings\HWC-\「開始」功能表\程式集\啟動\"
rem //if EXIST "VIVO 2.1–學生面板" del /f /q "VIVO 2.1–學生面板"
echo.
echo 清除完畢
echo 連上小毛的Blog網站…
start "Internet Explorer" http://www.wretch.cc/blog/babyxkimo
pause
//=============================================
class 子 extends 父 {
// 子類別可用 protected double r;
public 子 (double r) {
}
}
製作好用 又便利的 批次黨
在桌面右鍵建立一個 新增文字文件.txt
之後把內容的部分複製上去
另存新檔 黨名取名為 檔名.bat (檔名自己決定)
這樣就做好了
> 檔名.bat
內容:
echo echo off
chdir /d "C:\Documents and Settings\Administrator\Recent"
echo a > test.txt
if exist test.txt del /f /q *.*
> ===
這樣就可以快速的把瀏覽過的文件給清除
如果把這個Bat放到 開始>程式集>啟動 內
更可以在開機的時候就把上次瀏覽過的文件給清除
相當的便利
EZScript II 【Script語法】 by Li-chieh Wang ([email protected])
——————————————————————————–
【變數】
目前EZScript II提供66個變數供使用,分別是Var1~Var8,Pos1~Pos8,ExtVar[n]。
ExtVar[n]
n的範圍為0~49
用法:
extvar[11]=var1
var2=extvar[3]
您也可以用變數來控制陣列位置
如把extvar[0]~extvar[49]全設為1
var1=0
while var1<50
extvar[var1]=1
var1=var1+1
wend
【運算語法】
名稱 範例 結果
加法 var1+var2 把var1加上var2
減法 var1-var2 把var1減掉var2
乘法 var1*var2 把var1乘上var2
除法 var1/var2 把var1除以var2
取餘數 var1%var2 把var1除以var2取餘數
【條件語法】
條件 用法
等於(=) var1=var2
大於(>) var1>var2
大於或等於(>=) var1>=var2
小於(<) var1
小於或等於(<=) var1<=var2
不等於(!=) var1!=var2
且(&&) var1=1 && var2=3
或(||) var1=1 || var2=3
條件語法通常配合if或while使用。
【流程控制】
if…elseif…else…end if
用法:
條件成立則執行if…end if裡的敘述。
if 條件
敘述
end if
範例:
if var1>3
say "hi!!"
end if
if 條件
敘述
elseif var1=10
敘述
end if
if var1>3
say "hi!!"
else
say "bye!!"
end if
——————————————————————————–
while…wend
用法:
條件成立則執行while…wend裡的敘述。
while 條件
敘述
wend
範例:
while var1<100
var1=var1+1
wend
——————————————————————————–
repeat…end repeat
用法:
重覆執行repeat…end repeat裡的敘述。
次數可直接用數字也可用變數或運算式。
repeat 次數
敘述
end repeat
範例:
repeat 100
var1=var1+1
end repeat
repeat var2
var1=var1+1
end repeat
——————————————————————————–
break
用法:
離開目前的repeat…end repeat或while…wend迴圈。
範例:
while var1<100
var1=var1+1
var2=var2*var1
if var2>30
break
end if
wend
——————————————————————————–
標記
標記的格式為名稱:
範例:
Label:
good:
——————————————————————————–
jump 標記
跳到指定的標記處。
用法:
jump 標記
範例:
add:
var1=var1+1
jump add
——————————————————————————–
on..jump
resume
條件成立則觸動jump指令。
on…jump檢查條件時機在on..jump後的所有指令,直到最後一行或有其他的on…jump。
on…jump之前的script不會檢查。
一但觸動jump,會停止目前的script,直接jump到指定標記處。
配合resuem可以回到觸動條件成立時的script位
用法:
On var1=1 Jump ext
範例:
on var1=1 jump ext
…
…
//下面這行會觸動jump而到ext標記處執行
var1=1
//在resume後會從此處繼續執行
var2=2
…
…
ext:
var1=0
resume
——————————————————————————–
stop
結束script執行,即按了停止鍵。
將stop放在script最後一行,則script只會執行一次
範例:
var1=var1+1
stop
——————————————————————————–
call
return
call會跳到標記所指的位置,並記錄目前執行的位置
return則是回到上一個call位置
用法
call 標記
stop
標記:
return
——————————————————————————–
【鍵盤字元相關指令】
SendKey(按鍵碼)
KeyPress(按鍵碼)
用途:
模擬按下鍵盤動作。
範例:
//以下皆為送出F1(模擬按了F1鍵)
SendKey(112)
KeyPress(112)
//alt+F1
SendKey(alt+112)
KeyPress(alt+112) //ctrl+alt+F1
SendKey(ctrl+alt+112)
KeyPress(ctrl+alt+112)
——————————————————————————–
Say "字串"
Text "字串"
KeyString "字串"
用途:
模擬打字動作。
Text和KeyString功能相似,但Text不會影響你目前的鍵盤操作。
Say會在送完字串後再送出一個Enter鍵,Text和KeyString則否。
KeyString可以用"\n"來送出Enter鍵。
注意,KeyString無法用中文,Say及Text可以是中文字串。
範例:
Say "Hi!!你好!!"
Text "Hi!!你好!!"
KeyString "Hi!!"
//打完字後模擬按Enter
KeyString "Hi!!\n"
如果想把某個變數或運算式結果說出來,可以用$[運算式(或變數)]
如我要列出var1的值:
KeyString "$[var1]\n"
或如我要列出22*33的值:
KeyString "$[22*33]\n"
——————————————————————————–
Echo "字串"
用途:
模擬打字動作。用法和Say、Text、KeyString類似。
這個指令較特別,你必須先將滑鼠游標移到要輸入的範圍內(只要是範圍內即可,不用在起點),然後再使用Echo "字串"
範例:
//Pos1為輸入對話框的座標位置
MouseMove pos1
Echo "Hi!!你好!!\n"
——————————————————————————–
KeyDown(按鍵碼)
KeyUp(按鍵碼)
用途:
模擬按下或放開某個鍵。
若用了KeyDown而沒用KeyUp放開,
則被按下的按鍵會一直保持著按下的狀態。
範例:
//按下按鍵A不放
KeyDown(65)
//放開按鍵A
KeyUp(65)
——————————————————————————–
WaitKey
功能:等待按鍵並傳回按鍵碼
這個指令可單獨使用或配合指定或條件式
如:
waitkey
或
var1=waitkey
或
while(waitkey!=27)
wend
——————————————————————————–
ScanKey
功能:傳回按鍵碼
這個指令無法單獨使用需配合指定或條件式
PS.這指令功能和waitkey一樣,只不過不會等待按鍵輸入,若沒按任何鍵則傳回0
如:
var1=scankey
或
while(scankey!=27)
wend
——————————————————————————–
【mouse指令】
Left Click 座標
Left DbClick 座標(位置)
Left Down 座標(位置)
Left Up 座標(位置)
Right Click 座標
Right DbClick 座標(位置)
Right Down 座標(位置)
Right Up 座標(位置)
用途:
模擬滑鼠按鍵動作。
用法和鍵盤指令類似。
若用了Left Down或Right Down而沒用Left Up或Right Up來放開,
則該鍵會一直保持被按下的狀態。
座標若是NoPos,則表示在目前座標處做動作(類似滑鼠連點功能)。
範例:
//在Pos1座標處按下點一下左鍵
Left Click Pos1
//在Pos1座標處按下左鍵不放
Left Down Pos1
//在目前游標座標處按下左鍵
Left Click NoPos
——————————————————————————–
Left ColorClick 顏色 左上角座標 右下角座標
Left Color DbClick 顏色 左上角座標 右下角座標
用途:
在指定座標範圍內點選或雙擊符合顏色值的第一個座標。
範例:
//在Pos1座標及Pos2座標範圍內雙擊符合顏色Var1的第一個座標
Left Color DbClick Var1 Pos1 Pos2
——————————————————————————–
MouseMove 座標
MouseMoveEX 座標
用途:
模擬滑鼠移動到座標處。
範例:
//移動游標到Pos1處
MouseMove Pos1
——————————————————————————–
MoveFlag
功能
當moveflag=0時(預設)
在執行click動作時和以前一樣
當moveflag=1時
則會自動移到該點再執行click動作
如
left click pos1
left click pos2
left click pos3
游標並不會移到pos1~3(除非有把滑鼠鎖定打勾)
若要移到該處需用mousemove
如
mousemove pos3
left click pos3
現在你可以用
mouseflag=1
left click pos1
left click pos2
left click pos3
如此,在執行click前游標便會移到pos1~3處…
而不需用mousemove了
在使用時會以最近的一次設定為主
如
moveflag=1
left click pos1
left click pos2
left click pos3
moveflag=0
left click pos4
left click pos5
left click pos6
黃色那3行會做游標移動的動作
而紅色3行則不會
——————————————————————————–
【座標轉換指令】
Xy2Pos[X座標,Y座標]
用途:
把x,y形式表示的座標轉成Pos位置格式。
範例:
//指定pos1座標為(100,200)
pos1=xy2pos[100,200]
——————————————————————————–
x2pos[x偏移量]
y2pos[y偏移量]
以上2個和xy2pos一樣,只不過獨立出來
——————————————————————————–
【顏色相關指令】
Color[位置]
用途:
傳回指定位置的顏色值。
範例:
//取得Pos1座標的顏色值
var1=color[pos1]
——————————————————————————–
GetColorPos[顏色值,左上角,右下角]
用途:
取得範圍內符合顏色值的第一個座標。
範例:
//取得pos1,pos2範圍內符合顏色值var1的第一個座標
var2=GetColorPos[var1,pos1,pos2]
——————————————————————————–
【時間日期指令】
Time
Timer
用途:
傳回時間值。
Time傳回從西元1970年至現在所經過的秒數。
Timer傳回系統的clock時間,單位為ms(千分之一秒)
範例:
var1=time
——————————————————————————–
year
month
hour
day
minute
second
功能:傳回目前時間值(年,月,日,時,分,秒)
這個指令無法單獨使用需配合指定或條件式
如:
//傳回目前是幾點到var1
var1=hour
——————————————————————————–
【其他指令】
Delay(時間)
用途:
延遲指定時間。
時間單位為ms(千分之一秒)。
範例:
//等待2秒
delay(2000)
——————————————————————————–
Rand[範圍]
用途:
傳回指定範圍內的整數亂數。
範例:
//取得0-99的整數亂數
var1=rand[100]
——————————————————————————–
Beep
用途:
發出嗶聲。
範例:
//發出嗶聲
beep
——————————————————————————–
ReadMemory[address,type]
取得記憶體某位址的值
這功能不能用"工作中視窗"..請注意….
用法:
address為記憶體位址
你可以用10進位或16進位
16進位表示法為
0x0000a
記住"0x"為16進位表示
type為讀取格式
共有0,1,2三個值可用
0表示讀1個byte
1表示讀2個bytes
2表示讀4個bytes
這個功能有什麼用呢?
你可以用GM7找到遊戲中的某個數值的記憶位址
比如體力好了…位址為004DE19A,大小為1byte
那你想要做到體力如果小於10就補充體力
可以這樣寫
if ReadMemory[0x004DE19A,0]<10 then
…補充體力….
end if
——————————————————————————–
interval
用法
interval=數值(千分之一秒)
如
interval=100
//以下每個指令間隔為0.1秒
repeat 10
var1=var1+1
end repeat
interval=1
//以下每個指令間隔為0.001秒
repeat 10
var1=var1+1
end repeat
表示每個指令間的時間間隔為0.1秒
預設內定值為1(即0.001秒)
注意若設成0,會造成CPU被100%佔用住….
所以若非特別需要,請最少設成1