· 7 years ago · Sep 23, 2018, 08:20 PM
1// Add into instance_db
2//18,Emperium Breaker,300,1,guild_vs1,53,46
3
4skypiea,269,239,0 script Emperium Breaker Test 1288,{
5 .@data = query_sql("SELECT `char`.`name`, `E-Breakers`.`char_id`, `E-Breakers`.`record`, `E-Breakers`.`break_time` FROM `E-Breakers` LEFT JOIN `char` ON `E-Breakers`.`char_id` = `char`.`char_id` ORDER BY `E-Breakers`.`record` ASC", .@name$, .@char_id, .@record, .@date$);
6 mes .@npc_name$ = "["+strnpcinfo(1)+"]";
7 if (!.@data) {
8 mes "No record found.";
9 } else {
10 mes "-- Fastest Record --";
11 mes "Name: "+.@name$;
12 mes "Break Time: "+.@record+" seconds";
13 mes "Date: "+.@date$;
14 }
15 mes " ";
16 mes "Do you want to try?";
17 next;
18 if (select("Yes:My Records") == 2) {
19 .@data = query_sql("SELECT `record`, `break_time` FROM `E-Breakers` WHERE `char_id` = "+getcharid(0)+" ORDER BY `idx` DESC Limit 5", .@record, .@date$);
20 mes .@npc_name$;
21 mes "Last 5 Break Record.";
22 if (!.@data) {
23 mes "No record found.";
24 } else {
25 for (.@i = 0; .@i < .@data; .@i++) {
26 mes (.@i+1)+" "+.@date$+" ~ "+.@record+" seconds.";
27 }
28 }
29 close;
30 }
31 .@instance$ = "Emperium Breaker";
32 mes .@npc_name$;
33 if (.@create = instance_create(.@instance$, IM_CHAR) < 0) {
34 mes "Failed to open test room";
35 switch (.@create) {
36 case -1: .@reason = "ERROR: Invalid type."; break;
37 case -2: .@reason = "ERROR: Party not found."; break;
38 case -3: .@reason = "ERROR: Instance already exists."; break;
39 case -4: .@reason = "ERROR: No free instances."; break;
40 }
41 mes "Fail Reason: "+.@reason;
42 emotion ET_HUK;
43 close;
44 }
45 mes "OK!, Let's start the test";
46 close2;
47 if (.@enter = instance_enter(.@instance$) != 0) {
48 mes .@npc_name$;
49 mes "Failed to enter test room";
50 switch (.@enter) {
51 case 1: .@reason = "ERROR: Party not found."; break;
52 case 2: .@reason = "ERROR: Party does not have an instance."; break;
53 case 3: .@reason = "ERROR: Unknown error."; break;
54 }
55 mes "Fail Reason: "+.@reason;
56 close;
57 }
58 end;
59
60OnInit:
61 .@map$ = "guild_vs1";
62 setarray .@mapflags, mf_nowarp, mf_nowarpto, mf_notrade, mf_nochat, mf_nocommand, mf_novending, mf_nobranch, mf_noicewall, mf_nomemo, mf_nosave, mf_noreturn;
63 for (.@i = 0; .@i < getarraysize(.@mapflags); .@i++)
64 setmapflag .@map$, .@mapflag[.@i];
65 query_sql("CREATE TABLE IF NOT EXISTS `E-Breakers` (`idx` int(11) unsigned NOT NULL AUTO_INCREMENT, `char_id` int(11) unsigned NOT NULL DEFAULT '0', `record` int(11) unsigned NOT NULL default '0', `break_time` DATETIME, PRIMARY KEY (`idx`)) ENGINE=MyISAM");
66 end;
67}
68
69guild_vs1,0,0,0 script EmpBreaker#Engine -1,{
70 end;
71
72OnInit: // hide the NPC on the normal map
73 disablenpc strnpcinfo(0);
74 end;
75OnInstanceInit: // initialize the NPC when the instance is created
76 query_sql("SELECT `char_id`, `record` FROM `E-Breakers` ORDER BY `record` ASC", 'char_id, 'record);
77 mapannounce strnpcinfo(4), "You need to break the emperium before 5 minutes.", bc_all;
78 sleep 3000;
79 mapannounce strnpcinfo(4), "if 5 minutes is up you will be kicked out of the room.", bc_all;
80 sleep 3000;
81 mapannounce strnpcinfo(4), "Get ready to break the Emperium!", bc_all;
82 for (.@i = 5; .@i > 0; .@i--) {
83 mapannounce strnpcinfo(4), .@i+"", bc_all;
84 sleep 1000;
85 }
86 mapannounce strnpcinfo(4), "Go!!", bc_all;
87 'start = gettimetick(2);
88 //debugmes 'start+"";
89 monster strnpcinfo(4),50,50,"Emperium",20500,1,instance_npcname(strnpcinfo(0))+"::OnBreak";
90 end;
91
92OnBreak:
93 .@tick = gettimetick(2);
94 //debugmes .@tick+"";
95 .@diff_time = .@tick - 'start;
96 //debugmes .@diff_time+"";
97 query_sql("INSERT INTO `E-Breakers` (`char_id`, `record`, `break_time`) VALUES ("+getcharid(0)+", "+.@diff_time+", NOW())");
98 if ('record == 0 || .@diff_time < 'record)
99 announce "Player ["+strcharinfo(0)+"] break Emperium Breaker test record at "+.@diff_time+" seconds.", 0;
100 warp "skypiea",246,247;
101 end;
102}