kayko11 0 Posted July 13, 2018 function script box____ { setarray .@reward, 14003, 100, 14003, 100, 12914, 100, 12914, 100, 12913, 100, 12913, 100, 12900, 100, 12900, 100, 13990, 100, 13990, 100, 14158, 100, 14158, 100, 12909, 100, 12909, 100, 14004, 100, 14004, 100, 12221, 100, 12221, 100, 7776, 100, 7776, 100, 12213, 15, 6320, 15, 19599, 3, 20221, 3, 19952, 3, 19664, 3, 19954, 3, 20313, 3, 19589, 3, 19596, 3; set .@size, getarraysize( .@reward ); for( set .@i, 1; .@i < .@size; .@i += 2 ) { .@percent[.@i] = .@total + .@reward[.@i]; .@total += .@reward[.@i]; } .@r = rand( .@total +1 ); for( set .@i, 1; .@i < .@size; .@i += 2 ) if( .@percent[.@i] > .@r ) break; getitem .@reward[ .@i-1 ], 1; end; } How can I make the 3% chance to be announced in all maps? and >=15% there will be no announcement. Quote Share this post Link to post Share on other sites
0 Virtue 10 Posted July 13, 2018 Why not use this: I think this might be easier. have time to check on it 1 meko reacted to this Quote Share this post Link to post Share on other sites
0 meko 170 Posted July 13, 2018 if you absolutely must use your script, then: if (.@reward[.@i] <= 3) { announce(sprintf("Player %s obtained a %s (%02i%% chance)", strcharinfo(PC_NAME), getitemname(.@reward[.@i - 1]), .@reward[.@i]), bc_all); } Quote Share this post Link to post Share on other sites
0 kayko11 0 Posted July 13, 2018 Thanks @meko which is better the script above or this one? function script box____ { setarray .i1[1],14003,14003,12914,12914,12913,12913,12900,12900,13990,13990,14158,14158,12909,12909,14004,14004,12221,12221,7776,7776; // Common Items set .i1rand,rand(1,20); // Randomize Common Items; just change max amount if you add items setarray .i2[1],12213,6320; // Rare Items set .i2rand,rand(1,2); // Randomize Rare Items; just change max amount if you add items setarray .i3[1],19599,20221,19952,19664,19954,20313,19589,19596; // Super Rare Items set .i3rand,rand(1,8); //Randomize Super Rare Items; just change max amount if you add items set .chance, rand(100); // Super Rare Item 3% if (.chance == 3){ getitem .i3[.i3rand],1; announce "["+strcharinfo(0)+"] won a ["+getitemname(.i3[.i3rand])+"] from the Lucky Egg.",0; end; } // Rare Item 15% else if (.chance == 15){ getitem .i2[.i2rand],1; announce "["+strcharinfo(0)+"] won a ["+getitemname(.i2[.i2rand])+"] from the Lucky Egg.",0; end; } // Common Items else { getitem .i1[.i1rand],1; end; } } Quote Share this post Link to post Share on other sites
function script box____ { setarray .@reward, 14003, 100, 14003, 100, 12914, 100, 12914, 100, 12913, 100, 12913, 100, 12900, 100, 12900, 100, 13990, 100, 13990, 100, 14158, 100, 14158, 100, 12909, 100, 12909, 100, 14004, 100, 14004, 100, 12221, 100, 12221, 100, 7776, 100, 7776, 100, 12213, 15, 6320, 15, 19599, 3, 20221, 3, 19952, 3, 19664, 3, 19954, 3, 20313, 3, 19589, 3, 19596, 3; set .@size, getarraysize( .@reward ); for( set .@i, 1; .@i < .@size; .@i += 2 ) { .@percent[.@i] = .@total + .@reward[.@i]; .@total += .@reward[.@i]; } .@r = rand( .@total +1 ); for( set .@i, 1; .@i < .@size; .@i += 2 ) if( .@percent[.@i] > .@r ) break; getitem .@reward[ .@i-1 ], 1; end; }
How can I make the 3% chance to be announced in all maps?
and >=15% there will be no announcement.
Share this post
Link to post
Share on other sites