· 6 years ago · May 22, 2019, 05:56 PM
1// _______________________________________________________
2// / \
3// | _ _ _ _ |
4// | | |__ _ __ / \ | |_| |__ ___ _ __ __ _ |
5// | | '_ \| '__/ _ \| __| '_ \ / _ \ '_ \ / _` | |
6// | | |_) | | / ___ \ |_| | | | __/ | | | (_| | |
7// | |_.__/|_|/_/ \_\__|_| |_|\___|_| |_|\__,_| |
8// | |
9// | brAthena Script |
10// |--------------------------------------------------------|
11// | Nome do Script: Inquérito |
12// |--------------------------------------------------------|
13// | Criado por: Emistry |
14// |--------------------------------------------------------|
15// | Versões rA/brA: 1.0/1.1 |
16// |--------------------------------------------------------|
17// | Descrição: |
18// | Este é um NPC que permite aos jogadores escreverem uma |
19// | mensagem e enviar para Equipe GM. |
20// | Os GM/ADMS da equipe poderão responder às mensagens |
21// | escritas pelos jogadores e haverá notificação após o |
22// | login, se há novas mensagens. |
23// | Certifique-se de ter colocado a Tabela SQL antes do NPC|
24// | ser usado em seu servidor. |
25// | |
26// |--------------------------------------------------------|
27// | Changelog: |
28// |[1.0] - Permitir aos jogadores enviar mensagens a |
29// | Equipe GM e GM capaz de ler e responder. |
30// |[1.1] - Traduzido para brAthena [hail] |
31// \_______________________________________________________/
32// Carregar a tabela de SQL no seu servidor antes de usar o NPC
33
34/*
35
36CREATE TABLE IF NOT EXISTS `E-Inquiry` (
37 `ID` bigint(20) unsigned NOT NULL auto_increment,
38 `Sender_ID` int(11) unsigned NOT NULL default '0',
39 `Sender_Name` varchar(30) NOT NULL default '',
40 `Title` text,
41 `Message` text,
42 `Status` tinyint(2) NOT NULL default '0',
43 `Inquiry_Time` datetime NOT NULL default '0000-00-00 00:00:00',
44 `Reply` text,
45 `Reply_Time` datetime NOT NULL default '0000-00-00 00:00:00',
46 `Reply_Name` varchar(30) NOT NULL default '',
47 PRIMARY KEY (`ID`)
48) ENGINE=MyISAM;
49
50*/
51
52- script E-Inquiry -1,{
53
54OnStartMenu:
55mes "Se você estiver com problemas, poderá informar a equipe. Deseja fazer uma denúncia?";
56next;
57switch( select( "Ver Mensagens",
58 "Escrever Mensagens",
59 ( getgmlevel() < .GMLevel )?"":"^FF0000[ GM ]^000000 Gerenciar Mensagens" )){
60
61Case 1:
62 do{
63 mes "Quais os tipos de mensagens que você gostaria de ver?";
64 for( set .@i,0; .@i < 3; set .@i,.@i + 1 )
65 set .@Found[.@i],query_sql("SELECT `ID` FROM `E-Inquiry` WHERE `Status` = "+.@i+" AND `Sender_ID`='"+getcharid(3)+"'",.@ID );
66
67 set .@Msg,select("^FF0000Mensagens sem resposta [ ^FF0000"+.@Found[0]+"^000000 ]",
68 "^0000FFMensagens respondidas^000000 [ ^FF0000"+.@Found[1]+"^000000 ]",
69 "Mensagens arquivadas [ ^FF0000"+.@Found[2]+"^000000 ]" ) - 1;
70 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$ );
71 if( !.@Replied ){
72 mes "Você não tem mensagens para ler.";
73 next;
74 }else{
75 set .@Menu$,"";
76 for( set .@i,0; .@i < .@Replied; set .@i,.@i + 1 )
77 set .@Menu$,.@Menu$ + "^FF0000[ "+( .@i+1 )+". ]^0000FF "+.@Title$[.@i]+":";
78 next;
79 set .@Select,select( .@Menu$ ) - 1;
80 mes "^00FF00____________________________^000000";
81 mes "^FF0000Data :^000000 : "+.@Time$[.@Select];
82 mes "^FF0000TÃtulo^000000 : "+.@Title$[.@Select];
83 mes "^00FF00____________________________^000000";
84 mes "^FF0000Mensagens^000000 : "+.@Message$[.@Select];
85 mes "^00FF00____________________________^000000";
86 if( .@Msg > 0 ){
87 mes "^0000FFResposta de ^FF0000"+.@ReplyName$[.@Select]+" ^000000 : "+.@Reply$[.@Select];
88 mes "^00FF00____________________________^000000";
89 mes "^0000FFTempo ^000000 : "+.@ReplyTime$[.@Select];
90 }
91 next;
92 set .@MsgOpt1,select("Ler outras Mensagens",( .@Msg == 1 )?"Mover para Arquivados":"","Deletar Mensagem" );
93 switch( .@MsgOpt1 ){
94 Case 2:
95 query_sql("UPDATE `E-Inquiry` SET `Status` = 2 WHERE `ID` = "+.@ID[.@Select]+" ");
96 mes "A Mensagem foi movida para Arquivados";
97 break;
98 Case 3:
99 query_sql("DELETE FROM `E-Inquiry` WHERE `ID` = "+.@ID[.@Select]+" ");
100 mes "A Mensagem foi apagada.";
101 break;
102 default:
103 break;
104 }
105 }
106 }while( .@MsgOpt1 < 3 );
107 break;
108
109Case 2:
110 mes "^00FF00____________________________^000000";
111 mes "^FF0000NOTA :^000000 Todas as Mensagens serão gravadas para referências futuras, por isso, não abuse deste serviço. Caso contrário, serão tomadas as medidas necessárias";
112 do{
113 next;
114 mes "^00FF00____________________________^000000";
115 mes "^FF0000TÃtulo^000000 : "+.@Title$;
116 mes "^00FF00____________________________^000000";
117 mes "^FF0000Mensagens^000000 : "+.@Message$;
118 mes "^00FF00____________________________^000000";
119
120 next;
121 set .@Select,select(( .@Title$ == "" )?"[ ^FF0000Incompleto^000000 ] TÃtulo":"[ ^0000FFCompletado^000000 ] TÃtulo",
122 ( .@Message$ == "" )?"[ ^FF0000Incompleto^000000 ] Mensagem":"[^0000FFCompletado^000000 ] TÃtulo",
123 ( .@Title$ == "" || .@Message$ == "" )?"":"^FF0000ENVIAR MENSAGEM^000000" );
124
125 switch( .@Select ){
126 Case 1:
127 mes "Digite um TÃtulo para o seu problema";
128 input .@Title$;
129 break;
130 Case 2:
131 mes "Explique brevemente o que é o seu problema";
132 set .@i,0;
133 do{
134 input getd(".@Message"+.@i+"$");
135 set .@Message$,.@Message$ + getd(".@Message"+.@i+"$")+" ";
136 set .@Continue,select("Completo:Continuar Mensagem");
137 }while( .@Continue == 2 );
138 break;
139 default:
140 mes "Sua mensagem foi enviada.";
141 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)+"' ) ");
142 break;
143 }
144 }while( .@Select != 3 );
145 break;
146
147Case 3:
148 do{
149 mes "Tudo bem, Qual o próximo ?";
150 next;
151 for( set .@i,0; .@i < 3; set .@i,.@i + 1 )
152 set .@Found[.@i],query_sql("SELECT `ID` FROM `E-Inquiry` WHERE `Status` = "+.@i+"",.@ID );
153
154 set .@Types,select("^FF0000Ler todas as mensagens não lidas [ ^FF0000"+.@Found[0]+"^000000 ]",
155 "Ler todas mensagens respondidas^000000 [ ^FF0000"+.@Found[1]+"^000000 ]",
156 "Ler todas mensagens arquivadas [ ^FF0000"+.@Found[2]+"^000000 ]" ) - 1;
157
158 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$ );
159 if( !.@ManageMSG ){
160 mes "Você não tem Mensagens para ler.";
161 next;
162 }else{
163 set .@Menu$,"";
164 for( set .@i,0; .@i < .@ManageMSG; set .@i,.@i + 1 )
165 set .@Menu$,.@Menu$ +"^FF0000[ "+( .@i+1 )+". ]^0000FF "+.@Title$[.@i]+":";
166 next;
167 set .@Select,select( .@Menu$ ) - 1;
168 mes "^00FF00____________________________^000000";
169 mes "^FF0000Data :^000000 : "+.@Time$[.@Select];
170 mes "^FF0000Altor :^000000 : "+.@Sender$[.@Select];
171 mes "^FF0000TÃtulo^000000 : "+.@Title$[.@Select];
172 mes "^00FF00____________________________^000000";
173 mes "^FF0000Mensagens^000000 : "+.@Message$[.@Select];
174 mes "^00FF00____________________________^000000";
175 if( .@Types > 0 ){
176 mes "^0000FFResposta de ^FF0000"+.@ReplyName$[.@Select]+" ^000000 : "+.@Reply$[.@Select];
177 mes "^00FF00____________________________^000000";
178 mes "^0000FFTempo ^000000 : "+.@ReplyTime$[.@Select];
179 }
180 next;
181 set .@MsgOpt1,select( ( .@Types == 2 )?"":"Responder mensagem","Ver outras mensagens","Deletar mensagem" );
182 switch( .@MsgOpt1 ){
183 Case 1:
184 set .@i,0;
185 do{
186 input getd(".@Reply"+.@i+"$");
187 set .@Reply$,.@Reply$ + getd(".@Reply"+.@i+"$")+" ";
188 set .@Continue,select("Completo:Continuar Mensagens");
189 }while( .@Continue == 2 );
190
191 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]+" ");
192 message strcharinfo(0),"Reply has been sent.";
193 break;
194 Case 3:
195 query_sql("DELETE FROM `E-Inquiry` WHERE `ID` = "+.@ID[.@Select]+" ");
196 mes "A mensagem foi deletada.";
197 default:
198 break;
199 }
200 }
201 }while( .@MsgOpt1 != 1 );
202 break;
203}
204close;
205
206OnInit:
207// Min. GM Level Ler / Gerenciar Mensagens.
208set .GMLevel,80;
209end;
210
211OnPCLoginEvent:
212if( getgmlevel() < .GMLevel ){
213 set .@Replied,query_sql("SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 1 AND `Sender_ID`='"+getcharid(3)+"'",.@ID );
214 if( .@Replied )
215 message strcharinfo(0),"Você tem "+.@Replied+" mensagens respondidas da equipe.";
216}else{
217 set .@Unread,query_sql("SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 0 ",.@ID );
218 if( .@Unread )
219 message strcharinfo(0),"A equipe recebeu "+.@Unread+" uma nova mensagem.";
220}
221if( .@Replied || .@Unread ){
222 if( select("Ler as Mensagens:Cancelar") == 2 ) close;
223 goto OnStartMenu;
224}
225end;
226
227}
228
229// Main NPC
230prontera,139,174,5 script Inquerito#Main 757,{
231 doevent "E-Inquiry::OnStartMenu";
232}
233
234// Duplicates NPC
235// prontera,155,181,5 duplicate(E-Inquiry#Main) E-Inquiry#1 757
236// prontera,155,182,5 duplicate(E-Inquiry#Main) E-Inquiry#2 757
237// prontera,155,183,5 duplicate(E-Inquiry#Main) E-Inquiry#3 757