Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include < a_samp >
- #include < ZCMD >
- #include < DOF2 >
- #include < sscanf2 >
- #define MAX_PONTOS 100
- #define iMAX_PONTOS 100
- enum PDATA
- {
- PID,
- Text3D:PTEXT3D,
- Float:PPOS[3],
- }
- enum iDATA
- {
- PID,
- Text3D:PTEXT3D,
- Float:PPOS[3],
- }
- new iPonto[iMAX_PONTOS][iDATA];
- new PPonto[MAX_PONTOS][PDATA];
- new PPontoPermitir = 1;
- public OnFilterScriptInit()
- {
- CarregarPPontos();
- return 1;
- }
- public OnFilterScriptExit()
- {
- DOF2_Exit();
- return 1;
- }
- CMD:criarponto(playerid, params [])
- {
- new opcao;
- new Local[100];
- new Texto[100];
- new e = MAX_PONTOS+1;
- new i = iMAX_PONTOS+1;
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return 1;
- if(sscanf(params, "d", opcao)) return SendClientMessage(playerid, 0x33AA3300, "<opções = entrada(1), saida(2)>");
- if(opcao == 1)
- {
- if(PPontoPermitir == 1)
- {
- for(new a = 0; a < MAX_PONTOS; a++)
- {
- if(PPonto[a][PPOS][0] == 0.0)
- {
- e = a;
- break;
- }
- }
- PPontoPermitir = 2;
- if(e > MAX_PONTOS) return SendClientMessage(playerid, 0x33AA3300, "Você não pode criar mais.");
- printf("[Porta][1][id = %d]", e);
- SendClientMessage(playerid, 0x33AA3300, "[1][OK]");
- GetPlayerPos(playerid, PPonto[e][PPOS][0], PPonto[e][PPOS][1], PPonto[e][PPOS][2]);
- format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", e);
- DOF2_CreateFile(Local);
- DOF2_SetFloat(Local, "POS0", PPonto[e][PPOS][0]);
- DOF2_SetFloat(Local, "POS1", PPonto[e][PPOS][1]);
- DOF2_SetFloat(Local, "POS2", PPonto[e][PPOS][2]);
- DOF2_SaveFile();
- format(Texto, sizeof(Texto), "<Ponto>\n[%d]\n<saida>", e);
- PPonto[e][PID] = CreatePickup(19198, 1, PPonto[e][PPOS][0], PPonto[e][PPOS][1], PPonto[e][PPOS][2]+0.2, 0);
- PPonto[e][PTEXT3D] = Create3DTextLabel(Texto, -1, PPonto[e][PPOS][0], PPonto[e][PPOS][1], PPonto[e][PPOS][2]-0.2, 5.0, 0);
- }
- else
- {
- SendClientMessage(playerid, 0x33AA3300, "Você ja definio o ponto [1] defina o proximo(2).");
- }
- }
- if(opcao == 2)
- {
- if(PPontoPermitir == 2)
- {
- PPontoPermitir = 1;
- for(new a = 0; a < iMAX_PONTOS; a++)
- {
- if(iPonto[a][PPOS][0] == 0.0)
- {
- i = a;
- break;
- }
- }
- if(i > MAX_PONTOS) return SendClientMessage(playerid, 0x33AA3300, "Você não pode criar mais.");
- printf("[Porta][2][id = %d]",i);
- SendClientMessage(playerid, 0x33AA3300, "[2][OK]");
- GetPlayerPos(playerid, iPonto[i][PPOS][0], iPonto[i][PPOS][1], iPonto[i][PPOS][2]);
- format(Local, sizeof(Local), "PPontos/Saidas/%d.txt", i);
- DOF2_CreateFile(Local);
- DOF2_SetFloat(Local, "POS0", iPonto[i][PPOS][0]);
- DOF2_SetFloat(Local, "POS1", iPonto[i][PPOS][1]);
- DOF2_SetFloat(Local, "POS2", iPonto[i][PPOS][2]);
- DOF2_SaveFile();
- format(Texto, sizeof(Texto), "<Ponto>\n[%d]\n<saida>", i);
- iPonto[i][PID] = CreatePickup(19198, 1, iPonto[i][PPOS][0], iPonto[i][PPOS][1], iPonto[i][PPOS][2]+0.2, 0);
- iPonto[i][PTEXT3D] = Create3DTextLabel(Texto, -1, iPonto[i][PPOS][0], iPonto[i][PPOS][1], iPonto[i][PPOS][2]-0.2, 5.0, 0);
- }
- else
- {
- SendClientMessage(playerid, 0x33AA3300, "Você aida não definio o ponto [1], defina-o.");
- }
- }
- return 1;
- }
- CMD:apagarponto(playerid)
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return 1;
- new f = MAX_PONTOS+1;
- new i = iMAX_PONTOS+1;
- for(new a = 0; a < MAX_PONTOS; a++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.0, PPonto[a][PPOS][0], PPonto[a][PPOS][1], PPonto[a][PPOS][2]))
- {
- f = a;
- break;
- }
- }
- for(new a = 0; a < iMAX_PONTOS; a++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.0, PPonto[a][PPOS][0], PPonto[a][PPOS][1], PPonto[a][PPOS][2]))
- {
- i = a;
- break;
- }
- }
- if(f > MAX_PONTOS) return SendClientMessage(playerid, 0x33AA3300, "Fique acima da porta principal para apagar.");
- DestroyPickup(PPonto[f][PID]);
- Delete3DTextLabel(PPonto[f][PTEXT3D]);
- DestroyPickup(iPonto[i][PID]);
- Delete3DTextLabel(iPonto[i][PTEXT3D]);
- PPonto[f][PPOS][0] = 0.0;
- PPonto[f][PPOS][1] = 0.0;
- PPonto[f][PPOS][2] = 0.0;
- iPonto[i][PPOS][0] = 0.0;
- iPonto[i][PPOS][1] = 0.0;
- iPonto[i][PPOS][2] = 0.0;
- new Local[100];
- format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", f);
- DOF2_RemoveFile(Local);
- format(Local, sizeof(Local), "PPontos/Saidas/%d.txt", i);
- DOF2_RemoveFile(Local);
- f = -1;
- return 1;
- }
- CMD:entrar(playerid)
- {
- new f = MAX_PONTOS+1;
- for(new a = 0; a < MAX_PONTOS; a++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.0, PPonto[a][PPOS][0], PPonto[a][PPOS][1], PPonto[a][PPOS][2]))
- {
- f = a;
- break;
- }
- }
- if(f > MAX_PONTOS) return 1;
- SetPlayerPos(playerid, iPonto[f][PPOS][0], iPonto[f][PPOS][1], iPonto[f][PPOS][2]);
- return 1;
- }
- CMD:sair(playerid)
- {
- new i = iMAX_PONTOS+1;
- for(new a = 0; a < iMAX_PONTOS; a++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.0, iPonto[a][PPOS][0], iPonto[a][PPOS][1], iPonto[a][PPOS][2]))
- {
- i = a;
- break;
- }
- }
- if(i > MAX_PONTOS) return 1;
- SetPlayerPos(playerid, PPonto[i][PPOS][0], PPonto[i][PPOS][1], PPonto[i][PPOS][2]);
- return 1;
- }
- stock CarregarPPontos()
- {
- new Local[100];
- new Texto[100];
- for(new pontoid; pontoid < MAX_PONTOS; pontoid++)
- {
- format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", pontoid);
- if(DOF2_FileExists(Local))
- {
- PPonto[pontoid][PPOS][0] = DOF2_GetFloat(Local, "POS0");
- PPonto[pontoid][PPOS][1] = DOF2_GetFloat(Local, "POS1");
- PPonto[pontoid][PPOS][2] = DOF2_GetFloat(Local, "POS2");
- format(Texto, sizeof(Texto), "<Ponto>\n[%d]\n<entrada>", pontoid);
- PPonto[pontoid][PID] = CreatePickup(19198, 1, PPonto[pontoid][PPOS][0], PPonto[pontoid][PPOS][1], PPonto[pontoid][PPOS][2]+0.2, 0);
- PPonto[pontoid][PTEXT3D] = Create3DTextLabel(Texto, -1, PPonto[pontoid][PPOS][0], PPonto[pontoid][PPOS][1], PPonto[pontoid][PPOS][2]-0.2, 5.0, 0);
- printf("[EXTERIOR] PONTO [%d]", pontoid);
- }
- }
- for(new pontoid; pontoid < iMAX_PONTOS; pontoid++)
- {
- format(Local, sizeof(Local), "PPontos/Saidas/%d.txt", pontoid);
- if(DOF2_FileExists(Local))
- {
- iPonto[pontoid][PPOS][0] = DOF2_GetFloat(Local, "POS0");
- iPonto[pontoid][PPOS][1] = DOF2_GetFloat(Local, "POS1");
- iPonto[pontoid][PPOS][2] = DOF2_GetFloat(Local, "POS2");
- format(Texto, sizeof(Texto), "<Ponto>\n[%d]\n<saida>", pontoid);
- iPonto[pontoid][PID] = CreatePickup(19198, 1, iPonto[pontoid][PPOS][0], iPonto[pontoid][PPOS][1], iPonto[pontoid][PPOS][2]+0.2, 0);
- iPonto[pontoid][PTEXT3D] = Create3DTextLabel(Texto, -1, iPonto[pontoid][PPOS][0], iPonto[pontoid][PPOS][1], iPonto[pontoid][PPOS][2]-0.2, 5.0, 0);
- printf("[INTERIOR] PONTO [%d]", pontoid);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment