22.10.2013, 17:29
Big, Bang, Boom!
Olб pessoal do Fуrum Samp!
Bom, do nada eu estava ouvindo a mъsica Diбrio de um Detento dos Racionais MCґs e tive uma idйia:
Criar uma include sobre uma bomba, atфmica ou nao, isto depende de vocк!
Segue as funзoes:
BBB_BombaExiste
A funзao й usada para saber se uma bomba existe ou nao.
Exemplo de Uso:
pawn Код:
if(BBB_Existe(1)) { break; }
BBB_CriarBomba
A funзao й usada para criar uma bomba em tal lugar do mapa.
Exemplo de Uso:
pawn Код:
new Float:X,Float:Y,Float:Z; BBB_CriarBomba(X,Y,Z,10.0,10);
Caso vocк use:
pawn Код:
BBB_CriarBomba(X,Y,Z,10.0,10000);
BBB_RemoverBomba
A funзao й usada para remover uma bomba jб criada.
Exemplo de Uso:
pawn Код:
if(BBB_Existe(1)) { BBB_RemoverBomba(1); }
Fotos
Bomba colocada:
Bomba explodindo:
Cуdigo
pawn Код:
#define Maximo_Bombas 1000
#define Maximo_Players 100
#define BombaTexto "Bomba\nExplosгo em %ds"
#define CorTexto 0xBFBFBFAA
enum Bomb
{
Float:BombaX,
Float:BombaY,
Float:BombaZ,
Float:BombaR,
BombaExplosao,
BombaExiste
};
stock Bomba[Maximo_Bombas][Bomb];
stock IconeBomba[Maximo_Bombas];
stock Text3D:TextoBomba[Maximo_Bombas];
stock FalaBomba[128];
stock UltimoID;
stock TempoCorrendo;
stock BBB_BombaExiste(id)
{
if(Bomba[id][BombaExiste] == 1)
{
return 1;
}
return 0;
}
stock BBB_CriarBomba(Float:X,Float:Y,Float:Z,Float:R,tempo)
{
if(UltimoID < Maximo_Bombas)
{
if(TempoCorrendo == 0)
{
SetTimer("ChecarBombas",1000,1);
TempoCorrendo = 1;
}
Bomba[UltimoID][BombaX] = X;
Bomba[UltimoID][BombaY] = Y;
Bomba[UltimoID][BombaZ] = Z;
Bomba[UltimoID][BombaR] = R;
Bomba[UltimoID][BombaExplosao] = tempo;
Bomba[UltimoID][BombaExiste] = 1;
format(FalaBomba,sizeof(FalaBomba),BombaTexto,tempo);
IconeBomba[UltimoID] = AddStaticPickup(363,0,X,Y,Z,-1);
TextoBomba[UltimoID] = Create3DTextLabel(FalaBomba,CorTexto,X,Y,Z,R,0,0);
printf("A bomba %d Foi criada, tempo para a explosгo: %ds",UltimoID,tempo);
UltimoID++;
}
else
{
printf("A bomba %d nгo pode ser criada!",Maximo_Bombas);
}
return 1;
}
stock BBB_RemoverBomba(id)
{
if(Bomba[id][BombaExiste] == 1)
{
if(TempoCorrendo == 0)
{
SetTimer("ChecarBombas",1000,1);
TempoCorrendo = 1;
}
Bomba[id][BombaX] = 0.0;
Bomba[id][BombaY] = 0.0;
Bomba[id][BombaZ] = 0.0;
Bomba[id][BombaR] = 0.0;
Bomba[id][BombaExplosao] = 0;
Bomba[id][BombaExiste] = 0;
DestroyPickup(IconeBomba[id]);
Delete3DTextLabel(TextoBomba[id]);
IconeBomba[UltimoID] = 0;
printf("A bomba %d Foi destruнda!",id);
UltimoID--;
}
else
{
printf("A bomba %d nгo pode ser destruнda!",id);
}
return 1;
}
ChecarBombas();
public ChecarBombas()
{
for(new i=0; i<Maximo_Bombas; i++)
{
if(Bomba[i][BombaExiste])
{
if(Bomba[i][BombaExplosao] == 0)
{
CreateExplosion(Bomba[i][BombaX],Bomba[i][BombaY],Bomba[i][BombaZ],7,Bomba[i][BombaR]);
BBB_RemoverBomba(i);
for(new i2=0; i2<Maximo_Players; i2++)
{
SetPlayerHealth(i2,0.0);
GameTextForPlayer(i2,"~r~Bomba Detonada!",5000,3);
}
}
else
{
format(FalaBomba,sizeof(FalaBomba),BombaTexto,Bomba[i][BombaExplosao]);
Update3DTextLabelText(TextoBomba[i],CorTexto,FalaBomba);
Bomba[i][BombaExplosao]--;
}
}
}
return 1;
}