Advertisement
Guest User

InfoOrg

a guest
Jan 14th, 2012
656
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 27.85 KB | None | 0 0
  1. /*
  2. InfoOrg by Put FusioN
  3.  
  4. Este InfoOrg foi desenvolvido por Put FusioN, deve ser adaptado ao game mode de
  5. quem for utilizá-lo, creio o uso do filterscript por si só poderá causar bugs no
  6. servidor, devem ser criadas as pastas 'Contas' e 'InfoOrg' nas scriptfiles, InfoOrg com Lider,
  7. Sub Lider e 13 Membros, convite em dialog com opcao para aceitar ou nao o convite,
  8. promocao, quando um player e promovido a cargo 4 ja havendo um sub lider, o
  9. sub lider passa a ser cargo 3 e a ocupar a antiga vaga do player promovido que
  10. a partir de ja ocupara a vaga de sub lider e tera seu cargo 4, demissão com
  11. motivo especificado, comando de dar lider para os admins e de limpar lider das orgs,
  12. para pegar admin use o comando '/admin', /orgs mostra as organizações e seus respectivos lideres,
  13. /lideres mostra os lideres online no servidor, /subs faz o mesmo mas com os sublideres e
  14. /membros mostra os membros da organização online no momento!
  15.  
  16. PS: Use a funcao CriarInfoOrg apenas uma vez para criar os arquivos, caso queira resetar
  17. o InfoOrg precisará excluir os arquivos da pasta InfoOrg e usar a funcao CriarInfoOrg !
  18.  
  19. Agradecimentos
  20.  
  21. SAMP Team
  22. Y_Less - y_ini, foreach e sscanf
  23. Zeex - zcmd
  24.  
  25. */
  26.  
  27. #include <a_samp>
  28. #include <YSI\y_ini>
  29. #include <zcmd>
  30. #include <foreach>
  31. #include <sscanf2>
  32.  
  33. #define COR_BRANCO 0xFFFFFFFF
  34. #define COR_CIANO 0x00FFFFFF
  35.  
  36. #define DIALOG_CONVIDAR 9934
  37.  
  38. #define CONTAS "/Contas/%s.ini"
  39.  
  40. #define COR_POLICIA 0x6495EDFF
  41. #define COR_BOPE 0x483D8BFF
  42. #define COR_TALIBAN 0xEE1289FF
  43. #define COR_ALQAEDA 0x8B7500FF
  44. #define COR_HAMAS 0xADFF2FFF
  45. #define COR_AZTECAS 0x1E90FFFF
  46. #define COR_GROOVE 0x00EE00FF
  47. #define COR_VAGOS 0xFFFF00FF
  48. #define COR_BALLAS 0x7D26CDFF
  49. #define COR_COSAN 0xCDB5CDFF
  50. #define COR_YAKUZA 0x54FF9FFF
  51. #define COR_MRUSSA 0xFFEC8BFF
  52. #define COR_SONS 0x8B0000FF
  53. #define COR_ANGELS 0xFF69B4FF
  54. #define COR_TLOST 0xFA8072FF
  55. #define COR_EXERCITO 0x006400FF
  56. #define COR_INSTRUTORES 0x00FFFFFF
  57. #define COR_MEDICOS 0xFF0000FF
  58. #define COR_TAXISTAS 0xFFB90FFF
  59. #define COR_REPORTERES 0xEE9A49FF
  60. #define COR_HITMANS 0x9C9C9CFF
  61. #define COR_GOVERNO 0xFFDEADFF
  62.  
  63. #define MAX_ORGS 31
  64. #define MAX_MEMBROS 14
  65.  
  66. forward SalvarConta(playerid);
  67. forward CriarInfoOrg(orgid); //Cria os arquivos
  68. forward CarregarInfoOrg(orgid,name[],value[]);
  69. forward CInfoOrg(playerid);
  70. forward ConvidarOrg(playerid,org);
  71. forward DemitirOrg(playerid);
  72. forward LimparVaga(org,vaga);
  73. forward Promover(playerid,cargo);
  74.  
  75. enum pInfo
  76. {
  77.     pAdmin,
  78.     pCargo,
  79.     pMembro
  80. };
  81. new PlayerInfo[MAX_PLAYERS][pInfo];
  82.  
  83. enum oInfo
  84. {
  85.     Lider,
  86.     SubL
  87. };
  88. new InfoOrg[MAX_ORGS][oInfo][MAX_PLAYER_NAME];
  89. new InfoOrg2[MAX_ORGS][MAX_MEMBROS][MAX_PLAYER_NAME];
  90.  
  91. public OnFilterScriptInit()
  92. {
  93.     new string[40];
  94.     for(new i = 1;i < MAX_ORGS;i++) //Carrega o InfoOrg
  95.     {
  96.         //CriarInfoOrg(i);//Use uma só vez para criar os arquivos, crie a pasta 'InfoOrg'
  97.         format(string,sizeof(string),"CofreOrg/Org%i.ini",i);
  98.         INI_ParseFile(string,"CarregarCofreOrg",.bExtra = true,.extra = i);
  99.         format(string,sizeof(string),"InfoOrg/Org%i.ini",i);
  100.         INI_ParseFile(string,"CarregarInfoOrg",.bExtra = true,.extra = i);
  101.     }
  102.     return 1;
  103. }
  104.  
  105. public OnFilterScriptExit()
  106. {
  107.     foreach(Player,i)
  108.     {
  109.         SalvarConta(i);
  110.     }
  111.     return 1;
  112. }
  113.  
  114. public OnPlayerSpawn(playerid)
  115. {
  116.     if(PlayerInfo[playerid][pMembro] > 0)
  117.     {
  118.         CInfoOrg(playerid); //Checa se o nome do player está no InfoOrg, caso não seta a org do player pra 0.
  119.     }
  120.     return 1;
  121. }
  122.  
  123. public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
  124. {
  125.     if(dialogid == DIALOG_CONVIDAR)
  126.     {
  127.         if(response)
  128.         {
  129.             ConvidarOrg(playerid,GetPVarInt(playerid,"OrgConvite"));
  130.             DeletePVar(playerid,"OrgConvite");
  131.             return 1;
  132.         }
  133.     }
  134.     return 1;
  135. }
  136.  
  137. public SalvarConta(playerid)
  138. {
  139.     new string[40];
  140.     new name[MAX_PLAYER_NAME];
  141.     new INI:File;
  142.     GetPlayerName(playerid,name,sizeof(name));
  143.     format(string,sizeof(string),CONTAS,name);
  144.     File = INI_Open(string);
  145.     INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
  146.     INI_WriteInt(File,"Org",PlayerInfo[playerid][pMembro]);
  147.     INI_WriteInt(File,"Cargo",PlayerInfo[playerid][pCargo]);
  148.     INI_Close(File);
  149.     return 1;
  150. }
  151.  
  152. public CriarInfoOrg(orgid)
  153. {
  154.     new string[30];
  155.     new INI:file;
  156.     format(string,sizeof(string),"InfoOrg/Org%i.ini",orgid);
  157.     file = INI_Open(string);
  158.     INI_WriteString(file,"Lider","Ninguem");
  159.     INI_WriteString(file,"SubL","Ninguem");
  160.     INI_WriteString(file,"Membro1","Ninguem");
  161.     INI_WriteString(file,"Membro2","Ninguem");
  162.     INI_WriteString(file,"Membro3","Ninguem");
  163.     INI_WriteString(file,"Membro4","Ninguem");
  164.     INI_WriteString(file,"Membro5","Ninguem");
  165.     INI_WriteString(file,"Membro6","Ninguem");
  166.     INI_WriteString(file,"Membro7","Ninguem");
  167.     INI_WriteString(file,"Membro8","Ninguem");
  168.     INI_WriteString(file,"Membro9","Ninguem");
  169.     INI_WriteString(file,"Membro10","Ninguem");
  170.     INI_WriteString(file,"Membro11","Ninguem");
  171.     INI_WriteString(file,"Membro12","Ninguem");
  172.     INI_WriteString(file,"Membro13","Ninguem");
  173.     INI_Close(file);
  174.     return 1;
  175. }
  176.  
  177. public CarregarInfoOrg(orgid,name[],value[])
  178. {
  179.     INI_String("Lider",InfoOrg[orgid][Lider],MAX_PLAYER_NAME);
  180.     INI_String("SubL",InfoOrg[orgid][SubL],MAX_PLAYER_NAME);
  181.     INI_String("Membro1",InfoOrg2[orgid][1],MAX_PLAYER_NAME);
  182.     INI_String("Membro2",InfoOrg2[orgid][2],MAX_PLAYER_NAME);
  183.     INI_String("Membro3",InfoOrg2[orgid][3],MAX_PLAYER_NAME);
  184.     INI_String("Membro4",InfoOrg2[orgid][4],MAX_PLAYER_NAME);
  185.     INI_String("Membro5",InfoOrg2[orgid][5],MAX_PLAYER_NAME);
  186.     INI_String("Membro6",InfoOrg2[orgid][6],MAX_PLAYER_NAME);
  187.     INI_String("Membro7",InfoOrg2[orgid][7],MAX_PLAYER_NAME);
  188.     INI_String("Membro8",InfoOrg2[orgid][8],MAX_PLAYER_NAME);
  189.     INI_String("Membro9",InfoOrg2[orgid][9],MAX_PLAYER_NAME);
  190.     INI_String("Membro10",InfoOrg2[orgid][10],MAX_PLAYER_NAME);
  191.     INI_String("Membro11",InfoOrg2[orgid][11],MAX_PLAYER_NAME);
  192.     INI_String("Membro12",InfoOrg2[orgid][12],MAX_PLAYER_NAME);
  193.     INI_String("Membro13",InfoOrg2[orgid][13],MAX_PLAYER_NAME);
  194.     return 1;
  195. }
  196.  
  197. public CInfoOrg(playerid)
  198. {
  199.     new org = PlayerInfo[playerid][pMembro];
  200.     new name[MAX_PLAYER_NAME];
  201.     GetPlayerName(playerid,name,sizeof(name));
  202.     if(strcmp(InfoOrg[org][Lider],name,true)==0) return 1;
  203.     if(strcmp(InfoOrg[org][SubL],name,true)==0) return 1;
  204.     if(strcmp(InfoOrg2[org][1],name,true)==0) return 1;
  205.     if(strcmp(InfoOrg2[org][2],name,true)==0) return 1;
  206.     if(strcmp(InfoOrg2[org][3],name,true)==0) return 1;
  207.     if(strcmp(InfoOrg2[org][4],name,true)==0) return 1;
  208.     if(strcmp(InfoOrg2[org][5],name,true)==0) return 1;
  209.     if(strcmp(InfoOrg2[org][6],name,true)==0) return 1;
  210.     if(strcmp(InfoOrg2[org][7],name,true)==0) return 1;
  211.     if(strcmp(InfoOrg2[org][8],name,true)==0) return 1;
  212.     if(strcmp(InfoOrg2[org][9],name,true)==0) return 1;
  213.     if(strcmp(InfoOrg2[org][10],name,true)==0) return 1;
  214.     if(strcmp(InfoOrg2[org][11],name,true)==0) return 1;
  215.     if(strcmp(InfoOrg2[org][12],name,true)==0) return 1;
  216.     if(strcmp(InfoOrg2[org][13],name,true)==0) return 1;
  217.     PlayerInfo[playerid][pMembro] = 0;
  218.     PlayerInfo[playerid][pCargo] = 0;
  219.     SetPlayerSkin(playerid,23);
  220.     SendClientMessage(playerid,COR_BRANCO,"Você foi expulso da organização!");
  221.     SpawnPlayer(playerid);
  222.     return 1;
  223. }
  224.  
  225. public ConvidarOrg(playerid,org)
  226. {
  227.     new string[20];
  228.     new string2[15];
  229.     new name[MAX_PLAYER_NAME];
  230.     new INI:File;
  231.     GetPlayerName(playerid,name,sizeof(name));
  232.     format(string,sizeof(string),"InfoOrg/Org%i.ini",org);
  233.     File = INI_Open(string);
  234.     for(new i = 1; i < MAX_MEMBROS; i++)
  235.     {
  236.         if(strcmp(InfoOrg2[org][i],"Ninguem",true)==0)
  237.         {
  238.             new norg[32];
  239.             format(string2,sizeof(string2),"Membro%i",i);
  240.             PlayerInfo[playerid][pMembro] = org;
  241.             PlayerInfo[playerid][pCargo] = 1;
  242.             NomeOrg(org,norg,sizeof(norg));
  243.             strmid(InfoOrg2[org][i],name,0,strlen(name),128);
  244.             INI_WriteString(File,string2,name);
  245.             format(string2,sizeof(string2),"Bem vindo aos %s", norg);
  246.             SpawnPlayer(playerid);
  247.             INI_Close(File);
  248.             break;
  249.         }
  250.     }
  251.     return 1;
  252. }
  253.  
  254. public DemitirOrg(playerid)
  255. {
  256.     new string[20];
  257.     new string2[15];
  258.     new name[MAX_PLAYER_NAME];
  259.     new INI:File;
  260.     new org = PlayerInfo[playerid][pMembro];
  261.     GetPlayerName(playerid,name,sizeof(name));
  262.     format(string,sizeof(string),"InfoOrg/Org%i.ini",org);
  263.     File = INI_Open(string);
  264.     if(strcmp(InfoOrg[org][Lider],name,true)==0)
  265.     {
  266.         PlayerInfo[playerid][pMembro] = 0;
  267.         PlayerInfo[playerid][pCargo] = 0;
  268.         SetPlayerSkin(playerid,23);
  269.         strmid(InfoOrg[org][Lider],"Ninguem",0,strlen("Ninguem"),128);
  270.         INI_WriteString(File,"Lider","Ninguem");
  271.         SpawnPlayer(playerid);
  272.         INI_Close(File);
  273.         return 1;
  274.     }
  275.     if(strcmp(InfoOrg[org][SubL],name,true)==0)
  276.     {
  277.         PlayerInfo[playerid][pMembro] = 0;
  278.         PlayerInfo[playerid][pCargo] = 0;
  279.         SetPlayerSkin(playerid,23);
  280.         strmid(InfoOrg[org][Lider],"Ninguem",0,strlen("Ninguem"),128);
  281.         INI_WriteString(File,"Lider","Ninguem");
  282.         SpawnPlayer(playerid);
  283.         INI_Close(File);
  284.         return 1;
  285.     }
  286.     for(new i = 1; i < MAX_MEMBROS; i++)
  287.     {
  288.         if(strcmp(InfoOrg2[org][i],name,true)==0)
  289.         {
  290.             format(string2,sizeof(string2),"Membro%i",i);
  291.             PlayerInfo[playerid][pMembro] = 0;
  292.             PlayerInfo[playerid][pCargo] = 0;
  293.             SetPlayerSkin(playerid,23);
  294.             strmid(InfoOrg[org][Lider],"Ninguem",0,strlen("Ninguem"),128);
  295.             INI_WriteString(File,string2,"Ninguem");
  296.             SpawnPlayer(playerid);
  297.             INI_Close(File);
  298.         }
  299.     }
  300.     return 1;
  301. }
  302.  
  303. public LimparVaga(org,vaga)
  304. {
  305.     new string[20];
  306.     new string2[15];
  307.     new INI:File;
  308.     format(string,sizeof(string),"InfoOrg/Org%i.ini",org);
  309.     format(string2,sizeof(string2),"Membro%i",vaga);
  310.     if(IsPlayerOnline(InfoOrg2[org][vaga]))
  311.     {
  312.         new ID;
  313.         ID = GetPlayerID(InfoOrg2[org][vaga]);
  314.         DemitirOrg(ID);
  315.     }
  316.     else
  317.     {
  318.         File = INI_Open(string);
  319.         INI_WriteString(File,string2,"Ninguem");
  320.         INI_Close(File);
  321.         strmid(InfoOrg2[org][vaga],"Ninguem",0,strlen("Ninguem"),128);
  322.     }
  323.     return 1;
  324. }
  325.  
  326. public Promover(playerid,cargo)
  327. {
  328.     new org = PlayerInfo[playerid][pMembro];
  329.     new string[128];
  330.     if(cargo == 4)
  331.     {
  332.         new subantigo[50];
  333.         if(strcmp(InfoOrg[org][SubL],"Ninguem",false))
  334.         {
  335.             if(IsPlayerOnline(InfoOrg[org][SubL]))
  336.             {
  337.                 new ID = GetPlayerID(InfoOrg[org][SubL]);
  338.                 GetPlayerName(ID,subantigo,sizeof(subantigo));
  339.                 new vaga = GetPlayerVaga(playerid);
  340.                 strmid(InfoOrg2[org][vaga],subantigo,0,strlen(subantigo),128);
  341.                 strmid(InfoOrg[org][SubL],pNome(playerid),0,strlen(pNome(playerid)),128);
  342.                 new str[10];
  343.                 format(str,sizeof(str),"Membro%i",vaga);
  344.                 format(string,sizeof(string),"InfoOrg/Org%i.ini",org);
  345.                 new INI:file = INI_Open(string);
  346.                 INI_WriteString(file,str,subantigo);
  347.                 INI_WriteString(file,"SubL",pNome(playerid));
  348.                 INI_Close(file);
  349.                 PlayerInfo[ID][pCargo] = 3;
  350.                 PlayerInfo[playerid][pCargo] = 4;
  351.                 SendClientMessage(ID,CorOrg(org),"Um novo sub líder foi escolhido, você foi rebaixado a cargo 3!");
  352.                 SalvarConta(playerid);
  353.                 SalvarConta(ID);
  354.             }
  355.             else
  356.             {
  357.                 format(string,sizeof(string),"InfoOrg/Org%i.ini",org);
  358.                 new INI:file = INI_Open(string);
  359.                 strmid(subantigo,InfoOrg[org][SubL],0,strlen(InfoOrg[org][SubL]),128);
  360.                 new str[50];
  361.                 format(str,sizeof(str),"Membro%i",GetPlayerVaga(playerid));
  362.                 INI_WriteString(file,str,subantigo);
  363.                 INI_WriteString(file,"SubL",pNome(playerid));
  364.                 INI_Close(file);
  365.                 format(string,sizeof(string),CONTAS,subantigo);
  366.                 file = INI_Open(string);
  367.                 INI_WriteInt(file,"Cargo",3);
  368.                 INI_Close(file);
  369.                 strmid(InfoOrg2[org][GetPlayerVaga(playerid)],subantigo,0,strlen(subantigo),128);
  370.                 strmid(InfoOrg[org][SubL],pNome(playerid),0,strlen(pNome(playerid)),128);
  371.                 PlayerInfo[playerid][pCargo] = 4;
  372.                 SalvarConta(playerid);
  373.                 return 1;
  374.             }
  375.         }
  376.         else
  377.         {
  378.             new vaga = GetPlayerVaga(playerid);
  379.             new str[50];
  380.             format(str,sizeof(str),"Membro%d",vaga);
  381.             strmid(InfoOrg[org][SubL],pNome(playerid),0,strlen(pNome(playerid)),128);
  382.             strmid(InfoOrg2[org][vaga],"Ninguem",0,strlen("Ninguem"),128);
  383.             format(string,sizeof(string),"InfoOrg/Org%d.ini",org);
  384.             new INI:file = INI_Open(string);
  385.             INI_WriteString(file,"SubL",pNome(playerid));
  386.             INI_WriteString(file,str,"Ninguem");
  387.             INI_Close(file);
  388.             PlayerInfo[playerid][pCargo] = 4;
  389.             SalvarConta(playerid);
  390.             return 1;
  391.         }
  392.     }
  393.     PlayerInfo[playerid][pCargo] = cargo;
  394.     return 1;
  395. }
  396.  
  397. stock pNome(playerid)
  398. {
  399.     new name[24];
  400.     GetPlayerName(playerid,name,sizeof(name));
  401.     return name;
  402. }
  403.  
  404. stock NomeOrg(orgid,name[],len)
  405. {
  406.     if(orgid == 0) return format(name,len,"Nenhuma",0);
  407.     if(orgid == 1) return format(name,len,"Polícia Militar de Los Santos",0);
  408.     if(orgid == 2) return format(name,len,"Polícia Militar de Las Venturas",0);
  409.     if(orgid == 3) return format(name,len,"Polícia Militar de San Fierro",0);
  410.     if(orgid == 4) return format(name,len,"BOPE",0);
  411.     if(orgid == 5) return format(name,len,"Polícia Federal",0);
  412.     if(orgid == 6) return format(name,len,"Polícia Civil",0);
  413.     if(orgid == 7) return format(name,len,"Taliban",0);
  414.     if(orgid == 8) return format(name,len,"Alqaeda",0);
  415.     if(orgid == 9) return format(name,len,"Hamas",0);
  416.     if(orgid == 10) return format(name,len,"Los Aztecas",0);
  417.     if(orgid == 11) return format(name,len,"Groove Street",0);
  418.     if(orgid == 12) return format(name,len,"Los Vagos",0);
  419.     if(orgid == 13) return format(name,len,"Ballas",0);
  420.     if(orgid == 14) return format(name,len,"Cosa Nostra",0);
  421.     if(orgid == 15) return format(name,len,"Yakuza",0);
  422.     if(orgid == 16) return format(name,len,"Máfia Russa",0);
  423.     if(orgid == 17) return format(name,len,"Sons of Anarchy",0);
  424.     if(orgid == 18) return format(name,len,"Angels of Death",0);
  425.     if(orgid == 19) return format(name,len,"The Lost",0);
  426.     if(orgid == 20) return format(name,len,"Exército",0);
  427.     if(orgid == 21) return format(name,len,"Instrutores",0);
  428.     if(orgid == 22) return format(name,len,"Médicos de Los Santos",0);
  429.     if(orgid == 23) return format(name,len,"Médicos de Las Venturas",0);
  430.     if(orgid == 24) return format(name,len,"Médicos de San Fierro",0);
  431.     if(orgid == 25) return format(name,len,"Taxistas de Los Santos",0);
  432.     if(orgid == 26) return format(name,len,"Taxistas de Las Venturas",0);
  433.     if(orgid == 27) return format(name,len,"Taxistas de San Fierro",0);
  434.     if(orgid == 28) return format(name,len,"Repórteres",0);
  435.     if(orgid == 29) return format(name,len,"Hitmans",0);
  436.     if(orgid == 30) return format(name,len,"Governo de San Andreas",0);
  437.     return 1;
  438. }
  439.  
  440. stock CorOrg(orgid)
  441. {
  442.     if(orgid == 0) return COR_BRANCO;
  443.     if(orgid == 1) return COR_POLICIA;
  444.     if(orgid == 2) return COR_POLICIA;
  445.     if(orgid == 3) return COR_POLICIA;
  446.     if(orgid == 4) return COR_BOPE;
  447.     if(orgid == 5) return COR_POLICIA;
  448.     if(orgid == 6) return COR_POLICIA;
  449.     if(orgid == 7) return COR_TALIBAN;
  450.     if(orgid == 8) return COR_ALQAEDA;
  451.     if(orgid == 9) return COR_HAMAS;
  452.     if(orgid == 10) return COR_AZTECAS;
  453.     if(orgid == 11) return COR_GROOVE;
  454.     if(orgid == 12) return COR_VAGOS;
  455.     if(orgid == 13) return COR_BALLAS;
  456.     if(orgid == 14) return COR_COSAN;
  457.     if(orgid == 15) return COR_YAKUZA;
  458.     if(orgid == 16) return COR_MRUSSA;
  459.     if(orgid == 17) return COR_SONS;
  460.     if(orgid == 18) return COR_ANGELS;
  461.     if(orgid == 19) return COR_TLOST;
  462.     if(orgid == 20) return COR_EXERCITO;
  463.     if(orgid == 21) return COR_INSTRUTORES;
  464.     if(orgid == 22) return COR_MEDICOS;
  465.     if(orgid == 23) return COR_MEDICOS;
  466.     if(orgid == 24) return COR_MEDICOS;
  467.     if(orgid == 25) return COR_TAXISTAS;
  468.     if(orgid == 26) return COR_TAXISTAS;
  469.     if(orgid == 27) return COR_TAXISTAS;
  470.     if(orgid == 28) return COR_REPORTERES;
  471.     if(orgid == 29) return COR_HITMANS;
  472.     if(orgid == 30) return COR_GOVERNO;
  473.     return 1;
  474. }
  475.  
  476. stock IsPlayerOnline(nome[])
  477. {
  478.     new name[MAX_PLAYER_NAME];
  479.     foreach(Player,i)
  480.     {
  481.         GetPlayerName(i,name,sizeof(name));
  482.         if(strcmp(nome,name,true)==0)
  483.         {
  484.             return 1;
  485.         }
  486.     }
  487.     return 0;
  488. }
  489.  
  490. stock GetPlayerID(nome[])
  491. {
  492.     new name[MAX_PLAYER_NAME];
  493.     foreach(Player,i)
  494.     {
  495.         GetPlayerName(i,name,sizeof(name));
  496.         if(strcmp(nome,name,true)==0)
  497.         {
  498.             return i;
  499.         }
  500.     }
  501.     return INVALID_PLAYER_ID;
  502. }
  503.  
  504. stock IsOrgFull(orgid)
  505. {
  506.     if(strcmp(InfoOrg2[orgid][1],"Ninguem",false)&&
  507.     strcmp(InfoOrg2[orgid][2],"Ninguem",false)&&
  508.     strcmp(InfoOrg2[orgid][3],"Ninguem",false)&&
  509.     strcmp(InfoOrg2[orgid][4],"Ninguem",false)&&
  510.     strcmp(InfoOrg2[orgid][5],"Ninguem",false)&&
  511.     strcmp(InfoOrg2[orgid][6],"Ninguem",false)&&
  512.     strcmp(InfoOrg2[orgid][7],"Ninguem",false)&&
  513.     strcmp(InfoOrg2[orgid][8],"Ninguem",false)&&
  514.     strcmp(InfoOrg2[orgid][9],"Ninguem",false)&&
  515.     strcmp(InfoOrg2[orgid][10],"Ninguem",false)&&
  516.     strcmp(InfoOrg2[orgid][11],"Ninguem",false)&&
  517.     strcmp(InfoOrg2[orgid][12],"Ninguem",false)&&
  518.     strcmp(InfoOrg2[orgid][13],"Ninguem",false))
  519.     {
  520.         return 1;
  521.     }
  522.     return 0;
  523. }
  524.  
  525. stock GetPlayerVaga(playerid)
  526. {
  527.     new org = PlayerInfo[playerid][pMembro];
  528.     for(new i = 1; i < MAX_MEMBROS; i++)
  529.     {
  530.         if(strcmp(InfoOrg2[org][i],pNome(playerid),true)==0)
  531.         {
  532.             return i;
  533.         }
  534.     }
  535.     return -255;
  536. }
  537.  
  538. CMD:darlider(playerid,params[])
  539. {
  540.     if(PlayerInfo[playerid][pAdmin] < 4)
  541.         return SendClientMessage(playerid,COR_CIANO,"Somente administradores nível 4+.");
  542.     new id,orgid;
  543.     if(sscanf(params,"ud",id,orgid))
  544.         return SendClientMessage(playerid,COR_CIANO,"Use: /DarLider [ID/Nome] [OrgID]");
  545.     if(!IsPlayerConnected(id))
  546.         return SendClientMessage(playerid,COR_CIANO,"Jogador Offline.");
  547.     if(orgid < 1 || orgid > 30)
  548.         return SendClientMessage(playerid,COR_CIANO,"Orgs de 1 a 30.");
  549.     if(PlayerInfo[id][pMembro] > 0)
  550.         return SendClientMessage(playerid,COR_CIANO,"Este jogador é membro de outra organização!");
  551.     if(strcmp(InfoOrg[orgid][Lider],"Ninguem",false))
  552.         return SendClientMessage(playerid,COR_CIANO,"Essa organização já possui líder.");
  553.     new norg[32];
  554.     new string[128];
  555.     NomeOrg(orgid,norg,sizeof(norg));
  556.     format(string,sizeof(string),"Você promoveu %s a líder da organização %s.",pNome(id),norg);
  557.     SendClientMessage(playerid,COR_CIANO,string);
  558.     format(string,sizeof(string),"Você foi promovido a líder da organização %s pelo admin %s.",norg,pNome(playerid));
  559.     SendClientMessage(id,COR_CIANO,string);
  560.     strmid(InfoOrg[orgid][Lider],pNome(id),0,strlen(pNome(id)),128);
  561.     format(string,sizeof(string),"InfoOrg/Org%i.ini",orgid);
  562.     new INI:file = INI_Open(string);
  563.     INI_WriteString(file,"Lider",pNome(id));
  564.     INI_Close(file);
  565.     PlayerInfo[playerid][pMembro] = orgid;
  566.     PlayerInfo[playerid][pCargo] = 5;
  567.     SpawnPlayer(id);
  568.     return 1;
  569. }
  570.  
  571. CMD:limparlider(playerid,params[])
  572. {
  573.     if(PlayerInfo[playerid][pAdmin] < 4)
  574.         return SendClientMessage(playerid,COR_CIANO,"Somente administradores nível 4+.");
  575.     new orgid;
  576.     if(sscanf(params,"d",orgid))
  577.         return SendClientMessage(playerid,COR_CIANO,"Use: /LimparLider [OrgID]");
  578.     if(orgid < 1 || orgid > 30)
  579.         return SendClientMessage(playerid,COR_CIANO,"Orgs de 1 a 30.");
  580.     if(strcmp(InfoOrg[orgid][Lider],"Ninguem",true)==0)
  581.         return SendClientMessage(playerid,COR_CIANO,"Esta organização já está sem líder.");
  582.     new string[128];
  583.     new norg[32];
  584.     NomeOrg(orgid,norg,sizeof(norg));
  585.     format(string,sizeof(string),"Você limpou a vaga de líder da organização %s [ID: %i]",norg,orgid);
  586.     SendClientMessage(playerid,CorOrg(orgid),string);
  587.     format(string,sizeof(string),"O administrador %s limpou a vaga de líder da organização %s !",pNome(playerid),norg);
  588.     if(IsPlayerOnline(InfoOrg[orgid][Lider]))
  589.     {
  590.         new ID = GetPlayerID(InfoOrg[orgid][Lider]);
  591.         DemitirOrg(ID);
  592.     }
  593.     else
  594.     {
  595.         strmid(InfoOrg[orgid][Lider],"Ninguem",0,strlen("Ninguem"),128);
  596.         format(string,sizeof(string),"InfoOrg/Org%i.ini",orgid);
  597.         new INI:file = INI_Open(string);
  598.         INI_WriteString(file,"Lider","Ninguem");
  599.         INI_Close(file);
  600.     }
  601.     return 1;
  602. }
  603.  
  604. CMD:convidar(playerid,params[])
  605. {
  606.     if(PlayerInfo[playerid][pMembro] == 0)
  607.         return SendClientMessage(playerid,COR_CIANO,"Somente membros de organizações.");
  608.     if(PlayerInfo[playerid][pCargo] < 4)
  609.         return SendClientMessage(playerid,COR_CIANO,"Somente Líder e Sub Líder.");
  610.     new id;
  611.     new org = PlayerInfo[playerid][pMembro];
  612.     if(sscanf(params,"u",id))
  613.         return SendClientMessage(playerid,COR_CIANO,"Use: /Convidar [ID/Nome]");
  614.     if(!IsPlayerConnected(id))
  615.         return SendClientMessage(playerid,COR_CIANO,"Jogador Offline.");
  616.     if(IsOrgFull(org))
  617.         return SendClientMessage(playerid,COR_CIANO,"Organização cheia!");
  618.     if(PlayerInfo[id][pMembro] > 0)
  619.         return SendClientMessage(playerid,COR_CIANO,"Este jogador é membro de outra organização!");
  620.     if(GetPVarInt(id,"OrgConvite") > 0)
  621.         return SendClientMessage(playerid,COR_CIANO,"Este jogador já possui um convite pendente, aguarde sua resposta ao mesmo para enviar outro!");
  622.     new norg[32];
  623.     new string[128];
  624.     NomeOrg(org,norg,sizeof(norg));
  625.     SetPVarInt(id,"OrgConvite",org);
  626.     format(string,sizeof(string),"%s está lhe convidando para fazer parte da organização %s, aceita o convite?",pNome(playerid),norg);
  627.     ShowPlayerDialog(id,DIALOG_CONVIDAR,0,"Convite",string,"SIM","NÃO");
  628.     SendClientMessage(playerid,CorOrg(org),"Convite enviado!");
  629.     return 1;
  630. }
  631.  
  632. CMD:demitir(playerid,params[])
  633. {
  634.     if(PlayerInfo[playerid][pMembro] == 0)
  635.         return SendClientMessage(playerid,COR_CIANO,"Somente membros de organizações.");
  636.     if(PlayerInfo[playerid][pCargo] < 4)
  637.         return SendClientMessage(playerid,COR_CIANO,"Somente Líder e Sub Líder.");
  638.     new id,motivo[64];
  639.     if(sscanf(params,"us[64]",id,motivo))
  640.         return SendClientMessage(playerid,COR_CIANO,"Use: /Demitir [ID/Nome][Motivo]");
  641.     if(!IsPlayerConnected(id))
  642.         return SendClientMessage(playerid,COR_CIANO,"Jogador Offline.");
  643.     if(id == playerid)
  644.         return SendClientMessage(playerid,COR_CIANO,"Use /pedircontas caso queira se demitir!");
  645.     if(PlayerInfo[id][pMembro] != PlayerInfo[playerid][pMembro])
  646.         return SendClientMessage(playerid,COR_CIANO,"Este jogador é de outra organização!");
  647.     if(PlayerInfo[id][pCargo] == 5)
  648.         return SendClientMessage(playerid,COR_CIANO,"Somente administradores podem demitir líderes!");
  649.     if(!strlen(motivo))
  650.         return SendClientMessage(playerid,COR_CIANO,"Motivo não especificado!");
  651.     new string[128];
  652.     format(string,sizeof(string),"Você demitiu %s da organização, motivo: %s",pNome(id),motivo);
  653.     SendClientMessage(playerid,CorOrg(PlayerInfo[playerid][pMembro]),string);
  654.     format(string,sizeof(string),"Você foi demitido da organização por %s, motivo: %s",pNome(playerid),motivo);
  655.     SendClientMessage(id,COR_CIANO,string);
  656.     DemitirOrg(id);
  657.     return 1;
  658. }
  659.  
  660. CMD:pedircontas(playerid)
  661. {
  662.     if(PlayerInfo[playerid][pMembro] == 0)
  663.         return SendClientMessage(playerid,COR_BRANCO,"Você não é de nenhuma organização!");
  664.     SendClientMessage(playerid,CorOrg(PlayerInfo[playerid][pMembro]),"Você pediu contas da organização, agora você é civil!");
  665.     DemitirOrg(playerid);
  666.     return 1;
  667. }
  668.  
  669. CMD:limparvaga(playerid,params[])
  670. {
  671.     new string[128];
  672.     if(PlayerInfo[playerid][pMembro] == 0)
  673.         return SendClientMessage(playerid,COR_CIANO,"Somente membros de organizações.");
  674.     if(PlayerInfo[playerid][pCargo] < 4)
  675.         return SendClientMessage(playerid,COR_CIANO,"Somente Líder e Sub Líder.");
  676.     new vaga[10];
  677.     if(sscanf(params,"s[10]",vaga))
  678.         return SendClientMessage(playerid,COR_CIANO,"Use /LimparVaga [ID da Vaga]"),SendClientMessage(playerid,COR_CIANO,"Para Limpar a Vaga de Sub Lider Use /LimparVaga sub");
  679.     new org = PlayerInfo[playerid][pMembro];
  680.     if(strcmp(vaga,"sub",true)==0)
  681.     {
  682.         if(strcmp(InfoOrg[org][SubL],"Ninguem",true)==0)
  683.             return SendClientMessage(playerid,COR_CIANO,"A Organização já está sem sub-líder.");
  684.         if(IsPlayerOnline(InfoOrg[org][SubL]))
  685.         {
  686.             new ID;
  687.             ID = GetPlayerID(InfoOrg[org][SubL]);
  688.             DemitirOrg(ID);
  689.         }
  690.         else
  691.         {
  692.             strmid(InfoOrg[org][SubL],"Ninguem",0,strlen("Ninguem"),128);
  693.             format(string,sizeof(string),"InfoOrg/Org%i.ini",org);
  694.             new INI:File = INI_Open(string);
  695.             INI_WriteString(File,"SubL","Ninguem");
  696.             INI_Close(File);
  697.         }
  698.         SendClientMessage(playerid,CorOrg(org),"Você limpou a vaga de sub-lider");
  699.         return 1;
  700.     }
  701.     format(string,sizeof(string),"Você limpou a vaga %i.",strval(vaga));
  702.     SendClientMessage(playerid,CorOrg(org),string);
  703.     LimparVaga(org,strval(vaga));
  704.     return 1;
  705. }
  706.  
  707. CMD:promover(playerid,params[])
  708. {
  709.     if(PlayerInfo[playerid][pMembro] == 0)
  710.         return SendClientMessage(playerid,COR_CIANO,"Somente membros de organizações.");
  711.     if(PlayerInfo[playerid][pCargo] < 4)
  712.         return SendClientMessage(playerid,COR_CIANO,"Somente Líder e Sub Líder.");
  713.     new id,cargo;
  714.     if(sscanf(params,"ud",id,cargo))
  715.         return SendClientMessage(playerid,COR_CIANO,"Use: /Promover [ID/Nome][Cargo]");
  716.     if(!IsPlayerConnected(id))
  717.         return SendClientMessage(playerid,COR_CIANO,"Jogador Offline.");
  718.     if(PlayerInfo[id][pMembro] != PlayerInfo[playerid][pMembro])
  719.         return SendClientMessage(playerid,COR_CIANO,"Este jogador é de outra organização!");
  720.     if(cargo < 1 || cargo > 4)
  721.         return SendClientMessage(playerid,COR_CIANO,"Cargos de 1 a 4!");
  722.     new string[128];
  723.     format(string,sizeof(string),"Você promoveu %s a cargo %i.", pNome(id),cargo);
  724.     SendClientMessage(playerid,CorOrg(PlayerInfo[playerid][pMembro]),string);
  725.     format(string,sizeof(string),"Você foi promovido a cargo %i por %s.",cargo,pNome(playerid));
  726.     SendClientMessage(id,CorOrg(PlayerInfo[playerid][pMembro]),string);
  727.     Promover(id,cargo);
  728.     return 1;
  729. }
  730.  
  731. CMD:minhaorg(playerid)
  732. {
  733.     new str[5];
  734.     format(str,5,"%i",PlayerInfo[playerid][pMembro]);
  735.     SendClientMessage(playerid,COR_BRANCO,str);
  736.     return 1;
  737. }
  738.  
  739. CMD:orgs(playerid)
  740. {
  741.     new string[128];
  742.     SendClientMessage(playerid,0x363636FF,"=> Organizações do Servidor");
  743.     for(new i = 1; i < MAX_ORGS; i++)
  744.     {
  745.         new norg[32];
  746.         NomeOrg(i,norg,sizeof(norg));
  747.         format(string,sizeof(string),"Organização: %s [ID: %i] - Líder: %s",norg,i,InfoOrg[i][Lider]);
  748.         SendClientMessage(playerid,CorOrg(i),string);
  749.     }
  750.     return 1;
  751. }
  752.  
  753. CMD:lideres(playerid)
  754. {
  755.     new string[128];
  756.     SendClientMessage(playerid,0x363636FF,"=> Líderes Online");
  757.     foreach(Player, i)
  758.     {
  759.         if(PlayerInfo[i][pCargo] == 5)
  760.         {
  761.             new norg[32];
  762.             NomeOrg(PlayerInfo[i][pMembro],norg,sizeof(norg));
  763.             format(string,sizeof(string),"Nome: %s - Organização: %s",pNome(i),norg);
  764.             SendClientMessage(playerid,CorOrg(PlayerInfo[i][pMembro]),string);
  765.         }
  766.     }
  767.     return 1;
  768. }
  769.  
  770. CMD:subs(playerid)
  771. {
  772.     new string[128];
  773.     SendClientMessage(playerid,0x363636FF,"=> Sub Líderes Online");
  774.     foreach(Player, i)
  775.     {
  776.         if(PlayerInfo[i][pCargo] == 4)
  777.         {
  778.             new norg[32];
  779.             NomeOrg(PlayerInfo[i][pMembro],norg,sizeof(norg));
  780.             format(string,sizeof(string),"Nome: %s - Organização: %s",pNome(i),norg);
  781.             SendClientMessage(playerid,CorOrg(PlayerInfo[i][pMembro]),string);
  782.         }
  783.     }
  784.     return 1;
  785. }
  786.  
  787. CMD:infoorg(playerid)
  788. {
  789.     if(PlayerInfo[playerid][pMembro] == 0)
  790.         return SendClientMessage(playerid,COR_CIANO,"Você é civil!");
  791.     new org = PlayerInfo[playerid][pMembro];
  792.     new string[128];
  793.     SendClientMessage(playerid, 0x363636FF,"=> Informações da organização");
  794.     format(string,sizeof(string),"Lider: %s",InfoOrg[org][Lider]);
  795.     SendClientMessage(playerid,CorOrg(org),string);
  796.     format(string,sizeof(string),"Sub Lider: %s",InfoOrg[org][SubL]);
  797.     SendClientMessage(playerid,CorOrg(org),string);
  798.     for(new i = 1; i < MAX_MEMBROS; i++)
  799.     {
  800.         format(string,sizeof(string),"Membro %d: %s",i,InfoOrg2[org][i]);
  801.         SendClientMessage(playerid,CorOrg(org),string);
  802.     }
  803.     return 1;
  804. }
  805.  
  806. CMD:membros(playerid)
  807. {
  808.     if(PlayerInfo[playerid][pMembro] == 0)
  809.         return SendClientMessage(playerid,COR_CIANO,"Somente membros de organizaações.");
  810.     new string[128];
  811.     SendClientMessage(playerid,0x363636FF,"=> Membros Online");
  812.     foreach(Player,i)
  813.     {
  814.         if(PlayerInfo[i][pMembro] == PlayerInfo[playerid][pMembro])
  815.         {
  816.             format(string,sizeof(string),"Nome: %s, Cargo: %d",pNome(i),PlayerInfo[i][pCargo]);
  817.             SendClientMessage(playerid,CorOrg(PlayerInfo[i][pMembro]),string);
  818.         }
  819.     }
  820.     return 1;
  821. }
  822.  
  823. CMD:admin(playerid)
  824. {
  825.     PlayerInfo[playerid][pAdmin] = 8;
  826.     return 1;
  827. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement