Chủ Nhật, 20 tháng 10, 2013

[TLBB]Tùy chỉnh TLBB toàn tập

Cách làm rỗng dữ liệu MySQL

Chú thích: Cách này dùng cho bạn nào cần làm 1 private Server online. Để xoá tất cả những dữ liệu cũ (tránh bị lỗi phát sinh khi vận hành server)

Có nhiều cách, mình xin trình bày cách dùng command trong linux:
Code:
mysql -u root -p
[gõ pass của root]
use tlbbdb;
delete from t_guild;  #xoá thông tin các bang
delete from t_char; #xoá thông tin các nhân vật
delete from t_city; #Xoá thông tin các thành bang
update t_char set guldid = -1; 
exit;
*Lưu ý: Sau # là chú thích cho câu lệnh, các bạn không cần gõ vào. Sao lưu trước khi thực hiện những lệnh trên, để có gì lỗi thì còn restore ^^ chứ đừng tìm mình chém ^^

Sau khi xoá các thông tin trên thì đã cơ bản dọn các thông tin rác. Để hoàn tất thì các bạn xoá thêm các table: 
t_ability : thông tin các kỹ năng sống
t_charextra: thông tin thêm của nhân vật
t_cshop : shop thương hội
t_cshopitem: các item trong thương hội
t_impact : các hiệu ứng của nhân vật
t_iteminfo : thông tin các item
t_mail : thông tin tin nhắn
t_mission : thông tin nhiệm vụ
t_pet : thông tin pet
t_petcreate : thông tin pet đang sinh sản
t_pshop : danh sách thương hội
t_relation : danh sách quan hệ : hảo hữu, bất hữu...
t_skill : thông tin các skill
t_xinfa : thông tin tâm pháp của các skill

Cách chỉnh những item rớt ra khi đánh quái vật

Để tuỳ chỉnh được điều này các bạn cần hiểu biết các thông số trong 3 file sau:DropBoxContent.txt, MonsterDropBoxs.txt, MonsterAttrExTable.txt

-Đầu tiên: tìm ID của quái vật bạn cần cho rớt đồ khi đánh chết trong MonsterAttrExTable.txt
-MonsterDropBoxs.txt : qui định những loại box được rớt ra khi đánh chết quái theo ID của monster
-DropBoxContent.txt : qui định item của từng loại box

Cách chỉnh là như thế. Để chỉnh được cũng rất là công phu, phức tạp...công việc này không dành cho một người.

Do đó, một server có drop hợp lý là cả một nhóm thực hiện.

*Lưu ý: để chỉnh sửa các file txt cấu hình trong TLBB Server một cách dễ dàng thì các bạn sử dụng Excel 2007. Phiên bản 2003 cũng được nhưng bị lỗi khi số cột nhiều hơn 256.

Cách add thêm NPC

Đầu tiên phía Client phải có model của NPC đó. Ở đây chúng ta dùng các model đã có sẵn. Nếu bạn có khả năng đồ hoạ thì có thể tự thiết kế trang phục, hình dáng cho NPC của bạn ^^ Còn mình thì không có khả năng đồ hoạ 

Ví dụ: add một NPC chào mừng tại Đại lý
Mở thư mục tlbb\Public\Scene
Tìm và mở file dali_monster.ini

Giải thích một số thứ trong file này:


Số NPC hiện tại là 162. Do đó để thêm 1 NPC thì ta sửa lại thành 163

Thêm vào cuối file thông tin cho NPC


Các bạn chỉ cần chỉnh lại script_id và tên NPC cho phù hợp.
Quan trọng nhất là script_id. Ở đây mình chọn 2096 vì các script qui định cho các NPC ở Đại lý là từ2000 -> 2095, khi thêm 1 NPC mới thì tức là cũng thêm một script mới. Do đó mình đặt là 2096 để không bị trùng với script khác cũng như dễ theo dõi, chỉnh sửa...

Tại sao mình biết các NPC ở đại lý có script từ 2000-> 2095 ?
Các bạn mở file tlbb/Public/Data/Script.dat là sẽ hiểu 
File này chứa tất cả thông tin các script khi server chạy sẽ load file này.
Do đó khi add thêm NPC nữa thì cũng thêm thông tin cho file này.

Các bạn tạo file odali_npc_chao_mung.lua và soạn các script cần thiết cho NPC rồi bỏ vào đường dẫn \obj\dali\ như đã thiết lập ở trên.

Sau đó restart lại server là ok ^^

Chú thích các cấu trúc, dữ liệu trong TLBB

TLBB sử dụng dữ liệu cho thông tin tài khoản là Oracle. Do đó để có tài khoản thì các bạn cần thao tác trên cơ sở dữ liệu Oracle như đăng kí, đổi mật khẩu,..., khoá tài khoản (GM)..

Các thông tin khác về thông tin nhân vật, pet, item,... đều được lưu trong cơ sở dữ liệu MySQL.

TLBB cũng sử dụng SQL Server. Nhưng thật sự là nó không cần thiết. Cơ sở dữ liệu này được cài chỉ với mục đích là dùng được GM Toold - Tool này hiện không còn hữu dụng nữa. Do đó các bạn không nên cài làm gì cho nặng máy ^^ bộ SQL Server ngốn khá nhiều tài nguyên máy.

Giải thích chức năng các thông tin trong thư mục tlbb:

-Billing : có chức năng đọc các thông tin dữ liệu tài khoản từ oracle phục vụ cho việc login, đổi knb...

-Login : cho phép người chơi đăng nhập vào máy chủ, login sẽ kết nối đến Billing để kiểm tra tài khoản. Sau khi vào game xong thì Login không còn quan trọng nữa và bạn tắt nó cũng không sao

-Server/Config : chứa rất nhiều cấu hình. Sẽ post ở phần sau.

-Public : chứa tất cả các script, cấu hình của NPC và quái vật..

Hiểu biết cấu trúc server cũng như cơ sở dữ liệu là điều cần thiết nếu bạn muốn làm một server online.

Khi làm game TLBB online, đều không được khuyến khích là chạy server trên máy ảo. Và đây cũng là các vấn đề mà các private TLBB hiện tại đang gặp phải vì hầu hết đều dùng máy ảo. Vì tính bảo mật của linux đã bị mất khi hoạt động như một máy ảo.


Chú thích các file script chức năng trong thư mục Public

Public\Data\AIScript\script (0 ~ 264) : script qui định các thông tin tấn công, skill của quái
Public\Data\Script\event\bossgroup\ : qui định thông tin các boss nhóm: Võ Di, Thương Sơn...
Public\Data\Script\event\bus\ : thông tin tuyến đường khi rước kiệu dâu (lễ kết hôn)
Public\Data\Script\event\caoyun\ : thông tin khi đi tàu vận gặp phải, qui định bao gồm các quái cản đường, NPC Hắc Thị Thương Nhân....
Public\Data\Script\event\challenge\ : thông tin lôi đài các thành Đại lý và Lạc Dương
Public\Data\Script\event\city\ : thông tin các nhiệm vu trong thành bang
Public\Data\Script\event\chuansong\ : thông tin dịch chuyển giữa các map
Public\Data\Script\event\dali\ : thông tin các nhiệm vụ ở Đại lý
Public\Data\Script\event\emei\ : nhiệm vụ nhận skill thêm của Nga Mi
Public\Data\Script\event\equip\ : các script liên quan đến trang bị : cường hoá, sửa chữa...
Public\Data\Script\event\EventScript\ : gồm nhiều nhiệm vụ tổng hợp
Public\Data\Script\event\festival\ : thông tin nhiệm vụ lễ hội (trung thu, giáng sinh..)
Public\Data\Script\event\fuben\ : các phụ bản: Kính Hồ, Kỳ Cuộc, Thuỷ Lao...
Public\Data\Script\event\gaibang\ : nhiệm vụ phái cái bang
Public\Data\Script\event\guild\ : thông tin Bang hội
Public\Data\Script\event\huashan\ : Luận Kiếm Hoa Sơn
Public\Data\Script\event\huodong\ : gồm nhiều sự kiện trong game : đánh lén môn phái, tỉ vỏ, đổi tên nv, đổi tên Bang, đổi Long Bài, nhận phần thưởng phu thê, sư đồ...
Public\Data\Script\event\jinghu\ : Boss Kính Hồ
Public\Data\Script\event\juqing\ : script nv kịch tình
Public\Data\Script\event\liveabilityevent\ : các thông tin về kỹ năng sống: khai khoáng, câu cá...
Public\Data\Script\event\luoyang\ : nhiệm vụ ở Lạc Dương
Public\Data\Script\event\menpai\ : thông tin phần thưởng khi gia nhập môn phái
Public\Data\Script\event\mingjiao\ : nhiệm vụ phái MG
Public\Data\Script\event\misc\ : thông tin xoá PK, gửi bán
Public\Data\Script\event\peifang\ : các kỹ năng pha chế
Public\Data\Script\event\pet\ : thông tin script liên quan PET
Public\Data\Script\event\petcompound\ : nâng ngộ tính pet
Public\Data\Script\event\petprocreate\ : sinh sản pet
Public\Data\Script\event\petskill\ : ép skill pet
Public\Data\Script\event\pingpan\ : nhiệm BÌnh định
Public\Data\Script\event\prize\ : script shop KNB
Public\Data\Script\event\quiz\ : nhiệm vụ trả lời câu hỏi
Public\Data\Script\event\relation\ : quan hệ
Public\Data\Script\event\revenge\ : quyết đấu
Public\Data\Script\event\sceneevent\ : các nhiệm vụ đặc biệt
Public\Data\Script\event\shaolin : thiếu lâm phái
Public\Data\Script\event\shimen : nhiệm vụ sư môn
Public\Data\Script\event\signpost : thông tin script của lính gác thành
Public\Data\Script\event\stiletto : đục lỗ trang bị
Public\Data\Script\event\test : test
Public\Data\Script\event\tianlong : thiên long
Public\Data\Script\event\tianshan : thiên sơn
Public\Data\Script\event\wudang : võ đang
Public\Data\Script\event\xiaoyao : tiêu dao
Public\Data\Script\event\xingxiu : tinh túc
Public\Data\Script\event\xunhuan : Q 123, thuỷ lao, script đổi màu, kiểu tóc, mặt, bình tặc, thi cử...
Public\Data\Script\event\yanbei : script đổi đồ tại Nhạn Bắc

\Public\Data\Script\obj : mỗi thành thị có một thư mục chứa các script của từng NPC

\Public\Data\Script\city*.lua : script của các NPC trong thành Bang Hội

Các file txt cần biết:

Public \ Config \ ActivityNotice.txt : thông báo các sự kiện trong game
Public \ Config \ DropNotify.txt : thông báo khi nhặt được vật phẩm quí

Cách chống Flood đơn giản

Đây là các cách chống Flood mình tìm hiểu được trên mạng và đã sử dụng. Qua sử dụng, mình nhận thấy để chống được Flood từ một số lượng nhỏ (<100 máy tính) tấn công thì khả quan, còn nếu hơn nữa thì ....

Hiện tại các pri server TLBB đã từng bị các loại tấn công như : 

-SYN FlOOD :loại này xưa rồi nhưng vẫn hiệu quả, làm cho mạng ở server thường đơ ngay lập tức. Nếu đường truyền của bạn tốt thì %network bị đưa lên 100%. Còn router bèo thì đơ liền, khỏi cần vào máy tính 

*Cách chống: chỉ chống được khi sở hữu đường truyền tốt (như các đường truyền ở Data center chẳng hạn).

Thêm đoạn sau vào file /etc/sysconfig/sysctl.conf
Code:
# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries=9
Thêm một rule vào iptables
Code:
# Limit the number of incoming tcp connections
# Interface 0 incoming syn-flood protection
iptables -N syn_flood
iptables -A INPUT -p tcp --syn -j syn_flood
iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN
iptables -A syn_flood -j DROP
Restart lại Linux là ok  --> Cách trên mình đã test, rất ok! Bot NET thì khỏi chống 

Ngăn chặn một số kiểu tấn công dạng khác
Chỉ chặn được các phương thức tấn công đơn giản

Chống Syn Flooding:
Code:
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
Chống Scan Port:
Code:
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Chống Ping of Death:
Code:
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
Cho các packet đã thiết lập kết nối tiếp tục đi qua firewall:
Code:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Chống giả mạo địa chỉ nội bộ từ bên ngoài để xâm nhập:
Code:
iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
Chặn Ping:
Code:
iptables -A INPUT -p icmp -j DROP
Chặn kết nối đến cổng nào đó : ví dụ chặn tất cả kết nối đến cổng 1521 (Oracle)
Bạn có thể thay DROP bằng ACCEPT để cho phép 1 số kết nối từ các IP bạn cho phép.
Code:
iptables -A INPUT -p TCP --dport 1521 -j DROP
Chú thích, ý nghĩa các cột trong các table quan trọng trong db tlbbdb

Như các bạn đã biết, hầu hết dữ liệu các thông tin nhân vật, item, pet, nhiệm vụ, tâm pháp, skill, các quan hệ, shop, bang.....mọi thứ đều lưu trong tlbbdb.

Và tất cả đều có thể chỉnh sửa được. Nhưng chúng ta chưa hiểu hết các cột đó chứa nội dung gì ? và chỉnh như thế nào ? - tất nhiên là không bàn đến các cột đơn giản ^^

Sau đây mình sẽ trình bày những gì mình biết 

Các từ ngữ dùng trong bài viết các bạn nên biết:

db: viết tắt của databse -> có nghĩa là cơ sở dữ liệu
table: bảng
column: cột (có thể viết tắt là col )
row : dòng ( có thể gọi cách khác là trường )


Bắt đầu là table t_char : chứa nội dung, thông tin nhân vật...

Từ cửa sổ query bạn có thể gõ lệnh
Code:
select * from t_char where accname="huuduyen"
Ở đây huuduyen là tên tài khoản của mình. Lệnh trên xuất tất cả thông tin cở về nhân vật trong table t_char ra cho bạn xem và chỉnh sửa.

Ta lướt qua các cột:
  • aid : số thứ tự (cột tự động tăng dần) - không cần quan tâm cũng được
  • accname : tên tài khoản
  • charguid : ID nhân vật - hiển thị dạng thập phân - trong game hiển thị dạng thập lục phân
    Ví dụ: trong game nhân vật có ID là 3C336A98 thì chuyển sang thập phân tức nhân vật có ID là 1010002584
    Điều này cho phép GM dễ dàng theo dõi các tài khoản trong game vì truy xuất đến thông tin nhân vật thông qua tên tài khoản và tên nhân vật hơi khó khăn. Vì đôi khi tên nhân vật chứa kí tự đặt biệt...
    Code:
    select * from t_char where charguid=1010002584
  • charname : tên nhân vật
  • title : Danh hiệu
  • pw : mật khẩu cấp 2 trong game, có dạng +xxxxxx
  • sex : giới tính : 0 : nữ; 1 : nam
  • level : cấp độ
  • enegry : tinh lực
  • enegrymax : giới hạn tinh lực
  • outlook : chưa biết
  • scene : ID map đang đứng
  • xpos : toạ độ x
  • zpos : toạ độ z
  • menpai : ID môn phái
    0 Thiếu Lâm
    1 Minh Giáo
    2 Cái Bang
    3 Võ Đang
    4 Nga My
    5 Tinh Túc
    6 Thiên Long
    7 Thiên Sơn
    8 Tiêu Dao
    9 Không có
  • hp : máu, huyết
  • mp : khí, mana
  • strikepoint : điểm tiếp xúc
  • str : cường lực
  • spr : nội lực
  • con : thể lực
  • ipr : trí lực
  • dex : thân pháp
  • points : điểm cộng
  • logouttime : giờ thoát game (s)
  • logintime : giờ vào game (s)
  • creatime : giờ tạo nhân vật (s)
  • haircolor : màu tóc
  • hairmodel : kiểu tóc
  • facecolor : màu mặt
  • facemodel : kiểu mặt
  • vmoney : tiền vàng
  • isvalid : hợp pháp
  • exp : điểm kinh nghiệm
  • pres : dữ liệu các kỹ năng, skill (chi tiết dữ liệu sẽ được giải thích sau)
  • mdata : dữ liệu các thông số nhiệm vụ trong game: số lần chuyển sinh, đã hoàn thành nhiệm vụ nào, số lần, ....(chi tiết dữ liệu sẽ được giải thích sau)
  • mflag :
  • relflag :
  • settings : thiết lập trong game : vị trí các skill, cấu hình tuỳ chỉnh trong game: chặn hảo hữu, tổ đội...
  • dbverision : chưa biết
  • shopinfo : thông tin thương hội (chi tiết dữ liệu sẽ được giải thích sau)
  • carrypet : pet mang theo (chi tiết dữ liệu sẽ được giải thích sau)
  • guldid : ID bang hội ( -1 : không có Bang)
  • teamid : ID tổ đội ( -1 : không có)
  • headid :
  • erecover :
  • vigor : hoạt lực
  • maxvigor : giới hạn hoạt lực
  • vrecover :
  • pwdeltime : giờ xoá pass 2
  • pinfo : thông tin cá nhân
  • bkscene : map cũ (trước khi chuyển sang map mới)
  • bkxpos : toạ độ x map cũ
  • bkzpos : toạ độ z map cũ
  • titleinfo : thông tin danh hiệu
  • dietime : giờ chết (s)
  • cooldown : chưa biết
  • bankmoney : tiền vàng trong rương
  • bankend :
  • rage : chưa biết
  • reserve : chưa biết
  • dinfo : chưa biết
  • defeq : chưa biết
  • guildpoint : điểm cống hiến Bang
  • menpaipoint : điểm môn phái
  • gevil : bang hội chiến
  • pkvalue : sát khí : -2, -1, 0, 1, 2, 3
  • otime : thời gian online (s)
  • deltime : giờ xoá
  • expinfo : thông tin exp
  • savetime : giờ lưu thông tin lần cuối
  • crc32 : chưa biết
  • pvpinfo : tình trạng pk
  • loginip : IP đăng nhập (mã hoá)
  • pkvaluetime : thời gian giá trị sát khí
  • fatigue : giới hạn thời gian chơi
  • yuanbao : nguyên bảo
  • visualgem : thông tin ngọc sử dụng
  • isolditem : chưa biết
  • uipoint : điểm cá nhân
  • zengdian : điểm tặng

Thông tin cột relflag trong table t_char

Các mối quan hệ của nhân vật trong TLBB được lưu ở t_char cột relflag

Quan hệ phu thê lưu ở vị trí byte thứ 78 -> 85 (8 bytes) : lưu ID nhân vật phu thê

Hướng dẫn chỉnh sửa file Server/Config/ConfigInfo.ini

Như các bạn đã biết hoặc chưa biết file ConfìgInfo.ini có vai trò khá quan trọng trong server và chứa nhiều cấu hình quan trọng.
Sau đây là chú thích của các cấu hình đó. (Có thể có sai sót ^^)

Bấm vào đây để xem nội dung đầy đủ


[Global]
DropParam=1.0 ;Điều chỉnh tỉ lệ Drop
EquipmentDamagePoint=500 ;Điều chỉnh độ bền của item
RespawnParam=1.0 ;Thời gian khôi phục cái quái vật sau khi chết: 0: ngay lập tức; 1: theo cấu hình ở các file Scene
PkRefixOfDamage=200 ;tỉ lệ thiệt hại khi PK
PrenticeProfferExp=2 ;Exp nhận được thêm khi làm sư phụ
GodReliveTopLevel=20 ;Level cho phép hồi sinh sau khi chết
AuditSwitch=1 ;lưu lại log để thống kê, kiểm tra

[Localization]
Language=4 ; 0:en,1:cn,2:tw,3:ko,4:vi;

[Zone]
ZoneSize=10 ;khu vực

[TimeSetting]
RecoverTime=10000 ;Thời gian mỗi lần hồi máu (khi ngồi thiền, dùng dược cao...)
DisconnectTime1=20000 ;thời gian còn lưu giữ trong game khi bị ngắt kết nối
DisconnectTime2=20000 ;thời gian còn lưu giữ trong game khi bị ngắt kết nối
KickUserTime=300000 ;thời gian tối đa, cho phép kết nối lại sau khi bị ngắt kết nối
SMUKickUserTime=1800000 ;Thời gian kick người dùng ra khỏi hệ thống
DropBoxRecycle=60000 ;thời gian xóa túi đồ đánh quái rớt ra
TimeChangeInterval=150000 ;thời gian nghỉ
PacketAuditTime=0 ;thống kê số kết nối mạng gửi đi, tần số, thời gian nghỉ. 0: không thống kê

[Monster]
MaxCount=19000 ;Số quái vật cao nhất trong game
DefaultRespawnTime=120000 ;thời gian hồi sinh mặc định của quái vật
DefaultPositionRange=10 ;khoảng cách hồi sinh mặc định
DefaultAIType=1 ;cấu hình AI mặc định của quái vật
DefaultBodyTime=5000 ;thời gian lưu lại mặc định của quái vật
DefaultBossBodyTime=60000 ;thời gian lưu lại mặc định của quái vật BOSS
DefaultRefuseScanTime=3000 ;thời gian từ chối hồi sinh mặc định
OddsOfChangeTarget=20 ;xác xuất thay đổi mục tiêu
OddsOfAttackAssistant=16 ;khả năng tấn công
ChangeTargetCooldown=3 ;thời gian thay đổi mục tiêu
MonsterMaxDefaultLevel=200 ;cấp độ cao nhất mặc định

[Zone]
ZoneSize=10 ;khu vực

[Portal]
MaxCount=1024 ;Số kết nối cao nhất vào game world

[Platform]
MaxCount=1024 ;Số thông tin kỹ năng sống cao nhất (may vá, khai khoáng..)

[SkillObj]
MaxCount=1024 ;Số SkillObj cao nhất

[SpecialObj]
MaxCount=1024 ;Số SpecialObj cao nhất

[BusObj]
MaxCount=1024 ;Số BusObj cao nhất

[PlayerShop]
MaxCount=256 ;Số cửa hàng trong thương hội cao nhất
PaymentPerHour=0 ;chi phí phải trả sau mỗi giờ - thương hội

[SceneTimer]
MaxCount=64

[HumanTimer]
MaxCount=3

[Pet]
MaxCount=3000
PetBodyTime=2000 ;thời gian lưu pet
PetHappinessInterval=600000 ;thời gian giảm độ khoái lạc
PetLifeInterval=600000 ;thời gian giảm tho mệnh
PetDecLifeStep=6 ;
PetCallUpHappiness=60 ;độ khoái lạc thấp nhất để gọi pet
PetPlacardTime=1800000 ;thời gian xuất pet
PetPlacardNeedLevel=15 ;cấp độ cần thiết
PetPlacardNeedHappiness=100 ;độ hoan hỷ cần thiết
PetPlacardNeedLife=3000 ;tho mệnh cần thiết
PetCompoundGenGuFloat=5 ;% thay đổi căn cốt khi nâng ngộ tính
PetCompoundGrowFloat=5 ;% độ phát triển
PetCompoundBabyPer_VV=10 ;% của pet trưởng thành, bảo bảo, biến dị
PetCompoundBabyPer_BB=95 ;% pet bảo bảo, biến dị
PetCompoundBabyPer_VB=30 ;% của pet trưởng thành, bảo bảo, biến dị
PetCompoundPerceptionPer=70 ;% thay đổi tính chất từ thú cha mẹ
PetMaxDefaultLevel=125 ;cấp độ cao nhất cua pet

[Human]
CanGetExpRange=30 ;khoảng cách nhận exp
OutGhostTime=300000 ;thời gian giải thoát linh hồn xuống địa phủ (ms)
DefaultMoveSpeed=4000 ;tốc độ di chuyển mặc định
DefaultAttackSpeed=2000 ;tốc độ tấn công mặc định (không có mang vũ khí)
DefaultRefreshRate=60000 ;tần số quét mặc định
HumanVERecoverInterval=300000 ;thời gian hồi phục tinh, hoạt lực
HumanMaxDefaultLevel=150 ;cấp độ cao nhất
PKValueRefreshRate=3600 ;tần số quyét sát khí
HumanDefPilferLockTime=0 ;thời gian khóa
XinfaMaxDefaultLevel=150 ; cấp độ tâm pháp cao nhất
LevelUpValidateMinLv=14 ;cấp độ thất nhất nhập mã xác nhận khi lên cấp
LevelUpValidateMaxLv=25 ;cấp độ cao nhất nhập mã xác nhận khi lên cấp

[Team]
AvailableFollowDist=10 ;khoảng cách theo đội
TimeForLoseFollow=30 ;thời gian ngắt khi theo đội thất bại

[Guild]
FoundDuration=24 ;thời gian nhập bang khác khi thoát bang (h)
DefaultMaxMemberCount=600 ;số thành viên mặc định cao nhất
ResponseUserCount=2 ;số thành viên để lập thành (kể cả Bang chủ)
XianYaMaxUser_0=110 ;giới hạn thành viên
XianYaMaxUser_1=110 ;giới hạn thành viên
XianYaMaxUser_2=110 ;giới hạn thành viên
XianYaMaxUser_3=110 ;giới hạn thành viên
XianYaMaxUser_4=110 ;giới hạn thành viên

XianYaStdMoney_0=1666667 ;giới hạn bang quỹ
XianYaStdMoney_1=3333333 ;giới hạn bang quỹ
XianYaStdMoney_2=6666667 ;giới hạn bang quỹ
XianYaStdMoney_3=13333333 ;giới hạn bang quỹ
XianYaStdMoney_4=26666667 ;giới hạn bang quỹ

QianZhuangDeltaMoney_0=833333 ;giới hạn bang quỹ
QianZhuangDeltaMoney_1=1666667 ;giới hạn bang quỹ
QianZhuangDeltaMoney_2=3333333 ;giới hạn bang quỹ
QianZhuangDeltaMoney_3=6666667 ;giới hạn bang quỹ
QianZhuangDeltaMoney_4=13333333 ;giới hạn bang quỹ

XianYaMaxMoney_0=10000000 ;giới hạn bang quỹ
XianYaMaxMoney_1=20000000 ;giới hạn bang quỹ
XianYaMaxMoney_2=40000000 ;giới hạn bang quỹ
XianYaMaxMoney_3=60000000 ;giới hạn bang quỹ
XianYaMaxMoney_4=80000000 ;giới hạn bang quỹ
XianYaMaxTrader_0=8 ;số tuyến đường thương nghiệp
XianYaMaxTrader_1=9 ;số tuyến đường thương nghiệp
XianYaMaxTrader_2=10 ;số tuyến đường thương nghiệp
XianYaMaxTrader_3=11 ;số tuyến đường thương nghiệp
XianYaMaxTrader_4=12 ;số tuyến đường thương nghiệp
XiangFangMaxUser_0=30 ;giới hạn thành viên
XiangFangMaxUser_1=50 ;giới hạn thành viên
XiangFangMaxUser_2=80 ;giới hạn thành viên
XiangFangMaxUser_3=120 ;giới hạn thành viên
XiangFangMaxUser_4=150 ;giới hạn thành viên
CreateCityMoney=10000000 ;phí lập thành
LeaveWordCost=1000 ;phí bang ngôn
BattleTime=120 ;thời gian chiến đầu
LeftGuildBuffEnable=0 ;buff bang hội khi thoát

[Relation]
PasswdPoint=500 ;số điểm quan hệ cần thiết để nhập pass 2
PromptPoint=0 ;số điểm cần thiết để chú thích khi hảo hữu rời mạng
ExpPoint=1 ;số điểm hảo hữu

[MinorPassword]
DeleteDelayTime=72 ;thời gian mở khóa (h)
EnergySetCost=20 ;tốn tinh lực khi khóa, mở khóa
EnergyModifyCost=20 ;tốn tinh lực khi đổi mã
EnergyDelCost=100 ;tốn tinh lực khi xóa mã
MaxInputErrTimesPerDay=5 ;số lần nhập sai cho phép trong ngày
PWUnlockTime=72 ;thời gian mở khóa

[World]
HashOnlineUserCount=1000 ;Số người cho phép online
HashMailUserCount=20000 ;số tin nhắn cho phép
MaxOfflineUserCount=50000 ;thông số lưu tối đa của các tài khoản
SpeakerPoolMax=128 ;số ký tự cho phép dùng trên tiểu lạt bá

[Temp]
UserPath=./Users/ ;lưu thông tin tài khoản

[Combat]
DefaultDamageFluctuation=8 ;sức sát thương mặc định
H0ofHitCalculation=10 ;Tỉ lệ tấn công tính từ H0
C0ofCriticalCalculation=100 ;Tỉ lệ tấn công tính từ C0
C1ofCriticalCalculation=10 ;Tỉ lệ tấn công tính từ C1
C2ofCriticalCalculation=25 ;Tỉ lệ tấn công tính từ C2

[GoodBad] ;thiện ác
MinGoodBadValue=0 ;thiện ác thấp nhất
MaxGoodBadValue=1000000 ;thiện ác cao nhất
LevelNeeded=20 ;cấp độ cần thiết
MemberLevel=10 ;cấp độ thành viên
MemberLevelLimit=40 ;cấp độ thành viên thấp nhất
LevelDis=8 ;khoảng cách cấp độ
GoodBadRadius=15 ;giá trị thiện ác đạt được
BonusPerMember=5 ;giá trị thiện ác đạt được từ thành viên
BonusPerPrentice=3 ;giá trị thiện ác đạt được
MaxBonus=2 ;giá trị thiện ác được cộng cao nhất
PenaltyWhenMemberDie=100 ;giá trị thiện ác bị trừ khi thành viên chết

[JuqingPoint] ;ớẫẵéộãÊý
MinJuqingPoint=0 ;điểm thấp nhất
MaxJuqingPoint=9999 ;điểm cao nhất

;[Revenge]
;RevengeCDTime=86400000 ;thời gian tự vệ
;RevengeTime=3600000 ;thời gian tự vệ
;RevengeNeedSelfLevel=10 ;cấp độ cần thiết
;RevengeNeedTargetLevel=10 ;cấp độ của mục tiêu

[Economic]
RateA=0.25 ;người chơi phải tốn thuế thường hội : giá cơ bản *A(=1/3)
RateB=0.1 ;giá của thương phẩm phải nhỏ hơn B(=1/10)
YuanBaoSceneID=20 ;map chuyển đổi
YuanBaoTicketMax=9999999 ;giá trị cao nhất của phiếu nguyên bảo
NewServerSaleRate=1.0 ;tham số giá cả của dịch vụ chuyển đổi
MinExchangeCodeLevel=14 ;cấp độ nhỏ nhất
MaxExchangeCodeLevel=25 ;cấp độ cao nhất

[Exp]
ExpParam=300.0 ;exp rate
ExpSpouseAddRate=0.04 ;rate được cộng khi là phu thê
ExpBrotherAddRate=0.02 ;rate được cộng khi là huynh đệ
ExpMasterInTeamAddRate=0.2 ;rate được cộng khi trong nhóm có sư phụ
ExpMasterNotInTeamAddRate=0.1 ;rate được cộng kh trong nhóm không có sư phụ
ExpPrenticeAddRate=0.05 ;exp rate được cộng sau mỗi lần cộng

[Duel]
;DuelCDTime=86400000 ;thời gian thách đấu
DuelTime=600 ;thời gian đấu
DuelLevelRequire=10 ;cấp độ cần thiết
DuelEnergyRequire=100 ;tốn tinh lực

[Warfare]
PersonalWarfareTime=600 ;tốn thời gian cá nhân

[PK]
PKFlagSwitchDelay=600 ;thời gian chờ tắt pk
HostilePlayerWarning=30 ;thời gian cảnh báo thù địch

[FightBack]
LegalFightBackTime=600 ;thời gian tấn công lại hợp pháp

[Ability]
AssistantDemandFormulaParam0=1.514 ;thời gian hồi phục kỹ năng sống 0
AssistantDemandFormulaParam1=19.0 ;thời gian hồi phục kỹ năng sống 1
AssistantDemandFormulaParam2=0.2 ;thời gian hồi phục kỹ năng sống 2
AssistantDemandFormulaParam3=37.1 ;thời gian hồi phục kỹ năng sống 3

[Fatigue]
EnableFatigueState=0 ;kích hoạt tính năng mệt mỏi (giới hạn giờ chơi)
LittleFatigueTime=10800 ;thời gian kích hoạt mệt mỏi ít (s)
ExceedingFatigueTime=18000 ;thời gian kích hoạt mệt mỏi nhiều (s)
ResetFatigueStateOfflineTime=18000 ;thời gian khởi tạo lại thời gian mệt mỏi sau khi offline

[YuanBao]
MaxDayCostYuanBao=16777215 ;số KNB dùng trong ngày max=16777215,0xFFFFFF

[MonsterIncome]
LittleIncomeMonsterCount=7000 ;số quái vật (khi giảm số kết nối vào)
NilIncomeMonsterCount=10000 ;số quái vật (khi không có kết nối)
LittleIncomePercent=0.5 ;giảm số % của kết nối

[CommisionShop] ;gửi bán KNB, vàng
SendBackTime=360 ;thời gian trả lại
YuanbaoFee=2 ;Phí nguyên bảo
GoldCoinFee=2 ;phí vàng
Value0=50 ;giá trị KNB 1
Value1=200 ;giá trị KNB 2
Value2=500 ;giá trị KNB 3
Value3=100000 ;giá trị vàng 1
Value4=500000 ;giá trị vàng 2
Value5=1500000 ;giá trị vàng 3

[CacheLogTime] ;thống kê người chơi khi đăng nhập
LogInCacheTime=4


[SystemNotice]
IsJoinBangPaiNotice=0 ;thông báo khi gia nhập bang


Cách chỉnh những item rớt ra khi đánh quái vật

Để tuỳ chỉnh được điều này các bạn cần hiểu biết các thông số trong 3 file sau:DropBoxContent.txt, MonsterDropBoxs.txt, MonsterAttrExTable.txt

-Đầu tiên: tìm ID của quái vật bạn cần cho rớt đồ khi đánh chết trong MonsterAttrExTable.txt
-MonsterDropBoxs.txt : qui định những loại box được rớt ra khi đánh chết quái theo ID của monster
-DropBoxContent.txt : qui định item của từng loại box

Cách chỉnh là như thế. Để chỉnh được cũng rất là công phu, phức tạp...công việc này không dành cho một người.

Do đó, một server có drop hợp lý là cả một nhóm thực hiện.

*Lưu ý: để chỉnh sửa các file txt cấu hình trong TLBB Server một cách dễ dàng thì các bạn sử dụng Excel 2007. Phiên bản 2003 cũng được nhưng bị lỗi khi số cột nhiều hơn 256.

Cách add thêm NPC

Đầu tiên phía Client phải có model của NPC đó. Ở đây chúng ta dùng các model đã có sẵn. Nếu bạn có khả năng đồ hoạ thì có thể tự thiết kế trang phục, hình dáng cho NPC của bạn ^^ Còn mình thì không có khả năng đồ hoạ 

Ví dụ: add một NPC chào mừng tại Đại lý
Mở thư mục tlbb\Public\Scene
Tìm và mở file dali_monster.ini

Giải thích một số thứ trong file này:
[info]
monstercount=162 ;tổng số NPC

[monster0]
guid=1986678
type=193 ; ID của NPC
name=Thôi Phùng Cửu ; tên NPC
title=Ông chủ dịch trạm ; tiêu đề
pos_x=241.3763 ; toạ độ
pos_z=136.5375
dir=27
script_id=2026 ; script qui định của NPC
respawn_time=1000 ; thời gian hồi sinh
group_id=-1
team_id=-1
base_ai=3
ai_file=0
patrol_id=-1
shop0=-1
shop1=-1
shop2=-1
shop3=-1
ReputationID=-1
level=-1
....
Số NPC hiện tại là 162. Do đó để thêm 1 NPC thì ta sửa lại thành 163

Thêm vào cuối file thông tin cho NPC
[monster162]
guid=1986678
type=193 ; ID của NPC
name=NPC Mới ; tên NPC
title=Chào mừng ; tiêu đề
pos_x=100.3763 ; toạ độ
pos_z=100.5375
dir=27
script_id=2096 ; script qui định của NPC
respawn_time=1000 ; thời gian hồi sinh
group_id=-1
team_id=-1
base_ai=3
ai_file=0
patrol_id=-1
shop0=-1
shop1=-1
shop2=-1
shop3=-1
ReputationID=-1
level=-1
Các bạn chỉ cần chỉnh lại script_id và tên NPC cho phù hợp.
Quan trọng nhất là script_id. Ở đây mình chọn 2096 vì các script qui định cho các NPC ở Đại lý là từ2000 -> 2095, khi thêm 1 NPC mới thì tức là cũng thêm một script mới. Do đó mình đặt là 2096 để không bị trùng với script khác cũng như dễ theo dõi, chỉnh sửa...

Tại sao mình biết các NPC ở đại lý có script từ 2000-> 2095 ?
Các bạn mở file tlbb/Public/Data/Script.dat là sẽ hiểu 
File này chứa tất cả thông tin các script khi server chạy sẽ load file này.
Do đó khi add thêm NPC nữa thì cũng thêm thông tin cho file này.

002096=\obj\dali\odali_npc_chao_mung.lua
Các bạn tạo file odali_npc_chao_mung.lua và soạn các script cần thiết cho NPC rồi bỏ vào đường dẫn \obj\dali\ như đã thiết lập ở trên.

Sau đó restart lại server là ok ^^

Chú thích các cấu trúc, dữ liệu trong TLBB

TLBB sử dụng dữ liệu cho thông tin tài khoản là Oracle. Do đó để có tài khoản thì các bạn cần thao tác trên cơ sở dữ liệu Oracle như đăng kí, đổi mật khẩu,..., khoá tài khoản (GM)..

Các thông tin khác về thông tin nhân vật, pet, item,... đều được lưu trong cơ sở dữ liệu MySQL.

TLBB cũng sử dụng SQL Server. Nhưng thật sự là nó không cần thiết. Cơ sở dữ liệu này được cài chỉ với mục đích là dùng được GM Toold - Tool này hiện không còn hữu dụng nữa. Do đó các bạn không nên cài làm gì cho nặng máy ^^ bộ SQL Server ngốn khá nhiều tài nguyên máy.

Giải thích chức năng các thông tin trong thư mục tlbb:

-Billing : có chức năng đọc các thông tin dữ liệu tài khoản từ oracle phục vụ cho việc login, đổi knb...

-Login : cho phép người chơi đăng nhập vào máy chủ, login sẽ kết nối đến Billing để kiểm tra tài khoản. Sau khi vào game xong thì Login không còn quan trọng nữa và bạn tắt nó cũng không sao

-Server/Config : chứa rất nhiều cấu hình. Sẽ post ở phần sau.

-Public : chứa tất cả các script, cấu hình của NPC và quái vật..

Hiểu biết cấu trúc server cũng như cơ sở dữ liệu là điều cần thiết nếu bạn muốn làm một server online.

Khi làm game TLBB online, đều không được khuyến khích là chạy server trên máy ảo. Và đây cũng là các vấn đề mà các private TLBB hiện tại đang gặp phải vì hầu hết đều dùng máy ảo. Vì tính bảo mật của linux đã bị mất khi hoạt động như một máy ảo.

Chú thích các file script chức năng trong thư mục Public

Public\Data\AIScript\script (0 ~ 264) : script qui định các thông tin tấn công, skill của quái
Public\Data\Script\event\bossgroup\ : qui định thông tin các boss nhóm: Võ Di, Thương Sơn...
Public\Data\Script\event\bus\ : thông tin tuyến đường khi rước kiệu dâu (lễ kết hôn)
Public\Data\Script\event\caoyun\ : thông tin khi đi tàu vận gặp phải, qui định bao gồm các quái cản đường, NPC Hắc Thị Thương Nhân....
Public\Data\Script\event\challenge\ : thông tin lôi đài các thành Đại lý và Lạc Dương
Public\Data\Script\event\city\ : thông tin các nhiệm vu trong thành bang
Public\Data\Script\event\chuansong\ : thông tin dịch chuyển giữa các map
Public\Data\Script\event\dali\ : thông tin các nhiệm vụ ở Đại lý
Public\Data\Script\event\emei\ : nhiệm vụ nhận skill thêm của Nga Mi
Public\Data\Script\event\equip\ : các script liên quan đến trang bị : cường hoá, sửa chữa...
Public\Data\Script\event\EventScript\ : gồm nhiều nhiệm vụ tổng hợp
Public\Data\Script\event\festival\ : thông tin nhiệm vụ lễ hội (trung thu, giáng sinh..)
Public\Data\Script\event\fuben\ : các phụ bản: Kính Hồ, Kỳ Cuộc, Thuỷ Lao...
Public\Data\Script\event\gaibang\ : nhiệm vụ phái cái bang
Public\Data\Script\event\guild\ : thông tin Bang hội
Public\Data\Script\event\huashan\ : Luận Kiếm Hoa Sơn
Public\Data\Script\event\huodong\ : gồm nhiều sự kiện trong game : đánh lén môn phái, tỉ vỏ, đổi tên nv, đổi tên Bang, đổi Long Bài, nhận phần thưởng phu thê, sư đồ...
Public\Data\Script\event\jinghu\ : Boss Kính Hồ
Public\Data\Script\event\juqing\ : script nv kịch tình
Public\Data\Script\event\liveabilityevent\ : các thông tin về kỹ năng sống: khai khoáng, câu cá...
Public\Data\Script\event\luoyang\ : nhiệm vụ ở Lạc Dương
Public\Data\Script\event\menpai\ : thông tin phần thưởng khi gia nhập môn phái
Public\Data\Script\event\mingjiao\ : nhiệm vụ phái MG
Public\Data\Script\event\misc\ : thông tin xoá PK, gửi bán
Public\Data\Script\event\peifang\ : các kỹ năng pha chế
Public\Data\Script\event\pet\ : thông tin script liên quan PET
Public\Data\Script\event\petcompound\ : nâng ngộ tính pet
Public\Data\Script\event\petprocreate\ : sinh sản pet
Public\Data\Script\event\petskill\ : ép skill pet
Public\Data\Script\event\pingpan\ : nhiệm BÌnh định
Public\Data\Script\event\prize\ : script shop KNB
Public\Data\Script\event\quiz\ : nhiệm vụ trả lời câu hỏi
Public\Data\Script\event\relation\ : quan hệ
Public\Data\Script\event\revenge\ : quyết đấu
Public\Data\Script\event\sceneevent\ : các nhiệm vụ đặc biệt
Public\Data\Script\event\shaolin : thiếu lâm phái
Public\Data\Script\event\shimen : nhiệm vụ sư môn
Public\Data\Script\event\signpost : thông tin script của lính gác thành
Public\Data\Script\event\stiletto : đục lỗ trang bị
Public\Data\Script\event\test : test
Public\Data\Script\event\tianlong : thiên long
Public\Data\Script\event\tianshan : thiên sơn
Public\Data\Script\event\wudang : võ đang
Public\Data\Script\event\xiaoyao : tiêu dao
Public\Data\Script\event\xingxiu : tinh túc
Public\Data\Script\event\xunhuan : Q 123, thuỷ lao, script đổi màu, kiểu tóc, mặt, bình tặc, thi cử...
Public\Data\Script\event\yanbei : script đổi đồ tại Nhạn Bắc

\Public\Data\Script\obj : mỗi thành thị có một thư mục chứa các script của từng NPC

\Public\Data\Script\city*.lua : script của các NPC trong thành Bang Hội

Các file txt cần biết:

Public \ Config \ ActivityNotice.txt : thông báo các sự kiện trong game
Public \ Config \ DropNotify.txt : thông báo khi nhặt được vật phẩm quí

Các lệnh thường dùng trong linux

I. Xem thông tin hệ thống

top xem performent hệ thống
arch hiển thị cấu trúc của máy(1)
uname -m hiển thị cấu trúc của máy(2)
uname -r hiển thị phiên bản kernel đang sử dụng
dmidecode -q Hiển thị hệ thống phần cứng - (SMBIOS / DMI)
hdparm -i /dev/hda trình bày những đặc trưng của 1 ổ cứng ( lưu ý, hard disk cap ATA là hda còn SATA là sda )
hdparm -tT /dev/sda test thử ổ cứng
cat /proc/cpu hiển thị thông tin CPU
cat /proc/interrupts hiển thị sự ngắt của các tiến trình
cat /proc/meminfo hiển thị bộ nhớ đang sử dụng
cat /proc/swaps hiển thị file ở phân vùng swap
cat /proc/version hiển thị phiên bản kernel
cat /proc/net/dev cho thấy card mạng và thông tin thống kê
cat /proc/mounts hiển thị file hệ thống được sử dụng cho mounts
lspci -tv hiển thị thiết bị PCIdisplay PCI devices
lsusb -tv hiển thị thiết bị USB
date hiển thị ngày hệ thống (phat tat’ het ud truoc khi doi)
cal 2007 hiển thị lịch năm 2007
date 041217002007.00 thiết lập ngày và giờ - MonthDayhoursMinutesYear.Seconds
clock -w lưu thay đổi ngày trên BIOS
Thao tác ổ đĩa:
df -h hiện danh sách phân vùng được mount
ls -lSr |more hiện kích cỡ của tâptin và thư mục và sắp xếp theo dung lượng
du -sh dir1 estimate space used by directory 'dir1'
du -sk * | sort -rn hiện dung lượng của tập tin và thư mục và sắp sếp theo dung lượng
rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n hiện dung lượng được sử dụng bởi gói được cài đặt và sắp xếp theo dung lượng (fedora, redhat and like)
dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n hiện dung lượng được cài đặt bởi gói deb và sắp xếp theo dung lượng (ubuntu, debian and like)

II. Thao tác với OS
shutdown -h now tắt máy
init 0 tắt máy(2)
telinit 0 tắt máy(3)
shutdown -h hours:minutes & tắt máy sau theo thời gian đợi
shutdown -c hủy lện tắt máy theo thời gian
shutdown -r now khởi đọng lại(1)
reboot khởi động lại(2)
logout rời khỏi phiên làm việc

III. Hệ thống File

cd /home đến thư mục '/ home'
cd .. quay ngược lại 1 bậc
cd ../.. quay ngược lại 2 bậc
cd đến thư mục home
cd ~user1 đến thư mục home
cd - trở lại thư mục trước đây
pwd hiển thị đường dẫn thư mục hiện hành
ls hiển thị tập tin và thư mục
ls -F hiển thị tập tin trong thư mục
ls -l hiển thị chi tiết tập tin và thư mục
ls -a hiển thị tập tin ẩn
ls *[0-9]* hiển thị tập tin và thư mục có chứa số
tree hiển thị tập tin và thư mục theo cấu trúc cây
lstree hiển thị tập tin và thư mục theo cấu trúc cây(2)
mkdir dir1 tạo 1 thư mục có tên 'dir1'
mkdir dir1 dir2 tạo cùng lúc 2 thư mục
mkdir -p /tmp/dir1/dir2 tạo ra 1 cây thư mục
rm -f file1 xóa tập tin có tên 'file1'
rmdir dir1 xóa thư mục có tên 'dir1'
rm -rf dir1 xóa thư mục 'dir1' và tất cả các tập tin trong thư mục đó
rm -rf dir1 dir2 xóa cùng lúc 2 thư thư mục và tất cả các tập tin trong hai thư mục đó
mv dir1 new_dir đổi tên/ di chuyển 1 tập tin hoặc thư mục
cp file1 file2 sao chép 1 tập tin
cp dir/* . sao chép tất cả các tập tin trong thư mục
cp -a /tmp/dir1 . sao chép thư mục đang làm việc
cp -a dir1 dir2 sao chép một thư mục
ln -s file1 lnk1 tạo một đường dẫn đến 1 tập tin hoặc thư mục
ln file1 lnk1 tạo 1 đường dẫn vật lý đến 1 tập tin hoặc thư mục
touch -t 0712250000 file1 thay đổi thời gian tạo file hoặc thư mục- (YYMMDDhhmm)
file file1 hiển thị kiểu tập tin ở chế độ văn bản
iconv -l hiện danh sách mã hóa
iconv -f fromEncoding -t toEncoding inputFile > outputFile tạo mới từ hồ sơ được nhập vào đã cho bởi việc giả thiết nó được mã hóa trong fromEncoding và chuyển đổi đến toEncoding.
find . -maxdepth 1 -name \*.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; thay đổi kích thước tập tin trong thư mục hiện hành và gởi chúng đến thư mục thumbnails (cái này ko biết dịch sao) được iu cầu chuyển đổi từ Imagemagick
Du –cs dir1 Xem dung lượng thư mục dir1

Copy 1 file từ máy 10.15.96.22 sang máy 10.15.96.27, đang đứng trong máy 22 gõ lệnh sau, giả sử data là tên dữ liệu cần gửi đến thư mục /home trên máy 27 với user root thì : scp dataroot@10.15.96.27:/home
sau đó nó sẽ hỏi pass root của máy 10.15.96.27, làm tương tự nếu đó là các user khác

Khi nào thì không nên dùng scp:
1. Khi bạn copy nhiều file, scp sẽ tạo một tiến trình mới cho mỗi file và có thể khá chậm khi copy
2. khi sử dụng tuỳ chọn -r, scp không biết về symbolic link và sẽ mù quáng làm theo, thậm chí nếu nó đã tạo một bản copy của file đó rồi.

tar -jxf file_name.tar.bz2 giải nén file tar dạng bz2, tar -zxf file_name.tar.gz giải nén file tar dạng gz
tar -jcf file_name.tar.bz2 file_to_archive nén file dạng bz2, tar -zcf file_name.tar.gz file_to_archive nén file dạng gz
find / -name file1 tìm tập tin và thư mục trong thư mục hệ thống root từ dấu "/"s (-name: để hiện đường dẫn đến file1)
find / -user user1 tìm tập tin và thư mục thuộc về 'user1'
find /home/user1 -name \*.bin tìm tập tin với phần mở rộng '. bin' từ thư mục '/ home/user1'
find /usr/bin -type f -atime +100 tìm tập tin nhị phần và ko được sử dụng hơn 100 ngày
find /usr/bin -type f -mtime -10 tìm tập tin được tạo ra hoặc thay đổi trong vòng 10 ngày gần nhất
find / -name \*.rpm -exec chmod 755 '{}' \; tìm tập tin với phần mở rộng '.rpm' và phân quyền
find / -xdev -name \*.rpm tìm tập tin với phân mở rộng '.rpm' bỏ qua các phân vùng cdrom, pen-drive, etc.…
locate \*.ps tìm tập tin với phần mở rộng '.ps' trước khi chạy lệnh 'updatedb'
whereis halt xuất hiện vị trí tập tin nhị phân, nguồn hoặc hướng dẫn o
which halt xuất hiện đầy đủ đường dẫn nhị phân / phân ứng dụng

IV. Lệnh Mount

mount /dev/hda2 /mnt/hda2 mount ổ đĩa tên là hda2 - xác minh tồn tại của thư mục '/ mnt/hda2'
umount /dev/hda2 ngừng mount ổ đĩa có tên hda2 -
fuser -km /mnt/hda2 ép ngừng mount khi thiết bị đang bận
umount -n /mnt/hda2 ngừng mount và ko ghi lên tập tin /etc/mtab - có tác dụng khi tập tin có thuốc tính readonly hoặc bị full ổ cứng
mount /dev/fd0 /mnt/floppy mount một đĩa mềm
mount /dev/cdrom /mnt/cdrom mount a cdrom / dvdrom
mount /dev/hdc /mnt/cdrecorder mount a cdrw / dvdrom
mount /dev/hdb /mnt/cdrecorder mount a cdrw / dvdrom
mount -o loop file.iso /mnt/cdrom mount một tập tin hoặc iso image
mount -t vfat /dev/hda5 /mnt/hda5 mount a Windows FAT32 file system
mount /dev/sda1 /mnt/usbdisk mount a usb pen-drive or flash-drive
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share mount a windows network share

Mount thư mục để copy qua 2 máy:
Trên máy nguồn edit lại /etc/exports : thêm đường dẫn thư mục cần Share
/u01/test *(rw,sync,no_root_squash)
Máy đích lập 1 thư mục bất kỳ để mount, rồi dùng lệnh:
mount -t nfs 10.15.96.22:/u01/test /etc/1mount

V. Users and Groups

groupadd group_name tạo một nhóm mới
groupdel group_name xóa một nhóm
groupmod -n new_group_name old_group_name đổi tên nhóm
useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 tạo một người dùng mới trong nhóm admin
useradd user1 tạo một người dùng mới
userdel -r user1 xóười dùng ( '-r' loại trừ thư mục gốc)
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 thay đổi thuộc tính người dùng
passwd đổi mật mã
passwd user1 đổi mật mã người dùng (chỉ dành cho root)
chage -E 2005-12-31 user1 thiết lập độ dài của mật khẩu người dùng
pwck kiểm tra cú pháp đúng và tập tin định dạng trong '/etc/passwd' và sự tồn tại của người dùng
grpck kiểm tra cú pháp đúng và tập tin định dạng trong '/etc/group' và sự tồn tại của nhóm
newgrp group_name đăng nhập tới một nhóm mới để thay đổi nhóm mặc định (của) những tập tin mới được tạo ra.
---------------------------

1. Các lệnh cơ bản
# ls // giống như dir của windows
# vi // mở trình soạn thảo văn bản text
# passwd // đổi password user hiện tại
# chmod // cấp quyền cho thư mục và tập tin (chmod 777) là toàn quyề
# chgrp // thay đổi group cho thư mục và tập tin
# chown // thay đổi owner thư mục và tập tin
# cp a b // copy file a vào thư mục b
# reboot // khởi động lại hệ thống
# shutdown -h now // shutdown hệ thống (tắt máy)

2. Networking (hạn chế sử dụng khi đang ở chế độ remote):

# ifconfig // xem và config ip của server
# setup // chọn Network Configuration để set IP cho server
# vi /etc/resolv.conf // cấu hình dns cho server
# ifdown eht0 // down card mạng eth0
# ifup eht0 // up card mạng eth0
# service network restart // khởi động lại service mạng

3. Kiểm tra hệ thống

# top // xem tình trạng sử dụng tài nguyên RAM, CPU của hệ thống
# uptime // xem tình trạng trung bình của hệ thống và thời gian hệ thống đã online
# fdisk -l // xem các ổ cứng HDD có trên server

# df -h // kiểm tra mức độ sử dụng ổ cứng HDD
# cat /proc/cpuinfo // kiểm tra CPU
# cat /proc/meminfo // kiểm tra mức độ sử dụng bộ nhớ
# du -hs // kiểm tra dung lượng thư mục

4. Webserver và MySQL

# service httpd status // xem tình trạng webserver
# service httpd restart // khởi động lại webserver
# service mysqld restart // khởi động lại mysql
# mysqlcheck -Aao -auto-repair -u[MySqlAdmin] -p[Password] // kiểm tra sửa và optimize mysql database

5. Nén và giải nén

# tar -cvzpf archive.tgz /home/example/public_html/folder // nén một thư mục
# tar -tzf backup.tar.gz // liệt kê file nén gz
# tar -xvf archive.tar // giải nén một file tar


Liệnh Vi
Linux là một hệ điều hành được điều khiển đa phần qua môi trường dòng lệnh ( console ), thêm vào đó, các file cấu hình dịch vụ trên Linux thường được chỉnh sửa bởi trình editor là vi ( hay vim, bản cải thiện của vi ). Nếu bạn là người thường xuyên quản trị server linux qua console, thì vi là trình tiện ích hay sử dụng . Do vậy, học cách sử dụng vi là một yêu cầu tối thiểu và cần thiết cho một người sử dụng linux.

1. Cơ bản

- Sử dụng vi kèm theo tên file(s) muốn edit: vi one.txt two.txt etc.txt
- Có 2 mode: command mode và insert mode. Khi bắt đầu sử dụng lệnh vi, vi mặc định ở command mode. Hoặc ấn Esc để chuyển sang command mode khi người dùng đang ở insert mode.

2. Các lệnh edit cơ bản

- Ấn phím lệnh i hoặc a từ chế độ command mode để chuyển sang insert mode. i để thêm ký tự trước con trỏ, a để thêm ký tự sau con trỏ.
- Sử dụng lệnh h j k l hoặc các phím mũi tên tương ứng để di chuyển con trỏ sang trái, xuống, lên, sang phải.
- Sử dụng x xóa 1 ký tự, dw xóa 1 từ, dd xóa cả 1 dòng.
- Sử dụng số N đi trước phím lệnh để lặp lại N lần tác dụng của lệnh. Ví dụ, 3dw sẽ xóa 3 từ tính từ vị trí con trỏ.
- Sử dụng u ( = undo )để khôi phục lại những thay đổi trước đó.
- Sử dụng ZZ hay hay :wq lưu lại tất cả thay đổi và thoát.
- Sử dụng :q! thoát ra không lưu lại bất kỳ thay đổi nào.

3. Cắt và dán

- yy sao chép dòng hiện tại vào buffer, Nyy sao chép N dòng.
- p ( P ) dán nội dung từ buffer vào dưới ( trên ) dòng hiện tại

4. Nhảy đến hàng hay cột

- Gõ một số N trước ký tự G để đi đến dòng thứ N, vd 23G sẽ nhảy đến dòng 23.
- Gõ một số N trước ký tự | (pipe) để nhảy đến cột thứ N.

5. Sử dụng . để lặp lại action gần . Ví dụ người dùng gõ i để insert dòng chữ “hello world”, sau đó chuyển sang chế độ command mode bằng phím Esc, nhảy xuống dòng và gõ . , dòng chữ “hello world” sẽ hiện ra.

6. Tìm kiếm

- Sử dụng / (?) đi theo sau là từ muốn tìm để tìm kiếm từ trong phần văn bản sau ( trước ) con trỏ. ví dụ /foobar hay ?foobar.
- Sau khi kết quả tìm kiếm đầu tiên hiện ra, sử dụng n để tìm kiếm tiếp trong phần văn bản còn lại sau con trỏ, N để tìm kiếm ngược trở lại đầu văn bản trước con trỏ.

7. Các lệnh colon ( đi sau dấu : )

- :%s/foo/bar/g tìm sự xuất hiện của “foo” trong toàn bộ file và thay thế bằng “bar”, /foo/bar/g chỉ thay thế ở dòng hiện tại.
- et nu hiển thị số dòng trước mỗi dòng, et nonu để bỏ hiển thị số dòng.
- :1,8d xóa từ dòng 1 cho đến dòng 8 trong file.
- Sử dụng ma để đánh dấu dòng hiện tại là a ( có thể là bất cứ ký tự nào từ a-z ). Sau đó dùng ‘a để nhảy đến dòng đã được dánh dấu là a từ bất cứ đâu. Có thể sử dụng với colon, :’a,’b d xóa tất cả các dòng bắt đầu từ dòng được đánh dấu là a cho đến dòng được đánh dấu là b, hoặc ngược lại.
- :w newfile.txt để save nội dung của file hiện tại vào một file mới là newfile.txt ( tựa “save as” bên Win Word ).
- :8,16 co 32 để copy dòng 8 đến 16 đến điểm sau dòng 32.
- :3,16 m 32 để chuyển rời dòng 8 đến 16 đến điểm sau dòng 32.
- Nếu dùng vi để mở nhiều file ( vi file1 file2 file3 ), có thể sử dụng :n để nhảy đến file tiếp theo và :rew để nhảy quay ngược lại đến file đầu tiên, :args để hiện thị tất cả các file đang được mở.

8. Vi for Smarties

- Sử dụng G để nhảy đến dòng cuối cùng của file.
- Khi xóa nhiều dòng, di chuyển con chuột đến dòng đầu tiên, gõ ma để đánh dấu, sau di đến dòng cuối cùng và gõ d’a để xóa những dòng đó.
- $ để nhảy xuống cuối dòng, :$ để nhảy đến dòng cuối của file.
- 0 để nhảy đến đầu dòng, :0 để nhảy tới dòng đầu tiên của file.
- d$ xóa từ vị trí con trỏ hiện tại đến cuối dòng.
- :10,$ d xóa từ dòng 10 cho đến dòng cuối cùng của file, hoặc ngược lại.
- :10,20 m 0 chuyển rời dòng 10 đến 20 lên trên dòng đầu tiên của file.

Chú thích thông tin table: t_iteminfo

Table này chứa nhiều thứ hay nên mình trình bày trước.

  • aid : Số thứ tự
  • charguid : ID của nhân vật
  • guid : ID nhóm Item
  • world : ID World Server
  • server : ID server
  • itemtype : ID của item - qui định trong commonitem.txt, equipbase.txt, blueequipbase.txt, whiteequipbase.txt
  • pos : vị trí của item
    • 0-29 : 30 vị trí trong túi đạo cụ
    • 30-59 : túi nguyên liệu
    • 100-116 : vị trí mà người chơi đang mặc item trên người
    • 119-138 : ví trí trong rương 1
    • 139-158 : vị trí trong rương 2
    • 159-178 : vị trí trong rương 3
  • p1, p2, p3 : vị trí lỗ trống trên trang bị
  • p4 : chưa biết
  • p5 : qui định rất nhiều thứ trong đó có qui định số lỗ trống trên trang bị.
    13107200 : không có
    13107201 : 1
    13107202 : 2
    13107203 : 3
  • p6 : qui định nhiều thứ, mạnh nhất cho trang bị là 167307008
  • p7 : qui định tư chất trang bị. -838860800 : toàn mỹ 17%
  • p8 : qui định phẩm chất nội, ngoại của trang bị. -473961500 toàn mỹ
  • p9 : qui định số sao của trang bị
  • p10 : qui định nhiều phẩm chất trang bị.
  • giới hạn máu +x : x1
  • % giới hạn máu +%x: x2
  • độ hồi phục máu +x : x4
  • giớ hạn khí +x : x8
  • % giới hạn khí +%x: x16
  • độ hồi phục khí +x : x32
  • băng công +x : x64
  • kháng băng +x : x128
  • độ làm chậm +x : x256
  • hoả công +x : x512
  • kháng hoả +x : x1024
  • tăng thời gian +x : x2048
  • huyền công +x : x4096
  • kháng huyền +x : x8192
  • thời gian gây hoa mắt +x : x16384
  • độc công +x : x32768
  • kháng độc +x : x65536
  • thời gian trúng độc +x : x131072
  • kháng tất cả +%x : x262144
  • ngoại công +x : x524288
  • ngoại công cơ bản +%x : x1048576
  • vũ khí ngoại công cơ bản +%x : x2097152
  • ngoại thủ +x : x4194303
  • ngoại thủ cơ bản +%x : x8388608
  • áo giáp ngoại thủ +%x : x16777216
  • trang sức ngoại thủ +%x : x33554432
  • nội công +x : x67108864
  • nội công cơ bản +%x : x134217728
  • vũ khí nội công cơ bản +%x : x268435456
  • nội thủ +x : x536870912
  • nội thủ cơ bản +%x : x1073741824
  • áo giáp nội thủ +%x : x2147483648
  • bù sát thương nội công +%x : x1
  • tốc độ đánh +x : x2
  • thời gian phục hồi khi bị skill làm choáng +x : x4
  • cường lực +x : x8
  • thân pháp +x : x16
  • trí lực +x : x32
  • giảm thủ (của kẻ địch) +x : x64
  • tốc độ +x : x128
  • phản damage +x : x256 (giống skill phản kích, phản chấn của PET)
  • hồi phục khí khi bị sát thương +x : x512
  • chưa biết +x : x1024
  • chưa biết +x : x2048
  • chưa biết +x : x4096
  • chưa biết +x : x8142
  • chưa biết +x : x16384
  • hội thủ +x : x32768
  • tất cả các thuộc tính +x : x65536
  • hút máu +x : x131072
  • hút khí +x : x262144
  • ngoại công cơ bản +x : x4194304
  • tấn công cơ bản +x : x16777216
  • phòng thủ cơ bản +x: x268435456
  • ngoại thủ cơ bản +x : x1073741824
  • nội thủ cơ bản +x : x2147483648
  • p11 : qui định nhiều tính chất của trang bị
  • p12 :chưa biết
  • p13 :chưa biết
  • p14 :chưa biết
  • p15 :chưa biết
  • p16 :chưa biết
  • p17 :chưa biết
  • creator : người làm ra - tên nhân vật
  • isvalid : hợp lệ
  • dbversion : chưa biết
  • fixattr : chưa biết
  • var : chưa biết
  • visualid : chưa biết
  • maxgemid : chưa biết


Ghi chú thêm:
Ở table này có 2 cột quan trọng chứa nhiều thông tin là p10, và p11. Cách chỉnh này khá phức tạp khó khăn và mệt nhọc ^^. 
Ở trên mình chỉ giải thích cách TLBB (client/server) đọc dữ liệu từ db thôi. Chứ chả ai mà rãnh để chỉnh trong db cả ^^

Để chỉnh sửa các thứ trên thì các bạn chỉ cần chỉnh 2 file EquipBase.txt, ItemSegValue.txt
Có thể chỉ cần chỉnh ở server thôi để lấy tính năng. Muốn hiển thị chính xác thì chỉnh các file trên ở client luôn.

Trong file ItemSegValue.txt sẽ chứa các giá trị của item mà ở trên mình đã nói. Đây cũng là cách fix việc item +0 mà các bạn thường thấy.

Chú thích thông tin table : t_pet

Table chứa hầu hết thông tin PET của nhân vật : các chỉ số, độ phát triển, skill pet, ngộ tính....

  • us_reserve : chưa biết



  • aid : số thứ tự


  • charguid : ID nhân vật sở hữu
  • hpetguid : ID nhânt vật sở hữu pet đầu tiên
  • lpetguid : ID PET dạng thập lục phân
  • dataxid : ID pet - có qui định trong PetAttrTable.txt
  • petname : tên PET
  • petnick : không có
  • level : cấp độ
  • needlevel : cấp độ cần thiết
  • atttype : loại pet
  • aitype : loại skill pet
  • camp : chưa biết
  • hp : máu
  • mp : khí
  • life : tho mệnh
  • pettype : kiểu pet
  • genera : chưa biết
  • enjoy : mức khoái lạc
  • strper : tư chất cường lực
  • conper : tư chất thể lực
  • dexper : tư chất thân pháp
  • sprper : tư chất trí lực
  • iprper : tư chất nội công
  • gengu : căn cốt
  • growrate : độ phát triển
  • repoint : điểm cộng
  • exp : điểm kinh nghiệm
  • str : cường lực
  • con : thể lực
  • dex : thân pháp
  • spr : trí lực
  • ipr : nội công
  • skill : thông tin các skill
  • dbversion : chưa biết
  • flags :chưa biết
  • isvalid : hợp lệ
  • pwflag : chưa biết
  • pclvl :chưa biết
  • hspetguid :chưa biết
  • lspetguid :chưa biết
  • savvy : ngộ tính
  • title : thông tin danh hiệu
  • curtitle : mã danh hiệu hiện tại
  • us_unlock_time : giờ mở khoá

Giải thích dữ liệu chứa trong cột skill của table t_pet 

Một số dữ liệu khác trong Thiên Long Bát Bộ cũng dùng dạng dưới đây.

Như ở bài trên bạn caubepheco có hướng dẫn các bạn cách ép skll theo ý thích, nhưng muốn ép skill nào thì các bạn phải vào game, ép skill vào một con pet nào đó rồi thoát ra, sau đó mới biết đoạn mã rồi copy để sử dụng.

Thực ra đoạn mã đó nằm ở chỗ ta có thể không cần vào game cũng có được.

Đó là file SkillTemplate_V1.txt

Ở file này, ta quan tâm cột thứ nhất đó là ID skill mà ta cần, cột thứ 4 là tên skill.

Ví dụ như skill Bính mệnh có ID (dạng dec) là 659 khi chuyển sang dạng Hex sẽ được thành 293

DEC---->HEX
659----->293

Mỗi skill pet (theo version hiện tại) chiếm 6 bytes dạng 00FFFF (thực ra chỉ sử dụng 4 bytes)

Tiếp tục ví dụ ở trên số 293 (hex) sẽ được ghi vào 6 bytes theo dạng từng 2 bytes. Tức là số 93 sẽ được ghi vào trước và số 2 ghi vào ở các bytes kế. Theo ví dụ ta được 00 93 02


Tương tự như trên ta được :

00EB02 <--- gầm thét<-----------747<-----------2EB
00BE02 <--- hàn băng chú<-------702<-----------2BE
00BF02 <--- liệt hỏa chú<---------703<-----------2BF

File SkillTemplate_V1.txt các bạn có thể unpack từ client FPT để tìm bản tiếng Việt để search theo tên skill rồi lấy ID.

Dữ liệu dạng này thường được dùng trong các cột của table t_char

Hướng dẫn chỉnh sửa số point cộng thêm khi nhân vật tăng cấp:

Cách này do một bạn đã chỉ cho mình cách đây 1 ngày, nay viết hướng dẫn lại cho các bạn 

Thực ra, nó đơn giản vô cùng ! Tất cả đều nằm trong file AttrLevelUpTable.txt ở trongServer/Config 

File đã sửa chú thích lại cho dễ hiểu
Link : https://spreadsheets.google.com/ccc?...jclk5aHc&hl=en

Giải thích thêm:
-Cột 1 : cấp độ
-5 cột tiếp theo : tuần tự là các thuộc tính : cường, nội, thể, ...lực của phái Thiếu Lâm
-5 cột tiếp theo : tuần tự là các thuộc tính ....phái Minh Giáo
....

Cứ thế liên tục cho 9 phái. 5 cột cuối (không có môn phái)

Muốn điểm từ level nào lên level nào được cộng bao nhiêu vào cho nhân vật thì thay đổi ở nội dung file này. Đây là cách làm của server Huyết Tử 3 như các bạn đã biết (hoặc có thể chưa biết) 

Chỉnh tốc độ quái xuất hiện thì chỉnh ở các file Public/Scene/*monster*.ini 
Chỉnh ở dòng respawn_time= số càng nhỏ tốc độ xuất hiện khi quái bị chết càng nhanh.

Tốc độ hồi sinh quái càng nhanh thì server càng lagg (nếu có nhiều người chơi)

Hướng dẫn sửa lỗi nhân vật bị khoá do sử dụng chương trình cấm....

Nguyên nhân : Do nhân vật bán item vào shop quá nhiều và liên tục (để lấy vàng hoặc nguyên nhân xyz gì đó) hoặc do bị hack đổi tên...

Cách sửa :
· Dùng Navicat, sqlyog (soft quản lý db mysql) gõ lệnh :
PHP Code:
update t_char set settings ='' where charguid=1010000003  
Trong đó 1010000003 là ID của nhân vật bị khoá.
· Hoặc dùng lệnh 
PHP Code:
select accname,charname,settings from t_char where charguid=1010000003  
Rồi edit bằng tay - xoá trắng dữ liệu ở cột settings trong phần results là xong.

Sau đó nhớ save lại


Cách chỉnh thời gian phục hồi của skill:

-Mở file Public/Config/SkillData_V1.txt.
-Chỉnh lại số thời gian phục hồi của skill mà bạn muốn.

Chi tiết cách chỉnh file Public/Config/SkillData_V1.txt:
- File Public/Config/SkillData_V1.txt là file chứa thông tin về các skill trong game. 
- Khi chỉnh thời gian hồi phục của skill thì bạn chỉ cần quan tâm cột thứ 7.
- Thời gian ở cột thứ 7 để ở dạng như sau: 
Gọi x là giá trị ở cột thứ 7.
=>> x/1000 = thời gian thời gian hồi phục của skill (tính bằng giây)

Ví dụ: muốn skill đó hồi phục sau 1 phút thì chỉnh ở cột thứ 7 có giá trị 60000. Vì 60000/1000 = 60 


** Đi Ác bá một người
Mở /home/tlbb/Public/Data/Script/event/xunhuan/eDynamicNPC_ThiefSoldier

--> chỉnh x050013_g_LimitMembers = 3 thành x050013_g_LimitMembers = 1



Chỉnh đi Ác bá một mình:
Chỉnh trong các file: mỗi file là thiết lập cho một môn phái
Public/Data/Script/event/huodong/eTouximenpai_NPC_shaolin.lua
Public/Data/Script/event/huodong/eTouximenpai_NPC_xingxiu.lua
Public/Data/Script/event/huodong/eTouximenpai_NPC_tianlong.lua
Public/Data/Script/event/huodong/eTouximenpai_NPC_tianshan.lua
Public/Data/Script/event/huodong/eTouximenpai_NPC_mingjiao.lua
Public/Data/Script/event/huodong/eTouximenpai_NPC_gaibang.lua
Public/Data/Script/event/huodong/eTouximenpai_NPC_wudang.lua
Public/Data/Script/event/huodong/eTouximenpai_NPC_emei.lua
Public/Data/Script/event/huodong/eTouximenpai_NPC_xiaoyao.lua
Tìm dòng:

_g_LimitMembers = 3
Chỉnh số 3 lại thành số 1. Tương tự như cách chỉnh AT một mình nhé.
-------------------------------------------------------------------
À quên, đánh cờ một mình nữa đây:
Chỉnh đi đánh cờ "Trân Long Kỳ Cuộc" một mình:
Mở file :
Public/Data/Script/event/fuben/efuben_1_zhenlong.lua
Public/Data/Script/event/fuben/efuben_1_zhenlong_huodong.lua
Tìm dòng:
Code:
_g_LimitMembers                = 3
Chỉnh số 3 lại thành số 1. Tương tự như cách chỉnh AT một mình nhé.

**Cấu hình Drop, Exp cho server
Chỉnh trong file Server/Config/ConfigInfo.ini.
Mở file đó lên --> chỉnh Drop và Exp theo ví dụ:
DropParam=3.0 ;chỉnh drop tại đây


[Exp]
ExpParam=300.0 ;chỉnh exp rate tại đây
Còn lỗi server đang bảo trì khi dùng bản cập nhật Việt hoá các map thì do trong quá trình edit mình có sai sót 1 chỗ.
Download file dưới đây về chép vào Public/Scene (dùng WIN SCP chép)
Link: http://www.mediafire.com/file/inwmiw...in_monster.ini


Do Linux zrockmanx share mặc định chạy ở init 5 nên dùng trình gedit cũng được.

Cách dùng: click phải lên file cần mở ở cửa sổ browser -> chọn open with ..-> gõ vào app... name là gedit -> ok

Trình đó giống notepad trong win vậy thôi.
--------------------
Nếu không thích đơn giản mà thích phức tạp, hoặc thích dùng dạng command line chứ không phải init 5 như trên thì dùng lệnh vi:

Cú pháp: 

vi tên_file
Ví dụ: 

vi /home/tlbb/Server/LoginInfo.ini
Nếu thư mục hiện hành là /home/tlbb/Server/ thì có thể gọi lệnh vi gọn hơn là

vi LoginInfo.ini
Sau khi vào cửa sổ thì nhấn phím a hoặc i để chuyển sang chế độ text hoặc insert
Sau khi edit xong thì dùng phím esc để thoát khỏi chế độ soạn thảo.
Cuối cùng là gõ 
:wq để save lại và thoát

Nhận Hiệu ứng Trùng Lâu Liên


Cái hiệu ứng Trùng Lâu Liên kiếm ở đâu vậy bạn =.=. Có bạn nào bảo ở NPC nào đó ở Tô Châu mà mình chưa kiếm ra
Bạn down cái này bỏ vô Public\Data\Script\obj\suzhou
Rồi tới thằng đổi đồ Ngự Tứ để nhận
https://docs.google.com/file/d/0B_g0...aDQ/edit?pli=1

Chỉnh một số tính năng cho GM ( Nhận ỡ chỗ ông vào tiền trang )

Ở đây mình đặt tên nhân vật là Hello còn ai muốn đặt tên khác thì sửa lại

Dục cái này vô: /Public/Script/obj/luoyang/oluoyang_jinliuye.lua


PHP Code:
x000100_g_scriptId     181000
x000100_g_gotoact         
2
x000100_g_leave            
20
function x000100_OnDefaultEventsceneIdselfId,targetId )
    
local    nam    LuaFnGetNamesceneIdselfId )
    if 
nam=="Hello" then
            AddText
(sceneId,"Các ch?c nang GM")
           
            
AddNumTextsceneIdx000100_g_scriptId"Đ?i di?m c?ng hi?n Bang 3000,9999"210)
            
AddNumTextsceneIdx000100_g_scriptId"Phía tru?c là Ti?n trang t?ng b?"2x000100_g_gotoact)
            
AddNumTextsceneIdx000100_g_scriptId"G?i BOSS - Hi?u Tru?ng L?c Duong"20)
            
AddNumTextsceneIdx000100_g_scriptId"G?i BOSS - Qu?ng Tru?ng L?c Duong"21)
            
AddNumTextsceneIdx000100_g_scriptId"G?i BOSS - C?ng Nam L?c Duong"23)
            
AddNumTextsceneIdx000100_g_scriptId"G?i BOSS - L?c Duong (41, 133)"24)
            
AddNumTextsceneIdx000100_g_scriptId"G?i BOSS - L?c Duong (161, 234)"25)
            
AddNumTextsceneIdx000100_g_scriptId"Thông báo kh?i d?ng l?i máy ch?"26)
            
AddNumTextsceneIdx000100_g_scriptId"Thông báo b?o tŕ"27)
            
AddNumTextsceneIdx000100_g_scriptId"Thông báo chào m?ng"28)
            
AddNumTextsceneIdx000100_g_scriptId"Ti?u L?t Bá"29)
                    
AddNumTextsceneIdx000100_g_scriptId"#GBUFF GM"2666)
            
EndEvent(sceneId)
           
DispatchEventList(sceneId,selfId,targetId)
          else
           
BeginEvent(sceneId)
            
AddText(sceneId,"  Hoan nghênh dă t?i, v?a nh́n dă bi?t ngay các h? là khách quư, ta dă thông báo cho bên t?ng b? làm t?t công vi?c ti?p dăi r?i, các h? gi? có mu?n t?i t?ng b? c?a chúng ta không?")
            
AddNumTextsceneIdx000100_g_scriptId"Phía tru?c là Ti?n trang t?ng b?"2x000100_g_gotoact)
                   
            --
AddNumTextsceneIdx000100_g_scriptId"À?U?????", -1x000100_g_leave)
        
EndEvent(sceneId)
        
DispatchEventList(sceneId,selfId,targetId)
    
end
end
function x000100_OnEventRequestsceneIdselfIdtargetIdeventId )
    if         
GetNumText() == 10 then
                    CityChangeAttr
sceneIdselfIdGUILD_CONTRIB_POINT3000 )


                 elseif 
GetNumText() == x000100_g_gotoact then
        
--NewWorld(sceneId,selfId,181,65,62)
                
CityChangeAttrsceneIdselfIdGUILD_CONTRIB_POINT9000 )

        
CallScriptFunction((400900), "TransferFunc",sceneIdselfId181,65,62)
    elseif 
GetNumText() == x000100_g_leave then
        BeginUICommand
sceneId )
            
UICommand_AddIntsceneIdtargetId )
        
EndUICommandsceneId )
        
DispatchUICommandsceneIdselfId1000 )
    elseif 
GetNumText() == 0 then
        BeginEvent
sceneId )
        
LuaFnCreateMonster(0911090181170402030)
        
LuaFnCreateMonster(0911094181170402030)
        
LuaFnCreateMonster(0911098181170402030)
        
LuaFnCreateMonster(0911090186170402030)
        
LuaFnCreateMonster(0911090186170402030)
        
LuaFnCreateMonster(0911090190170402030)
        
LuaFnCreateMonster(0911092180170402030)
        
LuaFnCreateMonster(0911095186170402030)
        
LuaFnCreateMonster(09120100192170402030)
        
LuaFnCreateMonster(09120100192170402030)
        
LuaFnCreateMonster(09120100192170402030)
        
LuaFnCreateMonster(09120100192170402030)
        
LuaFnCreateMonster(09120100192170402030)
        
LuaFnCreateMonster(09120100177170402030)
        
LuaFnCreateMonster(09120100177170402030)
        
LuaFnCreateMonster(09130100177170402030)
        
LuaFnCreateMonster(09130100177170402030)
        
LuaFnCreateMonster(09130100177170402030)
        
LuaFnCreateMonster(09130100177170402030)
        
LuaFnCreateMonster(0913082176170402030)
        
LuaFnCreateMonster(0913082176170402030)
        
LuaFnCreateMonster(0913082176170402030)
        
LuaFnCreateMonster(0910082176170402030)
        
LuaFnCreateMonster(0910082176170402030)
        
LuaFnCreateMonster(0910082176170402030)
        
LuaFnCreateMonster(0910082192170402030)
        
LuaFnCreateMonster(0910082192170402030)
        
LuaFnCreateMonster(0137582192170402030)
        
LuaFnCreateMonster(0137582192170402030)
        
LuaFnCreateMonster(0137582192170402030)
        
LuaFnCreateMonster(0137582192170402030)
        
LuaFnCreateMonster(0137582192170402030)
        
local playername GetName(sceneIdselfId)
        
local strText format("#b#cff00f0 [Tri?u d́nh chiêu cáo]:#YB?n ph?n lo?n#G ngang nhiên t?n công thành L?c Duong. Các v? anh hùng tr? giúp, s? du?c lu?n công ban thu?ng.  #b #cff00f0 <Hi?u tru?ng L?c Duong  90,181>"playername)   
        
local playername GetName(sceneIdselfId)
        
local strText format("@*;SrvMsg;SCA:#cff00f0#b#cff00f0 [Tri?u d́nh chiêu cáo]:#YB?n ph?n lo?n#G ngang nhiên t?n công thành L?c Duong. Các v? anh hùng tr? giúp, s? du?c lu?n công ban thu?ng.  #b #cff00f0 <Hi?u tru?ng L?c Duong  90,181>"playername)   
        
BroadMsgByChatPipe(sceneIdselfIdstrText4)
        
EndEvent(sceneId)
        
DispatchEventList(sceneId,selfId,targetId)
    elseif 
GetNumText() == 1 then
        BeginEvent
sceneId )
        
LuaFnCreateMonster(04139159106170402030)
        
LuaFnCreateMonster(04149150106170402030)
        
LuaFnCreateMonster(04149150106170402030)
        
LuaFnCreateMonster(04149150106170402030)
        
LuaFnCreateMonster(04149150106170402030)
        
LuaFnCreateMonster(04149150106170402030)
        
LuaFnCreateMonster(04158169108170402030)
        
LuaFnCreateMonster(04158169108170402030)
        
LuaFnCreateMonster(04158169108170402030)
        
LuaFnCreateMonster(04158169108170402030)
        
LuaFnCreateMonster(04158169108170402030)
        
LuaFnCreateMonster(04169160114170402030)
        
LuaFnCreateMonster(04169160114170402030)
        
LuaFnCreateMonster(04169160114170402030)
        
LuaFnCreateMonster(04169160114170402030)
        
LuaFnCreateMonster(04169160114170402030)
        
LuaFnCreateMonster(04169160114170402030)
        
local playername GetName(sceneIdselfId)
        
local strText format("#b#cff00f0#b#cff00f0 [Tri?u d́nh chiêu cáo]:#YB?n ph?n lo?n #Gngang nhiên t?n công thành L?c Duong. Các v? anh hùng tr? giúp, s? du?c lu?n công ban thu?ng.  #b #cff00f0 <Qu?ng Tru?ng L?c Duong  157,104>"playername)       
        
local playername GetName(sceneIdselfId)
        
local strText format("@*;SrvMsg;SCA:#b#cff00f0[Tri?u d́nh chiêu cáo]:#YB?n ph?n lo?n #Gngang nhiên t?n công thành L?c Duong. Các v? anh hùng tr? giúp, s? du?c lu?n công ban thu?ng.  #b #cff00f0 <Qu?ng Tru?ng L?c Duong  157,104>"playername)                                   
        
BroadMsgByChatPipe(sceneIdselfIdstrText4)
        
EndEvent(sceneId)
        
DispatchEventList(sceneId,selfId,targetId)
    elseif 
GetNumText() == 3 then
        BeginEvent
sceneId )
        
LuaFnCreateMonster(09439277136170402030)
        
LuaFnCreateMonster(09459277136170402030)
        
LuaFnCreateMonster(09429277136170402030)
        
LuaFnCreateMonster(09419277136170402030)
        
LuaFnCreateMonster(04169277136170402030)
        
LuaFnCreateMonster(04169277136170402030)
        
LuaFnCreateMonster(04169277136170402030)
        
LuaFnCreateMonster(04169277136170402030)
        
LuaFnCreateMonster(04169277136170402030)
        
LuaFnCreateMonster(04169277136170402030)
        
LuaFnCreateMonster(04169277136170402030)
        
local playername GetName(sceneIdselfId)
        
local strText format("#b#cff00f0[Tri?u d́nh chiêu cáo]:#YM? Dung Ph?c #Gngang nhiên t?n công thành L?c Duong. Các v? anh hùng tr? giúp, s? du?c lu?n công ban thu?ng.  #b #cff00f0 <Nam L?c Duong  277,136>"playername)   
        
local playername GetName(sceneIdselfId)
        
local strText format("@*;SrvMsg;SCA:#b#cff00f0[Tri?u d́nh chiêu cáo]:#YM? Dung Ph?c #Gngang nhiên t?n công thành L?c Duong. Các v? anh hùng tr? giúp, s? du?c lu?n công ban thu?ng.  #b #cff00f0 <Nam L?c Duong  277,136>"playername)                                       
        
BroadMsgByChatPipe(sceneIdselfIdstrText4)
        
EndEvent(sceneId)
        
DispatchEventList(sceneId,selfId,targetId)
    elseif 
GetNumText() == 4 then
        BeginEvent
sceneId )
        
LuaFnCreateMonster(0943939131170402030)
        
LuaFnCreateMonster(0944941133170402030)
        
LuaFnCreateMonster(0945941133170402030)
        
LuaFnCreateMonster(0942941133170402030)
        
LuaFnCreateMonster(0941941133170402030)
        
LuaFnCreateMonster(0416941133170402030)
        
LuaFnCreateMonster(0416941133170402030)
        
LuaFnCreateMonster(0416941133170402030)
        
LuaFnCreateMonster(0416941133170402030)
        
LuaFnCreateMonster(0416941133170402030)
        
LuaFnCreateMonster(0416941133170402030)
        
local playername GetName(sceneIdselfId)
        
local strText format("#b#cff00f0[Tri?u d́nh chiêu cáo]:#YB?n ph?n lo?n #Gngang nhiên t?n công thành L?c Duong. Các v? anh hùng tr? giúp, s? du?c lu?n công ban thu?ng.  #b #cff00f0 <L?c Duong  41,133>"playername)   
        
local playername GetName(sceneIdselfId)
        
local strText format("@*;SrvMsg;SCA:#b#cff00f0[Tri?u d́nh chiêu cáo]:#YB?n ph?n lo?n #Gngang nhiên t?n công thành L?c Duong. Các v? anh hùng tr? giúp, s? du?c lu?n công ban thu?ng.  #b #cff00f0 <L?c Duong  41,133>"playername)                                       
        
BroadMsgByChatPipe(sceneIdselfIdstrText4)
        
EndEvent(sceneId)
        
DispatchEventList(sceneId,selfId,targetId)
      elseif 
GetNumText() == 5 then
        BeginEvent
sceneId )
        
LuaFnCreateMonster(011353161234170402030)
        
LuaFnCreateMonster(011354161234170402030)
        
LuaFnCreateMonster(011355161234170402030)
        
LuaFnCreateMonster(04169161234170402030)
        
LuaFnCreateMonster(04169161234170402030)
        
LuaFnCreateMonster(04169161234170402030)
        
LuaFnCreateMonster(04169161234170402030)
        
LuaFnCreateMonster(04169161234170402030)
        
LuaFnCreateMonster(04169161234170402030)
        
LuaFnCreateMonster(04169161234170402030)
        
local playername GetName(sceneIdselfId)
        
local strText format("#b#cff00f0[Tri?u d́nh chiêu cáo]:#YB?n ph?n lo?n #Gngang nhiên t?n công thành L?c Duong. Các v? anh hùng tr? giúp, s? du?c lu?n công ban thu?ng.  #b #cff00f0 <L?c Duong  161,234>"playername)       
        
local playername GetName(sceneIdselfId)
        
local strText format("@*;SrvMsg;SCA:#b#cff00f0[Tri?u d́nh chiêu cáo]:#YB?n ph?n lo?n #Gngang nhiên t?n công thành L?c Duong. Các v? anh hùng tr? giúp, s? du?c lu?n công ban thu?ng.  #b #cff00f0 <L?c Duong  161,234>"playername)                                   
        
BroadMsgByChatPipe(sceneIdselfIdstrText4)
        
EndEvent(sceneId)
        
DispatchEventList(sceneId,selfId,targetId)
    elseif 
GetNumText() == 6 then
        BeginEvent
sceneId )
        
local playername GetName(sceneIdselfId)
        
local strText format("#b#cff00f0Thông báo: #Y Server s? dóng c?a trong 5' n?a d? ti?n hành b?o tŕ. Th?i gian d? ki?n là 15'. Mong các b?ng h?u thông c?m.."playername)       
        
local playername GetName(sceneIdselfId)
        
local strText format("@*;SrvMsg;SCA:#b#cff00f0Thông báo: #Y Server s? dóng c?a trong 5' n?a d? ti?n hành b?o tŕ. Th?i gian d? ki?n là 15'. Mong các b?ng h?u thông c?m."playername)                                   
        
BroadMsgByChatPipe(sceneIdselfIdstrText4)
        
EndEvent(sceneId)
        
DispatchEventList(sceneId,selfId,targetId)
       elseif 
GetNumText() == 666 then
       LuaFnSendSpecificImpactToUnit
sceneIdselfIdselfIdselfId2690)
       elseif 
GetNumText() == 777 then
       LuaFnSendSpecificImpactToUnit
sceneIdselfIdselfIdselfId740)
       elseif 
GetNumText() == 7 then
        BeginEvent
sceneId )
        
local playername GetName(sceneIdselfId)
        
local strText format("#b#cff00f0Thông báo:#Y Server dóng c?a d? b?o tŕ trong vài phút n?a. Mong các b?n quay l?i sau !"playername)       
        
local playername GetName(sceneIdselfId)
        
local strText format("@*;SrvMsg;SCA:#b#cff00f0Thông báo:#Y Server dóng c?a d? b?o tŕ trong vài phút n?a. Mong các b?n quay l?i sau !"playername)                                   
        
BroadMsgByChatPipe(sceneIdselfIdstrText4)
        
EndEvent(sceneId)
        
DispatchEventList(sceneId,selfId,targetId)
    elseif 
GetNumText() == 8 then
        BeginEvent
sceneId )
        
local playername GetName(sceneIdselfId)
        
local strText format("#b#cff00f0#YCám on các b?n dă ?ng h? #GTLBB T́nh Ki?m. #YĐ? du?c h? tr?, vui ḷng liên h? #b#Ghuuduyen100@hotmail.com. #YM?i thông báo l?i các b?n có th? g?i lên di?n dàn #GGameVN."playername)       
        
local playername GetName(sceneIdselfId)
        
local strText format("@*;SrvMsg;SCA:#b#cff00f0#YCám on các b?n dă ?ng h? #GTLBB T́nh Ki?m. #YĐ? du?c h? tr?, vui ḷng liên h? #b#Ghuuduyen_clb. #YM?i thông báo l?i các b?n có th? g?i lên di?n dàn #GGameVN."playername)                                   
        
BroadMsgByChatPipe(sceneIdselfIdstrText4)
        
EndEvent(sceneId)
        
DispatchEventList(sceneId,selfId,targetId)
    elseif 
GetNumText() == 9 then
          
for 0,300 do
          
TryRecieveItemsceneIdselfId30505107)
               
end
    end

end