[JX] Xin giúp đỡ addnpc random tọa độ KHÔNG TRÙNG LẬP!
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Trang 1 của 3 1 2 3 CuốiCuối
Kết quả 1 đến 10 của 26
  1. #1
    Thành Viên
    Ngày tham gia
    Apr 2014
    Bài viết
    288
    Thanks
    180
    Thanked 21 Times in 15 Posts

    Xin giúp đỡ addnpc random tọa độ KHÔNG TRÙNG LẬP!

    Server Linux

    Các bạn vui lòng chỉ mình cách Add 300 con Npc Random trong 1000 Tọa độ mà không bị TRÙNG với!
    Bình thường mình dùng Random thì nó xuất hiện 1 bầy Npc : )))))
    Khách viếng thăm hãy cùng yeuVLTK xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. #2
    Thành Viên Tâm Huyết BladeKnight109's Avatar
    Ngày tham gia
    Jun 2014
    Đang ở
    0x00000000
    Bài viết
    1,135
    Thanks
    151
    Thanked 951 Times in 465 Posts

    Ðề: Xin giúp đỡ addnpc random tọa độ KHÔNG TRÙNG LẬP!

    Trích dẫn Gửi bởi yeuVLTK [Only registered and activated users can see links. ]
    Server Linux

    Các bạn vui lòng chỉ mình cách Add 300 con Npc Random trong 1000 Tọa độ mà không bị TRÙNG với!
    Bình thường mình dùng Random thì nó xuất hiện 1 bầy Npc : )))))

    Tọa độ gồm X và Y, random dc toa độ nào thì lưu lại vào mảng tạm, cứ mỗi lần random thì check xem tọa độ đó đã được random trước hay chưa, chưa thì add npc
    Skype: BladeKnight109 - [Only registered and activated users can see links. ]
    Telegram: @knight109 - [Only registered and activated users can see links. ]

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

    yeuVLTK (25-02-18)

  4. #3
    Thành Viên
    Ngày tham gia
    Mar 2010
    Bài viết
    430
    Thanks
    30
    Thanked 182 Times in 81 Posts

    Ðề: Xin giúp đỡ addnpc random tọa độ KHÔNG TRÙNG LẬP!

    Đây là code ví dụ để bạn áp dụng, còn cách chế thế nào thì tùy bạn nhé.
    Code:
    tb3Npc = {
    	{1,2},--toa x,y
    	{3,4},
    	{5,6}
    }
    
    local tbCircle = {}
    local nCountNext = 0;
    --bat dau lay random 2 toa ko trung nhau
    while (1) do 
    	local rate_random = random(getn(tb300Npc)); --random tb3Npc toa do
    	if not tbCircle[rate_random] then --ktra co trung toa do ko bang index table
    		if  nCountNext < 2 then 
    			tbCircle[rate_random] = 1;
    			nCountNext = nCountNext + 1;
    		end
    	end
    
    	if nCountNext >= 2 then --dung loop neu da du 2 toa do random ko trung
    		break;
    	end
    end
    
    --add npc da lay 2 toa do random  o tren
    for i, v in tbCircle do 
    	--i: gia tri 1 duoc set mac dinh o tren
    	--v: index cua tb3Npc
    	local nX,nY = tb3Npc[v][1],tb3Npc[v][2];
    	AddNpc(1,2,SubWorldID2Idx(53),nX,nY)
    end
    Khách viếng thăm hãy cùng hoivegame xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

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

    yeuVLTK (25-02-18)

  6. #4
    Thành Viên
    Ngày tham gia
    Apr 2014
    Bài viết
    288
    Thanks
    180
    Thanked 21 Times in 15 Posts

    Ðề: Xin giúp đỡ addnpc random tọa độ KHÔNG TRÙNG LẬP!

    Trích dẫn Gửi bởi hoivegame [Only registered and activated users can see links. ]
    Đây là code ví dụ để bạn áp dụng, còn cách chế thế nào thì tùy bạn nhé.
    Code:
    tb3Npc = {
    	{1,2},--toa x,y
    	{3,4},
    	{5,6}
    }
    
    local tbCircle = {}
    local nCountNext = 0;
    --bat dau lay random 2 toa ko trung nhau
    while (1) do 
    	local rate_random = random(getn(tb300Npc)); --random tb3Npc toa do
    	if not tbCircle[rate_random] then --ktra co trung toa do ko bang index table
    		if  nCountNext < 2 then 
    			tbCircle[rate_random] = 1;
    			nCountNext = nCountNext + 1;
    		end
    	end
    
    	if nCountNext >= 2 then --dung loop neu da du 2 toa do random ko trung
    		break;
    	end
    end
    
    --add npc da lay 2 toa do random  o tren
    for i, v in tbCircle do 
    	--i: gia tri 1 duoc set mac dinh o tren
    	--v: index cua tb3Npc
    	local nX,nY = tb3Npc[v][1],tb3Npc[v][2];
    	AddNpc(1,2,SubWorldID2Idx(53),nX,nY)
    end
    Bạn xem giúp mình có đúng chưa
    mình làm vẫn chưa được
    Code:
    function main()
    local tbCircle = {}
    local nCountNext = 0;
    --bat dau lay random 2 toa ko trung nhau
    while (1) do 
    	local rate_random = random(getn(tb_coords)); --random tb3Npc toa do
    	if not tbCircle[rate_random] then --ktra co trung toa do ko bang index table
    		if  nCountNext < 300 then 
    			tbCircle[rate_random] = 1;
    			nCountNext = nCountNext + 1;
    		end
    	end
    
    	if nCountNext >= 300 then --dung loop neu da du 2 toa do random ko trung
    		break;
    	end
    end
    
    --add npc da lay 2 toa do random  o tren
    for i, v in tbCircle do 
    	--i: gia tri 1 duoc set mac dinh o tren
    	--v: index cua tb3Npc
    local k = random (1, getn(name))	
    local W, nx, ny, nn = tb_coords[v][1], tb_coords[v][2] * 32, tb_coords[v][3]  * 32,  name[k]
    npcindex = AddNpcEx( random(319,348),1, 2, SubWorldID2Idx(W), nx, ny, 0, "test", 0 );
    end
     
     end
    Khách viếng thăm hãy cùng yeuVLTK xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. #5
    Thành Viên Tâm Huyết BladeKnight109's Avatar
    Ngày tham gia
    Jun 2014
    Đang ở
    0x00000000
    Bài viết
    1,135
    Thanks
    151
    Thanked 951 Times in 465 Posts

    Ðề: Xin giúp đỡ addnpc random tọa độ KHÔNG TRÙNG LẬP!

    thử code bên dưới xem. 30 charrrrrrrrrrrrr
    Trích dẫn Gửi bởi yeuVLTK [Only registered and activated users can see links. ]
    Code:
    local tbCircle = {}
    function main()
    local nCountNext = 0;
    --bat dau lay random 2 toa ko trung nhau
    while (1) do 
    	local rate_random = random(getn(tb_coords)); --random tb3Npc toa do
    	if not tbCircle[rate_random] then --ktra co trung toa do ko bang index table
    		if  nCountNext < 300 then 
    			tbCircle[rate_random] = 1;
    			nCountNext = nCountNext + 1;
    		end
    	end
    
    	if nCountNext >= 300 then --dung loop neu da du 2 toa do random ko trung
    		break;
    	end
    end
    
    --add npc da lay 2 toa do random  o tren
    for i, v in tbCircle do 
    	--i: gia tri 1 duoc set mac dinh o tren
    	--v: index cua tb3Npc
    local k = random (1, getn(name))	
    local W, nx, ny, nn = tb_coords[v][1], tb_coords[v][2] * 32, tb_coords[v][3]  * 32,  name[k]
    npcindex = AddNpcEx( random(319,348),1, 2, SubWorldID2Idx(W), nx, ny, 0, "test", 0 );
    end
    end
    hoặc cái này
    Code:
    local tbCircle = {}
    function main()
    local nCountNext = 0
    while (nCountNext < 300) do 
    	local rate_random = random(getn(tb_coords))
    	local _Flag = 1
    	for i=1,getn(tbCircle) do
    		if (tbCircle[i] == rate_random){
    			_Flag = 0
    			break;
    		}
    	end
    	if _Flag == 1 then
    		tbCircle[getn(tbCircle)+1] = rate_random
    		nCountNext = nCountNext + 1
    	end
    end
    lâu quá rồi ko viết lua nên ko biết đúng cú pháp ko .
    Với lại random tọa độ đâu cần viết rườm rà như vậy.
    Lần sửa cuối bởi BladeKnight109, ngày 26-02-18 lúc 08:00 AM.
    Skype: BladeKnight109 - [Only registered and activated users can see links. ]
    Telegram: @knight109 - [Only registered and activated users can see links. ]

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

    yeuVLTK (26-02-18)

  9. #6
    Thành Viên
    Ngày tham gia
    Apr 2014
    Bài viết
    288
    Thanks
    180
    Thanked 21 Times in 15 Posts

    Ðề: Xin giúp đỡ addnpc random tọa độ KHÔNG TRÙNG LẬP!

    Trích dẫn Gửi bởi BladeKnight109 [Only registered and activated users can see links. ]
    thử code bên dưới xem. 30 charrrrrrrrrrrrr


    hoặc cái này
    Code:
    local tbCircle = {}
    function main()
    local nCountNext = 0
    while (nCountNext < 300) do 
    	local rate_random = random(getn(tb_coords))
    	local _Flag = 1
    	for i=1,getn(tbCircle) do
    		if (tbCircle[i] == rate_random){
    			_Flag = 0
    			break;
    		}
    	end
    	if _Flag == 1 then
    		tbCircle[getn(tbCircle)+1] = rate_random
    		nCountNext = nCountNext + 1
    	end
    end
    lâu quá rồi ko viết lua nên ko biết đúng cú pháp ko .
    Với lại random tọa độ đâu cần viết rườm rà như vậy.
    cảm ơn bạn để tối về mình thử hii
    Khách viếng thăm hãy cùng yeuVLTK xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  10. #7
    Thành Viên
    Ngày tham gia
    Apr 2014
    Bài viết
    288
    Thanks
    180
    Thanked 21 Times in 15 Posts

    Ðề: Xin giúp đỡ addnpc random tọa độ KHÔNG TRÙNG LẬP!

    Trích dẫn Gửi bởi BladeKnight109 [Only registered and activated users can see links. ]
    thử code bên dưới xem. 30 charrrrrrrrrrrrr


    hoặc cái này
    Code:
    local tbCircle = {}
    function main()
    local nCountNext = 0
    while (nCountNext < 300) do 
    	local rate_random = random(getn(tb_coords))
    	local _Flag = 1
    	for i=1,getn(tbCircle) do
    		if (tbCircle[i] == rate_random){
    			_Flag = 0
    			break;
    		}
    	end
    	if _Flag == 1 then
    		tbCircle[getn(tbCircle)+1] = rate_random
    		nCountNext = nCountNext + 1
    	end
    end
    lâu quá rồi ko viết lua nên ko biết đúng cú pháp ko .
    Với lại random tọa độ đâu cần viết rườm rà như vậy.

    Vẫn không được bạn ơi : ((((((((
    Khách viếng thăm hãy cùng yeuVLTK xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  11. #8
    Thành Viên
    Ngày tham gia
    Mar 2014
    Bài viết
    274
    Thanks
    42
    Thanked 165 Times in 97 Posts

    Ðề: Xin giúp đỡ addnpc random tọa độ KHÔNG TRÙNG LẬP!

    thử đoạn này, bạn tưởng tượng khu vực bạn add là hình tứ giác, lấy tọa độ góc trên trái và góc dưới phải thay thế vào tọa độ trong code

    Code:
    	local tb_coords = {}
    	local tb_npcs = {}
    	local nLpos = 47262
    	local nTpos = 96890
    	local nRpos = 48042
    	local nBtpos = 98280
    	local nRange = 100
    	local nRow = floor((nBtpos - nTpos) / nRange)
    	local nCol = floor((nRpos - nLpos) / nRange)
    	for i=0,nRow do
    		for j=0,nCol do
    			tb_coords[getn(tb_coords)+1] = {nLpos+i*nRange,nTpos+j*nRange}
    		end
    	end
    	NPC_MAX = 300
    	local nCoordNum = getn(tb_coords)
    	if nCoordNum <= NPC_MAX then
    		tb_npcs = tb_coords
    	else
    		local count = 0
    		repeat
    			local tb_rd = tb_coords[random(1,nCoordNum)]
    			local bHave = 0
    			for i=1,getn(tb_npcs) do
    				if tb_npcs[i][1] == tb_rd[1] and tb_npcs[i][2] == tb_rd[2] then
    					bHave = 1
    					break
    				end
    			end
    			if bHave == 0 then
    				tb_npcs[getn(tb_npcs)+1] = tb_rd
    				count = count + 1
    			end
    		until (count > NPC_MAX)
    	end
    
    	for i=1,getn(tb_npcs) do
    		local x,y = tb_npcs[i][1],tb_npcs[i][2]
    	end
    Lần sửa cuối bởi HoangTVT, ngày 02-03-18 lúc 07:51 AM.
    Khách viếng thăm hãy cùng HoangTVT xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  12. The Following 2 Users Say Thank You to HoangTVT For This Useful Post:

    killer20099 (02-03-18), yeuVLTK (02-03-18)

  13. #9
    Thành Viên
    Ngày tham gia
    May 2009
    Bài viết
    498
    Thanks
    278
    Thanked 96 Times in 18 Posts

    Ðề: Xin giúp đỡ addnpc random tọa độ KHÔNG TRÙNG LẬP!

    Trích dẫn Gửi bởi HoangTVT [Only registered and activated users can see links. ]
    thử đoạn này, bạn tưởng tượng khu vực bạn add là hình tứ giác, lấy tọa độ góc trên trái và góc dưới phải thay thế vào tọa độ trong code

    Code:
    	local tb_coords = {}
    	local tb_npcs = {}
    	local nLpos = 47262
    	local nTpos = 96890
    	local nRpos = 48042
    	local nBtpos = 98280
    	local nRange = 100
    	local nRow = floor((nBtpos - nTpos) / nRange)
    	local nCol = floor((nRpos - nLpos) / nRange)
    	for i=0,nRow do
    		for j=0,nCol do
    			tb_coords[getn(tb_coords)+1] = {nLpos+i*nRange,nTpos+j*nRange}
    		end
    	end
    	NPC_MAX = 300
    	local nCoordNum = getn(tb_coords)
    	if nCoordNum <= NPC_MAX then
    		tb_npcs = tb_coords
    	else
    		local count = 0
    		repeat
    			local tb_rd = tb_coords[random(1,nCoordNum)]
    			local bHave = 0
    			for i=1,getn(tb_npcs) do
    				if tb_npcs[i][1] == tb_rd[1] and tb_npcs[i][2] == tb_rd[2] then
    					bHave = 1
    					break
    				end
    			end
    			if bHave == 0 then
    				tb_npcs[getn(tb_npcs)+1] = tb_rd
    				count = count + 1
    			end
    		until (count > NPC_MAX)
    	end
    
    	for i=1,getn(tb_npcs) do
    		local x,y = tb_npcs[i][1],tb_npcs[i][2]
    	end
    Cảm ơn bạn!
    Nhưng nếu như vậy NPc có bị add vào mấy tọa độ mà nhân vật ko vào đc ko? (Nhà, núi, cây, sông,..)
    Khách viếng thăm hãy cùng trungkhuyen xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  14. #10
    Thành Viên
    Ngày tham gia
    Apr 2014
    Bài viết
    288
    Thanks
    180
    Thanked 21 Times in 15 Posts

    Ðề: Xin giúp đỡ addnpc random tọa độ KHÔNG TRÙNG LẬP!

    Trích dẫn Gửi bởi trungkhuyen [Only registered and activated users can see links. ]
    Cảm ơn bạn!
    Nhưng nếu như vậy NPc có bị add vào mấy tọa độ mà nhân vật ko vào đc ko? (Nhà, núi, cây, sông,..)
    mình cũng có thắc mắc như bạn trên...không biết NPc có bị kẹt trong đó không?
    Khách viếng thăm hãy cùng yeuVLTK xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 
Trang 1 của 3 1 2 3 CuốiCuối

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

  1. [JX] Mong mấy pro giúp về addNpc
    Bởi davichi trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 2
    Bài viết cuối: 08-01-15, 04:33 AM
  2. Ai có thể edit giùm tôi cái tool addnpc
    Bởi cuncon82 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 10
    Bài viết cuối: 02-05-11, 07:54 PM
  3. Giúp mình sử dụng hàm addNpc
    Bởi nguyenquocbo trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 3
    Bài viết cuối: 29-11-10, 07:17 PM

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:49 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ệ.