SHOW:
|
|
- or go back to the newest paste.
1 | /******************************************************************************/ | |
2 | ||
3 | #include < a_samp > | |
4 | #include < dof2 > | |
5 | #include < zcmd > | |
6 | #include < sscanf2 > | |
7 | #include < foreach > | |
8 | ||
9 | /******************************************************************************/ | |
10 | ||
11 | #define COLOR_WHITE 0xFFFFFFFF | |
12 | #define COLOR_GRAY 0xCECECEFF | |
13 | #define COLOR_CYAN 0x00FFFFFF | |
14 | #define COLOR_RED 0xFF0000FF | |
15 | ||
16 | /******************************************************************************/ | |
17 | ||
18 | #define COR_POLICIA 0x6495EDFF | |
19 | #define COR_BOPE 0x483D8BFF | |
20 | #define COR_GROVE 0x00EE00FF | |
21 | #define COR_BALLAS 0x7D26CDFF | |
22 | ||
23 | /******************************************************************************/ | |
24 | ||
25 | #define MAX_ORGS ( 4+1 ) // Número máximo de orgs ( preserve o +1 ). | |
26 | #define MAX_MEMBROS ( 5+1 ) // Número máximo de membros ( preserve o +1 ). | |
27 | #undef MAX_PLAYERS | |
28 | #define MAX_PLAYERS ( 50 ) // Número máximo de players/slots do host | |
29 | ||
30 | /******************************************************************************/ | |
31 | ||
32 | #define DIALOG_CONVIDAR ( 3000 ) // Mude caso exista um dialog com o mesmo id. | |
33 | ||
34 | /******************************************************************************/ | |
35 | ||
36 | enum | |
37 | { | |
38 | ORG_CIVIL , // Org 0 | |
39 | ORG_POLICIAM , // Org 1 | |
40 | ORG_BOPE , // Org 2 | |
41 | ORG_GROVE , // Org 3 | |
42 | ORG_BALLAS // Org 4 | |
43 | } | |
44 | ||
45 | enum pInfo | |
46 | { | |
47 | pAdmin , | |
48 | pCargo , | |
49 | pMembro | |
50 | } | |
51 | new PlayerInfo[MAX_PLAYERS][pInfo]; | |
52 | ||
53 | enum oInfo | |
54 | { | |
55 | Lider , | |
56 | SubLider | |
57 | } | |
58 | new Org[MAX_ORGS][oInfo][MAX_PLAYER_NAME], | |
59 | Membros[MAX_ORGS][MAX_MEMBROS][MAX_PLAYER_NAME]; | |
60 | ||
61 | new OrgName[32], | |
62 | _@STR[128]; | |
63 | ||
64 | new Members, | |
65 | Subs, | |
66 | Lideres; | |
67 | ||
68 | /******************************************************************************/ | |
69 | ||
70 | public OnFilterScriptInit() | |
71 | { | |
72 | for(new i = 1; i < MAX_ORGS; ++i) | |
73 | { | |
74 | //CriarOrgs(i); *Use apenas 1 vez para criar os arquivos das orgs ( lembre-se de criar a pasta infoorg antes ). | |
75 | CarregarOrgs(); | |
76 | } | |
77 | return 1; | |
78 | } | |
79 | ||
80 | public OnFilterScriptExit() | |
81 | { | |
82 | DOF2::Exit(); | |
83 | return 1; | |
84 | } | |
85 | ||
86 | public OnPlayerConnect(playerid) | |
87 | { | |
88 | new arquivo[32], name[24]; | |
89 | GetPlayerName(playerid, name, 24); | |
90 | format(arquivo, 32, "Contas/%s.ini", name); | |
91 | DOF2::CreateFile(arquivo); | |
92 | PlayerInfo[playerid][pAdmin] = DOF2::GetInt(arquivo, "Admin"); | |
93 | PlayerInfo[playerid][pMembro] = DOF2::GetInt(arquivo, "Membro"); | |
94 | PlayerInfo[playerid][pCargo] = DOF2::GetInt(arquivo, "Cargo"); | |
95 | DOF2::SaveFile(); | |
96 | return 1; | |
97 | } | |
98 | ||
99 | public OnPlayerDisconnect(playerid, reason) | |
100 | { | |
101 | SalvarConta(playerid); | |
102 | return 1; | |
103 | } | |
104 | ||
105 | public OnPlayerSpawn(playerid) | |
106 | { | |
107 | ChecarOrg(playerid); | |
108 | return 1; | |
109 | } | |
110 | ||
111 | public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) | |
112 | { | |
113 | if(dialogid == DIALOG_CONVIDAR) | |
114 | { | |
115 | if(response) | |
116 | { | |
117 | Convidar(playerid, GetPVarInt(playerid, "OrgConvite")); | |
118 | DeletePVar(playerid, "OrgConvite"); | |
119 | return 1; | |
120 | } | |
121 | } | |
122 | return 1; | |
123 | } | |
124 | ||
125 | /******************************************************************************/ | |
126 | ||
127 | SalvarConta(playerid) | |
128 | { | |
129 | new arquivo[32], name[24]; | |
130 | GetPlayerName(playerid, name, 24); | |
131 | format(arquivo, 32, "Contas/%s.ini", name); | |
132 | DOF2::CreateFile(arquivo); | |
133 | DOF2::SetInt(arquivo, "Admin", PlayerInfo[playerid][pAdmin]); | |
134 | DOF2::SetInt(arquivo, "Membro", PlayerInfo[playerid][pMembro]); | |
135 | DOF2::SetInt(arquivo, "Cargo", PlayerInfo[playerid][pCargo]); | |
136 | DOF2::SaveFile(); | |
137 | } | |
138 | ||
139 | /******************************************************************************/ | |
140 | ||
141 | /*stock CriarOrgs(orgid) | |
142 | { | |
143 | new arquivo[20]; | |
144 | format(arquivo, sizeof arquivo, "InfoOrg/Org%i.ini", orgid); | |
145 | DOF2::CreateFile(arquivo); | |
146 | DOF2::SetString(arquivo, "Lider", "Ninguem"); | |
147 | DOF2::SetString(arquivo, "SubLider", "Ninguem"); | |
148 | DOF2::SetString(arquivo, "Membro1", "Ninguem"); | |
149 | DOF2::SetString(arquivo, "Membro2", "Ninguem"); | |
150 | DOF2::SetString(arquivo, "Membro3", "Ninguem"); | |
151 | DOF2::SetString(arquivo, "Membro4", "Ninguem"); | |
152 | DOF2::SetString(arquivo, "Membro5", "Ninguem"); | |
153 | DOF2::SaveFile(); | |
154 | }*/ | |
155 | ||
156 | /******************************************************************************/ | |
157 | ||
158 | CarregarOrgs() | |
159 | { | |
160 | new arquivo[20]; | |
161 | for(new i = 1; i < MAX_ORGS; ++i) | |
162 | { | |
163 | format(arquivo, sizeof arquivo, "InfoOrg/Org%i.ini", i); | |
164 | strmid(Org[i][Lider], DOF2::GetString(arquivo,"Lider"), 0, strlen(DOF2::GetString(arquivo, "Lider")), 128); | |
165 | strmid(Org[i][SubLider], DOF2::GetString(arquivo, "SubLider"), 0, strlen(DOF2::GetString(arquivo, "SubLider")), 128); | |
166 | strmid(Membros[i][1], DOF2::GetString(arquivo, "Membro1"), 0, strlen(DOF2::GetString(arquivo, "Membro1")), 128); | |
167 | strmid(Membros[i][2], DOF2::GetString(arquivo, "Membro2"), 0, strlen(DOF2::GetString(arquivo, "Membro2")), 128); | |
168 | strmid(Membros[i][3], DOF2::GetString(arquivo, "Membro3"), 0, strlen(DOF2::GetString(arquivo, "Membro3")), 128); | |
169 | strmid(Membros[i][4], DOF2::GetString(arquivo, "Membro4"), 0, strlen(DOF2::GetString(arquivo, "Membro4")), 128); | |
170 | strmid(Membros[i][5], DOF2::GetString(arquivo, "Membro5"), 0, strlen(DOF2::GetString(arquivo, "Membro5")), 128); | |
171 | } | |
172 | return 1; | |
173 | } | |
174 | ||
175 | /******************************************************************************/ | |
176 | ||
177 | ChecarOrg(playerid) | |
178 | { | |
179 | new orgid = PlayerInfo[playerid][pMembro]; | |
180 | if(strcmp(Org[orgid][Lider],Nome(playerid), true) == 0) return 1; | |
181 | if(strcmp(Org[orgid][SubLider],Nome(playerid), true) == 0) return 1; | |
182 | if(strcmp(Membros[orgid][1], Nome(playerid), true) == 0) return 1; | |
183 | if(strcmp(Membros[orgid][2], Nome(playerid), true) == 0) return 1; | |
184 | if(strcmp(Membros[orgid][3], Nome(playerid), true) == 0) return 1; | |
185 | if(strcmp(Membros[orgid][4], Nome(playerid), true) == 0) return 1; | |
186 | if(strcmp(Membros[orgid][5], Nome(playerid), true) == 0) return 1; | |
187 | PlayerInfo[playerid][pMembro] = 0; | |
188 | PlayerInfo[playerid][pCargo] = 0; | |
189 | SetPlayerSkin(playerid, 23); | |
190 | SendClientMessage(playerid, COLOR_WHITE, "Você foi expulso da organização!"); | |
191 | SpawnPlayer(playerid); | |
192 | return 1; | |
193 | } | |
194 | ||
195 | /******************************************************************************/ | |
196 | ||
197 | Convidar(playerid, orgid) | |
198 | { | |
199 | new arquivo[20], _string[15]; | |
200 | format(arquivo, sizeof arquivo, "InfoOrg/Org%i.ini", orgid); | |
201 | for(new i = 1; i < MAX_MEMBROS; ++i) | |
202 | { | |
203 | if(strcmp(Membros[orgid][i], "Ninguem", true) == 0) | |
204 | { | |
205 | format(_string, sizeof _string, "Membro%i", i); | |
206 | PlayerInfo[playerid][pMembro] = orgid; | |
207 | PlayerInfo[playerid][pCargo] = 1; | |
208 | GetOrgName(orgid, OrgName, sizeof OrgName); | |
209 | strmid(Membros[orgid][i], Nome(playerid), 0, strlen(Nome(playerid)), 128); | |
210 | DOF2::SetString(arquivo, _string, Nome(playerid)); | |
211 | DOF2::SaveFile(); | |
212 | format(_@STR, sizeof _@STR, "Bem vindo ao(s) {FFFFFF}%s{00FFFF} !", OrgName); | |
213 | SendClientMessage(playerid, COLOR_CYAN, _@STR); | |
214 | SpawnPlayer(playerid); | |
215 | break; | |
216 | } | |
217 | } | |
218 | return 1; | |
219 | } | |
220 | ||
221 | /******************************************************************************/ | |
222 | ||
223 | Demitir(playerid) | |
224 | { | |
225 | new arquivo[20], _string[15], orgid = PlayerInfo[playerid][pMembro]; | |
226 | format(arquivo, sizeof arquivo, "InfoOrg/Org%i.ini", orgid); | |
227 | if(strcmp(Org[orgid][Lider], Nome(playerid), true) == 0) | |
228 | { | |
229 | PlayerInfo[playerid][pMembro] = 0; | |
230 | PlayerInfo[playerid][pCargo] = 0; | |
231 | SetPlayerSkin(playerid, 23); | |
232 | strmid(Org[orgid][Lider], "Ninguem", 0 , strlen("Ninguem"), 128); | |
233 | DOF2::SetString(arquivo, "Lider", "Ninguem"); | |
234 | SpawnPlayer(playerid); | |
235 | DOF2::SaveFile(); | |
236 | } | |
237 | if(strcmp(Org[orgid][SubLider], Nome(playerid), true) == 0) | |
238 | { | |
239 | PlayerInfo[playerid][pMembro] = 0; | |
240 | PlayerInfo[playerid][pCargo] = 0; | |
241 | SetPlayerSkin(playerid, 23); | |
242 | strmid(Org[orgid][SubLider], "Ninguem", 0, strlen("Ninguem"), 128); | |
243 | DOF2::SetString(arquivo, "SubLider", "Ninguem"); | |
244 | SpawnPlayer(playerid); | |
245 | DOF2::SaveFile(); | |
246 | } | |
247 | for(new i = 1; i < MAX_MEMBROS; ++i) | |
248 | { | |
249 | if(strcmp(Membros[orgid][i], Nome(playerid), true) == 0) | |
250 | { | |
251 | format(_string, sizeof _string, "Membro%i", i); | |
252 | PlayerInfo[playerid][pMembro] = 0; | |
253 | PlayerInfo[playerid][pCargo] = 0; | |
254 | SetPlayerSkin(playerid, 23); | |
255 | strmid(Membros[orgid][i], "Ninguem", 0, strlen("Ninguem"), 128); | |
256 | DOF2::SetString(arquivo, _string, "Ninguem"); | |
257 | SpawnPlayer(playerid); | |
258 | DOF2::SaveFile(); | |
259 | } | |
260 | } | |
261 | } | |
262 | ||
263 | /******************************************************************************/ | |
264 | ||
265 | Limpar(orgid, vaga) | |
266 | { | |
267 | new arquivo[20], _string[15]; | |
268 | format(arquivo, sizeof arquivo, "InfoOrg/Org%i.ini", orgid); | |
269 | format(_string, sizeof _string, "Membro%i", vaga); | |
270 | if(IsPlayerOnline(Membros[orgid][vaga])) | |
271 | { | |
272 | new ID = GetPlayerID(Membros[orgid][vaga]); | |
273 | Demitir(ID); | |
274 | } | |
275 | else | |
276 | { | |
277 | DOF2::SetString(arquivo, _string, "Ninguem"); | |
278 | DOF2::SaveFile(); | |
279 | strmid(Membros[orgid][vaga], "Ninguem", 0, strlen("Ninguem"), 128); | |
280 | } | |
281 | return 1; | |
282 | } | |
283 | ||
284 | /******************************************************************************/ | |
285 | ||
286 | Promover(playerid, cargo) | |
287 | { | |
288 | new orgid = PlayerInfo[playerid][pMembro]; | |
289 | new arquivo[32], _string[15]; | |
290 | new vaga = GetPlayerVaga(playerid); | |
291 | format(_string, sizeof _string, "Membro%i", vaga); | |
292 | format(arquivo, sizeof arquivo, "InfoOrg/Org%i.ini", orgid); | |
293 | if(cargo == 4) | |
294 | { | |
295 | new subantigo[24]; | |
296 | if(strcmp(Org[orgid][SubLider], "Ninguem", false)) | |
297 | { | |
298 | if(IsPlayerOnline(Org[orgid][SubLider])) | |
299 | { | |
300 | new ID = GetPlayerID(Org[orgid][SubLider]); | |
301 | GetPlayerName(ID, subantigo, sizeof subantigo); | |
302 | strmid(Membros[orgid][vaga], subantigo, 0, strlen(subantigo),128); | |
303 | strmid(Org[orgid][SubLider], Nome(playerid), 0, strlen(Nome(playerid)), 128); | |
304 | ||
305 | DOF2::SetString(arquivo, _string, subantigo); | |
306 | DOF2::SetString(arquivo, "SubLider", Nome(playerid)); | |
307 | DOF2::SaveFile(); | |
308 | ||
309 | PlayerInfo[ID][pCargo] = 3; | |
310 | PlayerInfo[playerid][pCargo] = 4; | |
311 | SendClientMessage(ID, GetOrgColor(orgid), "Um novo sub líder foi escolhido, você foi rebaixado a cargo 3!"); | |
312 | ||
313 | SalvarConta(playerid); | |
314 | SalvarConta(ID); | |
315 | } | |
316 | else | |
317 | { | |
318 | strmid(subantigo, Org[orgid][SubLider], 0, strlen(Org[orgid][SubLider]), 128); | |
319 | ||
320 | DOF2::SetString(arquivo, _string, subantigo); | |
321 | DOF2::SetString(arquivo, "SubLider", Nome(playerid)); | |
322 | DOF2::SaveFile(); | |
323 | ||
324 | format(arquivo, sizeof arquivo, "Contas/%s.ini", subantigo); | |
325 | DOF2::SetInt(arquivo, "Cargo", 3); | |
326 | DOF2::SaveFile(); | |
327 | ||
328 | strmid(Membros[orgid][GetPlayerVaga(playerid)], subantigo, 0, strlen(subantigo), 128); | |
329 | strmid(Org[orgid][SubLider], Nome(playerid), 0, strlen(Nome(playerid)), 128); | |
330 | PlayerInfo[playerid][pCargo] = 4; | |
331 | ||
332 | SalvarConta(playerid); | |
333 | return 1; | |
334 | } | |
335 | } | |
336 | else | |
337 | { | |
338 | strmid(Org[orgid][SubLider], Nome(playerid), 0, strlen(Nome(playerid)), 128); | |
339 | strmid(Membros[orgid][vaga], "Ninguem", 0, strlen("Ninguem"), 128); | |
340 | ||
341 | DOF2::SetString(arquivo, "SubLider", Nome(playerid)); | |
342 | DOF2::SetString(arquivo, _string, "Ninguem"); | |
343 | DOF2::SaveFile(); | |
344 | ||
345 | PlayerInfo[playerid][pCargo] = 4; | |
346 | SalvarConta(playerid); | |
347 | return 1; | |
348 | } | |
349 | } | |
350 | PlayerInfo[playerid][pCargo] = cargo; | |
351 | return 1; | |
352 | } | |
353 | ||
354 | /******************************************************************************/ | |
355 | ||
356 | GetOrgName(orgid,name[],len) | |
357 | { | |
358 | if(orgid == ORG_CIVIL) return format(name, len, "Nenhuma", 0); | |
359 | if(orgid == ORG_POLICIAM) return format(name, len, "Polícia Militar", 0); | |
360 | if(orgid == ORG_BOPE) return format(name, len, "B.O.P.E", 0); | |
361 | if(orgid == ORG_GROVE) return format(name, len, "Grove Street", 0); | |
362 | if(orgid == ORG_BALLAS) return format(name, len, "Ballas", 0); | |
363 | return 1; | |
364 | } | |
365 | ||
366 | /******************************************************************************/ | |
367 | ||
368 | GetOrgColor(orgid) | |
369 | { | |
370 | if(orgid == ORG_CIVIL) return COLOR_WHITE; | |
371 | if(orgid == ORG_POLICIAM) return COR_POLICIA; | |
372 | if(orgid == ORG_BOPE) return COR_BOPE; | |
373 | if(orgid == ORG_GROVE) return COR_GROVE; | |
374 | if(orgid == ORG_BALLAS) return COR_BALLAS; | |
375 | return 1; | |
376 | } | |
377 | ||
378 | /******************************************************************************/ | |
379 | ||
380 | Nome(playerid) | |
381 | { | |
382 | new name[MAX_PLAYER_NAME]; | |
383 | GetPlayerName(playerid,name,sizeof(name)); | |
384 | return name; | |
385 | } | |
386 | ||
387 | /******************************************************************************/ | |
388 | ||
389 | IsPlayerOnline(nome[]) | |
390 | { | |
391 | foreach(Player,i) | |
392 | { | |
393 | if(strcmp(nome, Nome(i), true) == 0) | |
394 | { | |
395 | return 1; | |
396 | } | |
397 | } | |
398 | return 0; | |
399 | } | |
400 | ||
401 | /******************************************************************************/ | |
402 | ||
403 | GetPlayerID(nome[]) | |
404 | { | |
405 | foreach(Player,i) | |
406 | { | |
407 | if(strcmp(nome, Nome(i), true) == 0) | |
408 | { | |
409 | return i; | |
410 | } | |
411 | } | |
412 | return INVALID_PLAYER_ID; | |
413 | } | |
414 | ||
415 | /******************************************************************************/ | |
416 | ||
417 | IsOrgFull(orgid) | |
418 | { | |
419 | if(strcmp(Membros[orgid][1], "Ninguem", false) && | |
420 | strcmp(Membros[orgid][2], "Ninguem", false) && | |
421 | strcmp(Membros[orgid][3], "Ninguem", false)&& | |
422 | strcmp(Membros[orgid][4], "Ninguem", false)&& | |
423 | strcmp(Membros[orgid][5], "Ninguem", false)) | |
424 | { | |
425 | return 1; | |
426 | } | |
427 | return 0; | |
428 | } | |
429 | ||
430 | /******************************************************************************/ | |
431 | ||
432 | GetPlayerVaga(playerid) | |
433 | { | |
434 | new orgid = PlayerInfo[playerid][pMembro]; | |
435 | for(new i = 1; i < MAX_MEMBROS; i++) | |
436 | { | |
437 | if(strcmp(Membros[orgid][i], Nome(playerid), true) == 0) | |
438 | { | |
439 | return i; | |
440 | } | |
441 | } | |
442 | return -255; | |
443 | } | |
444 | ||
445 | /******************************************************************************/ | |
446 | ||
447 | CMD:darlider(playerid,params[]) | |
448 | { | |
449 | new id,orgid; | |
450 | if(PlayerInfo[playerid][pAdmin] < 4)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Você não possui permissão para usar este comando !"); | |
451 | if(sscanf(params, "ui", id, orgid)) return SendClientMessage(playerid, COLOR_GRAY, "( USE ): /darlider [ ID/NOME ] [ ORG ID ]"); | |
452 | if(!IsPlayerConnected(id))return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Id inválido ou offline !"); | |
453 | if(orgid < 1 || orgid > 4)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Orgs apenas de 1 a 4."); | |
454 | if(PlayerInfo[id][pMembro] > 0)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Este jogador já faz parte de uma organização !"); | |
455 | if(strcmp(Org[orgid][Lider], "Ninguem", false))return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Esta organização já possui lider."); | |
456 | GetOrgName(orgid, OrgName, sizeof(OrgName)); | |
457 | format(_@STR, sizeof(_@STR), "( ADMIN ): Você promoveu ( {FFFFFF}%s{00FFFF} ) a líder da organização ( {FFFFFF}%s{00FFFF} ).", Nome(id), OrgName); | |
458 | SendClientMessage(playerid, COLOR_CYAN, _@STR); | |
459 | format(_@STR, sizeof(_@STR),"( ADMIN ): Você foi promovido a líder da organização ( {FFFFFF}%s{00FFFF} ) pelo admin ( {FFFFFF}%s{00FFFF} ).", OrgName, Nome(playerid)); | |
460 | SendClientMessage(id, COLOR_CYAN, _@STR); | |
461 | strmid(Org[orgid][Lider], Nome(id), 0, strlen(Nome(id)), 128); | |
462 | format(_@STR, sizeof(_@STR), "InfoOrg/Org%i.ini", orgid); | |
463 | DOF2::SetString(_@STR, "Lider", Nome(id)); | |
464 | DOF2::SaveFile(); | |
465 | PlayerInfo[playerid][pMembro] = orgid; | |
466 | PlayerInfo[playerid][pCargo] = 5; | |
467 | SpawnPlayer(id); | |
468 | return 1; | |
469 | } | |
470 | ||
471 | CMD:limparlider(playerid,params[]) | |
472 | { | |
473 | new orgid; | |
474 | if(PlayerInfo[playerid][pAdmin] < 4)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Você não possui permissão para usar este comando !"); | |
475 | if(sscanf(params, "i", orgid)) return SendClientMessage(playerid, COLOR_GRAY, "( USE ): /limparlider [ ORG ID ]"); | |
476 | if(orgid < 1 || orgid > 4)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Orgs apenas de 1 a 4."); | |
477 | if(strcmp(Org[orgid][Lider], "Ninguem", true) == 0)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Esta organização não possui lider."); | |
478 | GetOrgName(orgid, OrgName, sizeof(OrgName)); | |
479 | format(_@STR, sizeof(_@STR), "( ADMIN ): Você limpou a vaga de líder da organização ( {FFFFFF}%s{00FFFF} ) [ {FFFFFF}ID: %i{00FFFF} ]", OrgName, orgid); | |
480 | SendClientMessage(playerid, COLOR_CYAN, _@STR); | |
481 | if(IsPlayerOnline(Org[orgid][Lider])) | |
482 | { | |
483 | new ID = GetPlayerID(Org[orgid][Lider]); | |
484 | Demitir(ID); | |
485 | } | |
486 | else | |
487 | { | |
488 | strmid(Org[orgid][Lider], "Ninguem", 0, strlen("Ninguem"), 128); | |
489 | format(_@STR, sizeof(_@STR), "InfoOrg/Org%i.ini", orgid); | |
490 | DOF2::SetString(_@STR, "Lider", "Ninguem"); | |
491 | DOF2::SaveFile(); | |
492 | } | |
493 | return 1; | |
494 | } | |
495 | ||
496 | /******************************************************************************/ | |
497 | ||
498 | CMD:convidar(playerid,params[]) | |
499 | { | |
500 | new id, orgid = PlayerInfo[playerid][pMembro]; | |
501 | if(PlayerInfo[playerid][pMembro] == 0)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Você não faz parte de uma organização !"); | |
502 | if(PlayerInfo[playerid][pCargo] < 4)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Somente lideres e sub-lideres podem fazer convites !"); | |
503 | if(sscanf(params, "u", id))return SendClientMessage(playerid, COLOR_GRAY, "( USE ): /convidar [ ID/NOME ]"); | |
504 | if(!IsPlayerConnected(id))return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Id inválido ou offline !"); | |
505 | if(IsOrgFull(orgid))return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Sua organização alcançou o limite de membros !"); | |
506 | if(PlayerInfo[id][pMembro] > 0)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Este jogador já faz parte de uma organização !"); | |
507 | if(GetPVarInt(id, "OrgConvite") > 0)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Este jogador possui um convite pendente, após a resposta do mesmo retorne a convidá-lo !"); | |
508 | GetOrgName(orgid, OrgName, sizeof(OrgName)); | |
509 | SetPVarInt(id, "OrgConvite", orgid); | |
510 | format(_@STR, sizeof(_@STR), " {00FFFF}Convite de {FFFFFF}%s{00FFFF}, \n para fazer parte da organização: \n {FFFFFF}%s", Nome(playerid), OrgName); | |
511 | ShowPlayerDialog(id, DIALOG_CONVIDAR, DIALOG_STYLE_MSGBOX, "Convite para Organização:", _@STR, "Aceitar", "Recusar"); | |
512 | SendClientMessage(playerid, GetOrgColor(orgid), "Convite enviado!"); | |
513 | return 1; | |
514 | } | |
515 | ||
516 | CMD:demitir(playerid,params[]) | |
517 | { | |
518 | new id, motivo[64]; | |
519 | if(PlayerInfo[playerid][pMembro] == 0)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Você não faz parte de uma organização !"); | |
520 | if(PlayerInfo[playerid][pCargo] < 4)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Somente lideres e sub-lideres podem fazer demições !"); | |
521 | if(sscanf(params, "us[64]", id, motivo))return SendClientMessage(playerid, COLOR_GRAY, "( USE ): /demitir [ ID/NOME ] [ MOTIVO ]"); | |
522 | if(!IsPlayerConnected(id))return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Id inválido ou offline !"); | |
523 | if(id == playerid)return SendClientMessage(playerid, COLOR_GRAY, "( USE ): '/pedircontas' caso queira se demitir !"); | |
524 | if(PlayerInfo[id][pMembro] != PlayerInfo[playerid][pMembro])return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Este jogador pertence a outra organização !"); | |
525 | if(PlayerInfo[id][pCargo] == 5)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Somente administradores removem lideres !"); | |
526 | format(_@STR, sizeof(_@STR), "( ORG ): Você demitiu ( {FFFFFF}%s{00FFFF} ) da organização, ( {FFFFFF}Motivo: %s{00FFFF} ).", Nome(id), motivo); | |
527 | SendClientMessage(playerid, COLOR_CYAN, _@STR); | |
528 | format(_@STR, sizeof(_@STR), "( ORG ): Você foi demitido da organização por ( {FFFFFF}%s{00FFFF} ), ( {FFFFFF}Motivo: %s{00FFFF} ).", Nome(playerid), motivo); | |
529 | SendClientMessage(id, COLOR_CYAN, _@STR); | |
530 | Demitir(id); | |
531 | return 1; | |
532 | } | |
533 | ||
534 | CMD:limparvaga(playerid,params[]) | |
535 | { | |
536 | new vaga[10]; | |
537 | if(PlayerInfo[playerid][pMembro] == 0)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Você não faz parte de uma organização !"); | |
538 | if(PlayerInfo[playerid][pCargo] < 4)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Somente lideres e sub-lideres podem fazer demições !"); | |
539 | if(sscanf(params, "s[10]", vaga))return SendClientMessage(playerid, COLOR_GRAY, "( USE ): /limparvaga [ ID VAGA ]"), SendClientMessage(playerid, COLOR_GRAY, "( USE ): '/limparvaga sub' , para limpar o sublider !"); | |
540 | ||
541 | new orgid = PlayerInfo[playerid][pMembro]; | |
542 | if(strcmp(vaga, "sub", true) == 0) | |
543 | { | |
544 | if(strcmp(Org[orgid][SubLider], "Ninguem", true) == 0)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Esta organização não possui sub-lider"); | |
545 | if(IsPlayerOnline(Org[orgid][SubLider])) | |
546 | { | |
547 | new ID = GetPlayerID(Org[orgid][SubLider]); | |
548 | Demitir(ID); | |
549 | } | |
550 | else | |
551 | { | |
552 | strmid(Org[orgid][SubLider], "Ninguem", 0, strlen("Ninguem"), 128); | |
553 | format(_@STR, sizeof(_@STR),"InfoOrg/Org%i.ini", orgid); | |
554 | DOF2::SetString(_@STR, "SubLider", "Ninguem"); | |
555 | } | |
556 | SendClientMessage(playerid, GetOrgColor(orgid), "( ORG ): Você limpou a vaga de sub-lider !"); | |
557 | return 1; | |
558 | } | |
559 | format(_@STR, sizeof(_@STR), "( ORG ): Você limpou a vaga %i !", strval(vaga)); | |
560 | SendClientMessage(playerid, GetOrgColor(orgid), _@STR); | |
561 | Limpar(orgid, strval(vaga)); | |
562 | return 1; | |
563 | } | |
564 | ||
565 | CMD:promover(playerid,params[]) | |
566 | { | |
567 | new id, cargo; | |
568 | if(PlayerInfo[playerid][pMembro] == 0)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Você não faz parte de uma organização !"); | |
569 | if(PlayerInfo[playerid][pCargo] < 4)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Somente lideres e sub-lideres podem fazer demições !"); | |
570 | if(sscanf(params, "ui", id, cargo))return SendClientMessage(playerid, COLOR_GRAY, "( USE ): /promover [ ID/NOME ] [ CARGO ]"); | |
571 | if(!IsPlayerConnected(id))return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Id inválido ou offline !"); | |
572 | if(PlayerInfo[id][pMembro] != PlayerInfo[playerid][pMembro])return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Este jogador pertence a outra organização !"); | |
573 | if(cargo < 1 || cargo > 4)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Cargos apenas de 1 a 4."); | |
574 | ||
575 | format(_@STR, sizeof(_@STR), "( ORG ): Você promoveu ( {FFFFFF}%s{00FFFF} ) a cargo ( {FFFFFF}%i{00FFFF} ).", Nome(id),cargo); | |
576 | SendClientMessage(playerid, COLOR_CYAN, _@STR); | |
577 | format(_@STR, sizeof(_@STR), "( ORG ): Você foi promovido a cargo ( {FFFFFF}%i{00FFFF} ) pelo ( {FFFFFF}%s{00FFFF} ).",cargo, Nome(playerid)); | |
578 | SendClientMessage(id, COLOR_CYAN, _@STR); | |
579 | Promover(id, cargo); | |
580 | return 1; | |
581 | } | |
582 | ||
583 | CMD:infoorg(playerid) | |
584 | { | |
585 | new orgid = PlayerInfo[playerid][pMembro]; | |
586 | if(PlayerInfo[playerid][pMembro] == 0)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Você não faz parte de uma organização !"); | |
587 | SendClientMessage(playerid, COLOR_RED, "~~~~~~~~~~~~( {FFFFFF}Informações da Organização{FF0000} )~~~~~~~~~~~~"); | |
588 | SendClientMessage(playerid, -1, " "); | |
589 | format(_@STR, sizeof(_@STR), "Lider: %s", Org[orgid][Lider]); | |
590 | SendClientMessage(playerid, GetOrgColor(orgid), _@STR); | |
591 | format(_@STR, sizeof(_@STR), "Sub Lider: %s", Org[orgid][SubLider]); | |
592 | SendClientMessage(playerid, GetOrgColor(orgid), _@STR); | |
593 | for(new i = 1; i < MAX_MEMBROS; i++) | |
594 | { | |
595 | format(_@STR, sizeof(_@STR), "Membro%i: %s", i, Membros[orgid][i]); | |
596 | SendClientMessage(playerid, GetOrgColor(orgid), _@STR); | |
597 | } | |
598 | SendClientMessage(playerid, -1, " "); | |
599 | SendClientMessage(playerid, COLOR_RED, "~~~~~~~~~~~~( {FFFFFF}Informações da Organização{FF0000} )~~~~~~~~~~~~"); | |
600 | return 1; | |
601 | } | |
602 | ||
603 | CMD:membros(playerid) | |
604 | { | |
605 | if(PlayerInfo[playerid][pMembro] == 0)return SendClientMessage(playerid, COLOR_RED, "( ERRO ): Você não faz parte de uma organização !"); | |
606 | SendClientMessage(playerid, COLOR_RED, "~~~~~~~~~~~~( {FFFFFF}Membros Online{FF0000} )~~~~~~~~~~~~"); | |
607 | SendClientMessage(playerid, -1, " "); | |
608 | foreach(Player, i) | |
609 | { | |
610 | if(IsPlayerConnected(i)) | |
611 | { | |
612 | if(PlayerInfo[i][pMembro] == PlayerInfo[playerid][pMembro]) | |
613 | { | |
614 | format(_@STR, sizeof(_@STR), "Nome: %s, Cargo: %d", Nome(i), PlayerInfo[i][pCargo]); | |
615 | SendClientMessage(playerid, GetOrgColor(PlayerInfo[i][pMembro]), _@STR); | |
616 | Members++; | |
617 | } | |
618 | } | |
619 | if(Members == 0)return SendClientMessage(playerid, COLOR_WHITE, "Não tem membros online !"); | |
620 | } | |
621 | SendClientMessage(playerid, -1, " "); | |
622 | SendClientMessage(playerid, COLOR_RED, "~~~~~~~~~~~~( {FFFFFF}Membros Online{FF0000} )~~~~~~~~~~~~"); | |
623 | return 1; | |
624 | } | |
625 | ||
626 | /******************************************************************************/ | |
627 | ||
628 | CMD:orgs(playerid) | |
629 | { | |
630 | SendClientMessage(playerid, COLOR_RED, "~~~~~~~~~~~~( {FFFFFF}Organizações{FF0000} )~~~~~~~~~~~~"); | |
631 | SendClientMessage(playerid, -1, " "); | |
632 | for(new i = 1; i < MAX_ORGS; i++) | |
633 | { | |
634 | GetOrgName(i, OrgName, sizeof(OrgName)); | |
635 | format(_@STR, sizeof(_@STR), "[ %i ]: %s - Líder: %s", i, OrgName, Org[i][Lider]); | |
636 | SendClientMessage(playerid, GetOrgColor(i), _@STR); | |
637 | } | |
638 | SendClientMessage(playerid, -1, " "); | |
639 | SendClientMessage(playerid, COLOR_RED, "~~~~~~~~~~~~( {FFFFFF}Organizações{FF0000} )~~~~~~~~~~~~"); | |
640 | return 1; | |
641 | } | |
642 | ||
643 | CMD:lideres(playerid) | |
644 | { | |
645 | SendClientMessage(playerid, COLOR_RED, "~~~~~~~~~~~~( {FFFFFF}Lideres Online{FF0000} )~~~~~~~~~~~~"); | |
646 | SendClientMessage(playerid, -1, " "); | |
647 | foreach(Player, i) | |
648 | { | |
649 | if(IsPlayerConnected(i)) | |
650 | { | |
651 | if(PlayerInfo[i][pCargo] == 5) | |
652 | { | |
653 | GetOrgName(PlayerInfo[i][pMembro], OrgName, sizeof(OrgName)); | |
654 | format(_@STR, sizeof(_@STR), "Nome: %s - Organização: %s", Nome(i), _@STR); | |
655 | SendClientMessage(playerid, GetOrgColor(PlayerInfo[i][pMembro]), _@STR); | |
656 | Lideres++; | |
657 | } | |
658 | } | |
659 | if(Lideres == 0)return SendClientMessage(playerid, COLOR_WHITE, "Não tem lideres online !"); | |
660 | } | |
661 | SendClientMessage(playerid, -1, " "); | |
662 | SendClientMessage(playerid, COLOR_RED, "~~~~~~~~~~~~( {FFFFFF}Lideres Online{FF0000} )~~~~~~~~~~~~"); | |
663 | return 1; | |
664 | } | |
665 | ||
666 | CMD:subs(playerid) | |
667 | { | |
668 | SendClientMessage(playerid, COLOR_RED, "~~~~~~~~~~~~( {FFFFFF}Sub-Lideres Online{FF0000} )~~~~~~~~~~~~"); | |
669 | SendClientMessage(playerid, -1, " "); | |
670 | foreach(Player, i) | |
671 | { | |
672 | if(IsPlayerConnected(i)) | |
673 | { | |
674 | if(PlayerInfo[i][pCargo] == 4) | |
675 | { | |
676 | GetOrgName(PlayerInfo[i][pMembro], OrgName, sizeof(OrgName)); | |
677 | format(_@STR, sizeof(_@STR), "Nome: %s - Organização: %s", Nome(i), _@STR); | |
678 | SendClientMessage(playerid, GetOrgColor(PlayerInfo[i][pMembro]), _@STR); | |
679 | Subs++; | |
680 | } | |
681 | } | |
682 | if(Subs == 0)return SendClientMessage(playerid, COLOR_WHITE, "Não tem sub-lideres online !"); | |
683 | } | |
684 | SendClientMessage(playerid, -1, " "); | |
685 | SendClientMessage(playerid, COLOR_RED, "~~~~~~~~~~~~( {FFFFFF}Sub-Lideres Online{FF0000} )~~~~~~~~~~~~"); | |
686 | return 1; | |
687 | } | |
688 | ||
689 | /******************************************************************************/ | |
690 | ||
691 | CMD:admin(playerid)return PlayerInfo[playerid][pAdmin] = 4; |