You are on page 1of 48

1. Giới thiệu ..............................................................................................................................................

2
2. Cấu trúc chương trình ........................................................................................................................ 2
2.1 Các thành phần ............................................................................................................................... 2
2.2 Tổ chức chương trình..................................................................................................................... 2
3. Mô hình hoạt động ............................................................................................................................. 3
3.1 Hoạt động chương trình ................................................................................................................ 3
3.2 Ngôn ngữ lập trình LUA ................................................................................................................. 3
4. Nguyên lý hoạt động Game .............................................................................................................. 3
4.1 NPC ................................................................................................................................................... 3
4.2 PLAYER ............................................................................................................................................. 3
4.3 ITEM ................................................................................................................................................. 3
4.4 OBJECT ............................................................................................................................................. 4
4.5 SKILL ................................................................................................................................................ 4
5. Các hàm API ........................................................................................................................................ 4
5.1 Các hàm dùng để INCLUDE .......................................................................................................... 4
5.2 Các hàm liên quan đến TIMER ..................................................................................................... 5
5.3 Các hàm liên quan đến SYSTEM .................................................................................................. 6
5.4 Các hàm liên quan đến OBJ .......................................................................................................... 7
5.5 Các hàm liên quan đến ITEM........................................................................................................ 9
5.6 Các hàm liên quan đến PLAYER ................................................................................................. 22
5.7 Các hàm liên quan đến QUEST................................................................................................... 36
5.8 Các hàm liên quan đến TEAM ..................................................................................................... 36
5.9 Các hàm liên quan đến NPC........................................................................................................ 37
5.10 Các hàm liên quan đến SKILL ..................................................................................................... 39
5.11 Các hàm liên quan đến MENU .................................................................................................... 41
5.12 Các hàm liên quan đến SHOP ..................................................................................................... 42
5.13 Các hàm liên quan đến STALL .................................................................................................... 42
6. Cấu trúc các tập tin .......................................................................................................................... 43
6.1 Config.lua ....................................................................................................................................... 43
6.2 Script.lua ........................................................................................................................................ 47
Hướng dẫn lập trình KAutoPlay Trang 2

1. Giới thiệu

KAutoPlay là chương trình hỗ chơi game tự động cho game Võ Lâm Truyền Kỳ 1, được xây
dựng nhầm mục đích tạo ra một môi trường lập trình được để hỗ trợ một số tính năng chơi
game tự động. Chương trình được thiết kế theo hướng mở, tức là cho phép người dùng có thể
tự lập trình theo ý mình bằng ngôn ngữ LUA bằng cách sử dụng tập hàm APIs mà chương trình
đã cung cấp sẵn. Đây là điểm mạnh của chương trình tạo nên tính tiện dụng và mở rộng về sau
này.

2. Cấu trúc chương trình

2.1 Các thành phần

Chương trình được chia làm 3 phần chính bao gồm:


 GUI: giao diện chính chương trình cho phép người dùng thay đổi các thiết lập, chỉnh sửa
các thao tác và tương tác với chương trình.
 Config: là một tập tin config.lua cho phép lưu lại các thiết lập của người dùng từ GUI
chương trình.
 Script: là một tập tin script.lua cho phép người dùng lập trình bằng ngôn ngữ LUA,
chỉnh sửa code theo ý của mình.

2.2 Tổ chức chương trình

KAutoPlay.exe Tập tin chính thể hiện GUI


KHook.dll Tập tin dùng để điều khiển chương trình
Maps Thư mục chứa các tập tin bản đồ luyện công
Users Thư mục chứa các tập tin config.lua và script.lua
Hướng dẫn lập trình KAutoPlay Trang 3

3. Mô hình hoạt động

3.1 Hoạt động chương trình

Chương trình hỗ trợ chơi không giới hạn tài khoản trên cùng 1 chương trình. Khi nhân vật được
đăng nhập vào trong game. Tên nhân vật sẽ được hiện lên trong một danh sách bao gồm: Tên
nhân vật – % kinh nghiệm hiện tại – đẳng cấp hiện tại. Khi người dùng chọn vào nhân vật
trong danh sách (bằng cách click chuột vào tên nhân vật). Chương trình sẽ tự động nạp các
thiết lập (user config) trước đó lên GUI, tại bước này người dùng có thể thay đổi các thiết lập
trên GUI. Khi người dùng check vào ô checkbox tương ứng với tên nhân vật, chương trình sẽ
lưu lại các thiết lập trên GUI xuống tập tin config.lua và bắt đầu thực thi tập tin
script.lua. Khi người dùng muốn ngưng thực thi tập tin script.lua, chỉ cần bỏ chọn ô
checkbox tương ứng với tên nhân vật trong danh sách.

3.2 Ngôn ngữ lập trình LUA

KAutoPlay được thiết kế sử dụng LUA làm ngôn ngữ chính trong việc lập trình, khai thác các
tập hàm API mà chương trình đã cung cấp. Để hiểu thêm về ngôn ngữ LUA, các bạn vui lòng
tham khảo tại địa chỉ http://lua.org và tài liệu hướng dẫn kèm theo chương trình.

4. Nguyên lý hoạt động Game

4.1 NPC

NPC trong game được lưu trong một mảng gồm 256 đối tượng, mỗi đối tượng đều có một chỉ
số (index) quy định vị trí thứ tự của nó trong mảng. Đối tượng thứ 0 (tức index = 0) không sử
dụng. Đối tượng thứ 1 (index = 1) là người chơi, các đối tượng còn lại là quái, người chơi khác
và các npc khác (ví dụ npc tạp hóa, thợ rèn, dã tẩu, ...). Mỗi đối tượng npc đều có thuộc tính
riêng bao gồm các chỉ số sinh lực, nội lực, đẳng cấp, tên, loại, phái, hệ…

4.2 PLAYER

Đối tượng thuần túy xét về mặt người chơi – nhân vật mình đang điều khiển (cần phân biệt với
mảng đối tượng npc với index = 1 cũng là người chơi, nhưng là người chơi khác) chứa các
thuộc tính điểm kinh nghiệm, trạng thái di chuyển, các vật phẩm liên quan, …

4.3 ITEM

Vật phẩm trong game được lưu trong một mảng gồm 256 đối tượng và mỗi item đều có một
index quy định vị trí của nó trong mảng. Mỗi vật phẩm đều có các thuộc tính cơ bản như tên,
hệ, màu, thuộc tính ma pháp, … Lưu ý: vật phẩm trong game định nghĩa là những gì chứa trên
người nhân vật, trong rương, … còn vật phẩm rơi ngoài mặt đất là đối tượng OBJ. Vật phẩm có
thêm các thuộc tính cơ bản như sát thương lớn, nhỏ, độ bền, được lưu trong mảng có 7 phần
Hướng dẫn lập trình KAutoPlay Trang 4

tử, thuộc tính yêu cầu như thân pháp, sức mạnh, được lưu trong mảng có 6 phần tử. Thuộc
tính ma pháp như các chỉ số kháng, sinh lực, nội lực được lưu trong mảng 6 phần tử.

4.4 OBJECT

Vật phẩm ngoài mặt đất trong game được lưu trong mảng gồm 256 đối tượng, mỗi đối tượng
đều có một index qunh định vị trí của nó trong mảng. OBJECT mô tả vật phẩm đang nằm trên
mặt đất. Mỗi OBJECT đều có thuộc tính riêng như tên, hệ, level, màu, rộng, cao, …

4.5 SKILL

Là một mảng gồm có 80 phần tử chứa các thông tin như ID skill, đẳng cấp hiện tại, … Các
chiêu thức trong game chủ yếu thuộc 3 loại: chiêu đánh chính, chiêu hỗ trợ chủ động và chiêu
hỗ trợ bị động. Chiêu đánh chính thường được thiết lập bên trái, các chiêu hỗ trợ thường được
thiết lập bên phải.

5. Các hàm API

5.1 Các hàm dùng để INCLUDE

IncludeFile(char* szFileName)
szFilename: tên tập tin cần chèn bao gồm cả đường dẫn.

Dùng để chèn tập tin lua vào một tập tin lua khác.

Ví dụ: IncludeFile(“config.lua”)
Khi dùng hàm IncludeFile chương trình sẽ nạp và thực thi tập tin được chèn vào. Cho nên
trong tập tin này thường chứa các biến toàn cục, các hàm, … dùng để sử dụng trong tập tin
chính script.lua.

IncludeLib(char *szLibName)
szLibName: tên thư viện cần dùng, gồm các tên sau:
ITEM: thư viện chứa các hàm thao tác trên vật phẩm.
OBJ: thư viện chứa các hàm thao tác trên object.
NPC: thư viện chứa các hàm thao tác trên npc.
PLAYER: thư viện chứa các hàm thao tác trên người chơi.
SKILL: thư viện chứa các hàm thao tác trên chiêu thức.
MENU: thư viện chứa các hàm thao tác trên menu của npc.
SHOP: thư viện chứa các hàm thao tác đến NPC tạp hóa, tiệm thuốc, thợ rèn.
TEAM: thư viện chứa các hàm thao tác đến tổ đội.
QUEST: thư viện chứa các hàm thao tác đến nhiệm vụ Dã Tẩu.
STALL: thư viện chứa các hàm thao tác đến shop của người bày bán.
Hướng dẫn lập trình KAutoPlay Trang 5

SYSTEM: thư viện chứa các hàm thao tác đến hệ thống.
TIMER: thư viện chứa các hàm thao tác đến thời gian.

Ví dụ: IncludeLib(“ITEM”)

5.2 Các hàm liên quan đến TIMER

Tất cả các hàm liên quan đến timer khi gọi phải theo dạng timer.Tên Hàm([đối số])

Start(int nTimerID, int nTime)


nTimerID: ID của timer.
nTime: thời gian timeout.

Khởi động bộ định thời với ID và thời gian timout tính bằng mili giây. Khi khởi động một timer
chương trình sẽ tự động gọi hàm OnTimer và truyền vào timer ID để chương trình xử lý. Do đó
trong script bắt buộc phải khai báo hàm OnTimer và StopTimer như sau:

function OnTimer(nTimerID)
end

function StopTimer()
end

Ví dụ: timer.Start(1000, 500)


Khởi tạo một timer với ID là 1000 và thời gian timout là 500 mili giây. Như vậy sau mỗi 500 mili
giây kể từ lúc start timer, chương trình sẽ tự động gọi hàm OnTimer.

Ví dụ: sau 2 giây sẽ hiện một thông báo…


function StopTimer()
timer.Stop(1000)
end

function OnTimer(nTimerID)
if nTimerID == 1000 then
system.MessageBox(“This is a message”)
end
end

function main()
timer.Start(1000, 2000)
end

Stop(int nTimerID)
Hướng dẫn lập trình KAutoPlay Trang 6

nTimerID: ID của timer.

Tắt bộ đếm thời gian.

Ví dụ: timer.Stop(1000)
Tắt timer có ID là 1000, dòng lệnh trên phải được gọi trong hàm StopTimer.

Sleep(int nTime)
nTime: thời gian tạm dừng tính bằng mili giây.

Tạm dừng sự thực thi chương trình trong khoảng thời gian tính bằng mili giây.

Ví du: timer.Sleep(1000)
Tạm dừng thực thi chương trình trong 1 giây, sau thời gian 1 giây chương trình sẽ thực thi lệnh
tiếp theo.

5.3 Các hàm liên quan đến SYSTEM

Tất cả các hàm liên quan đến system đều gọi theo dạng system.Tên Hàm([đối số])

ShutdownWindows(int nType)
nType = 0 – thực hiện việc logoff
nType = 1 – thực hiện việc tắt máy
nType = 2 – thực hiện việc khởi động lại máy

Ví dụ: system.ShutdownWindows(1)

ExitGame()
Thoát game hiện tại tương ứng với nhân vật được chọn trên GUI.

Ví dụ: system.ExitGame()

HideGame()
Ẩn cửa sổ game tương ứng với nhân vật được chọn trên GUI.

Ví dụ: system.HideGame()

MessageBox(char *szMsg)
szMsg: nội dung câu thông báo.

Hiển thị một hộp thoại thông báo. Hàm này tiện lợi trong việc debug, xuất các giá trị, chuỗi, …
trong lúc lập trình.
Hướng dẫn lập trình KAutoPlay Trang 7

Ví dụ: system.MessageBox(“Item Name ”..item.GetName(123))

5.4 Các hàm liên quan đến OBJ

Tất cả các hàm liên quan đến object đều gọi theo dạng obj.Tên Hàm([đối số])

BOOL IsExists(int nIndex)


nIndex: thứ tự trong mảng đối tượng.

Kiểm tra vật phẩm có tồn tại hay không.


Trả về: 1 – vật phẩm tồn tại, 0 – vật phẩm không tồn tại.

Ví dụ:
for i = 1, 255 do
if obj.IsExists(i) then
system.MessageBox(obj.GetName(i))
end
end

int, int, int GetMapPos(int nIndex)


nIndex: thứ tự trong mảng đối tượng.

Lấy tọa độ trong game của vật phẩm trên mặt đất.
Trả về: 3 giá trị tương ứng với tọa độ x, y và ID của bản đồ.

Ví dụ:
for i = 1, 255 do
if obj.IsExists(i) then
local nX, nY = obj.GetMapPos(i)
system.MessageBox(nX..” “..nY)
end
end

int GetKind(int nIndex)


nIndex: thứ tự trong mảng đối tượng.

Lấy phân loại vật phẩm.


Trả về: các giá trị từ 0  10, tương ứng với các loại sau theo thứ tự:
obj_kind_map = 0
obj_kind_body
obj_kind_box
obj_kind_item
Hướng dẫn lập trình KAutoPlay Trang 8

obj_kind_money
obj_kind_loopsound
obj_kind_randsound
obj_kind_light
obj_kind_door
obj_kind_trap
obj_kind_prop = 10

Ví dụ:
for i = 1, 255 do
if obj.IsExists(i) and obj.GetKind(i) == 3 then
player.PickUpObj(obj.GetIndex(i))
end
end

int GetIndex(int nIndex)


nIndex: thứ tự trong mảng đối tượng.

Lấy vị trí của vật phẩm trong mảng 256 đối tượng. Mỗi một đối tượng trong mảng đều có một
vị trí riêng. Đây là thứ tự thực sự của đối tượng.
Trả về: thứ tự của của đối tượng trong mảng.

Ví dụ:
for i = 1, 255 do
if obj.IsExists(i) and obj.GetName(i) == “Khæng T-íc Linh” then
return obj.GetIndex(i) end
end

char* GetName(int nIndex)


nIndex: thứ tự trong mảng đối tượng.

Lấy tên của vật phẩm. Tên là một chuỗi các ký tự theo dạng TCVN3.

Ví dụ:
for i = 1, 255 do
if obj.IsExists(i) and obj.GetName(i) == “§¹i Phong §ao” then
return end
end

int GetColor(int nIndex)


nIndex: thứ tự trong mảng đối tượng.
Hướng dẫn lập trình KAutoPlay Trang 9

Lấy màu của vật phẩm. Màu của vật phẩm quy định loại vật phẩm như đồ trắng, đồ xanh,
hoàng kim, bạch kim, …
Trả về: 0: màu trắng, 3: xanh, …

int, int GetSize(int nIndex)


nIndex: thứ tự trong mảng đối tượng.

Lấy kích thước của vật phẩm. Kích thước của vật phẩm tính bằng ô (trong hành trang)
Trả về: 2 giá trị tương ứng với chiều rộng và cao của vật phẩm.

Ví dụ:
for i = 1, 255 do
if obj.IsExists(i) then
local nWidth, nHeight = obj.GetSize(i)
end
end

int GetMoney(int nIndex)


nIndex: thứ tự của vật phẩm trong mảng đối tượng.

Trả về lượng tiền trên mặt đất. Tiền trên mặt đất tính bằng lượng.

5.5 Các hàm liên quan đến ITEM

Tất cả các hàm liên quan đến vật phẩm đều được gọi với dạng item.Tên Hàm([đối số])

int, int, int GetKey(int nIndex)


nIndex: thứ tự của vật phẩm trong mảng đối tượng.

Lấy 3 giá trị key của một vật phẩm bao gồm Genre, Detail, Particular. 3 giá trị này dùng để
phân biệt chính xác vật phẩm và cũng dùng để xác định vật phẩm.

Ví dụ:
local nIndex, nPlace, nX, nY = player.GetFirstItem()
while nIndex ~= 0 do
local nGenre, nDetail, nParticular = item.GetKey(nIndex)
if nGenre == 5 and nDetail == 0 and nParticular == 0 then
system.MessageBox(item.GetName(nIndex))
end
nIndex, nPlace, nX, nY = player.GetNextItem()
end

int, int GetSize(int nIndex)


Hướng dẫn lập trình KAutoPlay Trang 10

nIndex: thứ tự của vật phẩm trong mảng đối tượng.

Lấy kích thước của một vật phẩm. Kích thước của vật phẩm tính bằng ô.
Trả về: 2 giá trị tương ứng với chiều rộng vào cao.

Ví dụ: local nWidth, nHeight = item.GetSize(i)

int GetPrice(int nIndex)


nIndex: thứ tự của vật phẩm trong mảng đối tượng.

Lấy giá bán shop tính bằng lượng của vật phẩm.
Trả về: giá bán tính bằng lượng vào trong các shop.

Ví dụ:
local nIndex, nPlace, nX, nY = player.GetFirstItem()
while nIndex ~= 0 do
if item.GetPrice(nIndex) < 2000 then
shop.SellItem(nIndex)
end
nIndex, nPlace, nX, nY = player.GetNextItem()
end

int GetLevel(int nIndex)


nIndex: thứ tự của vật phẩm trong mảng đối tượng.

Lấy cấp độ của vật phẩm.


Trả về: các giá trị từ 0  10 tương ứng với cấp của vật phẩm.

int GetSeries(int nIndex)


nIndex: thứ tự của vật phẩm trong mảng đối tượng.

Lấy thuộc tính ngũ hành của vật phẩm.


Trả về: các giá trị từ 0  4, theo thứ tự như sau: Kim, Mộc, Thủy, Hỏa, Thổ.

char *GetName(int nIndex)


nIndex: thứ tự của vật phẩm trong mảng đối tượng.

Lấy tên của vật phẩm.


Trả về: tên của vật phẩm theo dạng TCVN3.

Ví dụ:
local nIndex, nPlace, nX, nY = player.GetFirstItem()
while nIndex ~= 0 do
Hướng dẫn lập trình KAutoPlay Trang 11

system.MessageBox(item.GetName(nIndex))
nIndex, nPlace, nX, nY = player.GetNextItem()
end

char *GetIntro(int nIndex)


nIndex: thứ tự của vật phẩm trong mảng đối tượng.

Lấy dòng mô tả của vật phẩm.


Trả về: dòng văn bản mô tả vật phẩm theo dạng TCVN3.

Ví dụ:
local nIndex, nPlace, nX, nY = player.GetFirstItem()
while nIndex ~= 0 do
system.MessageBox(item.GetIntro(nIndex))
nIndex, nPlace, nX, nY = player.GetNextItem()
end

int, int, int, int GetBaseAttrib(int nIndex, int nCol)


nIndex: thứ tự của vật phẩm trong mảng đối tượng.
nCol: thứ tự của thuộc tính cơ bản.

Lấy thuộc tính giá trị cơ bản của vật phẩm. Với nCol có giá trị từ 0  6 quy định các dòng
thuộc tính cơ bản.
Trả về: 3 giá trị tương ứng với loại thuộc tính, giá trị 1, giá trị 2, giá trị 3.
Với loại thuộc tính có giá trị từ 0  172, theo thứ tự như sau:
invalid_attrib = -1,
magic_skill_begin,
magic_skill_cost_v,
magic_skill_costtype_v,
magic_skill_mintimepercast_v,
magic_skill_misslenum_v,
magic_skill_misslesform_v,
magic_skill_param1_v,
magic_skill_param2_v,
magic_skill_reserve1,
magic_skill_reserve2,
magic_skill_reserve3,
magic_skill_reserve4,
magic_skill_eventskilllevel,
magic_skill_end,
magic_missle_begin,
magic_missle_movekind_v,
magic_missle_speed_v,
magic_missle_lifetime_v,
Hướng dẫn lập trình KAutoPlay Trang 12

magic_missle_height_v,
magic_missle_damagerange_v,
magic_missle_radius_v,
magic_missle_reserve1,
magic_missle_reserve2,
magic_missle_reserve3,
magic_missle_reserve4,
magic_missle_reserve5,
magic_missle_end,
magic_item_begin,
magic_weapondamagemin_v,
magic_weapondamagemax_v,
magic_armordefense_v,
magic_durability_v,
magic_requirestr,
magic_requiredex,
magic_requirevit,
magic_requireeng,
magic_requirelevel,
magic_requireseries,
magic_requiresex,
magic_requiremenpai,
magic_weapondamageenhance_p,
magic_armordefenseenhance_p,
magic_requirementreduce_p,
magic_indestructible_b,
magic_item_reserve1,
magic_item_reserve2,
magic_item_reserve3,
magic_item_reserve4,
magic_item_reserve5,
magic_item_reserve6,
magic_item_reserve7,
magic_item_reserve8,
magic_item_reserve9,
magic_item_reserve10,
magic_item_end,
magic_damage_begin,
magic_attackrating_v,
magic_attackrating_p,
magic_ignoredefense_p,
magic_physicsdamage_v,
magic_colddamage_v,
magic_firedamage_v,
magic_lightingdamage_v,
Hướng dẫn lập trình KAutoPlay Trang 13

magic_poisondamage_v,
magic_magicdamage_v,
magic_physicsenhance_p,
magic_steallife_p,
magic_stealmana_p,
magic_stealstamina_p,
magic_knockback_p,
magic_deadlystrike_p,
magic_fatallystrike_p,
magic_stun_p,
magic_damage_reserve1,
magic_damage_reserve2,
magic_damage_reserve3,
magic_damage_reserve4,
magic_damage_reserve5,
magic_damage_reserve6,
magic_damage_reserve7,
magic_damage_reserve8,
magic_damage_reserve9,
magic_damage_reserve10,
magic_damage_end,
magic_normal_begin,
magic_lifemax_v,
magic_lifemax_p,
magic_life_v,
magic_lifereplenish_v,
magic_manamax_v,
magic_manamax_p,
magic_mana_v,
magic_manareplenish_v,
magic_staminamax_v,
magic_staminamax_p,
magic_stamina_v,
magic_staminareplenish_v,
magic_strength_v,
magic_dexterity_v,
magic_vitality_v,
magic_energy_v,
magic_poisonres_p,
magic_fireres_p,
magic_lightingres_p,
magic_physicsres_p,
magic_coldres_p,
magic_freezetimereduce_p,
magic_burntimereduce_p,
Hướng dẫn lập trình KAutoPlay Trang 14

magic_poisontimereduce_p,
magic_poisondamagereduce_v,
magic_stuntimereduce_p,
magic_fastwalkrun_p,
magic_visionradius_p,
magic_fasthitrecover_v,
magic_allres_p,
magic_attackspeed_v,
magic_castspeed_v,
magic_meleedamagereturn_v,
magic_meleedamagereturn_p,
magic_rangedamagereturn_v,
magic_rangedamagereturn_p,
magic_addphysicsdamage_v,
magic_addfiredamage_v,
magic_addcolddamage_v,
magic_addlightingdamage_v,
magic_addpoisondamage_v,
magic_addphysicsdamage_p,
magic_slowmissle_b,
magic_changecamp_b,
magic_physicsarmor_v,
magic_coldarmor_v,
magic_firearmor_v,
magic_poisonarmor_v,
magic_lightingarmor_v,
magic_damagetomana_p,
magic_lucky_v,
magic_steallifeenhance_p,
magic_stealmanaenhance_p,
magic_stealstaminaenhance_p,
magic_allskill_v,
magic_metalskill_v,
magic_woodskill_v,
magic_waterskill_v,
magic_fireskill_v,
magic_earthskill_v,
magic_knockbackenhance_p,
magic_deadlystrikeenhance_p,
magic_stunenhance_p,
magic_badstatustimereduce_v,
magic_manashield_p,
magic_adddefense_v,
magic_adddefense_p,
magic_fatallystrikeenhance_p,
Hướng dẫn lập trình KAutoPlay Trang 15

magic_lifepotion_v,
magic_manapotion_v,
magic_physicsresmax_p,
magic_coldresmax_p,
magic_fireresmax_p,
magic_lightingresmax_p,
magic_poisonresmax_p,
magic_allresmax_p,
magic_coldenhance_p,
magic_fireenhance_p,
magic_lightingenhance_p,
magic_poisonenhance_p,
magic_magicenhance_p,
magic_attackratingenhance_v,
magic_attackratingenhance_p,
magic_addphysicsmagic_v,
magic_addcoldmagic_v,
magic_addfiremagic_v,
magic_addlightingmagic_v,
magic_addpoisonmagic_v=172

Ý nghĩa của các tham số như sau:

skill_begin=
skill_cost_v=Tiêu hao: #d1- điểm
skill_costtype_v=Loại hình tiêu hao: #k1-
skill_mintimepercast_v=Thời gian giãn cách #d1- giây
skill_misslenum_v=Đồng thời xuất #d1-
skill_misslesform_v=
skill_param1_v=
skill_param2_v=
skill_reserve1=
skill_reserve2=
skill_reserve3=
skill_reserve4=
skill_reserve5=
skill_end=
missle_begin=
missle_movekind_v=
missle_speed_v=Tốc độ xuất chiêu khí công
missle_lifetime_v=Hiệu quả xuất chiêu khí công
missle_height_v =
missle_damagerange_v=Phạm vi sát thương khí công
missle_radius_v =
missle_reserve1=
Hướng dẫn lập trình KAutoPlay Trang 16

missle_reserve2=
missle_reserve3=
missle_reserve4=
missle_reserve5=
missle_end=
item_begin=
weapondamagemin_v=Sát thương nhỏ nhất: #d1- điểm
weapondamagemax_v=Sát thương lớn nhất: #d1- điểm
armordefense_v=Né tránh: #d1- điểm
durability_v=Độ bền: #d1- điểm
requirestr=Yêu cầu sức mạnh: #d1- điểm
requiredex=Yêu cầu thân pháp: #d1- điểm
requirevit=Yêu cầu sinh khí: #d1- điểm
requireeng=Yêu cầu nội công: #d1- điểm
requirelevel=Đẳng cấp yêu cầu: #d1-
requireseries=Thuộc tính ngũ hành: #s1-
requiresex=Giới tính: #x1-
requiremenpai=Môn phái: #m1-
require_translife=Yêu cầu võ công: học được Giá Nông thần công tâm
pháp
weapondamageenhance_p=Tăng sát thương: #d1-%
armordefenseenhance_p=Tăng né tránh: #d1-%
requirementreduce_p=Giảm thiểu yêu cầu: #d1-%
indestructible_b=Không thể phá hủy
expenhance_p=Sát thương địch nhận được kinh nghiệm #d1+%
item_reserve1=
item_reserve2=
item_reserve3=
item_reserve4=
item_reserve5=
item_reserve6=
item_reserve7=
item_reserve8=
item_reserve9=
item_reserve10=
item_end=
damage_begin=
attackrating_v=Độ chính xác: #d1- điểm
attackrating_p=Độ chính xác: #d1-%
ignoredefense_p=Bỏ qua né tránh: #d1-%
physicsdamage_v=Sát thương vật lý: #d1- đến #d3- điểm
colddamage_v=Băng sát: #d1- đến #d3- điểm
firedamage_v=Hỏa sát: #d1- đến #d3- điểm
lightingdamage_v=Lôi sát: #d1- đến #d3- điểm
poisondamage_v=Độc sát: #d1- điểm/lần
Hướng dẫn lập trình KAutoPlay Trang 17

magicdamage_v=Sát thương ngũ hành #d1- #d3 điểm


physicsenhance_p=Sát thương vật lý: #d1-%
steallife_p=Hút Sinh lực: #d1-%
stealmana_p=Hút Nội lực: #d1-%
stealstamina_p=Hút Thể lực: #d1-%
knockback_p=Đẩy lùi đối phương: #d1-%
deadlystrike_p=Tấn công chí mạng: #d1-%
fatallystrike_p=Tấn công chí tử: #d1-%
stun_p=Làm choáng: #d1-%
damage_reserve1=
damage_reserve2=
damage_reserve3=
damage_reserve4=
damage_reserve5=
damage_reserve6=
damage_reserve7=
damage_reserve8=
damage_reserve9=
damage_reserve10=
damage_end=
normal_begin=
lifemax_v=Sinh lực tối đa: #d1+ điểm
lifemax_p=Sinh lực tối đa: #d1+%
life_v=Sinh lực: #d1+ điểm
lifereplenish_v=Phục hồi sinh lực mỗi nửa giây: #d1+ điểm
manamax_v=Nội lực tối đa: #d1+ điểm
manamax_p=Nội lực tối đa: #d1+%
mana_v=Nội lực: #d1+ điểm
manareplenish_v=Phục hồi nội lực mỗi nửa giây: #d1+ điểm
staminamax_v=Thể lực tối đa: #d1+ điểm
staminamax_p=Thể lực tối đa: #d1+%
stamina_v=Thể lực: #d1+%
staminareplenish_v=Phục hồi thể lực mỗi nửa giây: #d1+ điểm
strength_v=Sức mạnh: #d1+ điểm
dexterity_v=Thân pháp: #d1+ điểm
vitality_v=Sinh khí: #d1+ điểm
energy_v=Nội công: #d1+ điểm
poisonres_p=Kháng độc: #d1+%
fireres_p=Kháng hỏa: #d1+%
lightingres_p=Kháng lôi: #d1+%
physicsres_p=Phòng thủ vật lý: #d1+%
coldres_p=Kháng băng: #d1+%
freezetimereduce_p=Thời gian làm chậm: #d1~%
burntimereduce_p=
poisontimereduce_p=Thời gian trúng độc: #d1~%
Hướng dẫn lập trình KAutoPlay Trang 18

poisondamagereduce_v=Độc sát: #d1~


stuntimereduce_p=Thời gian choáng: #d1~%
fastwalkrun_p=Tốc độ di chuyển: #d1+%
visionradius_p=Phạm vi sát thương: #d1-%
fasthitrecover_v=Thời gian phục hồi: #d1~
allres_p=Kháng tất cả: #d1+%
attackspeed_v=Tốc độ đánh - ngoại công: #d1+%
castspeed_v=Tốc độ đánh - nội công: #d1+%
meleedamagereturn_v=Phản đòn cận chiến: #d1+ điểm
meleedamagereturn_p=Phản đòn cận chiến: #d1+%
rangedamagereturn_v=Phản đòn tầm xa:: #d1+ điểm
rangedamagereturn_p=Phản đòn tầm xa: #d1+%
addphysicsdamage_v=Sát thương vật lý - ngoại công: #d1+ điểm
addfiredamage_v=Hỏa sát - ngoại công: #d1+ điểm
addcolddamage_v=Băng sát - ngoại công: #d1+ điểm
addlightingdamage_v=Lôi sát - ngoại công: #d1+ điểm
addpoisondamage_v=Độc sát - ngoại công: #d1+ điểm/lần
addphysicsdamage_p=Sát thương vật lý - ngoại công: #d1+%
slowmissle_b=Giảm tốc độ xuất chiêu khí công
changecamp_b=Mê hoặc đối phương
physicsarmor_v=Phòng thủ vật lý: #d1- điểm
coldarmor_v=Kháng băng: #d1- điểm
firearmor_v=Kháng hỏa: #d1- điểm
poisonarmor_v=Kháng độc: #d1- điểm
lightingarmor_v=Kháng lôi: #d1- điểm
damage2addmana_p=Chuyển hóa sát thương thành nội lực: #d1+%
lucky_v=May mắn: #d1+%
lucky_v_partner=May mắn tổ đội: #d1- điểm
allskill_v=Kỹ năng #l3: #d1+ cấp
metalskill_v=Kỹ năng hệ Kim: #d1- cấp
woodskill_v=Kỹ năng hệ Mộc: #d1- cấp
waterskill_v=Kỹ năng hệ Thủy: #d1- cấp
fireskill_v=Kỹ năng hệ Hỏa: #d1- cấp
earthskill_v=Kỹ năng hệ Thổ: #d1- cấp
knockback_p=Đẩy lùi đối phương: #d1-%
deadlystrikeenhance_p=Tăng tấn công chí mạng: #d1+%
badstatustimereduce_v=Thời gian kéo dài trạng thái không tốt: #d1~giây
manashield_p=Nội lực hộ thân: #d1+%
adddefense_v=Né tránh: #d1+ điểm
adddefense_p=Né tránh: #d1+%
fatallystrikeenhance_p=Tấn công chí mạng: #d1+%
lifepotion_v=Phục hồi sinh lực mỗi nửa giây: #d1+ điểm
manapotion_v=Phục hồi nội lực mỗi nửa giây: #d1+ điểm
physicsresmax_p=Phòng thủ vật lý tối đa: #d1+%
coldresmax_p=Kháng băng tối đa: #d1+%
Hướng dẫn lập trình KAutoPlay Trang 19

fireresmax_p=Kháng hỏa tối đa: #d1+%


lightingresmax_p=Kháng lôi tối đa: #d1+%
poisonresmax_p=Kháng độc tối đa: #d1+%
allresmax_p=Mức kháng tính tối đa: <color=orange>#d1+%<color>
coldenhance_p=Kháng băng: #d1+%
fireenhance_p=Kháng hỏa: #d1+%
lightingenhance_p=Kháng lôi: #d1+%
poisonenhance_p=Kháng độc: #d1~%
magicenhance_p=Sát thương ngũ hành: #d1-%
attackratingenhance_v=Độ chính xác: #d1+ điểm
attackratingenhance_p=Độ chính xác: #d1+%
steallifeenhance_p=Hút sinh lực: #d1+%
stealmanaenhance_p=Hút nội lực: #d1+%
stealstaminaenhance_p=Hút thể lực: #d1+%
knockbackenhance_p=Đẩy lui: #d1-%
stunenhance_p=Làm choáng: #d1+%
addphysicsmagic_v=Sát thương vật lý - nội công: #d1+ điểm
addcoldmagic_v=Băng sát - nội công: #d1+ điểm
addfiremagic_v=Hỏa sát - nội công: #d1+ điểm
addlightingmagic_v=Lôi sát - nội công: #d1+ điểm
addpoisonmagic_v=Độc sát - nội công: #d1+ điểm/lần
fatallystrikeres_p=Kháng đòn chí mạng: #d1+%
skill_addskilldamage1=Tăng sát thương [#l1] h#d3-%
skill_addskilldamage2=Tăng sát thương [#l1] h#d3-%
skill_addskilldamage3=Tăng sát thương [#l1] h#d3-%
skill_addskilldamage4=Tăng sát thương [#l1] h#d3-%
skill_addskilldamage5=Tăng sát thương [#l1] h#d3-%
skill_addskilldamage6=Tăng sát thương [#l1] h#d3-%
dynamicmagicshield_v=Nội lực hộ thân: #d1+ điểm
addstealfeatureskill=Số lần sử dụng còn lại của kỹ năng ngụy trang:
#d1- lần
lifereplenish_p=Hồi phục sinh lực: <color=orange>#d1+%<color>
ignoreskill_p=Xác suất bỏ qua bùa giảm kháng:
<color=orange>#d1+%<color>
poisondamagereturn_v=Phản đòn khi bị trúng độc: <color=orange>#d1+
điểm<color>
poisondamagereturn_p=Phản đòn khi bị trúng độc:
<color=orange>#d1+%<color>
returnskill_p=Xác suất phản đòn bùa chú: <color=orange>#d1+%<color>
autoreplyskill=Khi bị trúng đòn có xác suất <color=orange>#d9-%<color>
tự thi triển <color=water>#l4-<color> <color=orange>cấp #d7-<color>
skill_mintimepercast_v=Thời gian khôi phục chiêu thức:
<color=orange>#f1- giây<color>
mintimepercastonhorse_v=Thời gian khôi phục chiêu thức trên ngựa:
<color=orange>#f1- giây<color>
Hướng dẫn lập trình KAutoPlay Trang 20

poison2decmana_p=Hạ độc đối phương, đồng thời làm giảm


<color=orange>#d1-%<color> nội lực trong <color=orange>#f2-
giây<color>
skill_appendskill=Gồm kỹ năng: <color=water>#l1-<color>, đẳng cấp cao
nhất: <color=orange>cấp #d3-<color>
hide=ẩn thân <color=orange>#f2- giây<color>, thi triển võ công sẽ hiện
hình trở lại
clearnegativestate=Xác suất <color=orange>#d1-%<color> loại bỏ trạng
thái dị thường cho đồng đội
returnres_p=Kháng phản đòn: <color=orange>#d1+%<color>
dec_percasttimehorse=Giảm #l3- thời gian xuất chiêu: dưới
ngựa<color=orange>#f7-giây<color>, trên ngựa <color=orange>#f4-
giây<color>
dec_percasttime=Giảm #l3- thời gian xuất chiêu: <color=orange>#f1-
giây<color>
enhance_709_auto=Xác suất phát ra chiêu [Sư tử hống]
<color=orange>#d1+%<color>
enhance_708_life_p=Xác suất phục hồi sinh lực [Đảo Hư Thiên] tăng
<color=orange>#d1+%<color>
enhance_93_life_v=Điểm phục hồi sinh lực [Từ Hàng Phổ Độ]
<color=orange>#d1+<color> điểm
enhance_711_auto=Xác suất phát chiêu [Hấp Tinh Yểm]
<color=orange>#d1+%<color>
enhance_714_auto=Xác suất phát chiêu [Hỗn Thiên Khí Công]
<color=orange>#d1+%<color>
enhance_717_auto=Xác suất phát chiêu [Lưỡng Nghi Chân Khí]
<color=orange>#d1+%<color>
enhance_723_miss_p=Xác suất khiến cho đối phương hoảng loạn [Ma Âm Phệ
Phách] <color=orange>#d1+%<color>

Lưu ý: _p trong mỗi thuộc tính phân loại quy định +%/-%, và _v quy định +điểm/-điểm

Ví dụ: magic_fireres_p: kháng hỏa theo % với giá trị % được quy định bởi giá trị trả về giá
trị 1, giá trị 2 và giá trị 3.

Các thuộc tính cơ bản của item bao gồm, sát thương nhỏ nhất, lớn nhất, độ bền, …

Ví dụ:

local nIndex, nPlace, nX, nY = player.GetFirstItem()


while nIndex ~= 0 do
local nGenre = item.GetKey(nIndex)
if nGenre == 0 then
for i = 0, 6 then
Hướng dẫn lập trình KAutoPlay Trang 21

local nMagicType, Value1, Value2, Value3 =


item.GetBaseAttrib(nIndex, i)
if nMagicType == 28 and nValue1 < 120 then
system.MessageBox(item.GetSeries(nIndex))
end
end
end
nIndex, nPlace, nX, nY = player.GetNextItem()
end

int, int, int int GetRequireAttrib(int nIndex, int nCol)


nIndex: thứ tự của vật phẩm trong mảng đối tượng.
nCol: thứ tự của thuộc tính yêu cầu.

Lấy các giá trị thuộc tính yêu cầu của vật phẩm. Với nCol có giá trị từ 0  5.
Trả về: Xem hàm GetBaseAttrib.
Các thuộc tính yêu cầu của một vật phẩm có thể là yêu cầu về sức mạnh, đẳng cấp, thân pháp,

int, int, int int GetMagicAttrib(int nIndex, int nCol)


nIndex: thứ tự của vật phẩm trong mảng đối tượng.
nCol: thứ tự của thuộc tính ma pháp.

Lấy giá trị thuộc tính ma pháp của vật phẩm. Với nCol có giá trị từ 0  5.
Trả về: Xem hàm GetBaseAttrib.
Các thuộc tính ma pháp của vật phẩm bao gồm các dòng ẩn và hiện như kháng hỏa, sát
thương vật lý, tăng sinh lực, nội lực, …

int, int GetDuration(int nIndex)


nIndex: thứ tự của vật phẩm trong mảng đối tượng.

Lấy độ bền của vật phẩm.


Trả về: 2 giá trị tương ứng với độ bền hiện tại và lớn nhất.

Ví dụ:
for i = 0, 11 do
local nItemIndex = player.GetEquipmentItem(i)
if nItemIndex > 0 then
local nMin, nMax = item.GetDuration(nItemIndex)
if nMin < 4 then
shop.RepairItem(nItemIndex)
end
end
Hướng dẫn lập trình KAutoPlay Trang 22

end

int GetTaskNumber(int nIndex)


nIndex: thứ tự của vật phẩm trong mảng đối tượng

Lấy ID của lệnh bài làm nhiệm vụ bang hội. ID này cho biết nhiệm vụ tương ứng trong lệnh bài.
Trả về: ID của nhiệm vụ.

5.6 Các hàm liên quan đến PLAYER

Tất cả các hàm liên quan đến player đều gọi theo dạng player.Tên Hàm([đối số])

int, int, int, int GetFirstItem()


int, int, int, int GetNextItem()

Duyệt qua tất cả các vật phẩm của nhân vật, bao gồm các vật phẩm trên người và trong các
rương, trên tay, … Khi muốn xác định một loại vật phẩm nào của người chơi, bắt buộc phải
dùng hàm này.

Trả về: 4 giá trị tương ứng với thứ tự của vật phẩm, nơi đặt vật phẩm, tọa độ x và y. Nơi đặt
vật phẩm có giá trị từ 1  12 tương ứng như sau:
pos_hand = 1
pos_equip = 2
pos_equiproom = 3
pos_repositoryroom = 4
pos_traderoom = 5
pos_trade1 = 6
pos_immediacy = 7
pos_giveitem = 12

Ví dụ:
local nIndex, nPlace, nX, nY = player.GetFirstItem()
while nIndex ~= 0 do
if nPlace == 3 or nPlace == 7 then
local G, _, P = item.GetKey(nIndex)
if G == 0 and P == 0 then
player.UseItem(nIndex, nPlace, nX, nY)
end
end
nIndex, nPlace, nX, nY = player.GetNextItem()
end

BOOL, int, int, int FindFreeRoom(int nWidth, int nHeight)


nWidth: chiều rộng tính bằng ô.
Hướng dẫn lập trình KAutoPlay Trang 23

nHeight: chiều cao tính bằng ô.

Tìm chỗ trống với độ rộng và cao tính bằng ô.


Trả về: 4 giá trị tương ứng thấy hay không, nơi chứa, tọa độ x và y. Giá trị nơi chứa giống với
hàm GetFirstItem và GetNextItem trả về.

Ví dụ: local bFound, nPlace, nX, nY = player.FindFreeRoom(2, 3)

LockBox()
Khóa rương chứa đồ của người chơi.

Ví dụ: player.LockBox()

UnlockBox(DWORD dwPassword)
dwPassword: mã rương bằng số.

Mở rương chứa đồ. Mật mã truyền vào hàm là mật mã thực sự của rương chứa đồ.

Ví dụ: player.UnlockBox(1234)

SecureUnlockBox(DWORD dwPassword)
dwPassword: mã rương đã được mã hóa.

Mở rương chứa đồ với mã rương đã được mã hóa.

Ví dụ: player.UnlockBox(4569876)

AcceptGiveItem(BOOL bAccepted)
bAccepted: có 2 giá trị, 0 là chấp nhận và 1 là hủy bỏ việc giao vật phẩm.

Xác nhận hoặc hủy bỏ khi người chơi giao vật phẩm (giao vật phẩm cho Dã Tẩu hoặc giao
khiêu chiến lệnh sẽ hiện lên GUI cho người chơi đặt vật phẩm vào rồi bấm xác nhận hoặc hủy
bỏ.

Ví dụ:
player.MoveItem(3,0,0,0,0,0)
timer.Sleep(200)
player.MoveItem(12,0,0,0,0,0)
player.AcceptGiveItem(1)

int GetOnlineTime()
Lấy thời gian online của nhân vật tính bằng giây.
Hướng dẫn lập trình KAutoPlay Trang 24

Trả về: thời gian mà nhân vật đã online tính bằng giây.

Ví dụ:
local nTime = player.GetOnlineTime()
if nTime > 5 * 60 * 60 then system.ShutdownWindows(2) end

int GetEquipmentItem(int nPos)


nPos: vị trí của vật phẩm trên người nhân vật.

Lấy thứ tự của vật phẩm đang mang trên người của nhân vật. Bao gồm nhẫn, dây chuyền,
ngọc bội, nón, bao tay, vũ khí, …
Trả về: thứ tự của vật phẩm. Với nPos có giá trị từ 0  10 tương ứng như sau:
itempart_head = 0,
itempart_body,
itempart_belt,
itempart_weapon,
itempart_foot,
itempart_cuff,
itempart_amulet,
itempart_ring1,
itempart_ring2,
itempart_pendant,
itempart_horse = 10

Ví dụ:
for i = 1, 10 do
local nIndex = player.GetEquipmentItem(i)
local nCurrDuaration = item.GetDuration(nIndex)
end

int GetLeftSkillID()
Lấy ID của chiêu đánh bên trái đang chọn.

int GetRightSkillID()
Lấy ID của chiêu đánh bên phải đang chọn.

BOOL GetRunStatus()
Lấy trạng thái đang chạy hay đi bộ của nhân vật.
Trả về: 0 – đang ở trạng thái đi bộ, 1 – đang ở trạng thái chạy bộ

int GetMoveFrame()
Hướng dẫn lập trình KAutoPlay Trang 25

Lấy số frame di chuyển hiện tại của nhân vật. Khi nhân vật di chuyển số frame này sẽ tự động
giảm dần, khi nhân vật dừng lại sẽ tự động tăng lên. Do đó khi điều khiển nhân vật di chuyển
cần xét tới yếu tố này. Mặc định số frame của nhân vật là 8.

Ví dụ:
function MoveTo(nX, nY)
local nDestX, nDestY, dX, dY
if player.GetMoveFrame() >= 8 then
local nPlayerX, nPlayerY = player.GetMapPos()
dX = nPlayerX & 0x1F
dY = nPlayerY & 0x1F
nDestX = nX + 0x10 – dX
nDestY = nY + 0x10 – dY
if player.GetRunStatus() == 0 then
player.SendCommand(2, nDestX, nDestY)
player.SyncCommandWalk(nX, nY);
else
player.SendCommand(3, nDestX, nDestY)
player.SyncCommandRun(nX, nY)
end
player.SetMoveFrame(0)
end
end

long, long GetExperience()


Lấy điểm kinh nghiệm hiện tại của nhân vật.
Trả về: 2 giá trị tương ứng với điểm kinh nghiệm hiệ tại và lớn nhất.

Ví dụ: local nMinExp, nMaxExp = player.GetExperience()

int GetRepute()
Lấy điểm danh vọng hiện tại của nhân vật.
Trả về: điểm danh vọng hiện tại.

int GetFuYuan()
Lấy điểm phúc duyên hiện tại của nhân vật.
Trả về: điểm phúc duyên hiện tại.

SetMoveFrame(int nFrame)
nFrame: số frame cần thiết lập cho nhân vật.

Thiết lập số frame hiện tại cho nhân vật trong quá trình di chuyển.
Hướng dẫn lập trình KAutoPlay Trang 26

SetLeftSkillID(int nSkillID)
nSkillID: ID của chiêu cần thiết lập.

Thiết lập chiêu đánh bên trái.

SetRightSkillID(int nSkillID)
nSkillID: ID của chiêu cần thiết lập.

Thiết lập chiêu đánh bên phải.

UseItem(int nIndex, int nPlace, int nX, int nY)


nIndex: thứ tự của vật phẩm.
nPlace: nơi đặt vật phẩm.
nX: tọa độ x.
nY: tọa độ y.

Sử dụng vật phẩm. Chỉ có những vật phẩm nào tương tác bằng cách bấm chuột phải mới sử
dụng hàm này.

Ví dụ:
local nIndex, nPlace, nX, nY = player.GetFirstItem()
while nIndex ~= 0 do
local szItemName = item.GetName(nIndex)
if szItemName == “Tiªn Th¶o Lé” then
player.UseItem(nIndex, nPlace, nX, nY)
break
end
nIndex, nPlace, nX, nY = player.GetNextItem()
end

MoveItem(int nPlace1, int nX1, int nY1, int nPlace2, int nX2, int nY2)
nPlace1, nX1, nY1: vị trí thứ 1 của vật phẩm.
nPlace2, nX2, nY2: vị trí thứ 2 của vật phẩm.

Di chuyển vật phẩm từ vị trí 1 sang vị trí 2. Khi di chuyển vật phẩm, cần thực hiện 2 thao tác.
Thứ 1 là nhất vật phẩm lên tay từ vị trí 1 và sau đó đặt vật phẩm xuống vị trí 2. Giữa 2 thao tác
cần có thời gian ngừng.

Ví dụ:
player.MoveItem(7,1,1,0,0,0)  Nhặt vật phẩm lên tay
timer.Sleep(200)  Ngừng để có hiệu ứng
player.MoveItem(3,1,1,0,0,0)  Đặt vật phẩm xuống
Hướng dẫn lập trình KAutoPlay Trang 27

BOOL AutoMoveItem(int nPlace1,int nX1,int nY1,int nPlace2,int nX2,int


nY2)
Tham số đầu vào tương tự như hàm MoveItem.

Tự động di chuyển các loại dược phẩm từ hành trang xuống ô phím tắt.
Trả về: 0 – thất bại, 1 – thành công.

Ví dụ: AutoMoveItem(3,0,0,7,0,0)

DialogNpc(int nNpcIndex)
nNpcIndex: thứ tự của NPC cần đối thoại.

Mở hộp thoại của NPC. Chỉ có các NPC nào mà đối thoại được mới sử dụng.

Ví dụ:
for i = 2, 255 do
if npc.GetKind(i) == 3 and npc.GetName(i) == “D· TÈu” then
local nIndex = npc.GetIndex(i)
player.DialogNpc(nIndex)
while menu.IsVisible(0) == 0 then timer.Sleep(50) end
break
end
end

ThrowAwayItem()
Quăng vật phẩm đang cầm trên tay ra mặt đất.

Ví dụ:
local i, p, x, y = player.GetFirstItem()
while i ~= 0 do
local name = item.GetName(i)
if name == “§¹i Phong §ao” then
player.MoveItem(p, x, y, 0,0,0)
timer.Sleep(200)
player.ThrowAwayItem()
break
end
end

ExchangeMoney(BOOL bDir, int nMoney)


bDir: rút hoặc gởi tiền (0: rút, 1: gởi).
nMoney: số tiền tính bằng lượng.
Hướng dẫn lập trình KAutoPlay Trang 28

Rút tiền hoặc gởi tiền vào rương chứa đồ của nhân vật.

ExchangeItem(int nPlace1,int nX1,int nY1,int nPlace2,int nX2,int nY2)


nPlace1, nX1, nY1: vị trí thứ 1 của vật phẩm.
nPlace2, nX2, nY2: vị trí thứ 2 của vật phẩm.

Hoán đổi vị trí của vật phẩm.

OpenBox()
Mở rương chứa đồ.

CloseBox()
Đóng rương chứa đồ.

CloseStatus()
Đóng giao diện hành trang.

CloseItem()
Đóng giao diện trang bị.

PickUpObj(int nObjIndex)
nObjIndex: thứ tự của vật phẩm dưới mặt đất.

Nhặt vật phẩm nằm trên mặt đất.

Ví dụ:
for i = 1, 255 do
if obj.IsExists(i) and obj.GetKind(i) == 3 then
player.PickUpObj(obj.GetIndex(i))
end
end

MoveTo(int nX, int nY)


nX, nY: tọa độ trong game (không phải tọa độ trên bản đồ nhỏ).

Di chuyển nhân vật tới tọa độ cho trước.

Ví du:
for i = 1, 255 do
if obj.IsExists(i) and obj.GetKind(i) == 3 then
local nX, nY = obj.GetMapPos()
player.MoveTo(nX, nY)
Hướng dẫn lập trình KAutoPlay Trang 29

player.PickUpObj(obj.GetIndex(i))
end
end

MoveToNpc(int nX, int nY, char *szNpcName)


nX, nY: tọa độ của NPC.
szNpcName: Tên của NPC theo dạng TCVN3.

Tìm đường đi tới tọa độ của NPC hoặc tên NPC. Hàm này xét ưu tiên tọa độ hoặc tên NPC. Nếu
dùng tên thì tham số x, y là 0 và ngược lại. Hàm này dùng dữ liệu có trong tập tin bản đồ
tương ứng và tính toán tìm đường đi tới đích.

Ví dụ: player.MoveToNpc(0,0,”tiÖm t¹p hãa”)

ExecuteScript(char *szScriptName)
szScriptName: tên script cần thực hiện.

Thực thi một dòng lệnh trong game.

Ví dụ: player.ExecuteScript(“switch [[run]]”)

UseBuffSkill(int nSkillID)
nSkillID: ID của chiêu hỗ trợ bị động.

Sử dụng các chiêu hỗ trợ bị động. Các chiêu buff sử dụng chuột phải. Ví dụ: tọa vọng vô ngã
(Võ Đan), túy điệp cuồng vũ (Cái Bang), … Hàm này sẽ không tự động buff lại nếu hết thời gian
của chiêu thức.

Ví dụ: player.UseBuffSkill(player.GetRightSkillID())

UseAuraSkill(int nSkillID)
nSkillID: ID của chiêu hỗ trợ.

Sử dụng chiêu hỗ trợ như Từ hàng phổ độ của Nga My. Hoặc các chiêu có tính chất tượng tự.
Chỉ hỗ trợ các chiêu sử dụng bằng chuột phải.

Ví dụ: player.UseAuraSkill(player.GetRightSkillID())

OpenStall(int nNpcIndex)
nNpcIndex: thứ tự của người chơi đang lập shop bán hàng.

Mở shop bày bán của người chơi.


Hướng dẫn lập trình KAutoPlay Trang 30

Ví dụ:
for i = 2, 255 do
if npc.IsExists(i) and npc.GetKind() == 1 then
if npc.IsStall(i) then
player.OpenStall(i)
while stall.IsVisible() == 0 then timer.Sleep(50) end
end
end
end

FollowPeople(int nNpcIndex)
nNpcIndex: thứ tự của NPC, có thể là quái, người chơi, NPC trong thành.

Hàm xử lý các thao tác trên NPC khác. Nếu đối tượng là:
Người chơi: nhân vật sẽ chạy tới.
Người chơi đang lập shop bày bán: sẽ mở shop (nếu nhân vật đang đứng gần).
Các NPC trong thành: sẽ đối thoại với NPC đó.
Các NPC quái: tấn công NPC tương ứng.

FollowObject(int nObjIndex)
nObjIndex: thứ tự của vật phẩm ngoài mặt đất.

Hàm xử lý trên OBJECT khác. Nếu nhân vật đang đứng gần vật phẩm sẽ:
Nếu vật phẩm là tiền hoặc đặc phẩm: nhân vật sẽ nhặt.
Các vật phẩm còn lại: sẽ click chuột lên vật phẩm.

FollowAttack(int nIndex)
nIndex: thứ tự của đối tượng cần tấn công.

Hàm xử lý tấn công trên đối tượng NPC khác.


Nếu nhân vật đứng gần NPC (trong phạm vi tấn công của chiêu thức): tấn công NPC.
Nếu nhân vật đứng xa NPC: chạy tới NPC.

BOOL IsFightMode()
Kiểm tra nhân vật đang trong thành hay ngoài vùng chiến đấu.
Trả về: 1 – vùng chiến đấu, 0 – trong thành.

BOOL IsRideHorse()
Kiểm tra nhân vật có đang trên ngựa không.
Trả về: 0 – không trên ngựa, 1 – đang trên ngựa.

BOOL IsPoisonState()
Hướng dẫn lập trình KAutoPlay Trang 31

Kiểm tra trạng thái trúng độc của nhân vật.


Trả về: 0 – không trúng độc, 1 – đang trúng độc.

BOOL IsFreezeState()
Kiểm tra trạng thái bị đóng băng của nhân vật.
Trả về: 0 – không đóng băng, 1 – đang đóng băng.

BOOL IsStunState()
Kiểm tra trạng thái bị choáng của nhân vật.
Trả về: 0 – không choáng, 1 – đang choáng.

BOOL IsDoubleExp()
Kiểm tra trạng thái nhân đôi kinh nghiệm của nhân vật.
Trả về: 0 – không nhân đôi, 1 – đang nhân đôi, nhân ba.

BOOL IsPlayerBuffState(int SkillID)


nSkillID: ID của chiêu hỗ trợ.

Kiểm tra chiêu hỗ trợ còn tác dụng hay không.


Trả về: 0 – hết tác dụng, 1 – còn tác dụng.

int GetLevel()
Lấy đẳng cấp hiện tại của nhân vật.
Trả về: đẳng cấp hiện tại của nhân vật.

int GetSeries()
Lấy hệ ngũ hành của nhân vật.
Trả về: các giá trị 0  4 tương ứng: kim, mộc, thủy, hỏa, thổ.

int GetColor()
Lấy màu hiện tại của nhân vật.
Trả về: các giá trị từ 0  4 tương ứng với các màu trắng, xanh, đỏ, tím, …

int GetDoing()
Lấy hành động hiện tại của nhân vật.
Trả về: các giá trị từ 0  12 tương ứng như sau:
do_none = 0
do_stand,
do_walk,
do_run,
do_jump,
do_skill,
do_magic,
Hướng dẫn lập trình KAutoPlay Trang 32

do_attack,
do_sit,
do_hurt,
do_death,
do_defense,
do_idle = 12

int, int GetLife()


Lấy mức sinh lực hiện tại của nhân vật.
Trả về: 2 giá trị tương ứng sinh lực hiện tại và lớn nhất.

int, int GetMana()


Lấy mức nội lực hiện tại của nhân vật.
Trả về: 2 giá trị tương ứng nội lực hiện tại và lớn nhất.

int, int GetStamina()


Lấy mức thể lực hiện tại của nhân vật.
Trả về: 2 giá trị tương ứng thể lực hiện tại và lớn nhất.

int, int, int GetMapPos()


Lấy tọa độ thực sự của nhân vật trong bản đồ.
Trả về: 3 giá trị tương ứng với x, y và ID của bản đồ.

char* GetName()
Lấy tên nhân vật.
Trả về: tên của nhân vật theo dạng TCVN3.

int GetMoney(int nPlace)


nPlace: nơi chứa tiền. Có các giá trị 0 – rương chứa đồ, 1 – hành trang.

Lấy tiền trong rương hoặc hành trang.


Trả về: số tiền tính bằng lượng.

int GetPeopleIndex()
Lấy thứ tự của đối tượng cần đánh hoặc theo sau.
Trả về: thứ tự của đối tượng cần đánh hoặc theo sau.

int GetKillerStatus()
Lấy trạng thái luyện công, chiến đấu hay đồ sát của nhân vật.
Trả về: các giá trị tương ứng 0 – luyện công, 1 – chiến đấu , 2 – đồ sát.

int GetNearestNpc(int nNpcKind)


nNpcKind: Loại NPC
Hướng dẫn lập trình KAutoPlay Trang 33

Lấy thứ tự của đối tượng gần nhân vật nhất.


Trả về: thứ tự (index) của đối tượng.

int GetNextNearestNpc(int nFirstIndex, int nNpcKind)


nFirstIndex: Thứ tự của Npc gần nhất.
nNpcKind: Loại NPC.

Lấy thứ tự của đối tượng gần nhân vật nhất tiếp theo.
Trả về: thứ tự (index) của đối tượng.

int GetItemIndexFromPlace(int nPlace, int nX, int nY)


nPlace, nX, nY: vị trí của vật phẩm (rương, hành trang, …).

Lấy thứ tự (index) của vật phẩm từ nơi nào đó.


Trả về: thứ tự của vật phẩm.

Ví dụ:
local nItemIndex = player.GetItemIndexFromPlace(4, 0, 0)
if nItemIndex > 0 then system.MessageBox(item.GetName(nItemIndex)) end

DWORD GetMapID()
Lấy ID của bản đồ hiện tại nhân vật đang đứng.
Trả về: ID của bản đồ.

char* GetMapName()
Lấy tên của bản đồ hiện tại nhân vật đang đứng.
Trả về: tên của bản đồ dạng TCVN3.

char* GetLoginServer()
Lấy tên máy chủ mà nhân vật đã đăng nhập.
Trả về: tên máy chủ dạng TCVN3.

char* GetIntroMessage()
Lấy dòng thông báo rao bán hàng hóa trên đầu của nhân vật.
Trả về: chuỗi rao bán dạng TCVN3.

int GetTaskValue(int nTaskID)


nTaskID: ID của loại nhiệm vụ.

Lấy giá trị nhiệm vụ hoặc các thông số đặt biệt của nhân vật. Ứng với giá trị trả về sẽ mô tả cụ
thể chi tiết loại hình nhiệm vụ. Các loại nTaskID như sau:
1038: Nhiệm vụ mua vật phẩm.
Hướng dẫn lập trình KAutoPlay Trang 34

1039: Nhiệm vụ tìm vật phẩm.


1040: Nhiệm vụ xem vật phẩm.
1041: Nhiệm vụ đi đến bản đồ luyện công.
1042: Nhiệm vụ nâng cấp điểm.
1043: Nhiệm vụ thu thập Sơn Hà Xã Tắc.
Trả về: giá trị nhiệm vụ.

Ví dụ:
local nTaskValue = player.GetTaskValue(1038)
if nTaskValue == 3 then system.MessageBox(player.GetTaskName()) end

SetActiveSkillID(int nSkillID)
nSkillID: ID của chiêu thức cần kích hoạt.

Thiết lập chiêu thức đánh chính cho nhân vật.

SetActiveAuraID(int nSkillID)
nSkillID: ID của chiêu thức cần kích hoạt.

Thiết lập chiêu đánh hỗ trợ cho nhân vật.

SetPeopleIndex(int nIndex)
nIndex: thứ tự của đối tượng cần đánh hoặc theo sau.

Thiết lập đối tượng cần đánh hoặc theo sau.

SetAttackRadius(int nRadius)
nRadius: phạm vi tấn công hiệu quả.

Thiết lập phạm vi tấn công cho nhân vật. Thường thiết lập bằng phạm vi hiệu quả của chiêu
đánh đang sử dụng.

SendCommand(int nType, int nX, int nY, int nZ)


nType: loại lệnh cần thiết lập cho nhân vật.
nX, nY, nZ: các giá trị của lệnh.

Thiết lập lệnh cho nhân vật. Loại lệnh của nhân vật như sau:
do_none = 0
do_stand,
do_walk,
do_run,
do_jump,
Hướng dẫn lập trình KAutoPlay Trang 35

do_skill,
do_magic,
do_attack,
do_sit,
do_hurt,
do_death,
do_defense,
do_idle = 12

Ví dụ:
Di chuyển nhân vật tới tọa độ 1234, 5678
player.SendCommand(3, 1234, 5678, 0)
player.SyncCommandRun(1234,5678)

Tấn công quái có thứ tự thứ i


player.SendCommand(5, player.GetLeftSkillID(), -1, npc.GetIndex(i))
player.SyncCommandSkill(player.GetLeftSkillID(), -1, npc.GetID(i))

Dùng chiêu hỗ trợ bị động


player.SendCommand(5, player.GetRightSkillID(), 0, 0)
player.SyncCommandSkill(player.GetRightSkillID(), 0, 0)

SyncCommandRun(int nX, int nY)


nX, nY: tọa độ cần chạy chuyển tới.

Ghi nhận tọa độ mới của nhân vật.

SyncCommandWalk(int nX, int nY)


nX, nY: tọa độ cần đi chuyển tới.

Ghi nhận tọa độ mới của nhân vật.

SyncCommandSkill(int nSkillID, int nTargetIndex, int nNpcID)


nSkillID: ID của chiêu thức.
nTargetIndex: thứ tự của đối tượng tương tác.
nNpcID: ID của đối tượng tương tác.

Ghi nhận chiêu đánh mới của nhân vật tương tác lên đối tượng.

OfflineLive()
Chọn tính năng ủy thác. Sau khi chọn sẽ hiện ra menu để chọn cách ủy thác tương ứng.

Ví dụ:
Hướng dẫn lập trình KAutoPlay Trang 36

player.OfflineLive()
while menu.IsVisible(0) == 0 then timer.Sleep(50) end
menu.ClickIndex(0, 0)

5.7 Các hàm liên quan đến QUEST

Tất cả các hàm liên quan đến nhiệm vụ đều gọi với dạng quest.Tên Hàm([đối số])

char*, char*, char * GetPriceInfo()


Lấy thông tin phần thưởng khi trả nhiệm vụ.
Trả về: 3 giá trị tương ứng với 3 loại phần thưởng theo dạng TCVN3.

char* GetStatus()
Lấy thông tin trạng thái hiện tại của nhiệm vụ.
Trả về: thông tin trạng thái nhiệm vụ tương ứng trong giao diện F12.

char* GetInfo()
Lấy chuỗi mô tả thông tin nhiệm vụ.
Trả về: chuỗi thông tin nhiệm vụ theo dạng TCVN3. Hàm này phải được gọi ngay sau khi đối
thoại với NPC Dã Tẩu thì mới có tác dụng.

Ví dụ:
for i = 2, 255 do
if npc.IsExists(i) and npc.GetName(i) == “D· TÈu” then
player.DialogNpc(i)
while menu.IsVisible(0) == 0 do timer.Sleep(50) end
system.MessageBox(quest.GetInfo())
end

ChoosePrice(int nIndex)
nIndex: thứ tự của phần thưởng.

Nhận phần thưởng theo thứ tự từ trái qua phải. Thứ tự được tính từ vị trí 0.

5.8 Các hàm liên quan đến TEAM

Tất cả các hàm liên quan đến tổ đội đều gọi theo dạng team.Tên Hàm([đối số])

Create()
Thành lập tổ đội mới. Nhân vật gọi hàm này sẽ trở thành đội trưởng.

OpenClose(BOOL bFlag)
bFlag: 0 – đóng, 1 – mở tổ đội.
Hướng dẫn lập trình KAutoPlay Trang 37

Đóng hoặc mở lại tổ đội.

Add(int nNpcIndex)
nNpcIndex: thứ tự của người chơi cần thêm vào tổ đội.

Thêm thành viên vào tổ đội.

AcceptMember(int nNpcID, BOOL bAccepted)


nNpcID: ID của người chơi.
bAccepted: cho hoặc không cho phép vào tổ đội.

Cho phép thành viên mới vào tổ đội. 0 – không cho phép, 1 – cho phép.

Leave()
Rời khỏi tổ đội.

KickMember(int nNpcID)
nNpcID: ID của người chơi cần loại khởi tổ đội.

Loại bỏ thành viên ra khỏi tổ đội.

InviteAdd(int nNpcID, int nIndex, char *szName)


nNpcID: ID của người chơi.
nIndex: thứ tự của người chơi.
szName: tên của người chơi.

Mời thành viên vào tổ đội của mình.

ReplyInvite(int nIndex, BOOL bAgree)


nIndex: thứ tự của người chơi.
bAgree: đồng ý hoặc không đồng ý vào tổ đội. 0 – bỏ qua, 1 – đồng ý.

Đồng ý hoặc không đồng ý vào tổ đội khi được mời.

ChangeCaptain(int nNpcID)
nNpcID: ID của người chơi.

Chuyển chủ tổ đội cho người chơi khác.

5.9 Các hàm liên quan đến NPC

Các hàm liên quan đến NPC đều gọi theo dạng npc.Tên Hàm([đối số])
Hướng dẫn lập trình KAutoPlay Trang 38

BOOL IsExists(int nIndex)


nIndex: thứ tự của NPC.
Kiểm tra npc có tồn tại không.
Trả về: 0 – tồn tại, 1 – không tồn tại.

BOOL IsStall(int nIndex)


nIndex: thứ tự của người chơi khác.

Kiểm tra người chơi khác có đang lập shop bày bán không.
Trả về: 0 – không bày bán, 1 – đang bày bán.

int GetID(int nIndex)


nIndex: thứ tự của NPC.

Lấy ID của NPC.


Trả về: ID của NPC, dùng làm đối số cho các hàm về tổ đội.

int GetIndex(int nIndex)


nIndex: thứ tự của NPC.

Lấy thứ tự thực sự của NPC trong mảng đối tượng.


Trả về: thứ tự thực sự của NPC.

int GetLevel(int nIndex)


nIndex: thứ tự của NPC.

Lấy đẳng cấp hiện tại của NPC.


Trả về: đẳng cấp hiện tại của NPC.

int GetKind(int nIndex)


nIndex: thứ tự của NPC.
Lấy loại NPC.
Trả về: các giá trị từ 0  5 tương ứng như sau:
kind_normal = 0
kind_player,
kind_partner,
kind_dialoger,
kind_bird,
kind_mouse = 5

int GetSeries(int nIndex)


Hướng dẫn lập trình KAutoPlay Trang 39

nIndex: thứ tự của NPC.

Lấy hệ ngũ hành của NPC.


Trả về: các giá trị từ 0  4, tương ứng kim, mộc, thủy, hỏa, thổ.

int GetColor(int nIndex)


nIndex: thứ tự của NPC.

Lấy màu của NPC.


Trả về: Xem hàm GetColor của đối tượng player.

int, int GetLife(int nIndex)


nIndex: thứ tự của NPC.

Lấy máu hiện tại và max của NPC.


Trả về: 2 giá trị tương ứng máu hiện tại và lớn nhất.

int, int, int GetMapPos(int nIndex)


nIndex: thứ tự của NPC.

Lấy tọa độ của NPC trong bản đồ.


Trả về: 3 giá trị tương ứng với tọa độ x, y và ID của bản đồ.

char* GetName(int nIndex)


nIndex: thứ tự của NPC.

Lấy tên NPC.


Trả về: tên của NPC theo dạng TCVN3.

5.10 Các hàm liên quan đến SKILL

Tất cả các hàm liên quan đến chiêu thức đều gọi theo dạng skill.Tên Hàm([đối số])

int GetID(int nIndex)


nIndex: thứ tự của chiêu thức trong bảng chiêu thức.

Lấy ID của chiêu đánh.


Trả về: ID của chiêu thức.

Ví dụ: for i = 1, 79 do local nSkillID = skill.GetID(i) end

int GetLevel(int nSkillID)


Hướng dẫn lập trình KAutoPlay Trang 40

nSkillID: ID của chiêu đánh.

Lấy đẳng cấp hiện tại của chiêu thức.


Trả về: đẳng cấp hiện tại.

char* GetName(int nSkillID)


nSkillID: ID của chiêu đánh.

Lấy tên của chiêu thức.


Trả về: tên của chiêu thức dạng TCVN3.

int GetAttackRadius(int nSkillID)


nSkillID: ID của chiêu đánh.

Lấy phạm vi tấn công hiệu quả.


Trả về: phạm vi tấn công hiệu quả.

int[] GetRightList()
Lấy tất cả các ID của chiêu bên phải. Các chiêu thực sự hiện lên bên phải của GUI.
Trả về: danh sách các ID của chiêu phải.

int[] GetLeftList()
Lấy tất cả các ID của chiêu bên trái. Các chiêu thực sự hiện lên bên trái của GUI.
Trả về: danh sách các ID của chiêu trái.

BOOL IsAura(int nSkillID)


nSkillID: ID của chiêu thức.
Kiểm tra xem có phải chiêu hỗ trợ chủ động không.
Trả về: 0 – không, 1 – có.

BOOL IsBuffSkill(int nSkillID)


nSkillID: ID của chiêu thức.

Kiểm tra xem có phải chiêu hỗ trợ bị động không.


Trả về: 0 – không, 1 – có.

BOOL IsHorseLimit(int nSkillID)


nSkillID: ID của chiêu thức.

Kiểm tra chiêu có bị hạn chế trên ngựa không.


Trả về: 0 – không, 1 – có.
Hướng dẫn lập trình KAutoPlay Trang 41

BOOL SetAutoBuff(int nSkillID, BOOL bRebuff)


nSkillID: ID của chiêu thức.
bRebuff: có thiết lập tự động buff trở lại khi hết thời gian không.

Thiết lập tự động buff lại khi chiêu buff hết thời gian. 0 – hủy bỏ, 1 – thiết lập.
Trả về: 0 – thất bại, 1 – thành công.

5.11 Các hàm liên quan đến MENU

Tất cả các hàm liên quan đến NPC đều gọi theo dạng menu.Tên Hàm([đối số])

ClickIndex(int nType, int nIndex)


nType: Loại menu. 0 – tiệm tạp hóa, hiệu thuốc. 1 – xa phu ở thành, Võ Lâm Truyền Nhân.
nIndex: thứ tự của dòng chọn tính từ 0.

Chọn dòng chữ trong menu theo thứ tự được tính từ 0.

ClickText(int nType, char *szText)


nType: Loại menu. 0 – tiệm tạp hóa, hiệu thuốc. 1 – xa phu ở thành, Võ Lâm Truyền Nhân.
szText: dòng chữ cần chọn.

Chọn dòng chữ trong menu theo dòng văn bản.

int GetCount(int nType)


nType: Loại menu. 0 – tiệm tạp hóa, hiệu thuốc. 1 – xa phu ở thành, Võ Lâm Truyền Nhân.

Lấy số lượng dòng trong menu.


Trả về: số lượng dòng chọn.

char* GetText(int nType, int nIndex)


nType: Loại menu. 0 – tiệm tạp hóa, hiệu thuốc. 1 – xa phu ở thành, Võ Lâm Truyền Nhân.
nIndex: thứ tự của dòng chọn tính từ 0.

Lấy nội dung dòng chữ của menu theo vị trí.


Trả về: Nội dung dòng chữ định dạng theo TCVN3.

BOOL IsVisible(int nType)


nType: Loại menu. 0 – tiệm tạp hóa, hiệu thuốc. 1 – xa phu ở thành, Võ Lâm Truyền Nhân.

Kiểm tra menu có được mở lên chưa.


Trả về: 0 – chưa mở, 1 – đã mở.
Hướng dẫn lập trình KAutoPlay Trang 42

5.12 Các hàm liên quan đến SHOP

Tất cả các hàm liên quan đến shop đều gọi theo dạng shop.Tên Hàm([đối số])

Open()
Mở giao diện shop (tiệm thuốc, tạp hóa, thợ rèn, …)

Close()
Đóng giao diện shop.

BOOL IsVisible()
Kiểm tra shop có được mở chưa.
Trả về: 0 – chưa mở, 1 – đã mở.

SellItem(int nIndex)
nIndex: vị trí của vật phẩm cần bán cho người chơi tính từ 0, trên xuống, trái phải.

Bán vật phẩm trong shop cho người chơi (người chơi mua vật phẩm của shop).

BuyItem(int nItemIndex)
nItemIndex: thứ tự của vật phẩm cần bán cho shop.

Mua vật phẩm của người chơi (người chơi bán vật phẩm vào shop).

RepairItem(int nItemIndex)
nItemIndex: thứ tự của vật phẩm cần bán cho shop.

Sửa trang bị của người chơi.

int GetItemCount()
Lấy số lượng vật phẩm được bán trong shop.
Trả về: số lượng vật phẩm bán trong shop.

int GetPageCount()
Lấy số lượng trang trong shop.
Trả về: số trang trong shop.

5.13 Các hàm liên quan đến STALL

Tất cả các hàm liên quan stall đều được gọi với dạng stall.Tên Hàm([đối số])

Close()
Đóng shop bày bán.
Hướng dẫn lập trình KAutoPlay Trang 43

BOOL IsVisible()
Kiểm tra shop bày bán có được mở lên chưa.
Trả về: 0 – chưa mở, 1 – đã mở.

SellItem(int nIndex)
nIndex: thứ tự của vật phẩm trong shop bày bán.
Bán vật phẩm cho người chơi (người chơi mua vật phẩm trong shop).

int GetItemIndex(int nIndex)


nIndex: thứ tự vật phẩm trong shop bày bán.

Lấy thứ tự của vật phẩm được bày bán trong shop.
Trả về: thứ tự của vật phẩm được bán trong shop.

int GetItemCount()
Lấy số lượng vật phẩm được bày bán trong shop.
Trả về: số lượng vật phẩm bán trong shop.

int GetItemPrice(int nIndex)


nIndex: thứ tự vật phẩm trong shop.

Lấy giá bán của vật phẩm trong shop.


Trả về: giá bán tính bằng lượng.

Ví dụ:
for i=0, stall.GetItemCount() – 1 do
local nItemIndex = stall.GetItemIndex(i)
if item.GetName(nItemIndex) == “§¹i Phong §ao” and
stall.GetItemPrice(i) < 10000 then
stall.SellItem(i)
end
end

6. Cấu trúc các tập tin

6.1 Config.lua

Là tập tin chứa các biến lưu các thiết lập từ GUI của người dùng. Các biến này được sử dụng
trong tập tin script.lua. Người dùng có thể thay đổi giá trị trực tiếp hoặc gián tiếp hoặc thêm
vào các biến khác phục vụ cho quá trình lập trình của mình. Tất cả các biến mặc định trong tập
tin này người dùng không được thay đổi tên.
Hướng dẫn lập trình KAutoPlay Trang 44

Tên biến Giá trị Công dụng


--Do not remove this line None Header của file, không được xóa
bHideGameWindows 0, 1 Ẩn cửa sổ game
bExitWhenUseTownPortal 0, 1 Thoát game khi thổ địa phù
bExitWindows 0,1 Hẹn giờ tắt máy
nExitWindowsHour Number Giờ để tắt máy
nExitWindowsMinute Number Phút để tắt máy
bExitGame 0,1 Hẹn giờ thoát game
nExitGameHour Number Giờ thoát game
nExitGameMinute Number Phút thoát game
bAutoAddLife 0,1 Tự động bơm máu
nAddLifeValue Number Ngưỡng máu cần bơm
nAddLifeTime Number Thời gian để bơm tiếp theo
bAutoAddMana 0,1 Tự động bơm mana
nAddManaValue Number Ngưỡng để bơm mana
nAddManaTime Number Thời gian để bơm tiếp theo
bLifeLess 0,1 Sinh lực nhỏ hơn
nLifeLessValue Number Giá trị sinh lực nhỏ hơn
bManaLess 0,1 Mana nhỏ hơn
nManaLessValue Number Giá trị mana nhỏ hơn
bEmptyLife 0,1 Hết bình máu
bEmptyMana 0,1 Hết bình mana
bFullBox 0,1 Đầy hành trang
nFullBoxType Number Loại đầy hành trang (số ô)
bFullMoney 0,1 Đầy tiền
nFullMoneyValue Number Giá trị tiền đầy
bItemDuration 0,1 Kiểm tra đồ hư (độ bền hiện tại)
nItemDurationValue Number Đồ bền cần kiểm tra
bUsePoision 0,1 Tự dùng giải độc
bUseMasterCard 0,1 Tự sùng sư đồ thiếp
bUseRepairItem 0,1 Tự sửa đồ
bUseDoubleExp 0,1 Tự dùng vật phẩm x2 kinh nghiệm
bEmyBuff 0,1 Nga My buff
nEmyBuffValue Number % máu để Nga My buff
bEmyBuffTeam 0,1 Ngay My buff cho toàn tổ đội
bAutoAttackNpc 0,1 Tự động đánh quái
nNpcSearchRange Number Khoảng cách tìm quái đánh
nHorseType Number Tùy chọn ngựa khi đánh
bHitClosed 0,1 Đánh áp sát
nHitClosedRange Number Khoảng cách áp sát
bIgnoreBoss 0,1 Bỏ qua boss
Hướng dẫn lập trình KAutoPlay Trang 45

nDefenseType Number Loại phòng thủ


nDefenseRange Number Khoảng cách phòng thủ
bAllwaysFight 0,1 Luôn bật F9
bHitLimited 0,1 Áp sát
nHitLimitedRange Number Khoảng cách áp sát
bAutoDownHorse 0,1 Tự động xuống ngựa
nAuraSkillId1 Number Chiêu thức hỗ trợ 1
nAuraSkillId2 Number Chiêu thức hỗ trợ 2
nAuraSkillId3 Number Chiêu thức hỗ trợ 3
nLeftSkillId Number Chiêu đánh trái
nRightSkillId Number Chiêu đánh phải
nBossSkillId Number Chiêu dùng đánh boss
nDefenseSkillId Number Chiêu dùng tự vệ
nAttackSkillType Number Thiết lập chiêu đánh
nAttackSkillValue Number Giá trị thiết lập chiêu đánh
nAttackValueType Number Loại chiêu đánh
nAuraSkillType Number Chiêu phụ trợ
nAuraSkillValue Number Giá trị chiêu phụ trợ
nAuraValueType Number Loại chiêu phụ trợ
bAutoPickUpObj 0,1 Tự nhặt đồ
nPickUpObjRange Number Khoảng cách tìm đồ
bIgnoreObj 0,1 Không bỏ sót đồ
bMoneyItem 0,1 Nhặt tiền và đặc phẩm
bPickUpInCity 0,1 Nhặt đồ trong thành
nFilterObjType Number Lọc đồ theo thuộc tính
tbFilterMagicType Number Danh sách thuộc tính ma pháp
bObjPrice 0,1 Lọc đồ theo giá
nPriceValue Numner Giá cần lọc
bObjLevel 0,1 Lọc theo cấp
nLevelValue Number Giá trị cấp cần lọc
bAutoSortObj 0,1 Tự sắp xếp hành trang
nKeepObjType Number Loại đồ cần giữ lại
bKeepRing 0,1 Giữ nhẫn
nRingValue Number Giá trị nhẫn
nBellValue Numnber Giá trị ngọc bội, dây chuyền
bAutoFollow 0,1 Tự động theo sau
nFollowRange Number Khoảng cách theo sau
bAttackSingle 0,1 Không đánh lẻ
bAroundMap 0,1 Theo bản đồ
nAroundMapId Number ID của bản đồ
bAroundPoint 0,1 Đánh quanh điểm
Hướng dẫn lập trình KAutoPlay Trang 46

nAroundPointX Number Tọa độ quanh điểm x


nAroundPointY Number Tọa độ quanh điểm y
nAroundPointRange Number Khoảng cách theo tọa độ
bFollowPoint 0,1 Theo tọa độ
tbFollowPoint Number Danh sách các tọa độ
bRideHorseWhenMove 0,1 Lên ngựa khi di chuyển
bAttackNpcWhenMove 0,1 Đánh quái trên đường đi
bAutoInviteTeam 0,1 Tự động tổ đội
tbMemberIndex Number Danh sách thứ tự các thành viên
nRequestInviteType Number Loại yêu cầu mời
nResponseInviteType Number Loại phản hồi
bAutoLeaveTeam 0,1 Tự rời nhóm
nLeaveTeamWhenMemberNum Number Rời nhóm theo thành viên
nLeaveTeamWhenMember Number Rời nhóm theo thành viên
nLeaveTeamWhenTime Number Rời nhóm theo thời gian
bDeleteMemberAbsent 0,1 Xóa thành viên vắng mặt
nDeleteMemberAbsentValue Number Thời gian vắng mặt
bTurnBack 0,1 Về thành tự quay lại
bSellItem 0,1 Bán đồ
bRepairItem 0,1 Sửa đồ
bGetRepute 0,1 Nhận phúc duyên, danh vọng
bDrawMoney 0,1 Rút tiến
nDrawMoneyValue Number Số tiền rút
nBoxPassword Number Mật khẩu
bBuyLife 0,1 Mua máu
nBuyLifeType Number Loại máu
nBuyLifeValue Number Số lượng máu
bBuyMana 0,1 Mua mana
nBuyManaType Number Loại mana
nBuyManaValue Number Số lượng mana
bBuyPoision 0,1 Mua giải độc
nBuyPoisionType Number Loại giải độc
nBuyPoisionValue Number Số lượng giải độc
bBuyTownPortal 0,1 Mua thổ địa phù
nBuyTownPortalValue Number Số lượng thổ địa phù
bGiveFightCard 0,1 Nộp khiêu chiến lệnh
nGiveFightCardValue Number Số lượng khiêu chiến lệnh cần nộp
bSaveMoney 0,1 Gởi tiền
nSaveMoneyValue Number Lượng tiền gởi
nStoreItemPlace Number Cất đồ vào rương
bGoBackPoint 0,1 Quay lại điểm củ
Hướng dẫn lập trình KAutoPlay Trang 47

nGoBackPointType Number Chỗ cần quay lại


nGotoMapType Number Bản đồ luyện công
nOnlineTimeValue Number Thời gian online
nOnlineTimeType Number Thực hiện thời gian online
bAutoQuest 0,1 Tự làm nhiệm vụ
bMeetQuester 0,1 Gặp dã tẩu thôn
nQuestWeaponType Number Quest trang bị
nQuestLetterType Number Quest đồ chí
nQuestExpType Number Quest trị kinh nghiệm
nQuestReputeType Number Quest danh vọng
nQuestFuYuanType Number Quest phúc duyên
nQuestPKValueType Number Quest trị PK
nQuestTongJinType Number Quest tống kim
nQuestItemType Number Quest tìm vật phẩm
nQuestKillNpcType Number Quest đánh quái
nQuestDesPKType Number Quest giảm PK
bGetItemBox1 0,1 Lấy đồ rương 1
bGetItemBox2 0,1 Lấy đồ rương 2
bGetItemBox3 0,1 Lấy đồ rương 3
nStopTaskType Number Khi dừng nhiệm vụ

6.2 Script.lua

Script.lua chứa mã thực thi của chương trình và các lời gọi hàm APIs được viết bằng ngôn
ngữ LUA. Trong tập tin bắt buộc phải có hàm main, là hàm chính thực thi tất cả các thao tác.
Chương trình sẽ gọi duy nhất hàm này lúc bắt đầu chạy chương trình, kết thúc hàm này cũng là
kết thúc chương trình. Mô tả hàm main như sau:

function main()
end

Khi kết thúc, chương trình sẽ gọi hàm StopTimer do đó trong tập tin script.lua bắt buộc
phải có hàm này với mô tả như sau:

function StopTimer()
end

Nếu có sử dụng đến hàm khởi tạo bộ định thời timer thì chương trình sẽ tự động gọi hàm
OnTimer với định dạng sau:

function OnTimer(nTimerID)
end
Hướng dẫn lập trình KAutoPlay Trang 48

IncludeFile(“config.lua”) ở đầu tập tin script.lua dùng để chèn tập tin


config.lua vào chương trình và sử dụng các biến thiết lập từ người dùng.

You might also like