· 7 years ago · Jan 21, 2019, 12:34 PM
1//============
2// SCRIPT CRIADO POR: FROST
3//============
4//============
5/* TABELAS SQL:
6
7CREATE TABLE IF NOT EXISTS `sistema_de_plantas` (
8 `char_id` INT(11) NOT NULL,
9 `name` VARCHAR(30) NOT NULL,
10 `mapa` VARCHAR(12) NOT NULL,
11 `posi_x` INT(3) NOT NULL,
12 `posi_y` INT(3) NOT NULL,
13 `plant_id` INT(3) NOT NULL,
14 `plant_stage` INT(1) NOT NULL,
15 `plant_time` INT(11) NOT NULL,
16 KEY `char_id` (`char_id`)
17) ENGINE=MyISAM;
18*/
19
20function script plant_system {
21
22 getmapxy(.@map$, .@mapx, .@mapy, UNITTYPE_PC);
23 .@mapy--;
24
25 query_sql "SELECT `plant_id` FROM `sistema_de_plantas` WHERE `mapa`='"+.@map$+"' AND `posi_x`="+.@mapx+" AND `posi_y`="+.@mapy+"",.@pidW;
26
27 if(.@pidW)
28 {
29 mes "Já existe uma planta aqui!";
30 getitem 7193,1;
31 close;
32 }
33
34 mes "Você quer Plantar aqui? ";
35 if(select("Sim:Não")==2){ getitem 7193,1; close; }
36
37 close2;
38 .@cid = getcharid(0);
39 query_sql "SELECT COUNT(`char_id`) FROM `sistema_de_plantas` WHERE `char_id`='"+.@cid+"'",.@rst;
40
41 for(set .@i,0; .@i<=.@rst; set .@i,.@i+1)
42 {
43 query_sql "SELECT `plant_id` FROM `sistema_de_plantas` WHERE `char_id`="+getcharid(0)+" ORDER BY `plant_id` ASC",.@rrst;
44 if(.@rrst[.@i] != .@i && .@chk < 1){ set .@rst,.@i; set .@chk,1; }
45 }
46
47 showscript "Plantando...";
48 progressbar "0xFFFFFF", 1;
49 set .@pName$," #"+.@rst+getcharid(0)+"";
50 duplicatenpc("planta2", .@pName$, sprintf($cid$), .@map$, .@mapx, .@mapy, DIR_SOUTH, 557);
51
52 set .@pTime,gettimetick(2)+60; //60 segundos para regar pela 1º vez
53
54 query_sql "INSERT INTO `sistema_de_plantas` (`char_id`,`name`,`mapa`,`posi_x`,`posi_y`,`plant_id`,`plant_stage`,`plant_time`) VALUES ("+.@cid+",'"+.@pName$+"','"+.@map$+"',"+.@mapx+","+.@mapy+","+.@rst+",0,"+.@pTime+")";
55 end;
56}
57
58- script planta2 -1,{
59
60 query_sql "SELECT `posi_x` FROM `sistema_de_plantas` WHERE `char_id` = "+getcharid(0)+" AND `mapa`='"+strcharinfo(3)+"'",.@px2;
61
62 if(.@px2)
63 {
64 getmapxy(.@map$, .@x, .@y, UNITTYPE_NPC);
65 query_sql "SELECT `plant_id`,`posi_x`,`plant_stage`,`plant_time` FROM `sistema_de_plantas` WHERE `char_id` = "+getcharid(0)+" AND `mapa`='"+.@map$+"' AND `posi_x`="+.@x+" AND `posi_y`="+.@y+"",.@pidC,.@px,.@stage,.@time;
66
67 if(.@px)
68 {
69
70 mes "[^20B2AA Planta ^000000]";
71 mes "ID Planta : "+.@pidC;
72 mes "Nome Planta: "+strnpcinfo(0)+"";
73 mes "Mapa: "+.@map$;
74 mes "Posição X: "+.@x;
75 mes "Posição Y: "+.@y;
76 mes "Estágio: "+.@stage;
77
78 set .@calcT,.@time-gettimetick(2);
79 mes ""+(.@stage == 3 ? "Estágio Final:":"Próximo Estágio:")+" "+(.@calcT < 60 ? (.@calcT < 0 ? "0":.@calcT+"seg"):(.@calcT/60)+"min");
80
81 menu (.@stage < 3 ? "Regar":"")+"",-,(.@stage > 0 ? "Cortar":"")+"",-,"ChatRoom",-,"Sair",-;
82 set .@mn,@menu;
83
84 switch(.@mn)
85 {
86 case 1:
87 if(gettimetick(2) < .@time){ next; mes "Você ainda não pode regar!"; close; }
88
89 switch(.@stage)
90 {
91 case 0: //30min
92
93 if(countitem(523) < 1){ next; mes "Para regar a planta você precisa de 1x "+getitemname(523)+" !"; close; }
94 set .@pTime,gettimetick(2)+1800;
95 query_sql "UPDATE `sistema_de_plantas` SET `plant_stage`=1,`plant_time`="+.@pTime+" WHERE `char_id` = "+getcharid(0)+" AND `mapa`='"+.@map$+"' AND `posi_x`="+.@x+" AND `posi_y`="+.@y+"";
96 classchange(976,1);
97 delitem 523,1;
98 break;
99
100 case 1: //30min
101
102 if(countitem(523) < 1){ next; mes "Para regar a planta você precisa de 1x "+getitemname(523)+" !"; close; }
103 set .@pTime,gettimetick(2)+1800;
104 query_sql "UPDATE `sistema_de_plantas` SET `plant_stage`=2,`plant_time`="+.@pTime+" WHERE `char_id` = "+getcharid(0)+" AND `mapa`='"+.@map$+"' AND `posi_x`="+.@x+" AND `posi_y`="+.@y+"";
105 classchange(527,1);
106 delitem 523,1;
107 break;
108
109 case 2: //1h30min
110
111 if(countitem(523) < 1){ next; mes "Para regar a planta você precisa de 1x "+getitemname(523)+" !"; close; }
112 set .@pTime,gettimetick(2)+5400;
113 query_sql "UPDATE `sistema_de_plantas` SET `plant_stage`=3,`plant_time`="+.@pTime+" WHERE `char_id` = "+getcharid(0)+" AND `mapa`='"+.@map$+"' AND `posi_x`="+.@x+" AND `posi_y`="+.@y+"";
114 classchange(613,1);
115 delitem 523,1;
116 break;
117
118 default:
119 mes "ERRO: 1"; close;
120 }
121
122 close;
123
124 case 2:
125 close2;
126 set .@sqlD,query_sql("DELETE FROM `sistema_de_plantas` WHERE `char_id` = "+getcharid(0)+" AND `mapa`='"+.@map$+"' AND `posi_x`="+.@x+" AND `posi_y`="+.@y+" AND `plant_id`="+.@pidC+"");
127 if(.@sqlD) dispbottom "Erro inesperado ao remover a planta do db!";
128 if(getwaitingroomstate(3,strnpcinfo(0))) delwaitingroom strnpcinfo(0);
129 duplicateremove(strnpcinfo(0));
130 end;
131 case 3:
132 if(select("Ativar Chat:Desativar Chat")==2){ delwaitingroom strnpcinfo(0); close;}
133 if(!getwaitingroomstate(3,strnpcinfo(0))){ mes "já está ativo!"; close; }
134 waitingroom "[ "+strcharinfo(0)+" ]",0;
135 close;
136
137 default:
138 close;
139 }
140 }
141 }
142
143 dispbottom "[^20B2AA Planta ^000000]";
144 dispbottom "Essa Planta não é sua.";
145 end;
146}
147
148- script markMapView -1,{
149
150OnHour00:
151
152 query_sql "SELECT `char_id`,`plant_id`,`plant_time`,`name` FROM `sistema_de_plantas`",.@cID,.@pID,.@pTime,.@pName$;
153
154 if(getarraysize(.@pID))
155 {
156 for(set .@i,0; .@i<getarraysize(.@pID); set .@i,.@i+1)
157 {
158 set .@rsTime,.@pTime[.@i]+86400;
159 if(.@rsTime < gettimetick(2))
160 {
161 query_sql "DELETE FROM `sistema_de_plantas` WHERE `char_id` = "+.@cID[.@i]+" AND `plant_id`="+.@pID[.@i]+" AND `plant_time`="+.@pTime[.@i]+" AND `name`='"+.@pName$[.@i]+"'";
162 duplicateremove(.@pName$[.@i]);
163 }
164 }
165 }
166end;
167
168
169OnPCLoginEvent:
170
171 query_sql "SELECT `plant_id` FROM `sistema_de_plantas` WHERE `char_id`="+getcharid(0)+" AND `mapa`='"+strcharinfo(3)+"'",.@pidL;
172 if(getarraysize(.@pidL))
173 {
174 for(set .@i,0;.@i<getarraysize(.@pidL); set .@i,.@i+1)
175 {
176 query_sql "SELECT `posi_x`,`posi_y` FROM `sistema_de_plantas` WHERE `char_id`="+getcharid(0)+" AND `plant_id`="+.@pidL[.@i]+"",.@mapx,.@mapy;
177 viewpoint 0,.@mapx,.@mapy,(.@i+1),0xFF0000;
178 }
179 }
180end;
181
182
183OnInit:
184
185 query_sql "SELECT `name`,`mapa`,`posi_x`,`posi_y`,`plant_stage` FROM `sistema_de_plantas`",.@pName$,.@map$,.@x,.@y,.@stage;
186
187 if(getarraysize(.@pName$))
188 {
189 for(set .@i,0; .@i<getarraysize(.@pName$); set .@i,.@i+1)
190 {
191 switch(.@stage[.@i])
192 {
193 case 0: set .@npc_id,557; break; // Estágio 0
194 case 1: set .@npc_id,976; break; // Estágio 1
195 case 2: set .@npc_id,527; break; // Estágio 2
196 case 3: set .@npc_id,613; break; // Estágio 3
197 }
198
199 duplicatenpc("planta2", .@pName$[.@i], sprintf($cid$), .@map$[.@i], .@x[.@i], .@y[.@i], DIR_SOUTH, .@npc_id);
200 }
201 }
202end;
203}
204
205//==========================================================|
206// _ _ _ _ |
207// | | | | | | (_) |
208// | |__| |_ _ _ __ ___ ___| |__ _ _ __ ___ __ _ |
209// | __ | | | | '__/ _ \/ __| '_ \| | '_ ` _ \ / _` | |
210// | | | | |_| | | | (_) \__ \ | | | | | | | | | (_| | |
211// |_| |_|\__, |_| \___/|___/_| |_|_|_| |_| |_|\__,_| |
212// __/ |Scripter |
213// |___/ |
214//==========================================================|
215/* -
216---------------------- SCRIPT INFO --------------------------
217Name: Quest Point System =
218Vers: 1.0 =
219Lang: Português-BR =
220-------------------------------------------------------------
221 -
222//---------------------- DESCRIÇÃO --------------------------
223...
224..
225.
226-------------------------------------------------------------
227*/
228
229- script QP_Config -1,{
230OnInit:
231
232/*----------------------------
233 Geral Configs
234---------------------------- */
235
236//== CP GM lvl
237//Nota: Level min para acessar o menu GM.
238set $QP_Gmlvl,99;
239
240//== Filtro de Dificuldade das Quest ( QuestPoint )
241//0= Aleátorio (Padrão), 1= Fácil, 2= Médio, 3= DifÃcil
242set $Filtro_lvl,0;
243
244//== Exibir Icone de Quest no NPC
245//0= desativado.
246set $ShowQuestEvt,1;
247
248//== Quest Point Ranking
249//0= não exibir.
250set $QPRK,1;
251
252//Pontos de Quest
253//Nota: Como deve ser exibido a quantidade de pontos do player com o mesmo em progresso de quest?
254//0 = Não exibe (apenas será mostrado os pontos sempre que o player for começar uma nova quest).
255//1 = Como uma opção sÃmbolica no menu de entrega da quest (não exercerá nehuma função caso selecionado, apenas exibirá os pontos).
256//2 = Um anúncio ao player.
257//3 = Como mensagem no chat geral (dispbottom).
258set $QPVP,1;
259
260//Quests Diárias
261set $QPD,1; // 0 = Off, 1 = On
262set $QPD_type,1; // 0 = quest fixa no char, 1 = quest fixa na conta ( Padrão 1 )
263set $QPD_filtro,0; // Filtro de dificuldade das quest, 0 = Aleatório, 1 = Fácil, 2 = Médio, 3 = DifÃcil
264set $QPD_svSet,0; // A Quest deve ser igual para todos ou será diferente para cada player? 0 = Diferente, 1 = Igual ( Padrão 0 )
265
266//Quests Semanais
267//**
268//Defina qual será o dia da semana em '$QPS_start' que as quests semanais serão resetadas/iniciadas:
269// - ( 0 = Domingo, 1 = Segunda, 2 = Terça, 3 = Quarta, 4 = Quinta, 5 Sexta, 6 = Sábado )
270// - ( O horário será sempre as 00:00 do dia informado! )
271set $QPS,0; // 0 = Off, 1 = On
272set $QPS_start,6; // Dia do Reset
273set $QPS_type,1; // 0 = quest fixa no char, 1 = quest fixa na conta ( Padrão 1 )
274set $QPS_filtro,0; // Filtro de dificuldade das quest, 0 = Aleatório, 1 = Fácil, 2 = Médio, 3 = DifÃcil
275set $QPS_svSet,1; // A Quest deve ser igual para todos ou será diferente para cada player? 0 = Diferente, 1 = Igual ( Padrão 1 )
276
277//Quests Mensais
278//**
279//Defina qual será o dia do mês em '$QPM_start' que as quests mensais serão resetadas/iniciadas:
280// - ( Evite dias como 30 ou 31, recomenda-se entre os dias 1 a 15! )
281// - ( O horário será sempre as 00:00 do dia informado! )
282set $QPM,0; // 0 = Off, 1 = On
283set $QPM_start,1; // Dia do Reset
284set $QPM_type,1; // 0 = quest fixa no char, 1 = quest fixa na conta ( Padrão 1 )
285set $QPM_filtro,0; // Filtro de dificuldade das quest, 0 = Aleatório, 1 = Fácil, 2 = Médio, 3 = DifÃcil
286set $QPM_svSet,1; // A Quest deve ser igual para todos ou será diferente para cada player? 0 = Diferente, 1 = Igual ( Padrão 1 )
287
288
289/*----------------------------
290 Player Configs
291---------------------------- */
292
293//Primeiro QP Extra
294//Nota: Será enviado um anuncio parabenizando pela primeira quest concluÃda e dará um QuestPoint extra (Válido para o primeiro char)
295set $QPexQP,1;
296
297//Control Painel
298//Nota: O player poderá escolher algumas configurações de como as informções será enviadas ao mesmo, poderá conferir quantidade de quests já feitas,resets etc... (0 = off, 1 = on)
299set $QPPCP,1;
300
301//Comando Vip
302//Nota: Players Vips poderão acessar o npc de quest atráves do comando @Quest/@quest, especifique o nÃvel mÃnimo que um player será vip (padrão: 1)
303//Obs: Informe o valor mÃnimo que uma conta será considerada vip (nÃvel de gm) ou 0 para desativar (somente GM 99 tem livre acesso ao comando)
304//(0 = Off)
305set $QPCMD,1;
306
307//Extra QP Vip
308//Nota: Ativando isso o player vip ao concluir uma quest receberá QuestPoint em dobro!
309set $QPvB,0; // 0 = Off, 1 = On
310set $QPvB_lvl,1; //Informe o level de GM considerado player vip (para mais de um tipo de vip informe o valor mÃnimo).
311
312
313//------------- NÃO ALTERAR --------------
314//CheckSet
315if($QPD || $QPS || $QPM || $QPPCP || $QPRK) set $QPexMenu,1; else set $QPexMenu,0;
316
317end;
318}