viewing paste Unknown #6827 | Athena
Posted on the
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
| function script timel {
set .@left, getarg(0);
if ( .@left <= 0 ) return getarg(0);
set .@day, .@left / 86400;
set .@hour, .@left % 86400 / 3600;
set .@min, .@left % 3600 / 60;
set .@sec, .@left % 60;
return ( ( .@day )?.@day +" day ":"" )+( ( .@day || .@hour )?.@hour +" hour ":"" )+( ( .@day == 0 && ( .@hour || .@min ) )?.@min +" min ":"" )+( ( .@day || .@hour )?"":.@sec +" sec" );
}
//By Skorm
//spoilbox v3.8
- script Royal_Chest -1,{
end;
OnMVPKilled:
getmapxy .map$, .x, .y, 0; set .a,0; set .b,0;
set .id, atoi(strnpcinfo(2));
set .@mid, .mvpid[.id];
set .@ar$, ".mob"+.@mid;
set .@len, getarraysize(getd(.@ar$));
set .@inf, getmonsterinfo(.@mid,22);
if(.@len){
for(set .@u,1; .@u<.@len;set .@u,.@u+2 ) {
set .@itm, getd(.@ar$+"["+(.@u-1)+"]");
set .@typ, getiteminfo(.@itm,2);
set .@btflg, (getbattleflag(.gbfid$[.@typ]+((.@inf)?"_boss":""))/1000);
set .@itmrt, getd(.@ar$+"["+.@u+"]");
query_sql("SELECT ROUND("+.@itmrt+"*("+.@btflg+"/100));",.@rte);
if(!.@rte) set .@rte,1;
if(((.@rte<=10000)?((rand(1,10000/.@rte)==1)?1:0):1)) {
set .drops[.@b],.@itm;
set .droprs[.@b],.@rte;
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 ) {
if(isloggedin(.@party[.@i],.@cparty[.@i])){
getmapxy(.@map$,.@x,.@y,0,rid2name(.@party[.@i]));
if(.@map$==strcharinfo(3)) set .@p,.@p+1;
set .party[.count],.@party[.@i];
set .count, .count +1 ;
}
}
if(.@p<2||.count<2){ goto Alone; }
movenpc strnpcinfo(0), .x, .y;
restart:
if(.a>=getarraysize(.party)) goto Lootz;
if(attachrid(.party[.a])) {
setnpctimer 0; attachnpctimer(rid2name(.party[.a])); startnpctimer; showdigit .tlimit,3;
}
set .loop, .tlimit;
while ( .loop ) {
delwaitingroom strnpcinfo(0);
waitingroom callfunc("timel", .loop ), 0;
set .loop, .loop -1;
if(attachrid(.party[.a])) {
sleep 475;
} else {
if(.a<.count) {
npctalk "Party Member disconnected!";
while(.b<getarraysize(.drops)){
setd ".partyroll"+.b+"["+.a+"]",0;
set .b,.b+1;
}
set .a,.a+1;
}
goto restart;
}
}
if(.a<.count){
if(attachrid(.party[.a])) npctalk rid2name(.party[.a])+" has taken to long!";
for (set .@i,0; .@i < getarraysize(.party); set .@i,.@i+1){
detachrid;
if(attachrid(.party[.@i])){
getmapxy .@map$, .@x, .@y, 0;
warp .@map$,.@x,.@y;
}
}
while(.b<getarraysize(.drops)){
setd ".partyroll"+.b+"["+.a+"]",0;
set .b,.b+1;
}
set .a,.a+1;
goto restart;
}
end;
OnTimer1000:
while(.a<.count){
detachrid;
if(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, .tlimit;
}
set .b,.b+1;
if(.b>=getarraysize(.drops)) close2;
}
} else {
while(.b<getarraysize(.drops)) {
setd ".partyroll"+.b+"["+.a+"]",0;
set .b,.b+1;
}
}
set .a,.a+1;
}
end;
Lootz:
//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;
if(getd(".wpartyroll"+.s) && attachrid(getd(".wrid"+.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:
//=-=-=-=-=-=Configuration=-=-=-=-=-=-=
//Example Poring Apple, 10%, Apple, 1.5%....etc
setarray .mob1002, 909, 7000 , 1202 , 100000 , 938 , 100000 ,512 , 100000 ,713 , 100000 , 512 , 100000, 619, 100000, 4001, 300000; // Mob List 10000=100% can support up to 128 values
setarray .mvpid[0], 1002; // MVP ids make sure each id corresponds to the duplicated npcs and maps.
set .tlimit,60; // In half seconds so 60 is 30 seconds. (To keep up with digital counter.)
set .ratelimit,0; // Ignores items dropped with rates higher then this value. 0 = off 10000 = 100%
//=-=-=-=-=-=-=Skorm=-=-=-=-=-=-=-=-=-=
setarray .gbfid$[0],
"item_rate_heal" , "1" , "item_rate_use" , "item_rate_common", "item_rate_equip",
"item_rate_equip", "item_rate_card", "item_rate_use" , "item_rate_equip" , "9" ,
"item_rate_equip", "item_rate_use" , "12" , "13" , "14" ,
"15" , "16" , "17" , "item_rate_use";
end;
}
prt_fild08 mapflag nomvploot
prt_fild08,50,50,1,1 monster Lootz 1002,1,360000,360000,"Royal Chest#0_mvp::OnMVPKilled"
prt_fild08,0,0,0 duplicate(Royal_Chest) Royal Chest#0_mvp 801 |
Viewed 971 times, submitted by Guest.