物件導向程式設計邏輯尋找線上遊戲bug

物件導向程式設計邏輯尋找線上遊戲bug

舉例:

遊戲內有任務 必須有任物品 才能開啟對話 也才能接任務

這時候可能會發生bug

因為:

開啟對話 身上有物品 就能開啟 有些程式設計師 可能會los了 接任務也要檢查 才能扣除該任務品

(直接扣除會有幾種可能 1.當機 2.說你沒此物品=防bug 3.通過)

不然 在開啟對話框後 把東西給(郵寄 丟掉 交易) 等方式 就可以把開啟對話所需的材料 給傳走 卻還是能繼續下一步

這也就是bug之一

舉例:

有任務品 會開啟要不要領賞 開啟領賞窗的時候 卻是偷偷把東西給傳走 這樣就可以重複領

此方式如果成立 也套用於洗錢等問題

因為 賣東西 算好錢之後 卻把東西給傳走 可是卻還是可以賣?! 也就衍生出複製的問題!

斷線 封包造成堵塞 通線後 封包同時送出 也會造成問題

地上有東西 我做撿 可是因為我偷拔線 做了10次檢的動作 之後把線插回 卻撿起來了10次相同物品!!!

可是要是有做一拔線 就斷 這招就不成立

簡單說 能造成 雙重執行 都可能發生複製物品

破解學校的監視軟體的bat檔

開啟一個新的 新文字文件.txt

把以下內容複製貼上 並且更名為 XXX.bat (XX請自行命名)

之後放入隨身碟攜帶即可

點我開啟or 點我下載

//=================以下剪下====================

@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

 

//=============================================

Bat批次檔製作 清除過去瀏覽過的文件

製作好用 又便利的 批次黨

在桌面右鍵建立一個 新增文字文件.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語法簡介

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