PDA

View Full Version : [JX] LINUX - cần hướng dẫn script random!



trungkhuyen
14-11-16, 11:37 PM
Mình muốn viết một NPC cứ một khoảng thời gian thì xuất hiện, rồi mình dùng
SetNpcTimer(nNpcIndex, 15*60*18); để sau 15 phút NPC đó biến mất. Và Script của NPC đó là bán đồ, ngẫu nhiên bán các loại mình phải viết thế nào để con NPC trong 15 phút xuất hiện đó chỉ bán một loại sản phẩm ngẫu nhiên?? (chứ mình click vào NPC đó thì lúc bán cái này lúc bán cái nọ trong 15 phút của nó)
function OnBuy()local mua = random (0,330)
if mua < 100 then
Sale( 150, 2 );

elseif (mua >= 100 and mua < 180 ) then
Sale( 148);

elseif (mua >= 180 and mua < 240 ) then
Sale( 149);

elseif (mua >= 240 and mua < 290 ) then
Sale( 141);

else
Sale( 147);

end

end

vn_soldier
15-11-16, 07:09 AM
set param cho npc khi npc được add

SetNpcParam(nNpcIndex, 1, random(0,330))

khi đối thoại

function main(nNpcIndex)
local mua = GetNpcParam(nNpcIndex, 1);
if mua < 100 then
Sale( 150, 2 );

elseif (mua >= 100 and mua < 180 ) then
Sale( 148);

elseif (mua >= 180 and mua < 240 ) then
Sale( 149);

elseif (mua >= 240 and mua < 290 ) then
Sale( 141);

else
Sale( 147);

end

end

trungkhuyen
16-11-16, 01:38 PM
set param cho npc khi npc được add

SetNpcParam(nNpcIndex, 1, random(0,330))

khi đối thoại

function main(nNpcIndex)
local mua = GetNpcParam(nNpcIndex, 1);
if mua < 100 then
Sale( 150, 2 );

elseif (mua >= 100 and mua < 180 ) then
Sale( 148);

elseif (mua >= 180 and mua < 240 ) then
Sale( 149);

elseif (mua >= 240 and mua < 290 ) then
Sale( 141);

else
Sale( 147);

end

end
,
không được bạn ơi!!! nó chỉ cho ra duy nhất giao dịch Sale ( 150, 2 ) thôi à!!
.
Mình đã làm được rồi... bằng cách random SetTask lúc AddNpc ...Nhưng log nhân vật khác thì lại ramdom 1 setTask mới : (((((((((((((((((

nhaodzo
17-11-16, 01:11 AM
sao ko dùng như này cho đơn giản này, đưa 4 shop đó về cùng 1 dải 149 150 151 152 hoặc cao hơn cho đỡ trùng shop khác.
sau đó thì Sale(random(149,152))

yeuVLTK
17-11-16, 02:13 AM
làm như bạn ấy là đc rồi.................

trungkhuyen
17-11-16, 02:15 AM
sao ko dùng như này cho đơn giản này, đưa 4 shop đó về cùng 1 dải 149 150 151 152 hoặc cao hơn cho đỡ trùng shop khác.
sau đó thì Sale(random(149,152))

.
à há... hahaahahahha.... vậy mà hông nghĩ ra........ cảm ơn gái nhiều nha... : )))))

trungkhuyen
17-11-16, 09:14 AM
sao ko dùng như này cho đơn giản này, đưa 4 shop đó về cùng 1 dải 149 150 151 152 hoặc cao hơn cho đỡ trùng shop khác.
sau đó thì Sale(random(149,152))
.
không được rồi bạn.........vì tuy mình chơi off nhưng chơi nhiều acc, với lại lúc hệ thống add NPC này vào thì mình mún nó cố định loại giao dịch đã random, nhưng mình làm ko đc, cứ lick vào là shop này, lick lại thì shop kia...

vn_soldier
17-11-16, 09:37 AM
,
không được bạn ơi!!! nó chỉ cho ra duy nhất giao dịch Sale ( 150, 2 ) thôi à!!
.
Mình đã làm được rồi... bằng cách random SetTask lúc AddNpc ...Nhưng log nhân vật khác thì lại ramdom 1 setTask mới : (((((((((((((((((


cạn lời với bạn, h code bạn được hiểu là như này:

với 330 lần đối thoại với npc thì có
100 lần Sale( 150, 2 )
80 lần Sale( 148)
60 lần Sale( 149)
50 lần Sale( 141)
40 lần Sale( 147)

với 15 phút 1 lần xuất hiện như bạn thì bạn nghĩ sẽ có tỷ lệ cao xuất hiện các shop khác nhau được ko, h muốn khả năng cao ra nhiều loại khác nhau thì làm ơn random(0,4) thôi


SetNpcParam(nNpcIndex, 1, random(0,4))


function main(nNpcIndex)
local mua = GetNpcParam(nNpcIndex, 1);
if mua == 0 then
Sale( 150, 2 );

elseif (mua == 1) then
Sale( 148);

elseif (mua == 2 ) then
Sale( 149);

elseif (mua == 3 ) then
Sale( 141);

else
Sale( 147);

end

end

trungkhuyen
17-11-16, 10:17 AM
cạn lời với bạn, h code bạn được hiểu là như này:

với 330 lần đối thoại với npc thì có
100 lần Sale( 150, 2 )
80 lần Sale( 148)
60 lần Sale( 149)
50 lần Sale( 141)
40 lần Sale( 147)

với 15 phút 1 lần xuất hiện như bạn thì bạn nghĩ sẽ có tỷ lệ cao xuất hiện các shop khác nhau được ko, h muốn khả năng cao ra nhiều loại khác nhau thì làm ơn random(0,4) thôi


SetNpcParam(nNpcIndex, 1, random(0,4))


function main(nNpcIndex)
local mua = GetNpcParam(nNpcIndex, 1);
if mua == 0 then
Sale( 150, 2 );

elseif (mua == 1) then
Sale( 148);

elseif (mua == 2 ) then
Sale( 149);

elseif (mua == 3 ) then
Sale( 141);

else
Sale( 147);

end

end
.
không phải đâu..theo mình random(0,330) thì là tỉ lệ 100/330 , 80/ 330 ,... vì lúc mình ko SetParam + cùng random đó thì code giao dịch được random theo tỉ lệ mình đặt chứ ko phải 100 lần, gì đó mới đến code giao dịch tiếp theo... ( vậy phải chăng SetParam có nhiệm vụ "xoay vòng" random(x -> y) ??? ")

Và ý mình muốn giúp đỡ là mỗi lần NPC được add thì cả sever chỉ nhận đc một trong random giao dịch của NPC đó ...đến khi NPC này biến mất và thay NPC mới với script random mới... chú ko phải click vào thì random cái này, click lần 2 thì random cái kia, .. hoặc dùng SetTask thì nhân vật này random này, nhân vật kia random kia,...

vn_soldier
17-11-16, 10:25 AM
.
không phải đâu..theo mình random(0,330) thì là tỉ lệ 100/330 , 80/ 330 ,... vì lúc mình ko SetParam + cùng random đó thì code giao dịch được random theo tỉ lệ mình đặt chứ ko phải 100 lần, gì đó mới đến code giao dịch tiếp theo... ( vậy phải chăng SetParam có nhiệm vụ "xoay vòng" random(x -> y) ??? ")

giải thích cho bạn làm hại não mình quá, ví dụ bây giờ khi bạn add npc xong setnpcparam được random ra số 3 đi. Thì cho đến lần setnpcparam tiếp theo thì trong 15p đó khi getnpcparam sẽ luôn bằng 3, thì theo code mình nói thì khi người chơi đối thoại nó chỉ chạy sale(141) thôi

trungkhuyen
17-11-16, 10:43 AM
giải thích cho bạn làm hại não mình quá, ví dụ bây giờ khi bạn add npc xong setnpcparam được random ra số 3 đi. Thì cho đến lần setnpcparam tiếp theo thì trong 15p đó khi getnpcparam sẽ luôn bằng 3, thì theo code mình nói thì khi người chơi đối thoại nó chỉ chạy sale(141) thôi
.
ra là vậy...vì mình chưa hiểu về SetNpcTimer ... vậy nếu mình SetNpcTimer = 2 phút mà con Npc này 15' mới biến mất thì sẽ thế nào khi sang phút thứ 3 trở đi??

yeuVLTK
08-11-17, 11:38 PM
set param cho npc khi npc được add

SetNpcParam(nNpcIndex, 1, random(0,330))

khi đối thoại

function main(nNpcIndex)
local mua = GetNpcParam(nNpcIndex, 1);
if mua < 100 then
Sale( 150, 2 );

elseif (mua >= 100 and mua < 180 ) then
Sale( 148);

elseif (mua >= 180 and mua < 240 ) then
Sale( 149);

elseif (mua >= 240 and mua < 290 ) then
Sale( 141);

else
Sale( 147);

end

end

Chủ Top làm không được theo mình có thể do file đối thoại ko có thêm đường dẫn file addnpc Và SetNpcParam() bạn ấy để trước dòng SetNpcScript() khi add!