Daily random supplies

MikZ

New member
Messages
461
Points
0
Hi!

May I request a sample random prize giver.
What I'm looking for is.

This npc will give all 3 set  1 type of item from set A,B to C randomly, with random number of pieces too.

Set A: random (1x,10x) pcs

random :656 , 657 , 505 , 645 , 506 , 14510 

Set B: random (5x,15x) pcs

random :656 , 657 , 505 , 645 , 506 , 14510 

Set C: random (10x,20x) pcs

random :656 , 657 , 505 , 645 , 506 , 14510 

please help me. 

thanks!

 
Hi!

May I request a sample random prize giver.
What I'm looking for is.

This npc will give all 3 set  1 type of item from set A,B to C randomly, with random number of pieces too.

Set A: random (1x,10x) pcs

random :656 , 657 , 505 , 645 , 506 , 14510 

Set B: random (5x,15x) pcs

random :656 , 657 , 505 , 645 , 506 , 14510 

Set C: random (10x,20x) pcs

random :656 , 657 , 505 , 645 , 506 , 14510 

please help me. 

thanks!
Like this?

prontera,158,167,3 script Sample 4_M_SIT_NOVICE,{
if (#gotreward + .next_take> gettimetick(2)) {
mes "[Random Item Giver]";
mes "Please talk to me after 24 hours.";
close;
}
else {
set .random1,rand(getarraysize (.count1));
set .random2,rand(getarraysize (.count2));
set .random3,rand(getarraysize (.count3));
mes "[Random Item Giver]";
mes "Have some of these!";
getitem .item[rand(getarraysize (.item))],.count1[.random1];
getitem .item[rand(getarraysize (.item))],.count2[.random2];
getitem .item[rand(getarraysize (.item))],.count3[.random3];
#gotreward = gettimetick(2);
next;
close;
}


OnInit:
.next_take = 24*60*60;
setarray .item[0],656,657,505,645,506,14510;
setarray .count1[0],1,10;
setarray .count2[0],5,15;
setarray .count3[0],10,20;
end;
}


Edit: 
Thought it was 1-10 , 5-15 , and 10-20 instead of 1,10 5,15 and 10,20

 
Last edited by a moderator:
Set A: random (1x,10x) pcs

random :656 , 657 , 505 , 645 , 506 , 14510 

Set B: random (5x,15x) pcs

random :656 , 657 , 505 , 645 , 506 , 14510 

Set C: random (10x,20x) pcs

random :656 , 657 , 505 , 645 , 506 , 14510
curious, why all 3 sets have same item ID ?
so it means they can be repeated ?

Code:
prontera,155,185,5	script	kjdsfhskhf	1_F_MARIA,{	
	getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(1,10);
	getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(5,15);
	getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(10,20);
	end;
}
 
prontera,158,167,3 script Sample 4_M_SIT_NOVICE,{

if (#xTaken + .next_take> gettimetick(2)) {
mes "[Random Item Giver]";
mes "Please talk to me after 24 hours.";
close;
}
else {

mes "[Random Item Giver]";
mes "Have some of these!";
.@riRate1 = rand (.@Ai11,.@Ai12);
.@riRate2 = rand (.@Ai21,.@Ai22);
.@riRate3 = rand (.@Ai31,.@Ai32);
.@rItemid1 = .@Aitem1[rand(getarraysize (.@Aitem1))];
.@rItemid2 = .@Aitem2[rand(getarraysize (.@Aitem2))];
.@rItemid3 = .@Aitem3[rand(getarraysize (.@Aitem3))];
getitem ( .@rItemid1, .@riRate1 ) ;
// dispbottom ( "rItemid1 :: " + .@rItemid1 + " riRate1 :: " + .@riRate1 + " Name :: " + getitemname ( .@rItemid1 ) ) ; // debug use only !!!
getitem ( .@rItemid2, .@riRate2 ) ;
// dispbottom ( "rItemid2 :: " + .@rItemid2 + " riRate2 :: " + .@riRate2 + " Name :: " + getitemname ( .@rItemid2 ) ) ; // debug use only !!!
getitem ( .@rItemid3, .@riRate3 ) ;
// dispbottom ( "rItemid3 :: " + .@rItemid3 + " riRate3 :: " + .@riRate3 + " Name :: " + getitemname ( .@rItemid3 ) ) ; // debug use only !!!
#xTaken = gettimetick(2);
next;
close;
}


OnInit:

//set cooldown to take item again.
.next_take = 24*60*60;

//set item here
setarray .Aitem1[0],501,502,503,504,505,14510;
setarray .Aitem2[0],601,602,603,604,605,14510;
setarray .Aitem3[0],701,702,703,704,705,14510;
//set rate here
.Ai11 = 1;
.Ai12 = 10;
.Ai21 = 5;
.Ai22 = 15;
.Ai31 = 10;
.Ai32 = 20;

end;
}



Refined and fixed up npc variable..

 
Last edited by a moderator:
prontera,158,167,3 script Sample 4_M_SIT_NOVICE,{

if (#xTaken + .next_take> gettimetick(2)) {
mes "[Random Item Giver]";
mes "Please talk to me after 24 hours.";
close;
}
else {

mes "[Random Item Giver]";
mes "Have some of these!";
.@riRate1 = rand (.@Ai11,.@Ai12);
.@riRate2 = rand (.@Ai21,.@Ai22);
.@riRate3 = rand (.@Ai31,.@Ai32);
.@rItemid1 = .@Aitem1[rand(getarraysize (.@Aitem1))];
.@rItemid2 = .@Aitem2[rand(getarraysize (.@Aitem2))];
.@rItemid3 = .@Aitem3[rand(getarraysize (.@Aitem3))];
getitem ( .@rItemid1, .@riRate1 ) ;
// dispbottom ( "rItemid1 :: " + .@rItemid1 + " riRate1 :: " + .@riRate1 + " Name :: " + getitemname ( .@rItemid1 ) ) ; // debug use only !!!
getitem ( .@rItemid2, .@riRate2 ) ;
// dispbottom ( "rItemid2 :: " + .@rItemid2 + " riRate2 :: " + .@riRate2 + " Name :: " + getitemname ( .@rItemid2 ) ) ; // debug use only !!!
getitem ( .@rItemid3, .@riRate3 ) ;
// dispbottom ( "rItemid3 :: " + .@rItemid3 + " riRate3 :: " + .@riRate3 + " Name :: " + getitemname ( .@rItemid3 ) ) ; // debug use only !!!
#xTaken = gettimetick(2);
next;
close;
}


OnInit:

//set cooldown to take item again.
.next_take = 24*60*60;

//set item here
setarray .Aitem1[0],501,502,503,504,505,14510;
setarray .Aitem2[0],601,602,603,604,605,14510;
setarray .Aitem3[0],701,702,703,704,705,14510;
//set rate here
.Ai11 = 1;
.Ai12 = 10;
.Ai21 = 5;
.Ai22 = 15;
.Ai31 = 10;
.Ai32 = 20;

end;
}



Refined and fixed up npc variable..
@utofaery Hello, just what i wanted with success rate for rare ones, can you add countdown timer 

"you still have 00 hours, minute/s seconds countdown to get next supplies"

Also, im getting error like and no items were given.

Buildin_getitem: Nonexistant item 0 requested.

curious, why all 3 sets have same item ID ?
so it means they can be repeated ?

prontera,155,185,5 script kjdsfhskhf 1_F_MARIA,{
getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(1,10);
getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(5,15);
getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(10,20);
end;
}

Hi @AnnieRuru yes can be repeated. can you add rates for the rare ones, like the above. thnx!

 
Last edited by a moderator:
https://github.com/AnnieRuru/Release/blob/master/Guides/Daily Quest - use gettimetick(2) or gettimestr.md

Code:
function	script	timeleft__	{
	.@left = getarg(0);
	if ( .@left <= 0 )
		return getarg(0);
	.@day = .@left / 86400;
	.@hour = .@left % 86400 / 3600;
	.@min = .@left % 3600 / 60;
	.@sec = .@left % 60;
	if ( .@day )
		return sprintf( _$( "%d day %d hour" ), .@day, .@hour );
	else if ( .@hour )
		return sprintf( _$( "%d hour %d min" ), .@hour, .@min );
	else if ( .@min )
		return sprintf( _$( "%d min %d sec" ), .@min, .@sec );
	else
		return sprintf( _$( "%d sec" ), .@sec );
}

prontera,155,185,5	script	kjdsfhskhf	1_F_MARIA,{
	.@today = atoi( gettimestr( "%Y%m%d", 9 ) );
	if ( #daily_supply == .@today ) {
		mes "You have already taken today's supply";
		mesf "You have to wait %s countdown to get next supply", timeleft__( getcalendartime(0,0) - gettimetick(2) );
		close;
	}
	getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(1,10);
	getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(5,15);
	getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(10,20);
	#daily_supply = .@today;
	end;
}
 
https://github.com/AnnieRuru/Release/blob/master/Guides/Daily Quest - use gettimetick(2) or gettimestr.md

function script timeleft__ {
.@left = getarg(0);
if ( .@left <= 0 )
return getarg(0);
.@day = .@left / 86400;
.@hour = .@left % 86400 / 3600;
.@min = .@left % 3600 / 60;
.@sec = .@left % 60;
if ( .@day )
return sprintf( _$( "%d day %d hour" ), .@day, .@hour );
else if ( .@hour )
return sprintf( _$( "%d hour %d min" ), .@hour, .@min );
else if ( .@min )
return sprintf( _$( "%d min %d sec" ), .@min, .@sec );
else
return sprintf( _$( "%d sec" ), .@sec );
}

prontera,155,185,5 script kjdsfhskhf 1_F_MARIA,{
.@today = atoi( gettimestr( "%Y%m%d", 9 ) );
if ( #daily_supply == .@today ) {
mes "You have already taken today's supply";
mesf "You have to wait %s countdown to get next supply", timeleft__( getcalendartime(0,0) - gettimetick(2) );
close;
}
getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(1,10);
getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(5,15);
getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(10,20);
#daily_supply = .@today;
end;
}

That was fast,

I like to add some twist, can you add like rate for rare one.

example item 506 is @ 5% and item 14510 is @ 2% success chance to get in set A

for set b 505 @ 9% and 657 @ 1%

for Set C 657 @ 10% 14510 @ 1%.
of course ill be adding more item like bubble gums, Food items, TCGs

something like that. thanks!

 
function script F_MesItemInfo {
.@item = getarg(0);
.@itemname$ = getitemname(.@item);
if (.@itemname$ != "null") {
.@itemslot = getitemslots(.@item);
if (.@itemslot)
.@itemname$ = sprintf("%s [%d]", .@itemname$, .@itemslot);
}
else
.@itemname$ = "Unknown Item";
if (PACKETVER >= 20150729)
return sprintf("<ITEM>%s<INFO>%d</INFO></ITEM>", .@itemname$, .@item);
else if (PACKETVER >= 20130130)
return sprintf("<ITEMLINK>%s<INFO>%d</INFO></ITEMLINK>", .@itemname$, .@item);
else
return .@itemname$;
}

function script timeleft__ {
.@left = getarg(0);
if ( .@left <= 0 )
return getarg(0);
.@day = .@left / 86400;
.@hour = .@left % 86400 / 3600;
.@min = .@left % 3600 / 60;
.@sec = .@left % 60;
if ( .@day )
return sprintf( _$( "%d day %d hour" ), .@day, .@hour );
else if ( .@hour )
return sprintf( _$( "%d hour %d min" ), .@hour, .@min );
else if ( .@min )
return sprintf( _$( "%d min %d sec" ), .@min, .@sec );
else
return sprintf( _$( "%d sec" ), .@sec );
}

prontera,155,185,5 script kjdsfhskhf 1_F_MARIA,{
// #daily_supply = 0;
.@today = atoi( gettimestr( "%Y%m%d", 9 ) );
if ( #daily_supply == .@today ) {
mes "You have already taken today's supply";
mesf "You have to wait %s countdown to get next supply", timeleft__( getcalendartime(0,0) - gettimetick(2) );
}
else if ( checkweight( Knife, 3 ) == false ) {
mes "It appears you have overweight";
}
else {
mes "Retrieving today's supply...";
for ( .@i = 1; .@i <= 3; ++.@i ) {
.@r = rand(.totalchance[.@i]);
for ( .@j = 3; ( .@r -= getd(".item"+ .@i +"["+ .@j +"]") ) >= 0; .@j += 2 );
getitem getd(".item"+ .@i +"["+( .@j -1 )+"]"), rand( getd(".item"+ .@i +"[0]"), getd(".item"+ .@i +"[1]") );
}
#daily_supply = .@today;
}
next;
// chinese government enforce the law when giving items based on probability
mes "The Chances are:-";
for ( .@i = 1; .@i <= 3; ++.@i ) {
mes " ";
mesf "Set %d :", .@i;
mesf "Randomly get any one type of these item, the amount between %d~%d", getd(".item"+ .@i +"[0]"), getd(".item"+ .@i +"[1]");
for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 )
mesf "%s : %s", F_MesItemInfo( getd(".item"+ .@i +"["+( .@j -1 )+"]") ), getd(".chance_display_item"+ .@i +"$["+ .@j +"]");
}
close;
OnInit:
setarray .item1,
1, 10, // amount : rand(1,10)
// chance of getting the items Set#1
// <Item ID>,<chance>
Red_Potion, 5,
Orange_Potion, 4,
Yellow_Potion, 3,
White_Potion, 2,
Blue_Potion, 1,
Green_Potion, 6;

setarray .item2,
5, 15, // amount : rand(5,15)
// chance of getting the items Set#1
// <Item ID>,<chance>
Red_Herb, 5,
Yellow_Herb, 4,
White_Herb, 3,
Blue_Herb, 2,
Green_Herb, 1;

setarray .item3,
10, 20, // amount : rand(10,20)
// chance of getting the items Set#1
// <Item ID>,<chance>
Apple, 5,
Banana, 4,
Grape, 3,
Carrot, 2,
Sweet_Potato, 1,
Meat, 99,
Honey, 50,
Milk, 100;

for ( .@i = 1; .@i <= 3; ++.@i ) {
setd ".item"+ .@i +"size", getarraysize( getd(".item"+ .@i) );
for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 )
.totalchance[.@i] += getd(".item"+ .@i +"["+ .@j +"]");
for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 ) {
.@chance = getd(".item"+ .@i +"["+ .@j +"]") *10000 / .totalchance[.@i];
.@division = .@chance / 100;
.@remainder$ = .@chance % 100;
while ( getstrlen(.@remainder$) < 2 )
.@remainder$ = insertchar(.@remainder$, "0", 0);
setd ".chance_display_item"+ .@i +"$["+ .@j +"]", .@division +"."+ .@remainder$ +"%";
}
}
end;
}

erm ... its getting interestingly ... complexity ...

 
Last edited by a moderator:
function script F_MesItemInfo {
.@item = getarg(0);
.@itemname$ = getitemname(.@item);
if (.@itemname$ != "null") {
.@itemslot = getitemslots(.@item);
if (.@itemslot)
.@itemname$ = sprintf("%s [%d]", .@itemname$, .@itemslot);
}
else
.@itemname$ = "Unknown Item";
if (PACKETVER >= 20150729)
return sprintf("<ITEM>%s<INFO>%d</INFO></ITEM>", .@itemname$, .@item);
else if (PACKETVER >= 20130130)
return sprintf("<ITEMLINK>%s<INFO>%d</INFO></ITEMLINK>", .@itemname$, .@item);
else
return .@itemname$;
}

function script timeleft__ {
.@left = getarg(0);
if ( .@left <= 0 )
return getarg(0);
.@day = .@left / 86400;
.@hour = .@left % 86400 / 3600;
.@min = .@left % 3600 / 60;
.@sec = .@left % 60;
if ( .@day )
return sprintf( _$( "%d day %d hour" ), .@day, .@hour );
else if ( .@hour )
return sprintf( _$( "%d hour %d min" ), .@hour, .@min );
else if ( .@min )
return sprintf( _$( "%d min %d sec" ), .@min, .@sec );
else
return sprintf( _$( "%d sec" ), .@sec );
}

prontera,155,185,5 script kjdsfhskhf 1_F_MARIA,{
// #daily_supply = 0;
.@today = atoi( gettimestr( "%Y%m%d", 9 ) );
if ( #daily_supply == .@today ) {
mes "You have already taken today's supply";
mesf "You have to wait %s countdown to get next supply", timeleft__( getcalendartime(0,0) - gettimetick(2) );
}
else if ( checkweight( Knife, 3 ) == false ) {
mes "It appears you have overweight";
}
else {
mes "Retrieving today's supply...";
for ( .@i = 1; .@i <= 3; ++.@i ) {
.@r = rand(.totalchance[.@i]);
for ( .@j = 3; ( .@r -= getd(".item"+ .@i +"["+ .@j +"]") ) >= 0; .@j += 2 );
getitem getd(".item"+ .@i +"["+( .@j -1 )+"]"), rand( getd(".item"+ .@i +"[0]"), getd(".item"+ .@i +"[1]") );
}
#daily_supply = .@today;
}
next;
// chinese government enforce the law when giving items based on probability
mes "The Chances are:-";
for ( .@i = 1; .@i <= 3; ++.@i ) {
mes " ";
mesf "Set %d :", .@i;
mesf "Randomly get any one type of these item, the amount between %d~%d", getd(".item"+ .@i +"[0]"), getd(".item"+ .@i +"[1]");
for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 )
mesf "%s : %s", F_MesItemInfo( getd(".item"+ .@i +"["+( .@j -1 )+"]") ), getd(".chance_display_item"+ .@i +"$["+ .@j +"]");
}
close;
OnInit:
setarray .item1,
1, 10, // amount : rand(1,10)
// chance of getting the items Set#1
// <Item ID>,<chance>
Red_Potion, 5,
Orange_Potion, 4,
Yellow_Potion, 3,
White_Potion, 2,
Blue_Potion, 1,
Green_Potion, 6;

setarray .item2,
5, 15, // amount : rand(5,15)
// chance of getting the items Set#1
// <Item ID>,<chance>
Red_Herb, 5,
Yellow_Herb, 4,
White_Herb, 3,
Blue_Herb, 2,
Green_Herb, 1;

setarray .item3,
10, 20, // amount : rand(10,20)
// chance of getting the items Set#1
// <Item ID>,<chance>
Apple, 5,
Banana, 4,
Grape, 3,
Carrot, 2,
Sweet_Potato, 1,
Meat, 99,
Honey, 50,
Milk, 100;

for ( .@i = 1; .@i <= 3; ++.@i ) {
setd ".item"+ .@i +"size", getarraysize( getd(".item"+ .@i) );
for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 )
.totalchance[.@i] += getd(".item"+ .@i +"["+ .@j +"]");
for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 ) {
.@chance = getd(".item"+ .@i +"["+ .@j +"]") *10000 / .totalchance[.@i];
.@division = .@chance / 100;
.@remainder$ = .@chance % 100;
while ( getstrlen(.@remainder$) < 2 )
.@remainder$ = insertchar(.@remainder$, "0", 0);
setd ".chance_display_item"+ .@i +"$["+ .@j +"]", .@division +"."+ .@remainder$ +"%";
}
}
end;
}

erm ... its getting interestingly ... complexity ...
Perfect!
Thank you so much @AnnieRuru

 
function script F_MesItemInfo {
.@item = getarg(0);
.@itemname$ = getitemname(.@item);
if (.@itemname$ != "null") {
.@itemslot = getitemslots(.@item);
if (.@itemslot)
.@itemname$ = sprintf("%s [%d]", .@itemname$, .@itemslot);
}
else
.@itemname$ = "Unknown Item";
if (PACKETVER >= 20150729)
return sprintf("<ITEM>%s<INFO>%d</INFO></ITEM>", .@itemname$, .@item);
else if (PACKETVER >= 20130130)
return sprintf("<ITEMLINK>%s<INFO>%d</INFO></ITEMLINK>", .@itemname$, .@item);
else
return .@itemname$;
}

function script timeleft__ {
.@left = getarg(0);
if ( .@left <= 0 )
return getarg(0);
.@day = .@left / 86400;
.@hour = .@left % 86400 / 3600;
.@min = .@left % 3600 / 60;
.@sec = .@left % 60;
if ( .@day )
return sprintf( _$( "%d day %d hour" ), .@day, .@hour );
else if ( .@hour )
return sprintf( _$( "%d hour %d min" ), .@hour, .@min );
else if ( .@min )
return sprintf( _$( "%d min %d sec" ), .@min, .@sec );
else
return sprintf( _$( "%d sec" ), .@sec );
}

prontera,155,185,5 script kjdsfhskhf 1_F_MARIA,{
// #daily_supply = 0;
.@today = atoi( gettimestr( "%Y%m%d", 9 ) );
if ( #daily_supply == .@today ) {
mes "You have already taken today's supply";
mesf "You have to wait %s countdown to get next supply", timeleft__( getcalendartime(0,0) - gettimetick(2) );
}
else if ( checkweight( Knife, 3 ) == false ) {
mes "It appears you have overweight";
}
else {
mes "Retrieving today's supply...";
for ( .@i = 1; .@i <= 3; ++.@i ) {
.@r = rand(.totalchance[.@i]);
for ( .@j = 3; ( .@r -= getd(".item"+ .@i +"["+ .@j +"]") ) >= 0; .@j += 2 );
getitem getd(".item"+ .@i +"["+( .@j -1 )+"]"), rand( getd(".item"+ .@i +"[0]"), getd(".item"+ .@i +"[1]") );
}
#daily_supply = .@today;
}
next;
// chinese government enforce the law when giving items based on probability
mes "The Chances are:-";
for ( .@i = 1; .@i <= 3; ++.@i ) {
mes " ";
mesf "Set %d :", .@i;
mesf "Randomly get any one type of these item, the amount between %d~%d", getd(".item"+ .@i +"[0]"), getd(".item"+ .@i +"[1]");
for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 )
mesf "%s : %s", F_MesItemInfo( getd(".item"+ .@i +"["+( .@j -1 )+"]") ), getd(".chance_display_item"+ .@i +"$["+ .@j +"]");
}
close;
OnInit:
setarray .item1,
1, 10, // amount : rand(1,10)
// chance of getting the items Set#1
// <Item ID>,<chance>
Red_Potion, 5,
Orange_Potion, 4,
Yellow_Potion, 3,
White_Potion, 2,
Blue_Potion, 1,
Green_Potion, 6;

setarray .item2,
5, 15, // amount : rand(5,15)
// chance of getting the items Set#1
// <Item ID>,<chance>
Red_Herb, 5,
Yellow_Herb, 4,
White_Herb, 3,
Blue_Herb, 2,
Green_Herb, 1;

setarray .item3,
10, 20, // amount : rand(10,20)
// chance of getting the items Set#1
// <Item ID>,<chance>
Apple, 5,
Banana, 4,
Grape, 3,
Carrot, 2,
Sweet_Potato, 1,
Meat, 99,
Honey, 50,
Milk, 100;

for ( .@i = 1; .@i <= 3; ++.@i ) {
setd ".item"+ .@i +"size", getarraysize( getd(".item"+ .@i) );
for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 )
.totalchance[.@i] += getd(".item"+ .@i +"["+ .@j +"]");
for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 ) {
.@chance = getd(".item"+ .@i +"["+ .@j +"]") *10000 / .totalchance[.@i];
.@division = .@chance / 100;
.@remainder$ = .@chance % 100;
while ( getstrlen(.@remainder$) < 2 )
.@remainder$ = insertchar(.@remainder$, "0", 0);
setd ".chance_display_item"+ .@i +"$["+ .@j +"]", .@division +"."+ .@remainder$ +"%";
}
}
end;
}

erm ... its getting interestingly ... complexity ...
@AnnieRuru sorry, what if I add case 2 for 12 hours.

Can i Just add these? but im getting infinity loop.

Code:
Case 2:
	mes "Retrieving today's half day supplies...";
		for ( .@i = 1; .@i <= 3; ++.@i ) {
			.@r = rand(.totalchance[.@i]);
			for ( .@j = 3; ( .@r -= getd(".twelve"+ .@i +"["+ .@j +"]") ) >= 0; .@j += 2 );
			getitem getd(".twelve"+ .@i +"["+( .@j -1 )+"]"), rand( getd(".twelve"+ .@i +"[0]"), getd(".twelve"+ .@i +"[1]") );
		}	
		#daily_twelvet = gettimetick(2);
	}

	close;
}

OnInit:
       setarray .twelve1,
		1, 10, // amount : rand(1,10)
	//	chance of getting the items Set#1
	//	<Item ID>,<chance>
		Red_Potion,    5,
		Orange_Potion, 4,
		Yellow_Potion, 3,
		White_Potion,  2,
		Blue_Potion,   1,
		Green_Potion,  6;

	setarray .twelve2,
		5, 15, // amount : rand(5,15)
	//	chance of getting the items Set#1
	//	<Item ID>,<chance>
		Red_Herb,    5,
		Yellow_Herb, 4,
		White_Herb,  3,
		Blue_Herb,   2,
		Green_Herb,  1;

	setarray .twelve3,
		10, 20, // amount : rand(10,20)
	//	chance of getting the items Set#1
	//	<Item ID>,<chance>
		Apple,        5,
		Banana,       4,
		Grape,        3,
		Carrot,       2,
		Sweet_Potato, 1,
		Meat,         99, 
		Honey,        50,
		Milk,         100;


	for ( .@i = 1; .@i <= 3; ++.@i ) {
		setd ".twelve"+ .@i +"size", getarraysize( getd(".twelve"+ .@i) );
		for ( .@j = 3; .@j < getd(".twelve"+ .@i +"size"); .@j += 2 )
			.totalchance[.@i] += getd(".twelve"+ .@i +"["+ .@j +"]");
		for ( .@j = 3; .@j < getd(".twelve"+ .@i +"size"); .@j += 2 ) {
			.@chance = getd(".twelve"+ .@i +"["+ .@j +"]") *10000 / .totalchance[.@i];
			.@division = .@chance / 100;
			.@remainder$ = .gchance % 100;
			while ( getstrlen(.@gremainder$) < 2 )
				.@remainder$ = insertchar(.@remainder$, "0", 0);
			setd ".chance_display_item"+ .@i +"$["+ .@j +"]", .@division +"."+ .@remainder$ +"%";
		}
	}

	end;
}
 
Last edited by a moderator:
can we do this with quest log system instead ?



there is no need to waste a variable ... well, quest log system also support UI

screen2019Hercules032.jpg


problem ? not every server use up to date client version

are you using client version in year 2018 ?
I'm using PACKETVER 20180621

and for your answer, just add *getcalendartime(12,0) something like that on the daily quest log script

if your server using up to date client version, then I could write this script easily with *getcalendartime script command
using outdated client version, then have to hijack another script variable

 
Last edited by a moderator:
problem ? not every server use up to date client version

are you using client version in year 2018 ?
I'm using PACKETVER 20180621

and for your answer, just add *getcalendartime(12,0) something like that on the daily quest log script

if your server using up to date client version, then I could write this script easily with *getcalendartime script command
using outdated client version, then have to hijack another script variable
I'm planning to, meantime I'm using 20141022 . Awaiting from AndRO dev how can I update my client in mobile and if it is free.

does 20180621 is stable?

 
Last edited by a moderator:
Back
Top