Juuh

xPPontos

Jul 24th, 2013
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.82 KB | None | 0 0
  1. #include <  a_samp  >
  2. #include <  ZCMD    >
  3. #include <  DOF2    >
  4. #include <  sscanf2 >
  5.  
  6. #define MAX_PONTOS      100
  7. #define iMAX_PONTOS     100
  8.  
  9. enum PDATA
  10. {
  11.     PID,
  12.     Text3D:PTEXT3D,
  13.     Float:PPOS[3],
  14. }
  15.  
  16. enum iDATA
  17. {
  18.     PID,
  19.     Text3D:PTEXT3D,
  20.     Float:PPOS[3],
  21. }
  22.  
  23. new iPonto[iMAX_PONTOS][iDATA];
  24. new PPonto[MAX_PONTOS][PDATA];
  25. new PPontoPermitir = 1;
  26.  
  27. public OnFilterScriptInit()
  28. {
  29.     CarregarPPontos();
  30.     return 1;
  31. }
  32.  
  33. public OnFilterScriptExit()
  34. {
  35.     DOF2_Exit();
  36.     return 1;
  37. }
  38.  
  39. CMD:criarponto(playerid, params [])
  40. {
  41.     new opcao;
  42.     new Local[100];
  43.     new Texto[100];
  44.     new e = MAX_PONTOS+1;
  45.     new i = iMAX_PONTOS+1;
  46.     if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return 1;
  47.     if(sscanf(params, "d", opcao)) return SendClientMessage(playerid, 0x33AA3300, "<opções = entrada(1), saida(2)>");
  48.     if(opcao == 1)
  49.     {
  50.         if(PPontoPermitir == 1)
  51.         {
  52.             for(new a = 0; a < MAX_PONTOS; a++)
  53.             {
  54.                 if(PPonto[a][PPOS][0] == 0.0)
  55.                 {
  56.                     e = a;
  57.                     break;
  58.                 }
  59.             }
  60.             PPontoPermitir = 2;
  61.             if(e > MAX_PONTOS) return SendClientMessage(playerid, 0x33AA3300, "Você não pode criar mais.");
  62.             printf("[Porta][1][id = %d]", e);
  63.             SendClientMessage(playerid, 0x33AA3300, "[1][OK]");
  64.            
  65.             GetPlayerPos(playerid, PPonto[e][PPOS][0], PPonto[e][PPOS][1], PPonto[e][PPOS][2]);
  66.  
  67.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", e);
  68.             DOF2_CreateFile(Local);
  69.             DOF2_SetFloat(Local, "POS0", PPonto[e][PPOS][0]);
  70.             DOF2_SetFloat(Local, "POS1", PPonto[e][PPOS][1]);
  71.             DOF2_SetFloat(Local, "POS2", PPonto[e][PPOS][2]);
  72.             DOF2_SaveFile();
  73.  
  74.             format(Texto, sizeof(Texto), "<Ponto>\n[%d]\n<saida>", e);
  75.  
  76.             PPonto[e][PID] =  CreatePickup(19198, 1, PPonto[e][PPOS][0], PPonto[e][PPOS][1], PPonto[e][PPOS][2]+0.2, 0);
  77.             PPonto[e][PTEXT3D] = Create3DTextLabel(Texto, -1, PPonto[e][PPOS][0], PPonto[e][PPOS][1], PPonto[e][PPOS][2]-0.2, 5.0, 0);
  78.         }
  79.         else
  80.         {
  81.             SendClientMessage(playerid, 0x33AA3300, "Você ja definio o ponto [1] defina o proximo(2).");
  82.         }
  83.     }
  84.     if(opcao == 2)
  85.     {
  86.         if(PPontoPermitir == 2)
  87.         {
  88.             PPontoPermitir = 1;
  89.             for(new a = 0; a < iMAX_PONTOS; a++)
  90.             {
  91.                 if(iPonto[a][PPOS][0] == 0.0)
  92.                 {
  93.                     i = a;
  94.                     break;
  95.                 }
  96.             }
  97.             if(i > MAX_PONTOS) return SendClientMessage(playerid, 0x33AA3300, "Você não pode criar mais.");
  98.             printf("[Porta][2][id = %d]",i);
  99.             SendClientMessage(playerid, 0x33AA3300, "[2][OK]");
  100.  
  101.             GetPlayerPos(playerid, iPonto[i][PPOS][0], iPonto[i][PPOS][1], iPonto[i][PPOS][2]);
  102.            
  103.             format(Local, sizeof(Local), "PPontos/Saidas/%d.txt", i);
  104.             DOF2_CreateFile(Local);
  105.             DOF2_SetFloat(Local, "POS0", iPonto[i][PPOS][0]);
  106.             DOF2_SetFloat(Local, "POS1", iPonto[i][PPOS][1]);
  107.             DOF2_SetFloat(Local, "POS2", iPonto[i][PPOS][2]);
  108.             DOF2_SaveFile();
  109.  
  110.             format(Texto, sizeof(Texto), "<Ponto>\n[%d]\n<saida>", i);
  111.  
  112.             iPonto[i][PID] =  CreatePickup(19198, 1, iPonto[i][PPOS][0], iPonto[i][PPOS][1], iPonto[i][PPOS][2]+0.2, 0);
  113.             iPonto[i][PTEXT3D] = Create3DTextLabel(Texto, -1, iPonto[i][PPOS][0], iPonto[i][PPOS][1], iPonto[i][PPOS][2]-0.2, 5.0, 0);
  114.         }
  115.         else
  116.         {
  117.             SendClientMessage(playerid, 0x33AA3300, "Você aida não definio o ponto [1], defina-o.");
  118.         }
  119.     }
  120.     return 1;
  121. }
  122.  
  123. CMD:apagarponto(playerid)
  124. {
  125.     if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return 1;
  126.     new f = MAX_PONTOS+1;
  127.     new i = iMAX_PONTOS+1;
  128.     for(new a = 0; a < MAX_PONTOS; a++)
  129.     {
  130.         if(IsPlayerInRangeOfPoint(playerid, 1.0, PPonto[a][PPOS][0], PPonto[a][PPOS][1], PPonto[a][PPOS][2]))
  131.         {
  132.             f = a;
  133.             break;
  134.         }
  135.     }
  136.     for(new a = 0; a < iMAX_PONTOS; a++)
  137.     {
  138.         if(IsPlayerInRangeOfPoint(playerid, 1.0, PPonto[a][PPOS][0], PPonto[a][PPOS][1], PPonto[a][PPOS][2]))
  139.         {
  140.             i = a;
  141.             break;
  142.         }
  143.     }
  144.     if(f > MAX_PONTOS) return SendClientMessage(playerid, 0x33AA3300, "Fique acima da porta principal para apagar.");
  145.     DestroyPickup(PPonto[f][PID]);
  146.     Delete3DTextLabel(PPonto[f][PTEXT3D]);
  147.     DestroyPickup(iPonto[i][PID]);
  148.     Delete3DTextLabel(iPonto[i][PTEXT3D]);
  149.     PPonto[f][PPOS][0] = 0.0;
  150.     PPonto[f][PPOS][1] = 0.0;
  151.     PPonto[f][PPOS][2] = 0.0;
  152.     iPonto[i][PPOS][0] = 0.0;
  153.     iPonto[i][PPOS][1] = 0.0;
  154.     iPonto[i][PPOS][2] = 0.0;
  155.     new Local[100];
  156.     format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", f);
  157.     DOF2_RemoveFile(Local);
  158.     format(Local, sizeof(Local), "PPontos/Saidas/%d.txt", i);
  159.     DOF2_RemoveFile(Local);
  160.     f = -1;
  161.     return 1;
  162. }
  163.  
  164. CMD:entrar(playerid)
  165. {
  166.     new f = MAX_PONTOS+1;
  167.     for(new a = 0; a < MAX_PONTOS; a++)
  168.     {
  169.         if(IsPlayerInRangeOfPoint(playerid, 1.0, PPonto[a][PPOS][0], PPonto[a][PPOS][1], PPonto[a][PPOS][2]))
  170.         {
  171.             f = a;
  172.             break;
  173.         }
  174.     }
  175.     if(f > MAX_PONTOS) return 1;
  176.     SetPlayerPos(playerid, iPonto[f][PPOS][0], iPonto[f][PPOS][1], iPonto[f][PPOS][2]);
  177.     return 1;
  178. }
  179.  
  180. CMD:sair(playerid)
  181. {
  182.     new i = iMAX_PONTOS+1;
  183.     for(new a = 0; a < iMAX_PONTOS; a++)
  184.     {
  185.         if(IsPlayerInRangeOfPoint(playerid, 1.0, iPonto[a][PPOS][0], iPonto[a][PPOS][1], iPonto[a][PPOS][2]))
  186.         {
  187.             i = a;
  188.             break;
  189.         }
  190.     }
  191.     if(i > MAX_PONTOS) return 1;
  192.     SetPlayerPos(playerid, PPonto[i][PPOS][0], PPonto[i][PPOS][1], PPonto[i][PPOS][2]);
  193.     return 1;
  194. }
  195.  
  196. stock CarregarPPontos()
  197. {
  198.     new Local[100];
  199.     new Texto[100];
  200.     for(new pontoid; pontoid < MAX_PONTOS; pontoid++)
  201.     {
  202.         format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", pontoid);
  203.         if(DOF2_FileExists(Local))
  204.         {
  205.             PPonto[pontoid][PPOS][0] = DOF2_GetFloat(Local, "POS0");
  206.             PPonto[pontoid][PPOS][1] = DOF2_GetFloat(Local, "POS1");
  207.             PPonto[pontoid][PPOS][2] = DOF2_GetFloat(Local, "POS2");
  208.            
  209.             format(Texto, sizeof(Texto), "<Ponto>\n[%d]\n<entrada>", pontoid);
  210.             PPonto[pontoid][PID] =  CreatePickup(19198, 1, PPonto[pontoid][PPOS][0], PPonto[pontoid][PPOS][1], PPonto[pontoid][PPOS][2]+0.2, 0);
  211.             PPonto[pontoid][PTEXT3D] = Create3DTextLabel(Texto, -1, PPonto[pontoid][PPOS][0], PPonto[pontoid][PPOS][1], PPonto[pontoid][PPOS][2]-0.2, 5.0, 0);
  212.             printf("[EXTERIOR] PONTO [%d]", pontoid);
  213.         }
  214.     }
  215.     for(new pontoid; pontoid < iMAX_PONTOS; pontoid++)
  216.     {
  217.         format(Local, sizeof(Local), "PPontos/Saidas/%d.txt", pontoid);
  218.         if(DOF2_FileExists(Local))
  219.         {
  220.             iPonto[pontoid][PPOS][0] = DOF2_GetFloat(Local, "POS0");
  221.             iPonto[pontoid][PPOS][1] = DOF2_GetFloat(Local, "POS1");
  222.             iPonto[pontoid][PPOS][2] = DOF2_GetFloat(Local, "POS2");
  223.            
  224.             format(Texto, sizeof(Texto), "<Ponto>\n[%d]\n<saida>", pontoid);
  225.             iPonto[pontoid][PID] =  CreatePickup(19198, 1, iPonto[pontoid][PPOS][0], iPonto[pontoid][PPOS][1], iPonto[pontoid][PPOS][2]+0.2, 0);
  226.             iPonto[pontoid][PTEXT3D] = Create3DTextLabel(Texto, -1, iPonto[pontoid][PPOS][0], iPonto[pontoid][PPOS][1], iPonto[pontoid][PPOS][2]-0.2, 5.0, 0);
  227.             printf("[INTERIOR] PONTO [%d]", pontoid);
  228.         }
  229.     }
  230. }
Advertisement
Add Comment
Please, Sign In to add comment