· 5 years ago · Mar 22, 2020, 09:42 AM
1// Project Ranking System
2// Design by Kate.
3// Design Date: 2020-02-27
4// Version: 1.0
5
6// Ver 1.0 2020-02-27 完成基本架構
7
8prontera,164,176,3 script 排行榜人員 4_SERVICE_30_F_01,{
9 disable_items;
10 function Cid2name;
11 function RankOne;
12 for ( .@i = 0; .@i < getarraysize(.RankList$); .@i++ )
13 if ( RankOne(.Variables$[.@i]) != "null" )
14 mes ""+.RankList$[.@i]+" : "+RankOne(.Variables$[.@i])+"";
15 next;
16 .@Title_id = getchartitle();
17 .@SelectData = select("查看排行榜","排行榜能力",.@Title_id?"":"使用稱號",.@Title_id?"取消稱號":"");
18 switch(.@SelectData)
19 {
20 case 1:
21 for ( .@i = 0; .@i < getarraysize(.RankList$); .@i++ )
22 .@menu$ = .@menu$ + .RankList$[.@i] + ":";
23 .@Ranking = select(.@menu$)-1;
24 query_sql("SELECT `char_id`, `value` FROM `char_reg_num` WHERE `key` = '"+.Variables$[.@Ranking]+"' ORDER BY value DESC LIMIT 5", .@char_id, .@value);
25 if ( !getarraysize(.@char_id) )
26 {
27 message strcharinfo(0),"尚未擁有"+.RankList$[.@Ranking]+"的排名。";
28 end;
29 }
30 mes "----- "+.RankList$[.@Ranking]+"排行榜 -----";
31 for ( .@i = 0; .@i < getarraysize(.@char_id); .@i++ )
32 mes "第 "+(.@i+1)+" 名 "+Cid2name(.@char_id[.@i])+", "+.@value[.@i]+" 點積分";
33 end;
34 case 2:
35 mes "你好勇者";
36 mes "這裡可以跟您介紹 每個排行榜前五名會獲得的能力.";
37 next;
38 //menu "我了解開始介紹吧";
39 mes "首先是推廣排行榜";
40 mes "這個推廣分數是共用的也就是說...";
41 mes "只要同一個帳號有獲取到";
42 mes "^FF3333推廣點數^000000就可以共同計算";
43 mes "而只要換上了推廣達人的稱號";
44 mes "可以獲得^FF3333移動速度增加50喔^000000";
45 next;
46 mes "再來是跟你介紹";
47 mes "^FF3333任務排行榜^000000";
48 mes "只要完成『個人任務』";
49 mes "就可以獲得任務點數";
50 mes "任務點數除了兌換裝備以外";
51 mes "當然也有排行榜";
52 mes "只要達到前五名";
53 mes "^FF3333被動掉寶率增加20%^000000";
54 mes "提醒一下任務點數是不能角色共用的";
55 mes "所以請大家好好的解任務喔";
56 next;
57 mes "再來是跟你介紹";
58 mes "^FF3333小遊戲排行榜^000000";
59 mes "只要完成小遊戲並且獲勝";
60 mes "就可以獲得小遊戲點數";
61 mes "排行榜能力是";
62 mes "^FF3333所有技能延遲- 8%^000000^";
63 next;
64 mes "^FF3333道館排行榜^000000";
65 mes "打道館後會獲取道道館轉蛋";
66 mes "這是唯一獲取";
67 mes "^FF3333道館點數的方法^000000";
68 mes "只要達到前五名";
69 mes "對BOSS傷害增加15%";
70 next;
71 mes "^FF3333頭飾排行榜^000000";
72 mes "把不要的頭飾拿去儲存";
73 mes "這是唯一獲取的方法";
74 mes "只要達到前五名";
75 mes "^FF3333移動速度增加30、對BOSS傷害增加8%^000000";
76 mes "^FF3333掉寶增加10%、所有技能延遲-5%^000000";
77 next;
78 end;
79 case 3:
80 query_sql "SELECT `char_id` FROM `TitleList` ", .@char_id;
81 for ( .@i = 0; .@i < getarraysize(.@char_id); .@i++ )
82 {
83 if ( .@char_id[.@i] == getcharid(0) )
84 {
85 .@menu$ = .@menu$ + .RankList$[.@i];
86 .@Continue = 1;
87 }
88 .@menu$ = .@menu$ + ":";
89 }
90 if ( !.@Continue )
91 {
92 message strcharinfo(0),"尚未擁有稱號可以使用。";
93 end;
94 }
95 .@Title_id = select(.@menu$)+1599;
96 setchartitle(.@Title_id);
97 recalculatestat();
98 end;
99 case 4:
100 if ( !.@Title_id || .@Title_id <= -1 )
101 end;
102 setchartitle(0);
103 recalculatestat();
104 end;
105 }
106
107 end;
108
109OnPCLoginEvent:
110 if ( getchartitle() )
111 {
112 query_sql "SELECT `char_id` FROM `TitleList` ", .@char_id;
113 if ( inarray(.@char_id,getcharid(0)) <= -1 )
114 {
115 setchartitle(0);
116 recalculatestat();
117 }
118 else
119 recalculatestat();
120 }
121 end;
122
123OnClock1731:
124 //if ( gettime(DT_DAYOFWEEK) == SUNDAY )
125 {
126 query_sql "TRUNCATE TABLE `TitleList`";
127 for ( .@i = 0; .@i < getarraysize(.RankList$); .@i++ )
128 {
129 deletearray .@char_id;
130 query_sql("SELECT `char_id` FROM `char_reg_num` WHERE `key` = '"+.Variables$[.@i]+"' ORDER BY value DESC LIMIT 1", .@char_id);
131 query_sql "INSERT `TitleList` VALUES ( '"+.@i+"' , '"+.@char_id+"' , '"+gettimestr("%Y%m%d",21)+"')";
132 }
133 }
134 end;
135
136OnPCStatCalcEvent:
137 .@Title_id = getchartitle();
138 if ( !.@Title_id || .@Title_id <= -1 )
139 end;
140 switch(.@Title_id)
141 {
142 case 1600:
143 // 推廣達人
144 bonus bSpeedRate,50;
145 break;
146 case 1601:
147 // 任務達人
148 bonus2 bDropAddRace,RC_All,20;
149 break;
150 case 1602:
151 // 小遊戲達人
152 bonus bDelayRate,-8;
153 break;
154 case 1603:
155 // 道館達人
156 bonus2 bAddClass,Class_Boss,15;
157 break;
158 case 1604:
159 // 頭飾達人
160 bonus bSpeedRate,30;
161 bonus2 bDropAddRace,RC_All,10;
162 bonus bDelayRate,-5;
163 bonus2 bAddClass,Class_Boss,5;
164 break;
165 }
166 end;
167OnInit:
168 waitingroom "【 落櫻排行榜 】",0;
169 setarray .RankList$,"推廣達人","任務達人","小遊戲達人","道館達人","頭飾達人";
170 setarray .Variables$,"#Advertising_Point","task_Point","LittlePlay_point","Renown_Point","HeadStorageCount";
171 query_sql "CREATE TABLE IF NOT EXISTS TitleList ( `Index` int(11) NOT NULL, `char_id` int(11) NOT NULL , `Date` int(11) NOT NULL DEFAULT '0' )";
172 end;
173
174 function Cid2name {
175 if(getarg(0,0) < 150000) return "";
176 query_sql "SELECT `name` FROM `char` WHERE `char_id` = '"+getarg(0)+"'",.@name$;
177 return .@name$;
178 }
179
180 function RankOne {
181 query_sql("SELECT `char_id`, `value` FROM `char_reg_num` WHERE `key` = '"+getarg(0)+"' ORDER BY value DESC LIMIT 1", .@char_id, .@value);
182
183 if ( !getarraysize(.@char_id) )
184 return "null";
185
186 query_sql "SELECT `name` FROM `char` WHERE `char_id` = '"+.@char_id[0]+"'",.@name$;
187
188 return .@name$;
189 }
190}