Guest User

TerritoryWar

a guest
Apr 5th, 2012
1,348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 23.79 KB | None | 0 0
  1. /*
  2. [=================================================================================]
  3.                 X   SISTEMA DE TERRITORIOS V1.0 - BY SUB_ZERO0_   X
  4.                 X             NÃO RETIRE OS CRÉDITOS!               X
  5.         X CRÉDITOS X
  6.     X PRINCIPAIS X
  7.  - Criação: Sub_Zero0_
  8.  
  9.     X FUNÇÕES X
  10.  - Split: Sa-mp wiki
  11.  - IsPlayerInArea: Sa-mp forum
  12.  - DOF2: Double-o-Seven
  13.  
  14.     X SECUNDÁRIOS X
  15.  - Idealização: Servidores de GangWar do SA-MP
  16.  - Testers: MentoS e BreaK
  17.  - Agradecimentos: Equipe de desenvolvimento do SA-MP e aos membros de seu fórum.
  18. [=================================================================================]
  19. */
  20. #include <a_samp>
  21. #include <dof2>
  22. #include <gsystem>
  23.  
  24. //Defines GANGSYSTEM
  25. #define MAX_GANGS       256                 //Máxima quantidade de gangs
  26.  
  27. //Defines TERRITORYWAR
  28. #define MAX_TERRIS      200                 //Máxima quantidade de terris
  29. #define RESERVED_NAME   "c_terris"
  30. #define TWarFile        "Territorios.sub"
  31.  
  32. //Defines
  33. #define MIN_MEMBROS_D   3                   //Mínimo de membros da gang para começar a dominar
  34. #define TEMPO_CHECK     120                 //Tempo do check em segundos
  35. #define TERRI_NO_GANG   "0xFFFFFF66"        //
  36. #define PONTOS_DEFESA   200                 //Pontos de defesa padrão
  37. #define TEMPO_GUERRA    90                  //Tempo de guerra
  38. #define TEMPO_GRANA     1800000             //Tempo em milisegundos para dar o lucro dos terris
  39. #define PONTO_POR_KILL  15                  //Pontos ao matar um inimigo na guerra de gangs
  40.  
  41. new Float:Terris[MAX_TERRIS][4];
  42. new TerrisID[MAX_TERRIS]=-1;
  43. new TerriOk[MAX_TERRIS];
  44.  
  45. new TerriGuerra[MAX_TERRIS]=0;
  46. new TempoCheck[MAX_TERRIS][MAX_GANGS];
  47.  
  48. new Text:TxtTerri[MAX_PLAYERS];
  49.  
  50. new Text:TxtGuerra[MAX_TERRIS];
  51. new Pontos[MAX_TERRIS][2];
  52. new TempoR[MAX_TERRIS];
  53.  
  54. stock GetGang(playerid)
  55. {
  56.     return GetPVarInt(playerid,"GangID");
  57. }
  58.  
  59. stock CriarArqs()
  60. {
  61.     if(!fexist(GangF(TWarFile)))
  62.     {
  63.         new File:pg = fopen(GangF(TWarFile),io_write);
  64.         fclose(pg);
  65.         DOF2_SetInt(GangF(TWarFile),RESERVED_NAME,1);
  66.         DOF2_SaveFile();
  67.     }
  68.     return 1;
  69. }
  70.  
  71. stock GetNewTerriID()
  72. {
  73.     new terrid=DOF2_GetInt(GangF(TWarFile),RESERVED_NAME);
  74.     if(terrid>=MAX_TERRIS)
  75.     {
  76.         terrid=-1;
  77.         new t[9];
  78.         for(new i=1;i<MAX_TERRIS;i++)
  79.         {
  80.             format(t,9,"%d",i);
  81.             if(!DOF2_IsSet(GangF(TWarFile),t)) {terrid=i;break;}
  82.         }
  83.     }
  84.     return terrid;
  85. }
  86.  
  87. stock LoadTerris()
  88. {
  89.     for(new d=1;d<MAX_TERRIS;d++)
  90.         TerriOk[d]=0;
  91.     new maxi=DOF2_GetInt(GangF(TWarFile),RESERVED_NAME);
  92.     new TempCord[4][32],tempz[9];
  93.     for(new i=1;i<maxi;i++)
  94.     {
  95.         format(tempz,9,"%d",i);
  96.         if(DOF2_IsSet(GangF(TWarFile),tempz))
  97.         {
  98.             split(DOF2_GetString(GangF(TWarFile),tempz),TempCord,',');
  99.             for(new e=0;e<4;e++)
  100.                 Terris[i][e]=floatstr(TempCord[e]);
  101.             if(Terris[i][0]<Terris[i][1])
  102.             {
  103.                 if(Terris[i][2]<Terris[i][3])
  104.                 {
  105.                     TerrisID[i] = GangZoneCreate(Terris[i][0],Terris[i][2],Terris[i][1],Terris[i][3]);
  106.                 }
  107.                 else
  108.                 {
  109.                     TerrisID[i] = GangZoneCreate(Terris[i][0],Terris[i][3],Terris[i][1],Terris[i][2]);
  110.                 }
  111.             }
  112.             else
  113.             {
  114.                 if(Terris[i][2]<Terris[i][3])
  115.                 {
  116.                     TerrisID[i] = GangZoneCreate(Terris[i][1],Terris[i][2],Terris[i][0],Terris[i][3]);
  117.                 }
  118.                 else
  119.                 {
  120.                     TerrisID[i] = GangZoneCreate(Terris[i][1],Terris[i][3],Terris[i][0],Terris[i][2]);
  121.                 }
  122.             }
  123.             TerriOk[i]=1;
  124.         }
  125.         else
  126.             TerriOk[i]=0;
  127.     }
  128. }
  129.  
  130. stock ShowTerris(playerid)
  131. {
  132.     for(new i=1;i<MAX_TERRIS;i++)
  133.     {
  134.         if(TerriOk[i]!=0)
  135.         {
  136.             if(DOF2_GetInt(FormatTerri(i),"Gang")!=0)
  137.             {
  138.                 new cor[11];
  139.                 format(cor,11,"%s",DOF2_GetString(FormatGang(DOF2_GetInt(FormatTerri(i),"Gang")),"Cor"));
  140.                 strdel(cor,strlen(cor)-2,strlen(cor));
  141.                 strcat(cor,"66");
  142.                 GangZoneShowForPlayer(playerid,TerrisID[i],HexToInt(cor));
  143.                 if(TerriGuerra[i]!=0)
  144.                     GangZoneFlashForPlayer(playerid,TerrisID[i],HexToInt(DOF2_GetString(FormatGang(TerriGuerra[i]),"Cor")));
  145.             }
  146.             else
  147.                 GangZoneShowForPlayer(playerid,TerrisID[i],HexToInt(TERRI_NO_GANG));
  148.         }
  149.     }
  150. }
  151.  
  152. stock GetPlayerTerri(playerid)
  153. {
  154.     if(IsPlayerConnected(playerid))
  155.         for(new terrid=1;terrid<MAX_TERRIS;terrid++)
  156.         {
  157.             if(TerriOk[terrid]==1)
  158.             {
  159.                 if(Terris[terrid][0]<Terris[terrid][1])
  160.                 {
  161.                     if(Terris[terrid][2]<Terris[terrid][3])
  162.                     {
  163.                         if(IsPlayerInArea(playerid,Terris[terrid][0],Terris[terrid][1],Terris[terrid][2],Terris[terrid][3])) return terrid;
  164.                     }
  165.                     else
  166.                     {
  167.                         if(IsPlayerInArea(playerid,Terris[terrid][0],Terris[terrid][1],Terris[terrid][3],Terris[terrid][2])) return terrid;
  168.                     }
  169.                 }
  170.                 else
  171.                 {
  172.                     if(Terris[terrid][2]<Terris[terrid][3])
  173.                     {
  174.                         if(IsPlayerInArea(playerid,Terris[terrid][1],Terris[terrid][0],Terris[terrid][2],Terris[terrid][3])) return terrid;
  175.                     }
  176.                     else
  177.                     {
  178.                         if(IsPlayerInArea(playerid,Terris[terrid][1],Terris[terrid][0],Terris[terrid][3],Terris[terrid][2])) return terrid;
  179.                     }
  180.                 }
  181.             }
  182.         }
  183.     return -1;
  184. }
  185.  
  186. stock GuerraTerri(terrid,gangidcontra,comecou)
  187. {
  188.     if(comecou) GangZoneFlashForAll(playerid,TerrisID[terrid],HexToInt(DOF2_GetString(FormatGang(gangidcontra),"Cor")));
  189.     else GangZoneStopFlashForAll(TerriID[terrid]);
  190. }
  191.  
  192. stock UpdateGangs()
  193. {
  194.     for(new gangid=1;gangid<MAX_GANGS;gangid++)
  195.         if(fexist(FormatGang(gangid)))
  196.         {
  197.             new ter=DOF2_GetInt(FormatGang(gangid),"Territorios");
  198.             CallRemoteFunction("AtualizarTerris","dd",gangid,ter);
  199.         }
  200. }
  201.  
  202. #define FILTERSCRIPT
  203. #if defined FILTERSCRIPT
  204. public OnFilterScriptInit()
  205. {
  206.     print("\n===================================================");
  207.     print(" Carregando TerritoryWar para GangSystem [0.3d]");
  208.     print(" Versao: 1.0.0 - By: Sub_Zero0_");
  209.     print(" ");
  210.     print(" Verificando a pasta /gangs/ ...");
  211.     CriarArqs();
  212.     print(" Pasta e arquivos básicos: OK");
  213.     LoadTerris();
  214.     print(" Territórios carregados com sucesso!");
  215.     UpdateGangs();
  216.     print(" Territórios de gangs atualizados!");
  217.     print(" ");
  218.     print(" Carregado com sucesso!");
  219.     print("===================================================\n");
  220.     for(new i=1;i<MAX_TERRIS;i++)
  221.         for(new e=1;e<MAX_GANGS;e++)
  222.             TempoCheck[i][e]=TEMPO_CHECK;
  223.     SetTimer("CheckGuerra",1000,true);
  224.     SetTimer("Textdraw",1000,true);
  225.     SetTimer("DinheiroTerris",TEMPO_GRANA,true);
  226.     //Anti-Descompiler
  227.     new a[][15] = { "?","0","?" };
  228.     #pragma unused a
  229.     new b[][15] = { "?","?" };
  230.     #pragma unused b
  231.     new c[][10] = { "?","?","?"};
  232.     #pragma unused c
  233.     //Fim
  234.     return 1;
  235. }
  236. public OnFilterScriptExit()
  237. {
  238.     print("\n==============================================");
  239.     print(" Descarregando TerritoryWar para GangSystem [0.3d]");
  240.     print(" Versao: 1.0.0 - By: Sub_Zero0_");
  241.     print("==============================================\n");
  242.     return 1;
  243. }
  244. #else
  245. main()
  246. {
  247. }
  248. #endif
  249.  
  250. forward DinheiroTerris();
  251. public DinheiroTerris()
  252. {
  253.     new Din[MAX_GANGS];
  254.     for(new terrid=1;terrid<MAX_TERRIS;terrid++)
  255.         if(fexist(FormatTerri(terrid)))
  256.         {
  257.             new gangid = DOF2_GetInt(FormatTerri(terrid),"Gang");
  258.             if(gangid!=0)
  259.                 Din[gangid]+=DOF2_GetInt(FormatTerri(terrid),"Grana");
  260.         }
  261.     new str[128];
  262.     for(new e=1;e<MAX_GANGS;e++)
  263.         if(Din[e]!=0)
  264.         {
  265.             CallRemoteFunction("AtualizarBanco","dd",e,Din[e]);
  266.             format(str,128,"[GANG] Sua gang recebeu R$%d dos lucros dos territórios!",Din[e]);
  267.             for(new id=0;id<MAX_PLAYERS;id++)
  268.                 if(IsPlayerConnected(id))
  269.                     if(GetGang(id)==e)
  270.                         SendClientMessage(id,verde,str);
  271.         }
  272. }
  273.  
  274. forward AtualizarGG(gangid,n,cor[]);
  275. public AtualizarGG(gangid,n,cor[])
  276. {
  277.     if(n==0)
  278.     {
  279.         for(new e=1;e<MAX_TERRIS;e++)
  280.             if(DOF2_GetInt(FormatTerri(e),"Gang")==gangid)
  281.             {
  282.                 GangZoneHideForAll(TerrisID[e]);
  283.                 GangZoneShowForAll(TerrisID[e],HexToInt(cor));
  284.             }
  285.     }
  286.     if(n==1)
  287.     {
  288.         for(new e=1;e<MAX_TERRIS;e++)
  289.             if(DOF2_GetInt(FormatTerri(e),"Gang")==gangid)
  290.             {
  291.                 DOF2_SetInt(FormatTerri(e),"Gang",0);
  292.                 GangZoneHideForAll(TerrisID[e]);
  293.                 GangZoneShowForAll(TerrisID[e],HexToInt(TERRI_NO_GANG));
  294.             }
  295.         DOF2_SaveFile();
  296.     }
  297. }
  298.  
  299. forward CheckGuerra();
  300. public CheckGuerra()
  301. {
  302.     new Gangs[MAX_GANGS]=0;
  303.     for(new terrid=1;terrid<MAX_TERRIS;terrid++)
  304.     {
  305.         if(TerriOk[terrid]==1)
  306.             if(TerriGuerra[terrid]==0)
  307.             {
  308.                 for(new g=1;g<MAX_GANGS;g++)
  309.                     Gangs[g]=0;
  310.                 for(new i=0;i<MAX_PLAYERS;i++)
  311.                 {
  312.                     if(IsPlayerConnected(i))
  313.                         if(GetGang(i)!=0)
  314.                         {
  315.                             new ter=GetPlayerTerri(i);
  316.                             if(ter==terrid)
  317.                                 Gangs[GetGang(i)]+=1;
  318.                         }
  319.                 }
  320.                 for(new g2=1;g2<MAX_GANGS;g2++)
  321.                     if(Gangs[g2]>=MIN_MEMBROS_D)
  322.                     {
  323.                         if(DOF2_GetInt(FormatTerri(terrid),"Gang")!=g2)
  324.                         {
  325.                             TempoCheck[terrid][g2]-=1;
  326.                             if(TempoCheck[terrid][g2]==0)
  327.                             {
  328.                                 if(TerriGuerra[terrid]==0)
  329.                                 {
  330.                                     TerriGuerra[terrid]=g2;
  331.                                     Pontos[terrid][0]=0;
  332.                                     Pontos[terrid][1]=PONTOS_DEFESA;
  333.                                     TempoR[terrid]=TEMPO_GUERRA;
  334.                                     if(DOF2_GetInt(FormatTerri(terrid),"Gang")!=0)
  335.                                     {
  336.                                         TxtGuerra[terrid]=TextDrawCreate(88.0,290.0,"~w~== GUERRA DE GANGS ==~n~~w~Iniciando...");
  337.                                         TextDrawLetterSize(TxtGuerra[terrid],0.2,1.1);
  338.                                         TextDrawSetShadow(TxtGuerra[terrid],1);
  339.                                         TextDrawSetOutline(TxtGuerra[terrid],1);
  340.                                         TextDrawFont(TxtGuerra[terrid],1);
  341.                                         TextDrawUseBox(TxtGuerra[terrid],1);
  342.                                         TextDrawBoxColor(TxtGuerra[terrid],0x00000088);
  343.                                         TextDrawAlignment(TxtGuerra[terrid],2);
  344.                                         TextDrawTextSize(TxtGuerra[terrid], 50.0, 90.0);
  345.                                     }
  346.                                     new cor[11];
  347.                                     format(cor,11,"%s",DOF2_GetString(FormatGang(g2),"Cor"));
  348.                                     strdel(cor,strlen(cor)-2,strlen(cor));
  349.                                     strcat(cor,"66");
  350.                                     GangZoneFlashForAll(TerrisID[terrid],HexToInt(cor));
  351.                                 }
  352.                             }
  353.                         }
  354.                     }
  355.                     else
  356.                         if(TempoCheck[terrid][g2]!=TEMPO_CHECK)
  357.                             TempoCheck[terrid][g2]=TEMPO_CHECK;
  358.             }
  359.             else
  360.             {
  361.                 for(new i=1;i<MAX_GANGS;i++)
  362.                     TempoCheck[terrid][i]=TEMPO_CHECK;
  363.                 if(DOF2_GetInt(FormatTerri(terrid),"Gang")==0)
  364.                 {
  365.                     new gangid=TerriGuerra[terrid];
  366.                     DOF2_SetInt(FormatTerri(terrid),"Gang",gangid);
  367.                     new ter=DOF2_GetInt(FormatGang(gangid),"Territorios")+1;
  368.                     DOF2_SetInt(FormatGang(gangid),"Territorios",ter);
  369.                     CallRemoteFunction("AtualizarTerris","dd",gangid,ter);
  370.                     DOF2_SaveFile();
  371.                     GangZoneStopFlashForAll(TerrisID[terrid]);
  372.                     GangZoneHideForAll(TerrisID[terrid]);
  373.                     new cor[11];
  374.                     format(cor,11,"%s",DOF2_GetString(FormatGang(gangid),"Cor"));
  375.                     strdel(cor,strlen(cor)-2,strlen(cor));
  376.                     strcat(cor,"66");
  377.                     GangZoneShowForAll(TerrisID[terrid],HexToInt(cor));
  378.                     TerriGuerra[terrid]=0;
  379.                     new fg[128];
  380.                     format(fg,128,"[GANG] Sua gang dominou o território: %s!",DOF2_GetString(FormatTerri(terrid),"Nome"));
  381.                     for(new i=0;i<MAX_PLAYERS;i++)
  382.                         if(IsPlayerConnected(i))
  383.                             if(GetGang(i)==gangid)
  384.                                 SendClientMessage(i,verde,fg);
  385.                 }
  386.                 else
  387.                 {
  388.                     new ataque=TerriGuerra[terrid];
  389.                     new defesa=DOF2_GetInt(FormatTerri(terrid),"Gang");
  390.                     for(new i=0;i<MAX_PLAYERS;i++)
  391.                         if(IsPlayerConnected(i))
  392.                             if(GetGang(i)==ataque)
  393.                                 if(GetPlayerTerri(i)==terrid)
  394.                                     Pontos[terrid][0]++;
  395.                     for(new i=0;i<MAX_PLAYERS;i++)
  396.                         if(IsPlayerConnected(i))
  397.                             if(GetGang(i)==defesa)
  398.                                 if(GetPlayerTerri(i)==terrid)
  399.                                     Pontos[terrid][1]++;
  400.                     TempoR[terrid]--;
  401.                     if(TempoR[terrid]==0)
  402.                     {
  403.                         TextDrawDestroy(TxtGuerra[terrid]);
  404.                         GangZoneStopFlashForAll(TerrisID[terrid]);
  405.                         TerriGuerra[terrid]=0;
  406.                         new fd[128];
  407.                         if(Pontos[terrid][0]>Pontos[terrid][1])
  408.                         {
  409.                             format(fd,128,"[GANG] Sua gang falhou ao defender o território %s da gang %s!",DOF2_GetString(FormatTerri(terrid),"Nome"),DOF2_GetString(FormatGang(ataque),"Nome"));
  410.                             for(new i=0;i<MAX_PLAYERS;i++)
  411.                                 if(IsPlayerConnected(i))
  412.                                     if(GetGang(i)==defesa)
  413.                                         SendClientMessage(i,vermelho,fd);
  414.                             format(fd,128,"[GANG] Sua gang dominou o território %s da gang %s!",DOF2_GetString(FormatTerri(terrid),"Nome"),DOF2_GetString(FormatGang(defesa),"Nome"));
  415.                             for(new i=0;i<MAX_PLAYERS;i++)
  416.                                 if(IsPlayerConnected(i))
  417.                                     if(GetGang(i)==ataque)
  418.                                         SendClientMessage(i,verde,fd);
  419.                             new ter=DOF2_GetInt(FormatGang(ataque),"Territorios")+1;
  420.                             DOF2_SetInt(FormatGang(ataque),"Territorios",ter);
  421.                             CallRemoteFunction("AtualizarTerris","dd",ataque,ter);
  422.                             ter=DOF2_GetInt(FormatGang(defesa),"Territorios")-1;
  423.                             DOF2_SetInt(FormatGang(defesa),"Territorios",ter);
  424.                             CallRemoteFunction("AtualizarTerris","dd",defesa,ter);
  425.                             DOF2_SetInt(FormatTerri(terrid),"Gang",ataque);
  426.                             DOF2_SaveFile();
  427.                             GangZoneHideForAll(TerrisID[terrid]);
  428.                             new cor[11];
  429.                             format(cor,11,"%s",DOF2_GetString(FormatGang(ataque),"Cor"));
  430.                             strdel(cor,strlen(cor)-2,strlen(cor));
  431.                             strcat(cor,"66");
  432.                             GangZoneShowForAll(TerrisID[terrid],HexToInt(cor));
  433.                         }
  434.                         else
  435.                         {
  436.                             format(fd,128,"[GANG] Sua gang defendeu o território %s da gang %s!",DOF2_GetString(FormatTerri(terrid),"Nome"),DOF2_GetString(FormatGang(ataque),"Nome"));
  437.                             for(new i=0;i<MAX_PLAYERS;i++)
  438.                                 if(IsPlayerConnected(i))
  439.                                     if(GetGang(i)==defesa)
  440.                                         SendClientMessage(i,verde,fd);
  441.                             format(fd,128,"[GANG] Sua gang falhou ao atacar ao território %s da gang %s!",DOF2_GetString(FormatTerri(terrid),"Nome"),DOF2_GetString(FormatGang(defesa),"Nome"));
  442.                             for(new i=0;i<MAX_PLAYERS;i++)
  443.                                 if(IsPlayerConnected(i))
  444.                                     if(GetGang(i)==ataque)
  445.                                         SendClientMessage(i,vermelho,fd);
  446.                         }
  447.                     }
  448.                     else
  449.                     {
  450.                         new tempom,tempos;
  451.                         tempom = TempoR[terrid]/60;
  452.                         tempos = TempoR[terrid]-tempom*60;
  453.                         new ff[128];
  454.                         if(tempos<10) format(ff,128,"~w~== GUERRA DE GANGS ==~n~~b~%s ~w~x ~r~%s~n~~y~%d ~w~x ~y~%d~n~~g~%d:0%d",DOF2_GetString(FormatGang(ataque),"Nome"),DOF2_GetString(FormatGang(defesa),"Nome"),Pontos[terrid][0],Pontos[terrid][1],tempom,tempos);
  455.                         else  format(ff,128,"~w~== GUERRA DE GANGS ==~n~~b~%s ~w~x ~r~%s~n~~y~%d ~w~x ~y~%d~n~~g~%d:%d",DOF2_GetString(FormatGang(ataque),"Nome"),DOF2_GetString(FormatGang(defesa),"Nome"),Pontos[terrid][0],Pontos[terrid][1],tempom,tempos);
  456.                         TextDrawSetString(TxtGuerra[terrid],ff);
  457.                     }
  458.                 }
  459.             }
  460.     }
  461. }
  462.  
  463. forward Textdraw();
  464. public Textdraw()
  465. {
  466.     new txt[128],nomegg[32];
  467.     for(new i=0;i<MAX_PLAYERS;i++)
  468.         if(IsPlayerConnected(i))
  469.         {
  470.             new terrid=GetPlayerTerri(i);
  471.             new gangid=DOF2_GetInt(FormatTerri(terrid),"Gang");
  472.             if(gangid==0) nomegg="Nenhuma";
  473.             else format(nomegg,32,"%s",DOF2_GetString(FormatGang(gangid),"Nome"));
  474.             format(txt,128,"~b~Territorio: ~w~%s~n~~b~Gang dominante: ~w~%s~n~~b~Dinheiro: ~w~R$%d",DOF2_GetString(FormatTerri(terrid),"Nome"),nomegg,DOF2_GetInt(FormatTerri(terrid),"Grana"));
  475.             TextDrawSetString(TxtTerri[i],txt);
  476.             if(terrid!=-1)
  477.             {
  478.                 TextDrawHideForPlayer(i,TxtTerri[i]);
  479.                 TextDrawShowForPlayer(i,TxtTerri[i]);
  480.                 if(TerriGuerra[terrid]!=0)
  481.                 {
  482.                     TextDrawHideForPlayer(i,TxtGuerra[terrid]);
  483.                     TextDrawShowForPlayer(i,TxtGuerra[terrid]);
  484.                 }
  485.             }
  486.             else
  487.             {
  488.                 TextDrawHideForPlayer(i,TxtTerri[i]);
  489.                 for(new e=1;e<MAX_TERRIS;e++)
  490.                     TextDrawHideForPlayer(i,TxtGuerra[e]);
  491.             }
  492.         }
  493. }
  494.  
  495. public OnPlayerRequestClass(playerid, classid)
  496. {
  497.     ShowTerris(playerid);
  498.     return 0;
  499. }
  500.  
  501. public OnPlayerConnect(playerid)
  502. {
  503.     TxtTerri[playerid]=TextDrawCreate(140.0,390.0," ");
  504.     TextDrawLetterSize(TxtTerri[playerid],0.25,1.0);
  505.     TextDrawSetShadow(TxtTerri[playerid],1);
  506.     TextDrawSetOutline(TxtTerri[playerid],1);
  507.     TextDrawFont(TxtTerri[playerid],1);
  508.     return 1;
  509. }
  510.  
  511. public OnPlayerDisconnect(playerid, reason)
  512. {
  513.     for(new i=1;i<MAX_TERRIS;i++)
  514.     {
  515.         if(TerrisID[i]!=-1)
  516.         {
  517.             if(TerriGuerra[i]!=0)
  518.                 GangZoneStopFlashForPlayer(playerid,TerrisID[i]);
  519.             GangZoneHideForPlayer(playerid,TerrisID[i]);
  520.         }
  521.     }
  522.     TextDrawDestroy(TxtTerri[playerid]);
  523.     return 1;
  524. }
  525.  
  526. public OnPlayerDeath(playerid, killerid, reason)
  527. {
  528.     new terridplay = GetPlayerTerri(playerid);
  529.     if(TerriGuerra[terridplay]!=0)
  530.     {
  531.         new terridkill = GetPlayerTerri(killerid);
  532.         if(terridkill==terridplay)
  533.             if(TerriGuerra[terridplay]==GetGang(killerid)&&DOF2_GetInt(FormatTerri(terridplay),"Gang")==GetGang(playerid))
  534.                 Pontos[terridplay][0]+=PONTO_POR_KILL;
  535.             else if(TerriGuerra[terridplay]==GetGang(playerid)&&DOF2_GetInt(FormatTerri(terridplay),"Gang")==GetGang(killerid))
  536.                 Pontos[terridplay][1]+=PONTO_POR_KILL;
  537.     }
  538.     return 1;
  539. }
  540.  
  541. public OnPlayerCommandText(playerid, cmdtext[])
  542. {
  543.     dcmd(terri,5,cmdtext);
  544.     if(!strcmp(cmdtext,"/check",true)||!strcmp(cmdtext,"/checkar",true))
  545.     {
  546.         if(GetGang(playerid)==0) return SendClientMessage(playerid,amarelo,"[CHECK] Você não tem gang!");
  547.         new terrid = GetPlayerTerri(playerid);
  548.         if(terrid==-1) return SendClientMessage(playerid,amarelo,"[CHECK] Você não está em um território!");
  549.         if(DOF2_GetInt(FormatTerri(terrid),"Gang")==GetGang(playerid)) return SendClientMessage(playerid,amarelo,"[CHECK] Este território pertence a sua gang!");
  550.         new tempo = TempoCheck[terrid][GetGang(playerid)];
  551.         new fm[128];
  552.         format(fm,128,"[CHECK] É necessário ter %d membros de sua gang para começar a dominar!",MIN_MEMBROS_D);
  553.         if(tempo==TEMPO_CHECK) return SendClientMessage(playerid,amarelo,fm);
  554.         if(TerriGuerra[terrid]!=0) return SendClientMessage(playerid,amarelo,"[CHECK] Este território já está em guerra!");
  555.         format(fm,128,"Tempo para começar a dominar: %d/%d segundos",tempo,TEMPO_CHECK);
  556.         SendClientMessage(playerid,amarelo,fm);
  557.         return 1;
  558.     }
  559.     return 0;
  560. }
  561.  
  562. new Float:PFloat[MAX_PLAYERS][4];
  563. dcmd_terri(playerid,params[])
  564. {
  565.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,amarelo,"[TERRI] Você precisa ser Admin RCON para isso.");
  566.     if(strlen(params)==0) return SendClientMessage(playerid,amarelo,"USO: /terri [pos1/pos2/criar/deletar/editar]");
  567.     if(!strcmp(params,"pos1"))
  568.     {
  569.         new Float:X,Float:Y,Float:Z;
  570.         GetPlayerPos(playerid,X,Y,Z);
  571.         PFloat[playerid][0]=X;
  572.         PFloat[playerid][2]=Y;
  573.         SendClientMessage(playerid,amarelo,"[TERRI] Pos1 adicionada com sucesso!");
  574.     }
  575.     else if(!strcmp(params,"pos2"))
  576.     {
  577.         new Float:X,Float:Y,Float:Z;
  578.         GetPlayerPos(playerid,X,Y,Z);
  579.         PFloat[playerid][1]=X;
  580.         PFloat[playerid][3]=Y;
  581.         SendClientMessage(playerid,amarelo,"[TERRI] Pos2 adicionada com sucesso!");
  582.     }
  583.     else if(!strcmp(params,"criar"))
  584.     {
  585.         ShowPlayerDialog(playerid,500,DIALOG_STYLE_INPUT,"Territorio - Criar","Digite o nome desse território:\nObs: Tenha certeza de ter marcado Pos1 e Pos2 corretamente!","Continuar","Sair");
  586.     }
  587.     else if(!strcmp(params,"deletar"))
  588.     {
  589.         new terrid=GetPlayerTerri(playerid);
  590.         if(terrid==-1) return SendClientMessage(playerid,amarelo,"Você não está em um território!");
  591.         new fmg[128];format(fmg,128,"Tem certeza que quer deletar o território: %s ?",DOF2_GetString(FormatTerri(terrid),"Nome"));
  592.         ShowPlayerDialog(playerid,501,DIALOG_STYLE_MSGBOX,"Territorio - Deletar",fmg,"Deletar","Sair");
  593.     }
  594.     else if(!strcmp(params,"editar"))
  595.     {
  596.         if(GetPlayerTerri(playerid)==-1) return SendClientMessage(playerid,amarelo,"Você não está em um território!");
  597.         ShowPlayerDialog(playerid,503,DIALOG_STYLE_INPUT,"Territorio - Editar","Digite o novo valor do lucro deste território:","Mudar","Sair");
  598.     }
  599.     return 1;
  600. }
  601.  
  602. new Nome[MAX_PLAYERS][32];
  603. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  604. {
  605.     if(dialogid==500)
  606.     {
  607.         if(response)
  608.         {
  609.             if(strlen(inputtext)<1||strlen(inputtext)>32) return SendClientMessage(playerid,amarelo,"[TERRI] O nome precisa ter entre 0 e 32 caracteres.");
  610.             format(Nome[playerid],32,"%s",inputtext);
  611.             ShowPlayerDialog(playerid,502,DIALOG_STYLE_INPUT,"Territorio - Criar","Digite o lucro deste território:","Criar","Sair");
  612.         }
  613.         return 1;
  614.     }
  615.     if(dialogid==501)
  616.     {
  617.         if(response)
  618.         {
  619.             new terrid=GetPlayerTerri(playerid);
  620.             GangZoneDestroy(TerrisID[terrid]);
  621.             TerriOk[terrid]=0;
  622.             TerriGuerra[terrid]=0;
  623.             new terridst[9];format(terridst,9,"%d",terrid);
  624.             DOF2_Unset(GangF(TWarFile),terridst);
  625.             new gangid=DOF2_GetInt(FormatTerri(terrid),"Gang");
  626.             if(gangid!=0)
  627.             {
  628.                 new ter=DOF2_GetInt(FormatGang(gangid),"Territorios")-1;
  629.                 DOF2_SetInt(FormatGang(gangid),"Territorios",ter);
  630.                 CallRemoteFunction("AtualizarTerris","dd",gangid,ter);
  631.                 DOF2_SaveFile();
  632.             }
  633.             fremove(FormatTerri(terrid));
  634.             SendClientMessage(playerid,amarelo,"Território deletado com sucesso!");
  635.         }
  636.     }
  637.     if(dialogid==502)
  638.     {
  639.         if(response)
  640.         {
  641.             if(strlen(inputtext)==0) return SendClientMessage(playerid,amarelo,"[TERRI] Insira uma quantia.");
  642.             new grana=strval(inputtext);
  643.             if(grana<0) return SendClientMessage(playerid,amarelo,"[TERRI] Quantia negativa.");
  644.             new terrid = GetNewTerriID();
  645.             if(terrid==-1) return SendClientMessage(playerid,amarelo,"[TERRI] Este servidor já atingiu o máximo de territórios possível.");
  646.             DOF2_CreateFile(FormatTerri(terrid));
  647.             DOF2_SetString(FormatTerri(terrid),"Nome",Nome[playerid]);
  648.             DOF2_SetInt(FormatTerri(terrid),"Gang",0);
  649.             DOF2_SetInt(FormatTerri(terrid),"Grana",grana);
  650.             DOF2_SaveFile();
  651.             Terris[terrid][0]=PFloat[playerid][0];
  652.             Terris[terrid][1]=PFloat[playerid][1];
  653.             Terris[terrid][2]=PFloat[playerid][2];
  654.             Terris[terrid][3]=PFloat[playerid][3];
  655.             new terridstring[9],fmt[128];
  656.             format(terridstring,9,"%d",terrid);
  657.             format(fmt,128,"%f,%f,%f,%f",Terris[terrid][0],Terris[terrid][1],Terris[terrid][2],Terris[terrid][3]);
  658.             DOF2_SetString(GangF(TWarFile),terridstring,fmt);
  659.             DOF2_SaveFile();
  660.             if(Terris[terrid][0]<Terris[terrid][1])
  661.             {
  662.                 if(Terris[terrid][2]<Terris[terrid][3])
  663.                 {
  664.                     TerrisID[terrid] = GangZoneCreate(Terris[terrid][0],Terris[terrid][2],Terris[terrid][1],Terris[terrid][3]);
  665.                 }
  666.                 else
  667.                 {
  668.                     TerrisID[terrid] = GangZoneCreate(Terris[terrid][0],Terris[terrid][3],Terris[terrid][1],Terris[terrid][2]);
  669.                 }
  670.             }
  671.             else
  672.             {
  673.                 if(Terris[terrid][2]<Terris[terrid][3])
  674.                 {
  675.                     TerrisID[terrid] = GangZoneCreate(Terris[terrid][1],Terris[terrid][2],Terris[terrid][0],Terris[terrid][3]);
  676.                 }
  677.                 else
  678.                 {
  679.                     TerrisID[terrid] = GangZoneCreate(Terris[terrid][1],Terris[terrid][3],Terris[terrid][0],Terris[terrid][2]);
  680.                 }
  681.             }
  682.             TerriOk[terrid]=1;
  683.             GangZoneShowForAll(TerrisID[terrid],HexToInt(TERRI_NO_GANG));
  684.             new st = DOF2_GetInt(GangF(TWarFile),RESERVED_NAME);
  685.             if(st<MAX_TERRIS) {DOF2_SetInt(GangF(TWarFile),RESERVED_NAME,st+1);DOF2_SaveFile();}
  686.             SendClientMessage(playerid,amarelo,"[TERRI] Território criado com sucesso!");
  687.         }
  688.         return 1;
  689.     }
  690.     if(dialogid==503)
  691.     {
  692.         if(response)
  693.         {
  694.             if(strlen(inputtext)==0) return SendClientMessage(playerid,amarelo,"[TERRI] Insira uma quantia.");
  695.             new grana=strval(inputtext);
  696.             if(grana<0) return SendClientMessage(playerid,amarelo,"[TERRI] Quantia negativa.");
  697.             DOF2_SetInt(FormatTerri(GetPlayerTerri(playerid)),"Grana",grana);
  698.             DOF2_SaveFile();
  699.             SendClientMessage(playerid,amarelo,"[TERRI] Lucro do território mudado com sucesso!");
  700.         }
  701.         return 1;
  702.     }
  703.     return 0;
  704. }
Advertisement
Add Comment
Please, Sign In to add comment