[TLBB] Script NPC Nhận Thưởng
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 3 của 3
  1. #1
    Thành Viên
    Ngày tham gia
    Jun 2010
    Đang ở
    Việt Nam
    Bài viết
    131
    Thanks
    160
    Thanked 133 Times in 48 Posts

    Icon1 Script NPC Nhận Thưởng

    Script NPC Nhận Thưởng

    Qua bài viết này mình sẽ hướng dẫn các bạn làm một NPC có chức năng đổi phần thưởng. Điều khác biệt của NPC này là có hình của Item mình muốn đổi
    cũng như xem thông tin của nó như NPC Lương Sư Thành đổi bộ trang bị ngụ tứ. Hoặc dùng đễ hiễn thị vật phẩm khi trả Quest.
    Nhưng mình thấy script của NPC phức tạp quá nên mình đã chỉnh sửa để cho nó đơn giản một chút.
    Những NPC loại này thì trên Server có đầy các bạn có thể tham khảo thêm.

    Mình sẽ làm một demo đơn giản. còn việc phát triển nó như thế nào thì tùy thuộc vào sự sáng tạo của các bạn.

    1. Chuẩn bị: Add thêm NPC và Script mới cho NPC đó. Hoặc có thể sử dụng NPC có sẳn. (cái này trên diễn đàn chắc cũng nói nhiều rồi. )
    trong Demo này mình đã tạo ra một NPC mới ở Đại Lý và Script gắn với nó có ID là 002100

    2. Bắt đầu Script:

    Code:
    --=================================
    -- 002100
    --=================================
    x002100_g_ScriptId = 002100
    x002100_g_RadioItemBonus={{id=30103040 ,num=2345},{id=30103039,num=2345},{id=30103038,num=2345}}
    
    --===========================================
    --    		On Default Event
    --===========================================
    function x002100_OnDefaultEvent( sceneId, selfId, targetId )
    	BeginEvent(sceneId)
    		AddText(sceneId,"  Các hÕ mu¯n có mµt dßþc ph¦m quý hiªm phäi không, · ch± ta có mµt ít ðây. ")
    		AddNumText( sceneId, x002100_g_ScriptId, "бi dßþc ph¦m th¥n kÏ", 6, 1 )		
    		AddNumText( sceneId, x002100_g_ScriptId, "R¶i ði..", 0, 0 )
    
    	EndEvent(sceneId)
    	DispatchEventList(sceneId,selfId,targetId)
    	
    end
    
    function x002100_OnEventRequest( sceneId, selfId, targetId, eventId )
    	local nNumText = GetNumText()
    	
    	if nNumText == 0  then		
    		BeginUICommand(sceneId)
    		EndUICommand(sceneId)
    		DispatchUICommand(sceneId,selfId, 1000)
    		return
    	end
    	
    	if nNumText == 1 then
    		BeginEvent(sceneId)
    			AddText(sceneId, "  Dßþc ph¦m này không th¬ cho không ðßþc.")			
    			local szStr = "  Mu¯n nh§n ðßþc dßþc ph¦m này, ngß½i c¥n phäi ðßa mang cho ta.";
    			AddText(sceneId, szStr)
    			
    			for i, item in x002100_g_RadioItemBonus do
    				if item.num == 2345  then
    					AddRadioItemBonus( sceneId, item.id, 4 )
    				end
    			end
    		EndEvent(sceneId)
    		DispatchMissionContinueInfo(sceneId,selfId,targetId, x002100_g_ScriptId, 0)
    	end
    end
    
    function x002100_OnMissionSubmit( sceneId, selfId, targetId, missionScriptId, selectRadioId )
    		
    	--Kiem tra item can thiet co du so luong hay khong va xuat ra thong bao
    	if selectRadioId == 30103040 then		
    		if GetItemCount(sceneId, selfId, 30001004) >= 50 and GetItemCount(sceneId, selfId, 30002004) >= 50  then
    			-- du item, bat dau xoa thu
    			if LuaFnDelAvailableItem(sceneId,selfId, 30001004, 50) == 1 and LuaFnDelAvailableItem(sceneId,selfId, 30002004, 50) == 1 then
    				-- them item
    				TryRecieveItem( sceneId, selfId, 30103040, 1 );
    				LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,18,0)
    			else
    				x002100_MsgBox( sceneId, selfId, targetId, "#{JPZB_0610_12}" )
    				return
    			end
    		else
    			x002100_MsgBox( sceneId, selfId, targetId, "#WC¥n #R50 #WPh¥n #YThái Thß½ng Hoàn #Wvà #R50 #WPh¥n #YLµc Nhung Ðan" )
    			return
    		end
    	end
    	
    	if selectRadioId == 30103039 then		
    		if GetItemCount(sceneId, selfId, 30002003) >= 50 then
    			-- du item, bat dau xoa thu
    			if LuaFnDelAvailableItem(sceneId,selfId, 30002003, 50) == 1 then
    				-- them item
    				TryRecieveItem( sceneId, selfId, 30103039, 4 );
    				LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,18,0)
    			else
    				x002100_MsgBox( sceneId, selfId, targetId, "#{JPZB_0610_12}" )
    				return
    			end
    		else
    			x002100_MsgBox( sceneId, selfId, targetId, "#WC¥n #R50 #WPh¥n #YQuy Linh Hoàn" )
    			return
    		end
    	end
    	
    	if selectRadioId == 30103038 then		
    		if GetItemCount(sceneId, selfId, 30001003) >= 50 then
    			-- du item, bat dau xoa thu
    			if LuaFnDelAvailableItem(sceneId,selfId, 30001003, 50) == 1 then
    				-- them item
    				TryRecieveItem( sceneId, selfId, 30103038, 4 );
    				LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,18,0)
    			else
    				x002100_MsgBox( sceneId, selfId, targetId, "#{JPZB_0610_12}" )
    				return
    			end
    		else
    			x002100_MsgBox( sceneId, selfId, targetId, "#WC¥n #R50 #WPh¥n #YKim Sáng Dßþc" )
    			return
    		end
    	end	
    end
    
    --===========================================
    --    		Show A Message Box
    --===========================================
    function x002100_MsgBox( sceneId, selfId, targetId, Tip )
    	BeginEvent( sceneId )
    		AddText( sceneId, Tip )
    	EndEvent( sceneId )
    	DispatchEventList( sceneId, selfId, targetId )
    end
    Các bạn xem còn phần nào chưa hiểu thì đặt câu hỏi bên dưới, mình sẽ cố gắng trả lời.
    chú Hà Hoàng có lẽ thích cái này.
    Khách viếng thăm hãy cùng thanhluan12a14 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. The Following 4 Users Say Thank You to thanhluan12a14 For This Useful Post:

    nhokga (18-08-13), ronglam (17-08-13), Sói Đẹp Trai (15-08-13), tanhn (15-08-13)

  3. #2
    Thành Viên
    Ngày tham gia
    Oct 2012
    Đang ở
    ✿Thạch☆Thất✿
    Bài viết
    289
    Thanks
    99
    Thanked 209 Times in 111 Posts

    Icon10 Ðề: Script NPC Nhận Thưởng

    Trích dẫn Gửi bởi thanhluan12a14 [Only registered and activated users can see links. ]
    Script NPC Nhận Thưởng

    Qua bài viết này mình sẽ hướng dẫn các bạn làm một NPC có chức năng đổi phần thưởng. Điều khác biệt của NPC này là có hình của Item mình muốn đổi
    cũng như xem thông tin của nó như NPC Lương Sư Thành đổi bộ trang bị ngụ tứ. Hoặc dùng đễ hiễn thị vật phẩm khi trả Quest.
    Nhưng mình thấy script của NPC phức tạp quá nên mình đã chỉnh sửa để cho nó đơn giản một chút.
    Những NPC loại này thì trên Server có đầy các bạn có thể tham khảo thêm.

    Mình sẽ làm một demo đơn giản. còn việc phát triển nó như thế nào thì tùy thuộc vào sự sáng tạo của các bạn.

    1. Chuẩn bị: Add thêm NPC và Script mới cho NPC đó. Hoặc có thể sử dụng NPC có sẳn. (cái này trên diễn đàn chắc cũng nói nhiều rồi. )
    trong Demo này mình đã tạo ra một NPC mới ở Đại Lý và Script gắn với nó có ID là 002100

    2. Bắt đầu Script:

    Code:
    --=================================
    -- 002100
    --=================================
    x002100_g_ScriptId = 002100
    x002100_g_RadioItemBonus={{id=30103040 ,num=2345},{id=30103039,num=2345},{id=30103038,num=2345}}
    
    --===========================================
    --    		On Default Event
    --===========================================
    function x002100_OnDefaultEvent( sceneId, selfId, targetId )
    	BeginEvent(sceneId)
    		AddText(sceneId,"  Các hÕ mu¯n có mµt dßþc ph¦m quý hiªm phäi không, · ch± ta có mµt ít ðây. ")
    		AddNumText( sceneId, x002100_g_ScriptId, "бi dßþc ph¦m th¥n kÏ", 6, 1 )		
    		AddNumText( sceneId, x002100_g_ScriptId, "R¶i ði..", 0, 0 )
    
    	EndEvent(sceneId)
    	DispatchEventList(sceneId,selfId,targetId)
    	
    end
    
    function x002100_OnEventRequest( sceneId, selfId, targetId, eventId )
    	local nNumText = GetNumText()
    	
    	if nNumText == 0  then		
    		BeginUICommand(sceneId)
    		EndUICommand(sceneId)
    		DispatchUICommand(sceneId,selfId, 1000)
    		return
    	end
    	
    	if nNumText == 1 then
    		BeginEvent(sceneId)
    			AddText(sceneId, "  Dßþc ph¦m này không th¬ cho không ðßþc.")			
    			local szStr = "  Mu¯n nh§n ðßþc dßþc ph¦m này, ngß½i c¥n phäi ðßa mang cho ta.";
    			AddText(sceneId, szStr)
    			
    			for i, item in x002100_g_RadioItemBonus do
    				if item.num == 2345  then
    					AddRadioItemBonus( sceneId, item.id, 4 )
    				end
    			end
    		EndEvent(sceneId)
    		DispatchMissionContinueInfo(sceneId,selfId,targetId, x002100_g_ScriptId, 0)
    	end
    end
    
    function x002100_OnMissionSubmit( sceneId, selfId, targetId, missionScriptId, selectRadioId )
    		
    	--Kiem tra item can thiet co du so luong hay khong va xuat ra thong bao
    	if selectRadioId == 30103040 then		
    		if GetItemCount(sceneId, selfId, 30001004) >= 50 and GetItemCount(sceneId, selfId, 30002004) >= 50  then
    			-- du item, bat dau xoa thu
    			if LuaFnDelAvailableItem(sceneId,selfId, 30001004, 50) == 1 and LuaFnDelAvailableItem(sceneId,selfId, 30002004, 50) == 1 then
    				-- them item
    				TryRecieveItem( sceneId, selfId, 30103040, 1 );
    				LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,18,0)
    			else
    				x002100_MsgBox( sceneId, selfId, targetId, "#{JPZB_0610_12}" )
    				return
    			end
    		else
    			x002100_MsgBox( sceneId, selfId, targetId, "#WC¥n #R50 #WPh¥n #YThái Thß½ng Hoàn #Wvà #R50 #WPh¥n #YLµc Nhung Ðan" )
    			return
    		end
    	end
    	
    	if selectRadioId == 30103039 then		
    		if GetItemCount(sceneId, selfId, 30002003) >= 50 then
    			-- du item, bat dau xoa thu
    			if LuaFnDelAvailableItem(sceneId,selfId, 30002003, 50) == 1 then
    				-- them item
    				TryRecieveItem( sceneId, selfId, 30103039, 4 );
    				LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,18,0)
    			else
    				x002100_MsgBox( sceneId, selfId, targetId, "#{JPZB_0610_12}" )
    				return
    			end
    		else
    			x002100_MsgBox( sceneId, selfId, targetId, "#WC¥n #R50 #WPh¥n #YQuy Linh Hoàn" )
    			return
    		end
    	end
    	
    	if selectRadioId == 30103038 then		
    		if GetItemCount(sceneId, selfId, 30001003) >= 50 then
    			-- du item, bat dau xoa thu
    			if LuaFnDelAvailableItem(sceneId,selfId, 30001003, 50) == 1 then
    				-- them item
    				TryRecieveItem( sceneId, selfId, 30103038, 4 );
    				LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,18,0)
    			else
    				x002100_MsgBox( sceneId, selfId, targetId, "#{JPZB_0610_12}" )
    				return
    			end
    		else
    			x002100_MsgBox( sceneId, selfId, targetId, "#WC¥n #R50 #WPh¥n #YKim Sáng Dßþc" )
    			return
    		end
    	end	
    end
    
    --===========================================
    --    		Show A Message Box
    --===========================================
    function x002100_MsgBox( sceneId, selfId, targetId, Tip )
    	BeginEvent( sceneId )
    		AddText( sceneId, Tip )
    	EndEvent( sceneId )
    	DispatchEventList( sceneId, selfId, targetId )
    end
    Các bạn xem còn phần nào chưa hiểu thì đặt câu hỏi bên dưới, mình sẽ cố gắng trả lời.
    chú Hà Hoàng có lẽ thích cái này.
    Sói chắc chắn là thích rồi
    Thanks Thành Luân vì cống hiến mới nhaaaaaaaaaaaaaaaaaaaaaaaaaaa!
    Chúc cậu ngày càng phát triển~!~
    Khách viếng thăm hãy cùng tanhn xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  4. Các thành viên gởi lời cảm ơn đến tanhn vì bài viết này !

    thutrang123 (15-08-13)

  5. #3
    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,069 Times in 1,403 Posts

    Ðề: Script NPC Nhận Thưởng

    Thích quá ấy chư. Kết nhất cái vụ RadioItemBonus . Nhưng mà đang rối đầu, phải ngồi tu tâm dưỡng tính mới đọc code đc . Cái này đang đánh nhau với bài C++ vừa mới giải xong
    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é!

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

    Axjtaka (21-02-14), tanhn (15-08-13)

 

 

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

  1. [KT] cần giúp về script này ?
    Bởi thaitunet39 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 4
    Bài viết cuối: 28-06-13, 08:26 AM
  2. [JX] Xin script bảo vệ nhân vật , bị hành quá
    Bởi keraotinh trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 1
    Bài viết cuối: 09-06-12, 06:36 PM
  3. 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
  4. Giúp em cái script này ^_^
    Bởi benop001 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 29
    Bài viết cuối: 28-08-10, 07:35 PM

Tag của Chủ đề này

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à 06:17 PM.
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ệ.