· 7 years ago · Oct 07, 2018, 08:56 AM
1// Load the following SQL Table in your Server before use the NPC
2
3/*
4
5CREATE TABLE IF NOT EXISTS `E-Inquiry` (
6 `ID` bigint(20) unsigned NOT NULL auto_increment,
7 `Sender_ID` int(11) unsigned NOT NULL default '0',
8 `Sender_Name` varchar(30) NOT NULL default '',
9 `Title` text,
10 `Message` text,
11 `Status` tinyint(2) NOT NULL default '0',
12 `Inquiry_Time` datetime NOT NULL default '0000-00-00 00:00:00',
13 `Reply` text,
14 `Reply_Time` datetime NOT NULL default '0000-00-00 00:00:00',
15 `Reply_Name` varchar(30) NOT NULL default '',
16 PRIMARY KEY (`ID`)
17) ENGINE=MyISAM;
18
19*/
20
21- script E-Inquiry -1,{
22
23OnStartMenu:
24mes "Do you having problems and wish to inform GM Staffs about this ?";
25next;
26switch( select( "View Messages",
27 "Write Messages",
28 ( getgmlevel() < .GMLevel )?"":"^FF0000[ GM ]^000000 Manage Messages" )){
29
30Case 1:
31 do{
32 mes "What types of Messages you would like to View ?";
33 for( set .@i,0; .@i < 3; set .@i,.@i + 1 )
34 set .@Found[.@i],query_sql("SELECT `ID` FROM `E-Inquiry` WHERE `Status` = "+.@i+" AND `Sender_ID`='"+getcharid(3)+"'",.@ID );
35
36 set .@Msg,select("^FF0000Un-Replied Messanges [ ^FF0000"+.@Found[0]+"^000000 ]",
37 "^0000FFReplied Messages^000000 [ ^FF0000"+.@Found[1]+"^000000 ]",
38 "Archieved Messages [ ^FF0000"+.@Found[2]+"^000000 ]" ) - 1;
39 set .@Replied,query_sql(" SELECT `ID`,`Title`,`Message`,`Inquiry_Time`,`Reply`,`Reply_Time`,`Reply_Name` FROM `E-Inquiry` WHERE `Status`= "+.@Msg+" AND `Sender_ID`='"+getcharid(3)+"' ",.@ID, .@Title$,.@Message$,.@Time$,.@Reply$,.@ReplyTime$,.@ReplyName$ );
40 if( !.@Replied ){
41 mes "You didnt have Messages to read.";
42 next;
43 }else{
44 set .@Menu$,"";
45 for( set .@i,0; .@i < .@Replied; set .@i,.@i + 1 )
46 set .@Menu$,.@Menu$ + "^FF0000[ "+( .@i+1 )+". ]^0000FF "+.@Title$[.@i]+":";
47 next;
48 set .@Select,select( .@Menu$ ) - 1;
49 mes "^00FF00____________________________^000000";
50 mes "^FF0000Date :^000000 : "+.@Time$[.@Select];
51 mes "^FF0000Title^000000 : "+.@Title$[.@Select];
52 mes "^00FF00____________________________^000000";
53 mes "^FF0000Messages^000000 : "+.@Message$[.@Select];
54 mes "^00FF00____________________________^000000";
55 if( .@Msg > 0 ){
56 mes "^0000FFReply from ^FF0000"+.@ReplyName$[.@Select]+" ^000000 : "+.@Reply$[.@Select];
57 mes "^00FF00____________________________^000000";
58 mes "^0000FFTime ^000000 : "+.@ReplyTime$[.@Select];
59 }
60 next;
61 set .@MsgOpt1,select("View Other Messages",( .@Msg == 1 )?"Move to Archieve":"","Delete Message" );
62 switch( .@MsgOpt1 ){
63 Case 2:
64 query_sql("UPDATE `E-Inquiry` SET `Status` = 2 WHERE `ID` = "+.@ID[.@Select]+" ");
65 mes "Message has been moved to Archieve.";
66 break;
67 Case 3:
68 query_sql("DELETE FROM `E-Inquiry` WHERE `ID` = "+.@ID[.@Select]+" ");
69 mes "Message has been DELETED.";
70 break;
71 default:
72 break;
73 }
74 }
75 }while( .@MsgOpt1 < 3 );
76 break;
77
78Case 2:
79 mes "^00FF00____________________________^000000";
80 mes "^FF0000NOTES :^000000 All the Messages will be recorded for future references, so please do not abuse this. Otherwise action will be taken on you";
81 do{
82 next;
83 mes "^00FF00____________________________^000000";
84 mes "^FF0000Title^000000 : "+.@Title$;
85 mes "^00FF00____________________________^000000";
86 mes "^FF0000Messages^000000 : "+.@Message$;
87 mes "^00FF00____________________________^000000";
88
89 next;
90 set .@Select,select(( .@Title$ == "" )?"[ ^FF0000Incomplete^000000 ] Title":"[ ^0000FFCompleted^000000 ] Title",
91 ( .@Message$ == "" )?"[ ^FF0000Incomplete^000000 ] Message":"[^0000FFCompleted^000000 ] Title",
92 ( .@Title$ == "" || .@Message$ == "" )?"":"^FF0000SEND MESSAGE^000000" );
93
94 switch( .@Select ){
95 Case 1:
96 mes "Enter a Title for your Problems";
97 input .@Title$;
98 break;
99 Case 2:
100 mes "Briefly explain what's your Problem";
101 set .@i,0;
102 do{
103 input getd(".@Message"+.@i+"$");
104 set .@Message$,.@Message$ + getd(".@Message"+.@i+"$")+" ";
105 set .@Continue,select("Complete:Continue Messages");
106 }while( .@Continue == 2 );
107 break;
108 default:
109 mes "Your message has been sent.";
110 query_sql( "INSERT INTO `E-Inquiry` ( `Sender_ID`,`Sender_Name`,`Title`,`Message`,`Status`,`Inquiry_Time` ) VALUES ( "+getcharid(3)+",'"+escape_sql(strcharinfo(0))+"','"+escape_sql(.@Title$)+"','"+escape_sql(.@Message$)+"',0,'"+gettimestr("%Y-%m-%d %H:%M:%S",21)+"' ) ");
111 break;
112 }
113 }while( .@Select != 3 );
114 break;
115
116Case 3:
117 do{
118 mes "Alright, what next ?";
119 next;
120 for( set .@i,0; .@i < 3; set .@i,.@i + 1 )
121 set .@Found[.@i],query_sql("SELECT `ID` FROM `E-Inquiry` WHERE `Status` = "+.@i+"",.@ID );
122
123 set .@Types,select("^FF0000View All Unread Messanges [ ^FF0000"+.@Found[0]+"^000000 ]",
124 "View All Replied Messages^000000 [ ^FF0000"+.@Found[1]+"^000000 ]",
125 "View All Archieved Messages [ ^FF0000"+.@Found[2]+"^000000 ]" ) - 1;
126
127 set .@ManageMSG,query_sql(" SELECT `ID`,`Sender_Name`,`Title`,`Message`,`Inquiry_Time`,`Reply`,`Reply_Time`,`Reply_Name` FROM `E-Inquiry` WHERE `Status`= "+.@Types+" LIMIT 127",.@ID,.@Sender$, .@Title$,.@Message$,.@Time$,.@Reply$,.@ReplyTime$,.@ReplyName$ );
128 if( !.@ManageMSG ){
129 mes "You didnt have Messages to read.";
130 next;
131 }else{
132 set .@Menu$,"";
133 for( set .@i,0; .@i < .@ManageMSG; set .@i,.@i + 1 )
134 set .@Menu$,.@Menu$ +"^FF0000[ "+( .@i+1 )+". ]^0000FF "+.@Title$[.@i]+":";
135 next;
136 set .@Select,select( .@Menu$ ) - 1;
137 mes "^00FF00____________________________^000000";
138 mes "^FF0000Date :^000000 : "+.@Time$[.@Select];
139 mes "^FF0000Aurthor :^000000 : "+.@Sender$[.@Select];
140 mes "^FF0000Title^000000 : "+.@Title$[.@Select];
141 mes "^00FF00____________________________^000000";
142 mes "^FF0000Messages^000000 : "+.@Message$[.@Select];
143 mes "^00FF00____________________________^000000";
144 if( .@Types > 0 ){
145 mes "^0000FFReply from ^FF0000"+.@ReplyName$[.@Select]+" ^000000 : "+.@Reply$[.@Select];
146 mes "^00FF00____________________________^000000";
147 mes "^0000FFTIme ^000000 : "+.@ReplyTime$[.@Select];
148 }
149 next;
150 set .@MsgOpt1,select( ( .@Types == 2 )?"":"Reply Message","View Other Messages","Delete Message" );
151 switch( .@MsgOpt1 ){
152 Case 1:
153 set .@i,0;
154 do{
155 input getd(".@Reply"+.@i+"$");
156 set .@Reply$,.@Reply$ + getd(".@Reply"+.@i+"$")+" ";
157 set .@Continue,select("Complete:Continue Messages");
158 }while( .@Continue == 2 );
159
160 query_sql("UPDATE `E-Inquiry` SET `Status` = 1,`Reply`='"+escape_sql(.@Reply$)+"',`Reply_Name`='"+escape_sql(strcharinfo(0))+"',`Reply_Time`='"+gettimestr("%Y-%m-%d %H:%M:%S",21)+"' WHERE `ID` = "+.@ID[.@Select]+" ");
161 message strcharinfo(0),"Reply has been sent.";
162 break;
163 Case 3:
164 query_sql("DELETE FROM `E-Inquiry` WHERE `ID` = "+.@ID[.@Select]+" ");
165 mes "Message has been Deleted.";
166 default:
167 break;
168 }
169 }
170 }while( .@MsgOpt1 != 1 );
171 break;
172}
173close;
174
175OnInit:
176// Min. GM Level to Read / Manage Messages.
177set .GMLevel,80;
178end;
179
180OnPCLoginEvent:
181if( getgmlevel() < .GMLevel ){
182 set .@Replied,query_sql("SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 1 AND `Sender_ID`='"+getcharid(3)+"'",.@ID );
183 if( .@Replied )
184 message strcharinfo(0),"You have "+.@Replied+" Replied Messages from GM Team.";
185}else{
186 set .@Unread,query_sql("SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 0 ",.@ID );
187 if( .@Unread )
188 message strcharinfo(0),"GM Team received "+.@Unread+" New Message from Players.";
189}
190if( .@Replied || .@Unread ){
191 if( select("Read the Messages:Cancel") == 2 ) close;
192 goto OnStartMenu;
193}
194end;
195
196}
197
198// Main NPC
199prontera,151,186,5 script E-Inquiry#Main 757,{
200 doevent "E-Inquiry::OnStartMenu";
201}
202
203// Duplicates NPC
204// prontera,155,181,5 duplicate(E-Inquiry#Main) E-Inquiry#1 757
205// prontera,155,182,5 duplicate(E-Inquiry#Main) E-Inquiry#2 757
206// prontera,155,183,5 duplicate(E-Inquiry#Main) E-Inquiry#3 757