[TLBB] Hướng dẫn viết Script NPC đơn giản
Hello & Welcome to our community. Is this your first visit? Đăng Ký
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Kết quả 1 đến 2 của 2
  1. #1
    Super Moderator Sói Đẹp Trai's Avatar
    Ngày tham gia
    Apr 2011
    Đang ở
    地獄
    Bài viết
    3,991
    Thanks
    369
    Thanked 4,051 Times in 1,402 Posts

    Icon4 Hướng dẫn viết Script NPC đơn giản

    Mình sẽ tổng hợp kinh nghiệm của mình từ khi bắt đầu đến giờ để các bạn có thể dễ dàng làm quen với việc viết/đọc script NPC trong game TLBB này.

    Lưu ý đây là của Newbie tổng hợp cho Newbie chứ không phải cho Pro thế nên ai Pro thì có thể đóng góp ý kiến nhưng xin đừng khinh thường Newbie bọn mình nha. Guild đầu tay, nếu nó chưa phải chỗ nào mọi người cho ý kiến để nó hoàn chỉnh nha

    Yêu cầu của mục này là bạn phải biết sơ sơ về một số ngôn ngữ lập trình cơ bản như Pascal, C, C++,... Biết những cái này làm gì? Biết những cái này để ta nắm sơ qua ý tưởng cũng như là một số câu lệnh điều kiện mà ta sắp dùng đến.

    Cấu trúc của một đoạn code đại diện cho NPC chuyên về sự kiện.
    1. Phần khởi động: Phần này là phần mà ta phải khai báo ID của NPC cũng như viết một số chú thích cho người xem hiểu đoạn code nói gì.
    2. Phần mở đầu: Giới thiệu sự kiện, các mục chọn lựa hoặc chỉ đơn giản là phần duy nhất trong đoạn code với NPC viết ra chỉ để nói một vài dòng.
    3. Phần điều kiện: Không cần thiết phải có. Dùng để kiểm tra điều kiện cần thiết để có thể vào được thân sự kiện. ( Ví dụ cấp 10 trở lên mới được vào gọi là một điều kiện ).
    4. Phần thân: Đây chính là thân sự kiện với các lệnh do chính bạn viết nên. Có thể nói cái này là cái quan trọng quyết định chức năng của NPC ( đa số là thế ).
    5. Các phần khác: Các bạn có thể sáng tạo ra các hàm khác phục vụ cho đoạn code của mình.

    Chi tiết:

    A/ PHẦN KHỞI ĐỘNG:

    Phần này đa số toàn là chú thích cho người đọc. Và cái quan trọng nhất của phần này chính là cái khai báo một biến hằng số đại diện cho ID của NPC.
    Nếu như không khai báo kiểu này, mỗi khi dùng một cái lệnh liên quan đến ID của NPC ( lệnh viết ) thì bạn sẽ phải nhập đi nhập lại cái ID đó, có nhàm không? Và xét trường hợp nhiều file, và bạn là một người ngồi soát lỗi chẳng hạn, việc không chú thích cũng như không khai báo ID trên đầu liệu bạn có khó chịu không?
    Một khuyến cáo là tất cả các khóa từ tên từng hàm một cũng nên kèm theo cái ID ở đầu để tiện quan sát, lý do mình đã trình bày bên trên.
    Một ví dụ về phần này như sau:
    Code:
    --NPC: Đại Lý
    --Tên: Sói Đẹp Zai
    --Tittle: Hỗ trợ tân thủ
    --Edit: By Sói Kool
    
    x002097_g_ScriptId = 002097
    
    Giải thích: Những ký tự sau cụm dấu "--" đều được coi là "chú thích" và không liên quan gì đến chương trình của ta cả.
    Cái biến đại diện cho ID Script kia bạn có thể đặt tên nào cũng được nhưng thống nhất là đặt theo kiểu kia để tiện sau này lục lại NPC.
    Biến x002097_g_ScriptId sẽ mang giá trị là 002097, giá trị này đại diện cho ID của NPC thực hiện chức năng được viết trong code này.

    B/ PHẦN MỞ ĐẦU:

    Mở đầu sẽ là lời gọi tới cái mà các ngôn ngữ lập trình kia gọi là "Chương trình chính" hay "Hàm chính".
    Và như trong game các bạn sẽ thấy cái bảng này sẽ hiện lên khi bấm vào NPC ( Đương nhiên lỗi hoặc không có câu lệnh viết ra cái gì đó thì không tính nhé ).
    Cấu trúc của phần này sẽ là
    Code:
    function xID_NPC_OnDefaultEvent(sceneId,selfId,targetId)
    	Các lệnh cơ bản, thường sẽ là lệnh để viết ra một cái gì đó
    end

    Trong đó cái ID_NPC ID của NPC tương tự như trên. Còn các cái còn lại đừng thay đổi. Mình đã thử đổi tên và kết quả lỗi Script.
    Một ví dụ:
    Code:
    function x002097_OnDefaultEvent(sceneId,selfId,targetId)
    local nam = LuaFnGetName(sceneId,selfId)
    	
    	BeginEvent(sceneId)
    		AddText(sceneId,"Hi "..nam..", have a good day!")
    		AddNumText(sceneId,x002097_g_ScriptId,"Chức năng tân thủ",1,1)
    	EndEvent(senceId)
    	DispatchEventList(sceneId,selfId,targetId)
    	
    end
    Lưu ý sau dấu "=" là hàm đã được Lập trình viên viết sẵn chỉ việc dùng thôi nhé ( Hàm_Hằng ).
    Như các bạn thấy bên trong là cụm lệnh bắt đầu bằng khóa BeginEvent(sceneId) và kết thúc bằng khóa EndEvent(SceneId)
    Hàm AddText(sceneId,"Text") tác dụng chính của nó là thêm vào một chuỗi ký tự, như trên thì hàm này sẽ có tác dụng ghi ra cái bảng nói chuyện của NPC.
    Ví dụ bạn tên Test, cái bảng sẽ hiện lên "Hi Test, have a good day!", tương tự như printf trong C.
    AddNumText(sceneId,NPC_ID,"Text",x,y) nó có tác dụng ghi ra một chuỗi ký tự nào đó mà khi người dùng ấn vào chuỗi này thì sẽ thực hiện một số câu lệnh phía sau.
    Trong đó "x" là biểu tượng đầu của chuỗi ký tự này, và "y" sẽ là "mã số" của cái lệnh mà nó sẽ thực hiện phía sau.
    DispatchEventList(sceneId,selfId,targetId) đây là lệnh đóng cái bảng lại.
    Như các bạn thấy trong ví dụ trên, cái bảng của chúng ta sẽ hiện ra.
    Code:
    Hi Test, have a good day!
    (image) Chức năng tân thủ
    Cái (image) chính là biểu tượng trong game đó mà cụ thể (image)=1 sẽ ra hình cuốn sách cuộn tròn như các bạn thường thấy khi nhận nhiệm vụ ở các NPC.
    Và khi bạn bấm vào cái "Chức năng tân thủ", nó sẽ làm gì tiếp thì hãy chuyển sang phần sau.

    C/PHẦN ĐIỀU KIỆN:
    Tác dụng cơ bản của phần này chỉ là để kiểm tra điều kiện của người chơi sao cho thỏa mãn với mục đích của sự kiện được viết ra.
    Cấu trúc của phần này là
    Code:
    function xID_NPC_OnConditionCheck(sceneId,selfId )
    	Một số lệnh
    end
    Ví dụ mình sẽ xây dựng một phần điều kiện để kiểm tra xem người chơi có đủ cấp độ 10 và không vượt quá cấp độ 50 mới có thể tham gia sự kiện.
    Code:
    function x002097_OnConditionCheck(sceneId,selfId )
    local lev=GetLevel(sceneId,selfId)
    
    	if lev < 10 then
    		BeginEvent(sceneId)
    			AddText(sceneId,"Khi nào đạt cấp 11 trở lên hãy đến tìm ta")
    			DispatchEventList(sceneId,selfId,targetId)
    			return 0
    		EndEvent(sceneId)
    	elseif lev > 50 then
    		BeginEvent(sceneId)
    			AddText(sceneId,"Lớn hơn cấp 50 mà gọi là tân thủ à?")
    			DispatchEventList(sceneId,selfId,targetId)
    			return 0
    		EndEvent(sceneId)
    	end
    	
    end
    Câu lệnh if điều kiện then thực hiện lệnh end các bạn tự hiểu nó giống trong các ngôn ngữ lập trình khác.
    elseif điều kiện then thực hiện lệnh end tương tự như if chỉ khác cái này là kiểm tra lệnh if trên không thỏa mãn thì nó sẽ kiểm tra điều kiện sau. Hay theo C++ thì nó tương đương lệnh
    Code:
    else 
    	if (Điều kiện) 
    	{
    		thực hiện lệnh;
    	}
    Ngoài ra còn lệnh else nữa nhé. Kết thúc else sẽ là khóa end vì thật ra else cũng là một câu lệnh nhỏ trong cụm if then end và kết thúc lệnh này phải có end => Logic phết
    return 0, giống hệt C++, gần như stop chương trình luôn đó. Ngoài ra nó còn lệnh tên là return không thôi có tác dụng trở lại bảng sự kiện ban đầu.

    D/ PHẦN THÂN

    Cấu trúc
    Code:
    function xID_NPC_OnEventRequest(sceneId,selfId,targetId,eventId)
    	Lệnh
    end
    Đây chính là phần mà các bạn sáng tạo nhiều nhất ví dụ của mình có hàm Add Level cho nhân vật.
    Code:
    function x002097_OnEventRequest(sceneId,selfId,targetId,eventId)
    local key = GetNumText()
    	if key == 1 then
    		SetLevel(sceneId,selfId,120)
    		BeginEvent(sceneId)
    			AddText(sceneId,"Chúc mừng bạn thăng cấp 120 thành công")
    		EndEvent(scneneId)
    		DispatchEventList(sceneId,selfId,targetId)
    	end
    end
    "==" là phép so sánh bằng nhé giống bên C.
    SetLevel(sceneId,selfId,x) là hàm Set cho nhân vật level x tùy ý ( không vượt quá 150 )
    local Tên_Biến = Hàm_Hằng
    GetNumText() tức là hàm lấy giá trị ẩn của cái chỗ mà người chơi vừa kick vào ( Hơi khó hiểu nhưng đại khái theo cái phần mở đầu, người dùng ấn vào cái cụm ký tự mà có chữ số đại diện cho các câu lệnh ngầm phía sau là 1 )
    Ở đây có thể bao gồm nhiều lệnh nhé, và phần này là phần đòi hỏi người viết phải có kiến thức lập trình, rà soát các trường hợp cẩn thận.

    E/PHẦN KHÁC

    Ở phần này các bạn có thể sáng tạo các hàm khác cho riêng mình được, ví dụ đoạn code bên trên mình có thể biến nó về sử dụng một hàm khác và lấy hàm chính của chương trình gọi tới nó.
    Vẫn thống nhất như trên thêm xID_NPC_Tên_chương_trình(tham biến) nhé

    Code:
    --NPC: Đại Lý
    --Tên: Sói Đẹp Zai
    --Tittle: Hỗ trợ tân thủ
    --Edit: By Sói Kool
    
    function x002097_OnDefaultEvent(sceneId,selfId,targetId)
    local nam = LuaFnGetName(sceneId,selfId)
    	
    	BeginEvent(sceneId)
    		AddText(sceneId,"Welcome "..nam..", have a good day!")
    		AddNumText(sceneId,x002097_g_ScriptId,"Chức năng tân thủ",1,1)
    	EndEvent(senceId)
    	DispatchEventList(sceneId,selfId,targetId)
    	
    end
    
    function x002097_OnConditionCheck(sceneId,selfId )
    local lev=GetLevel(sceneId,selfId)
    
    	if lev < 10 then
    		BeginEvent(sceneId)
    			AddText(sceneId,"Khi nào đạt cấp 11 trở lên hãy đến tìm ta")
    			DispatchEventList(sceneId,selfId,targetId)
    			return 0
    		EndEvent(sceneId)
    	elseif lev > 50 then
    		BeginEvent(sceneId)
    			AddText(sceneId,"Lớn hơn cấp 50 mà gọi là tân thủ à?")
    			DispatchEventList(sceneId,selfId,targetId)
    			return 0
    		EndEvent(sceneId)
    	end
    	
    end
    
    function x002097_OnEventRequest(sceneId,selfId,targetId,eventId)
    local key = GetNumText()
    	if key == 1 then
    		x002097_LenLevel(sceneId,selfId)
    	end
    end
    
    function x002097_LenLevel(sceneId,selfId)
    	BeginEvent(sceneId)
    		AddText(sceneId,"Chúc mừng bạn thăng cấp 120 thành công")
    	EndEvent(scneneId)
    	DispatchEventList(sceneId,selfId,targetId)
    end
    Đây gọi là một cái hay mà các ngôn ngữ lập trình khác đều có đó là thuật "Chia để trị", sau này bạn sẽ rất cần thiết đến cách phân chia này với các script có nhiều phần...
    Lưu ý: Phân biệt chữ hoa chữ thường nên phải cẩn thận.

    MỘT SỐ CÂU LỆNH SƯU TẬP:

    Add KNB:

    Code:
    YuanBao(sceneId,selfId,targetId,x,y)

    Trong đó y là số KNB cần add và x là số lượng, hiểu nôm na là số phiếu KNB

    Add ĐT:

    Code:
    ZengDian(sceneId,selfId,targetId,x,y)

    Trong đó y là số ĐT cần add và x là số lượng

    Add EXP:

    Code:
    LuaFnAddExp(sceneId,selfId,x)
    Trong đó x là số kinh nghiệm ( x<=99999999 )

    Add điểm Môn Phái:

    Code:
    SetHumanMenpaiPoint(sceneId,selfId,x)

    Trong đó x là số điểm cần Set

    Add Item:

    Code:
    BeginAddItem(sceneId)
    AddItem(sceneId,x,1)
    EndAddItem(sceneId,selfId)
    AddItemListToHuman(sceneId,selfId)
    Với x là ID của item ( xem trong server hoặc client )

    Add Skill

    Code:
    AddSkill(sceneId,selfId,x)
    Trong đó x là ID skill cần add

    Ghi ra kênh hệ thống:

    Code:
    BroadMsgByChatPipe(sceneId,selfId,"Text")


    Lấy tên nhân vật:

    Code:
    local Tên_Biến = LuaFnGetName(sceneId,selfId)


    Lấy level nhân vật:

    Code:
    local Tên_Biến = GetLevel(sceneId,selfId)
    Lấy số thứ tự môn phái ( 0..9 )

    Code:
    local Tên_Biến = GetMenPai(sceneId,selfId)
    Gia nhập môn phái:

    Code:
    LuaFnJoinMenpai(sceneId,selfId,targetId,x)
    LuaFnSendSpecificImpactToUnit(sceneId,selfId,targetId,148,0)
    Trong đó x là thứ số tự môn phái ( 0..9 )

    Add tâm pháp

    Code:
    LuaFnSetXinFaLevel(sceneId,selfId,x,y)
    Trong đó x là ID quyển tâm pháp cần thêm, y là số điểm tâm pháp

    OK như vậy là đủ để viết được Script đơn giản. Còn các cái cao siêu mình không nói đến nhé.

    Và đây là 1 script mẫu nhận tâm pháp và lev 120 cho anh em tham khảo

    Code:
    --ÐÕi Lý NPC
    --ID: 002097
    --Script test code by Sói Kool
    --************************
    x002097_g_ScriptId = 002097
    --************************
    --Kh·i ðµng
    --************************
    function x002097_OnDefaultEvent(sceneId,selfId,targetId)
    
    	BeginEvent(sceneId)
    		AddText(sceneId,"Chào m×ng bÕn ðªn v¾i Thiên Long Bát Bµ edit by Sói Kool...Các hÕ có mu¯n gia nh§p môn phái và nh§n tâm pháp c¤p 120 không ? Nªu ð°ng ý, các hÕ s¨ l§p tÑc thång lên c¤p ðµ 120 cùng tâm pháp môn phái tß½ng Ñng...")
    		AddNumText(sceneId,x002097_g_ScriptId,"Xác nh§n",1,1)
    		AddNumText(sceneId,x002097_g_ScriptId,"Nh§n yªu quyªt phái Mµ Dung",1,2)
    	EndEvent(senceId)
    	DispatchEventList(sceneId,selfId,targetId)
    	
    end
    --************************
    --Thân chß½ng trình
    --************************
    function x002097_OnEventRequest(sceneId,selfId,targetId,eventId)
    local key = GetNumText()
    local lev = GetLevel(sceneId,selfId)
    
    	--Gia nh§p môn phái
    	if key == 1 then
    		BeginEvent(sceneId)
    			AddText(sceneId,"Hãy lña ch÷n môn phái mu¯n gia nh§p...#r Lßu ý: C¤p 120 tr· lên không nên dùng chÑc nång này v¸ nó s¨ hÕ c¤p ðµ cüa bÕn xu¯ng 120....")
    			AddNumText(sceneId,x002097_g_ScriptId,"Thiªu Lâm",2,3)
    			AddNumText(sceneId,x002097_g_ScriptId,"Minh Giáo",2,4)
    			AddNumText(sceneId,x002097_g_ScriptId,"Cái Bang",2,5)
    			AddNumText(sceneId,x002097_g_ScriptId,"Thiên S½n",2,6)
    			AddNumText(sceneId,x002097_g_ScriptId,"#YMµ Dung",2,7)
    			AddNumText(sceneId,x002097_g_ScriptId,"Nga My",2,8)
    			AddNumText(sceneId,x002097_g_ScriptId,"Tiêu Dao",2,9)
    			AddNumText(sceneId,x002097_g_ScriptId,"Tinh Túc",2,10)
    			AddNumText(sceneId,x002097_g_ScriptId,"Võ Ðang",2,11)
    			AddNumText(sceneId,x002097_g_ScriptId,"Thiên Long",2,12)
    		EndEvent(sceneId)
    		DispatchEventList( sceneId,selfId, targetId )
    	end
    	--***
    	if key == 3 then --Thiªu Lâm
    		--Gia nh§p môn phái
    		LuaFnJoinMenpai(sceneId,selfId, targetId,0) --ID 0 là Thiªu Lâm
    		--Tâm pháp
    		LuaFnSetXinFaLevel(sceneId,selfId,1,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,2,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,3,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,4,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,5,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,6,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,55,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,72,120)
    		LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0)
    		--Thång c¤p
    		SetLevel(sceneId,selfId,120)
    		
    		BeginEvent(sceneId)
    			AddText(sceneId,"Chúc m×ng ngß½i ðã là ð® tØ Thiªu Lâm, nh§n thành công tâm pháp 120 môn phái ð°ng th¶i thång lên c¤p 120...")
    		EndEvent(sceneId)
    		
    		DispatchEventList(sceneId,selfId,targetId )
    	end
    	--***
    	if key == 4 then --Minh Giáo
    		--Gia nh§p môn phái
    		LuaFnJoinMenpai(sceneId,selfId, targetId, 1) --ID 1 là Minh Giáo
    		--Tâm pháp
    		LuaFnSetXinFaLevel(sceneId,selfId,7,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,8,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,9,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,10,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,11,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,12,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,56,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,73,120)
    		LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0)
    		--Thång c¤p
    		SetLevel(sceneId,selfId,120)
    		
    		BeginEvent(sceneId)
    			AddText(sceneId,"Chúc m×ng ngß½i ðã là ð® tØ Minh Giáo, nh§n thành công tâm pháp 120 môn phái ð°ng th¶i thång lên c¤p 120...")
    		EndEvent(sceneId)
    			
    		DispatchEventList(sceneId,selfId,targetId )
    	end
    	--**
    	if key == 5 then --Cái Bang
    		--Gia nh§p môn phái
    		LuaFnJoinMenpai(sceneId,selfId, targetId, 2) --ID 2 là Cái Bang
    		--Tâm pháp
    		LuaFnSetXinFaLevel(sceneId,selfId,13,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,14,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,15,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,16,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,17,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,18,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,57,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,74,120)
    		LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0)
    		--Thång c¤p
    		SetLevel(sceneId,selfId,120)
    		
    		BeginEvent(sceneId)
    			AddText(sceneId,"Chúc m×ng ngß½i ðã là ð® tØ Cái Bang, nh§n thành công tâm pháp 120 môn phái ð°ng th¶i thång lên c¤p 120...")
    		EndEvent(sceneId)
    			
    		DispatchEventList(sceneId,selfId,targetId )
    	end
    	--**
    	if key == 6 then --Thiên S½n
    		--Gia nh§p môn phái
    		LuaFnJoinMenpai(sceneId,selfId, targetId, 7) --ID 7 là Thiên S½n
    		--Tâm pháp
    		LuaFnSetXinFaLevel(sceneId,selfId,43,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,44,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,45,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,46,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,47,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,48,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,62,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,79,120)
    		LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0)
    		--Thång c¤p
    		SetLevel(sceneId,selfId,120)
    		
    		BeginEvent(sceneId)
    			AddText(sceneId,"Chúc m×ng ngß½i ðã là ð® tØ Thiên S½n, nh§n thành công tâm pháp 120 môn phái ð°ng th¶i thång lên c¤p 120...")
    		EndEvent(sceneId)
    			
    		DispatchEventList(sceneId,selfId,targetId )
    	end
    	--**
    	if key == 7 then --Mµ Dung
    		--Gia nh§p môn phái
    		LuaFnJoinMenpai(sceneId,selfId, targetId, 9) --ID 9 là Mµ Dung
    		--Tâm pháp
    		LuaFnSetXinFaLevel(sceneId,selfId,64,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,65,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,66,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,67,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,68,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,69,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,70,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,71,120)
    		LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0)
    		--Thång c¤p
    		SetLevel(sceneId,selfId,120)
    		
    		BeginEvent(sceneId)
    			AddText(sceneId,"Chúc m×ng ngß½i ðã là ð® tØ Mµ Dung Gia, nh§n thành công tâm pháp 120 môn phái ð°ng th¶i thång lên c¤p 120...")
    		EndEvent(sceneId)
    			
    		DispatchEventList(sceneId,selfId,targetId )
    	end
    	--**
    	if key == 8 then --Nga My
    		--Gia nh§p môn phái
    		LuaFnJoinMenpai(sceneId,selfId, targetId, 4) --ID 4 là Nga My
    		--Tâm pháp
    		LuaFnSetXinFaLevel(sceneId,selfId,25,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,26,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,27,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,28,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,29,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,30,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,59,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,76,120)
    		LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0)
    		--Thång c¤p
    		SetLevel(sceneId,selfId,120)
    		
    		BeginEvent(sceneId)
    			AddText(sceneId,"Chúc m×ng ngß½i ðã là ð® tØ Nga My, nh§n thành công tâm pháp 120 môn phái ð°ng th¶i thång lên c¤p 120...")
    		EndEvent(sceneId)
    			
    		DispatchEventList(sceneId,selfId,targetId )
    	end
    	--**
    	if key == 9 then --Tiêu Dao
    		--Gia nh§p môn phái
    		LuaFnJoinMenpai(sceneId,selfId, targetId, 8) --ID 8 là Tiêu Dao
    		--Tâm pháp
    		LuaFnSetXinFaLevel(sceneId,selfId,49,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,50,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,51,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,52,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,53,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,54,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,63,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,80,120)
    		LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0)
    		--Thång c¤p
    		SetLevel(sceneId,selfId,120)
    		
    		BeginEvent(sceneId)
    			AddText(sceneId,"Chúc m×ng ngß½i ðã là ð® tØ Tiêu Dao, nh§n thành công tâm pháp 120 môn phái ð°ng th¶i thång lên c¤p 120...")
    		EndEvent(sceneId)
    			
    		DispatchEventList(sceneId,selfId,targetId )
    	end
    	--**
    	if key == 10 then --Tinh Túc
    		--Gia nh§p môn phái
    		LuaFnJoinMenpai(sceneId,selfId, targetId, 5) --ID 5 là Tinh Túc
    		--Tâm pháp
    		LuaFnSetXinFaLevel(sceneId,selfId,31,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,32,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,33,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,34,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,35,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,36,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,60,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,77,120)
    		LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0)
    		--Thång c¤p
    		SetLevel(sceneId,selfId,120)
    		
    		BeginEvent(sceneId)
    			AddText(sceneId,"Chúc m×ng ngß½i ðã là ð® tØ Tinh Túc, nh§n thành công tâm pháp 120 môn phái ð°ng th¶i thång lên c¤p 120...")
    		EndEvent(sceneId)
    			
    		DispatchEventList(sceneId,selfId,targetId )
    	end
    	--**
    	if key == 11 then --Võ Ðang
    		--Gia nh§p môn phái
    		LuaFnJoinMenpai(sceneId,selfId, targetId, 3) --ID 3 là Võ Ðang
    		--Tâm pháp
    		LuaFnSetXinFaLevel(sceneId,selfId,19,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,20,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,21,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,22,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,23,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,24,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,58,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,75,120)
    		LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0)
    		--Thång c¤p
    		SetLevel(sceneId,selfId,120)
    		
    		BeginEvent(sceneId)
    			AddText(sceneId,"Chúc m×ng ngß½i ðã là ð® tØ Võ Ðang, nh§n thành công tâm pháp 120 môn phái ð°ng th¶i thång lên c¤p 120...")
    		EndEvent(sceneId)
    			
    		DispatchEventList(sceneId,selfId,targetId )
    	end
    	--**
    	if key == 12 then --Thiên Long
    		--Gia nh§p môn phái
    		LuaFnJoinMenpai(sceneId,selfId, targetId, 6) --ID 6 là Thiên Long
    		--Tâm pháp
    		LuaFnSetXinFaLevel(sceneId,selfId,37,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,38,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,39,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,40,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,41,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,42,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,61,120)
    		LuaFnSetXinFaLevel(sceneId,selfId,78,120)
    		LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0)
    		--Thång c¤p
    		SetLevel(sceneId,selfId,120)
    		
    		BeginEvent(sceneId)
    			AddText(sceneId,"Chúc m×ng ngß½i ðã là ð® tØ Thiên Long, nh§n thành công tâm pháp 120 môn phái ð°ng th¶i thång lên c¤p 120...")
    		EndEvent(sceneId)
    			
    		DispatchEventList(sceneId,selfId,targetId )
    	end
    	--**
    	if key == 2 then --Nh§n Yªu quyªt Mµ Dung Gia
    		BeginAddItem(sceneId)
    		AddItem(sceneId,30308099,1)--YQ 35 - Lñc Chí Ti«n Thích
    		AddItem(sceneId,30308097,1)--YQ 45 - Phá Thiên ThÑc
    		AddItem(sceneId,30308096,1)--YQ 65 - Hóa Khí ThÑc
    		AddItem(sceneId,30308100,1)--YQ 80 - Lång Thiên ThÑc
    		EndAddItem(sceneId,selfId)
    		AddItemListToHuman(sceneId,selfId)
    		
    		BeginEvent(sceneId)
    			AddText(sceneId,"Chúc m×ng các hÕ nh§n ðßþc 1 bµ yªu quyªt Mµ Dung Gia.")
    			x002099_NotifyFailTips(sceneId, selfId, "Nh§n ðßþc 1 bµ yªu quyªt Mµ Dung Gia.")
    		EndEvent(sceneId)
    		
    		DispatchEventList(sceneId,selfId,targetId)
    	end
    	
    end
    
    --Ghi lên tip
    function x002098_NotifyFailTips( sceneId, selfId, Tip )
    
    	BeginEvent( sceneId )
    		AddText( sceneId, Tip )
    	EndEvent( sceneId )
    	DispatchMissionTips( sceneId, selfId )
    	
    end
    	
    .
    Lưu ý chuyển mã VISCII để viết nhé
    Khách viếng thăm hãy cùng Sói Đẹp Trai xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. The Following 17 Users Say Thank You to Sói Đẹp Trai For This Useful Post:

    dinhdtd (18-05-14), Edward_Newgate (09-09-14), emyeusss7 (09-07-13), freepro2101 (07-07-13), HaHuong (08-07-13), herovn1994 (09-07-13), hmanview (18-07-13), Intel (27-02-15), nxttnx (09-07-13), popiye (22-07-13), ronglam (09-07-13), somahaha (31-07-13), tiachopdenvn (07-07-13), ttphanthieugia (16-07-13), v0d1chs01 (23-12-16), vhmt1101 (12-04-15), yuusen (03-02-15)

  3. #2
    Thành Viên
    Ngày tham gia
    Jan 2012
    Đang ở
    ---Ở Nhà---
    Bài viết
    327
    Thanks
    119
    Thanked 275 Times in 111 Posts

    Ðề: Hướng dẫn viết Script NPC đơn giản

    xé tem đầu tiên nhé anh bé bự
    30charrrrrrrrrrrrrrrrrrrrrrrr
    Khách viếng thăm hãy cùng freepro2101 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 

Các Chủ đề tương tự

  1. [KT] Script NPC
    Bởi ngaunachay trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 15
    Bài viết cuối: 13-06-12, 05:28 PM
  2. Một số script trong thư mục script Vina (unpack)
    Bởi sangpronhat trong diễn đàn Scripts
    Trả lời: 19
    Bài viết cuối: 26-11-11, 08:12 AM
  3. ai xem dùm em script này
    Bởi nhoxpk2707 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 8
    Bài viết cuối: 17-08-10, 01:15 PM
  4. Cần hỗ trợ về script..!! (Help)
    Bởi kemdenny trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 1
    Bài viết cuối: 17-08-10, 08:41 AM

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 12:42 AM.
vBulletin®, Copyright ©2000-2011, Jelsoft Enterprises Ltd.
CLBGamesVN không chịu trách nhiệm về Luật Bản Quyền của các tài liệu, bài viết v.v...được đăng tải trên diễn đàn này.
Diễn đàn phát triển dưới sự đóng góp của tất cả thành viên. BQT chỉ là những người thành lập ra sân chơi, quản lý và duy trì về mặt kỹ thuật, nội dung khi hợp lệ.