Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Spoilbox v2.0
- - script Royal_Chest -1,{
- end;
- OnMVPKilled:
- getmapxy .map$, .x, .y, 0; set .a,0; set .b,0;
- set .id,atoi(strnpcinfo(2));
- if(getmobdrops(.mvpid[.id])) {
- set .count, $@MobDrop_count;
- copyarray .item[0],$@MobDrop_item[0],.count;
- copyarray .rate[0],$@MobDrop_rate[0],.count;
- for( set .@i,0; .@i < .count; set .@i,.@i +1 ) {
- if(((.rate[.@i]/100)*.srate)>100){
- set .drops[.@b],.item[.@i]; set .droprs[.@b],((.rate[.@i]/100)*.srate); set .@b,.@b+1;
- } else if(.rate[.@i]*.srate>99){
- if(!rand((100/((.rate[.@i]/100)*.srate))-1)){ set .drops[.@b],.item[.@i]; set .droprs[.@b],((.rate[.@i]/100)*.srate); set .@b,.@b+1; }
- } else if(.rate[.@i]*.scardrate<99){
- if(!(rand((100/((.rate[.@i]*.scardrate)%100))*100)-1)){ set .drops[.@b],.item[.@i]; set .droprs[.@b],((.rate[.@i]/100)*.scardrate); set .@b,.@b+1; }
- }
- }
- } else { end; }
- if(strcharinfo(1)==""){ goto Alone; }
- deletearray $@partymemberaid[0],128;
- getpartymember getcharid(1),1;
- getpartymember getcharid(1),2;
- set .@count, $@partymembercount; set .count,0;
- copyarray .@party[0],$@partymemberaid[0],.@count;
- copyarray .@cparty[0],$@partymembercid[0],.@count;
- for( set .@i,0; .@i < .@count; set .@i,.@i +1 ) {
- getmapxy(.@map$,.@x,.@y,0,rid2name(.@party[.@i]));
- if(.@map$==strcharinfo(3)) set .@p,.@p+1;
- }
- if(.@p<2){ goto Alone; }
- for ( set .@i, 0; .@i < .@count; set .@i, .@i +1 ){
- if(isloggedin(.@party[.@i],.@cparty[.@i])){
- set .party[.count],.@party[.@i];
- set .count, .count +1 ;
- }
- }
- if(.count<2) { goto Alone; }
- movenpc strnpcinfo(0), .x, .y;
- restart:
- setnpctimer 0; attachnpctimer(strcharinfo(0)); startnpctimer;
- set .loop, .tlimit;
- while ( .loop ) {
- delwaitingroom strnpcinfo(0);
- waitingroom callfunc("timeleft__", .loop ), 0;
- set .loop, .loop -1;
- sleep2 1000;
- }
- if(.a<.count){
- set .a,.a+1;
- npctalk strcharinfo(0)+" has taken to long!";
- getmapxy .@map$, .@x, .@y, 0;
- warp .@map$,.@x,.@y;
- while(.b<getarraysize(.drops)){
- setd ".partyroll"+.b+"["+.a+"]",0;
- set .b,.b+1;
- }
- goto restart;
- }
- end;
- OnTimer1000:
- while(.a<.count){
- detachrid; attachrid(.party[.a]);
- set .b,0;
- mes "[^0000FFRoyal Chest^000000]"; mes "Select from the menu below to distribute the item.";
- while(.b<getarraysize(.drops)){
- if((playerattached())&&strcharinfo(3)==.map$) {
- L_lo: if(.droprs[.b]>.ratelimit&&.ratelimit>0) { setd ".partyroll"+.b+"["+.a+"]",0; }
- else { select("============(^0000FF"+getitemname(.drops[.b])+"^000000)===============:-Roll:-Pass"); if(!((@menu)-1)||@menu>3) goto L_lo;
- if(@menu==2){ setd ".partyroll"+.b+"["+.a+"]",rand(100); npctalk strcharinfo(0)+" rolled a ["+getd(".partyroll"+.b+"["+.a+"]")+"] on "+getitemname(.drops[.b])+"."; dispbottom "You rolled a ["+getd(".partyroll"+.b+"["+.a+"]")+"] on "+getitemname(.drops[.b])+"."; } else { setd ".partyroll"+.b+"["+.a+"]",0; npctalk strcharinfo(0)+" passed a on "+getitemname(.drops[.b])+"."; dispbottom "You passed a on "+getitemname(.drops[.b])+"."; } }
- set .loop, 60;
- }
- set .b,.b+1;
- if(.b>=getarraysize(.drops)) close2;
- }
- set .a,.a+1;
- }
- //Find Highest Bawler.
- for (set .@i,0; .@i < getarraysize(.party); set .@i,.@i+1){
- for(set .@s,0; .@s < getarraysize(.drops); set .@s,.@s+1){
- if(getd(".partyroll"+.@s+"["+.@i+"]")>getd(".wpartyroll"+.@s)) { setd ".wpartyroll"+.@s,getd(".partyroll"+.@s+"["+.@i+"]"); setd ".wrid"+.@s,.party[.@i]; }
- }
- }
- //Distribute Prize.
- for(set .@s,0; .@s < getarraysize(.drops); set .@s,.@s+1){
- detachrid; attachrid(getd(".wrid"+.@s));
- if(getd(".wpartyroll"+.@s)){
- npctalk strcharinfo(0)+" won ["+getitemname(.drops[.@s])+"].";
- getitem .drops[.@s],1;
- } else { makeitem .drops[.@s],1,.map$,.x,.y; }
- }
- stopnpctimer;
- delwaitingroom strnpcinfo(0);
- movenpc strnpcinfo(0), 0,0;
- end;
- Alone:
- for(set .@s,0; .@s < getarraysize(.drops); set .@s,.@s+1){
- getitem .drops[.@s],1;
- }
- delwaitingroom strnpcinfo(0);
- movenpc strnpcinfo(0), 0,0;
- end;
- OnInit:
- if ( strnpcinfo(2) == "" ) {
- //=-=-=-=-=-=Configuration=-=-=-=-=-=-=
- setarray .mvpid[1], 1871,1872,1719,1492,1147,1688,1583,2068,2156,2087,2165,1623,1389,1046,1272,1115,1046,1147,1272,1418,1157,2202,1685,1734,1658,1630,1038,1511,1885,1751,1150,1039,1086,1768,1832,1112,1312,1251,2131,1087,1190,1252,1059,1159,1917,1115,1785,1785,1785,1785,1613; // MVP ids make sure each id corresponds to the duplicated npcs and maps.
- set .srate,getbattleflag("item_rate_mvp"); // MVP Server Drop rates
- set .scardrate,getbattleflag("item_rate_card_boss"); // MVP Server card rate
- set .tlimit,60; // In seconds
- set .ratelimit,0; // Ignores items dropped with rates higher then this value. 0 = off
- //=-=-=-=-=-=-=Skorm=-=-=-=-=-=-=-=-=-=
- }
- setmapflag strnpcinfo(4),mf_nomvploot;
- end;
- }
- prt_fild08,50,50,1,1 monster Metaling 1613,1,360000,360000,"Royal Chest#51_mvp::OnMVPKilled"
- prt_fild08,0,0,0 duplicate(Royal_Chest) Royal Chest#51_mvp 801
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement