Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Dr_Pawno
- *
- * Sistema de Cancelas 1.0
- *
- */
- #include <a_samp>
- #define CANCELA_MAXIMO 10
- #define ERRO_NUMERO_MAXIMO 0
- #define ERRO_CANCELA_CRIADA 1
- #define ERRO_CANCELA_NAO_CRIADA 2
- #define ERRO_CANCELA_ABERTA 3
- #define ERRO_CANCELA_FECHADA 4
- #define ERRO_CANCELA_ABRINOUFECHAN 5
- // |_ Abrindo ou Fechando
- /*
- native CriarCancela(cancelaid, Float:x, Float:y, Float:z, Float:a)
- native AbrirCancela(cancelaid, bool:Fechar)
- native FecharCancela(cancelaid)
- native CancelaAberta(cancelaid)
- native CancelaAbrindoOuFechando(cancelaid)
- native ObjetoCancela(cancelaid)
- native DestruirCancela(cancelaid)
- */
- enum Cancela
- {
- c_Objeto,
- bool:c_Aberta,
- bool:c_AbrindoOuFechando,
- bool:c_Criada,
- Float:c_X,
- Float:c_Y,
- Float:c_Z,
- Float:c_A,
- c_R,
- c_T
- }
- new c_Cancela[CANCELA_MAXIMO][Cancela];
- forward AbrirCancela_Timer(cancelaid);
- forward FecharCancela_Timer(cancelaid);
- forward EsperarParaFechar_Timer(cancelaid);
- stock CriarCancela(cancelaid, Float:x, Float:y, Float:z, Float:a)
- {
- if(cancelaid > CANCELA_MAXIMO-1) return CancelaErro(ERRO_NUMERO_MAXIMO, cancelaid, "ID Invalido");
- if(c_Cancela[cancelaid][c_Criada]) return CancelaErro(ERRO_CANCELA_CRIADA, cancelaid, "Já Criada");
- c_Cancela[cancelaid][c_Aberta] = false;
- c_Cancela[cancelaid][c_AbrindoOuFechando] = false;
- c_Cancela[cancelaid][c_Criada] = true;
- c_Cancela[cancelaid][c_X] = x;
- c_Cancela[cancelaid][c_Y] = y;
- c_Cancela[cancelaid][c_Z] = z;
- c_Cancela[cancelaid][c_A] = a;
- c_Cancela[cancelaid][c_R] = 0;
- c_Cancela[cancelaid][c_Objeto] = CreateObject(968, x, y, z, 0.0, 270.0, a);
- return c_Cancela[cancelaid][c_Objeto];
- }
- stock AbrirCancela(cancelaid, bool:Fechar)
- {
- if(cancelaid > CANCELA_MAXIMO-1) return CancelaErro(ERRO_NUMERO_MAXIMO, cancelaid, "ID Invalido");
- if(!c_Cancela[cancelaid][c_Criada]) return CancelaErro(ERRO_CANCELA_NAO_CRIADA, cancelaid, "Não Criada");
- if(c_Cancela[cancelaid][c_Aberta]) return CancelaErro(ERRO_CANCELA_ABERTA, cancelaid, "Já Aberta");
- if(c_Cancela[cancelaid][c_AbrindoOuFechando]) return CancelaErro(ERRO_CANCELA_ABRINOUFECHAN, cancelaid, "Já esta Abrindo/Fechando");
- c_Cancela[cancelaid][c_AbrindoOuFechando] = true;
- c_Cancela[cancelaid][c_T] = SetTimerEx("AbrirCancela_Timer", 10, true, "i", cancelaid);
- if(Fechar) SetTimerEx("EsperarParaFechar_Timer", 90*10+4000, false, "i", cancelaid); // 90 * 10 = 900 + 4000 = 4900 = 5 seg
- return true;
- }
- stock FecharCancela(cancelaid)
- {
- if(cancelaid > CANCELA_MAXIMO-1) return CancelaErro(ERRO_NUMERO_MAXIMO, cancelaid, "ID Invalido");
- if(!c_Cancela[cancelaid][c_Criada]) return CancelaErro(ERRO_CANCELA_NAO_CRIADA, cancelaid, "Não Criada");
- if(!c_Cancela[cancelaid][c_Aberta]) return CancelaErro(ERRO_CANCELA_FECHADA, cancelaid, "Já Aberta");
- if(c_Cancela[cancelaid][c_AbrindoOuFechando]) return CancelaErro(ERRO_CANCELA_ABRINOUFECHAN, cancelaid, "Já esta Abrindo/Fechando");
- c_Cancela[cancelaid][c_AbrindoOuFechando] = true;
- c_Cancela[cancelaid][c_T] = SetTimerEx("FecharCancela_Timer", 10, true, "i", cancelaid);
- return true;
- }
- stock CancelaAberta(cancelaid)
- {
- if(cancelaid > CANCELA_MAXIMO-1) return false;
- if(!c_Cancela[cancelaid][c_Criada]) return false;
- return c_Cancela[cancelaid][c_Aberta];
- }
- stock CancelaAbrindoOuFechando(cancelaid)
- {
- if(cancelaid > CANCELA_MAXIMO-1) return false;
- if(!c_Cancela[cancelaid][c_Criada]) return false;
- return c_Cancela[cancelaid][c_AbrindoOuFechando];
- }
- stock ObjetoCancela(cancelaid)
- {
- if(cancelaid > CANCELA_MAXIMO-1) return false;
- if(!c_Cancela[cancelaid][c_Criada]) return false;
- return c_Cancela[cancelaid][c_Objeto];
- }
- stock DestruirCancela(cancelaid)
- {
- c_Cancela[cancelaid][c_Aberta] = false;
- c_Cancela[cancelaid][c_AbrindoOuFechando] = false;
- c_Cancela[cancelaid][c_Criada] = false;
- c_Cancela[cancelaid][c_X] = 0.0;
- c_Cancela[cancelaid][c_Y] = 0.0;
- c_Cancela[cancelaid][c_Z] = 0.0;
- c_Cancela[cancelaid][c_A] = 0.0;
- c_Cancela[cancelaid][c_R] = 0;
- c_Cancela[cancelaid][c_Objeto] = INVALID_OBJECT_ID;
- KillTimer(c_Cancela[cancelaid][c_T]);
- return true
- }
- stock CancelaErro(erro, cancelaid, descricao[])
- {
- return printf("Sistema de Cancela: Erro %d(%s) na cancela %d. Cheque o sistema.", erro, descricao, cancelaid);
- }
- public AbrirCancela_Timer(cancelaid)
- {
- new Float:c_RX, Float:c_RY, Float:c_RZ;
- c_Cancela[cancelaid][c_R]++;
- GetObjectRot(c_Cancela[cancelaid][c_Objeto], c_RX, c_RY, c_RZ);
- SetObjectRot(c_Cancela[cancelaid][c_Objeto], c_RX, c_RY+1, c_RZ);
- if(c_Cancela[cancelaid][c_R] != 90) return true;
- KillTimer(c_Cancela[cancelaid][c_T]);
- c_Cancela[cancelaid][c_AbrindoOuFechando] = false;
- c_Cancela[cancelaid][c_R] = 0;
- c_Cancela[cancelaid][c_Aberta] = true;
- return true;
- }
- public FecharCancela_Timer(cancelaid)
- {
- new Float:c_RX, Float:c_RY, Float:c_RZ;
- c_Cancela[cancelaid][c_R]++;
- GetObjectRot(c_Cancela[cancelaid][c_Objeto], c_RX, c_RY, c_RZ);
- SetObjectRot(c_Cancela[cancelaid][c_Objeto], c_RX, c_RY-1, c_RZ);
- if(c_Cancela[cancelaid][c_R] != 90) return true;
- KillTimer(c_Cancela[cancelaid][c_T]);
- c_Cancela[cancelaid][c_AbrindoOuFechando] = false;
- c_Cancela[cancelaid][c_R] = 0;
- c_Cancela[cancelaid][c_Aberta] = false;
- return true;
- }
- public EsperarParaFechar_Timer(cancelaid)
- {
- FecharCancela(cancelaid);
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement