[AJUDA] Local de incendio
#1

pessoal eu tava tentando criar locais aletorios de incendio..
exemplo: kda 15 minutos um local diferente pegava fogo,ai os bombeiros ia la digitava /apagarfogo pra controlar as explosoes no caso para-las e ai eles iam apagando com o extintor o resto das chamas.
+ ai й q ta eu procurei no ****** n axei procurei no search do forum consegui axar ai fui ve tentei usar o q o caio_cartaxo fez nesse topico -> http://forum.sa-mp.com/showthread.ph...ncendio&page=2
tentei o do sub_zero tbm + o dele n funfou..

enfim, qria a ajuda se alguem pudesse me ajudar a criar o cmd /apagarfogo para os bombeiros conseguir fazer com q as explosoes parem e eles consigam apagar o resto das chamas com o extintor (й claro ¬¬) e qdo ele conseguisse apagar tdo o fogo n sobrar + nenhuma chama eles ganhassem um bonus sei la d +/- $1500.

desde jб agradeзo!

@EDIT: enquanto um local ta pegando fogo o outro tbm ta ;S oq eu qro й q sу exploda outro qdo um kbar...
Reply
#2

Use o Search, o Rjjj e o Knife, fizeram algo parecido, basta usar o que tem na sua cabeзa para adaptar para o que vocк quiser.
Reply
#3

Quote:
Originally Posted by Shickcard
Посмотреть сообщение
Use o Search, o Rjjj e o Knife, fizeram algo parecido, basta usar o que tem na sua cabeзa para adaptar para o que vocк quiser.
eu ja vi esse aн ¬¬
esse q vc ta falando n й do jeito q eu qro.. esse aн a pessoa q bota fogo oq eu qro й q pegue fogo aleatoriamente em locais diferentes q eu colocar as coordenadas
Reply
#4

Cria um random.

PHP код:


new Float:RandomFogo[2][3] = {
{
X,Y,Z},
{
X,Y,Z}
};
  
//Troque o [2] pela quantidade de coordenadas 
Ultilizando.
PHP код:
new rand;
rand random(sizeof(RandomFogo));
CriarFogo(playeridRandomFogo[rand][0], RandomFogo[rand][1], RandomFogo[rand][2]); 
Troque o criafogo pela sua funзгo.
Reply
#5

PHP код:
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 !
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 !
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 !
#include <a_samp>
#define FILTERSCRIPT
#define HOLDING(%0) \
    
((newkeys & (%0)) == (%0))
#define RELEASED(%0) \
    
(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
#define MAX_FOGO 2 //TROQUE PELA QUANTIDADE DE LOCAIS QUE VOCК COLOCAR AQUI EMBAIXO \/
new Float:Fogo[MAX_FOGO][3] = {
{
0.00.00.0}, //TROQUE PELAS COORDENADAS QUE O FOGO PODE ESTAR
{0.10.10.1}  //TROQUE PELAS COORDENADAS QUE O FOGO PODE ESTAR
};
new 
Servico[MAX_PLAYERS];
new 
Apagando[MAX_PLAYERS];
new 
Checagem[MAX_PLAYERS];
new 
F;
new 
Fire;
new 
Bombeiro[MAX_PLAYERS];
forward Check(playerid);
forward Fogoo();
public 
OnPlayerConnect(playerid)
{
    
Apagando[playerid] = 0;
    
Checagem[playerid] = 0;
    
Servico[playerid] = 0;
    return 
1;
}
public 
OnGameModeInit()
{
    
SetTimer("Fogoo"600000true); // 10 MINUTOS
    
0;
    return 
1;
}
public 
Fogoo()
{
    new 
fire random(sizeof(Fogo));
    if(
== 0)
    {
        
Fire CreateObject(18691Fogo[fire][0], Fogo[fire][1], Fogo[fire][2], 0.00.00.0);
        
F++;
        for(new 
0MAX_PLAYERSi++)
        {
            if(
Bombeiro[i] == && Servico[i] == 0)
            {
                new 
str[128];
                
format(strsizeof(str), "Hб um novo foco de incкndio ! Siga o checkpoint com um carro de bombeiros ou com um extintor agora !!"Fogo[fire][0], Fogo[fire][1], Fogo[fire][2]);
                
SendClientMessage(i, -1str);
                
SetPlayerCheckpoint(iFogo[fire][0], Fogo[fire][1], Fogo[fire][2], 8.0);
                
Servico[i] = 1;
                return 
1;
            }
        }
        return 
1;
    }
    return 
1;
}
public 
OnPlayerEnterCheckpoint(playerid)
{
    if(
Servico[playerid] == 1)
    {
        new 
extintor[2];
        
GetPlayerWeaponData(playerid9extintor[0], extintor[1]);
        if(
GetPlayerState(playerid) == && GetVehicleModel(GetPlayerVehicleID(playerid)) == 407 || extintor[0] != 42) return SendClientMessage(playerid, -1"Vocк nгo estб em um carro de bombeiros ou nгo estб com um extintor !");
        
SendClientMessage(playerid, -1"Vocк acaba de chegar no foco de incendio ! Aponte o extintor ou o jato d'agua para o fogo por 5 segundos para apagб-lo.");
        
Servico[playerid] = 2;
        return 
1;
    }
    return 
1;
}
public 
OnPlayerLeaveCheckpoint(playerid)
{
    if(
Servico[playerid] == 2)
    {
        
SendClientMessage(playerid, -1"Vocк saiu do foco de incendio sem apagб-lo ...");
        
Servico[playerid] = 1;
        return 
1;
    }
    return 
1;
}
public 
OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    if(
HOLDING(KEY_FIRE) && Servico[playerid] == 2)
    {
        
SetTimerEx("Check"1000false"i"playerid);
        
Checagem[playerid] = 1;
        return 
1;
    }
    if(
RELEASED(KEY_FIRE) && Servico[playerid] == 2)
    {
        
Checagem[playerid] = 0;
        return 
1;
    }
    return 
1;
}
public 
Check(playerid)
{
    if(
Checagem[playerid] == 1)
    {
        
Apagando[playerid]++;
        
Checagem[playerid]++;
        
SetTimerEx("Check"1000false"i"playerid);
        return 
1;
    }
    if(
Checagem[playerid] == 2)
    {
        
Apagando[playerid]++;
        
Checagem[playerid]++;
        
SetTimerEx("Check"1000false"i"playerid);
        return 
1;
    }
    if(
Checagem[playerid] == 3)
    {
        
Apagando[playerid]++;
        
Checagem[playerid]++;
        
SetTimerEx("Check"1000false"i"playerid);
        return 
1;
    }
    if(
Checagem[playerid] == 4)
    {
        
Apagando[playerid]++;
        
Checagem[playerid]++;
        
SetTimerEx("Check"1000false"i"playerid);
        return 
1;
    }
    if(
Checagem[playerid] == && Apagando[playerid] == 5)
    {
        
SendClientMessage(playerid, -1"Parabйns ! Vocк apagou o fogo !");
        
Checagem[playerid] = 0;
        
Apagando[playerid] = 0;
        
Servico[playerid] = 0;
        
DestroyObject(Fire);
        
--;
        return 
1;
    }
    return 
1;
}
public 
OnPlayerCommandText(playeridcmdtext[])
{
    if(
strcmp(cmdtext"/bm"true) == 0)
    {
        if(
Bombeiro[playerid] == 1) return SendClientMessage(playerid, -1"Vocк jб й bombeiro.");
        
SendClientMessage(playerid, -1"Vocк acaba de tornar-se um bombeiro");
        
Bombeiro[playerid] = 1;
        return 
1;
    }
    return 
0;
}
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 !
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 !
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 ! 
Reply
#6

Quote:
Originally Posted by Shadoww5
Посмотреть сообщение
PHP код:
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 !
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 !
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 !
#include <a_samp>
#define FILTERSCRIPT
#define HOLDING(%0) \
    
((newkeys & (%0)) == (%0))
#define RELEASED(%0) \
    
(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
#define MAX_FOGO 2 //TROQUE PELA QUANTIDADE DE LOCAIS QUE VOCК COLOCAR AQUI EMBAIXO \/
new Float:Fogo[MAX_FOGO][3] = {
{
0.00.00.0}, //TROQUE PELAS COORDENADAS QUE O FOGO PODE ESTAR
{0.10.10.1}  //TROQUE PELAS COORDENADAS QUE O FOGO PODE ESTAR
};
new 
Servico[MAX_PLAYERS];
new 
Apagando[MAX_PLAYERS];
new 
Checagem[MAX_PLAYERS];
new 
F;
new 
Fire;
new 
Bombeiro[MAX_PLAYERS];
forward Check(playerid);
forward Fogoo();
public 
OnPlayerConnect(playerid)
{
    
Apagando[playerid] = 0;
    
Checagem[playerid] = 0;
    
Servico[playerid] = 0;
    return 
1;
}
public 
OnGameModeInit()
{
    
SetTimer("Fogoo"600000true); // 10 MINUTOS
    
0;
    return 
1;
}
public 
Fogoo()
{
    new 
fire random(sizeof(Fogo));
    if(
== 0)
    {
        
Fire CreateObject(18691Fogo[fire][0], Fogo[fire][1], Fogo[fire][2], 0.00.00.0);
        
F++;
        for(new 
0MAX_PLAYERSi++)
        {
            if(
Bombeiro[i] == && Servico[i] == 0)
            {
                new 
str[128];
                
format(strsizeof(str), "Hб um novo foco de incкndio ! Siga o checkpoint com um carro de bombeiros ou com um extintor agora !!"Fogo[fire][0], Fogo[fire][1], Fogo[fire][2]);
                
SendClientMessage(i, -1str);
                
SetPlayerCheckpoint(iFogo[fire][0], Fogo[fire][1], Fogo[fire][2], 8.0);
                
Servico[i] = 1;
                return 
1;
            }
        }
        return 
1;
    }
    return 
1;
}
public 
OnPlayerEnterCheckpoint(playerid)
{
    if(
Servico[playerid] == 1)
    {
        new 
extintor[2];
        
GetPlayerWeaponData(playerid9extintor[0], extintor[1]);
        if(
GetPlayerState(playerid) == && GetVehicleModel(GetPlayerVehicleID(playerid)) == 407 || extintor[0] != 42) return SendClientMessage(playerid, -1"Vocк nгo estб em um carro de bombeiros ou nгo estб com um extintor !");
        
SendClientMessage(playerid, -1"Vocк acaba de chegar no foco de incendio ! Aponte o extintor ou o jato d'agua para o fogo por 5 segundos para apagб-lo.");
        
Servico[playerid] = 2;
        return 
1;
    }
    return 
1;
}
public 
OnPlayerLeaveCheckpoint(playerid)
{
    if(
Servico[playerid] == 2)
    {
        
SendClientMessage(playerid, -1"Vocк saiu do foco de incendio sem apagб-lo ...");
        
Servico[playerid] = 1;
        return 
1;
    }
    return 
1;
}
public 
OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    if(
HOLDING(KEY_FIRE) && Servico[playerid] == 2)
    {
        
SetTimerEx("Check"1000false"i"playerid);
        
Checagem[playerid] = 1;
        return 
1;
    }
    if(
RELEASED(KEY_FIRE) && Servico[playerid] == 2)
    {
        
Checagem[playerid] = 0;
        return 
1;
    }
    return 
1;
}
public 
Check(playerid)
{
    if(
Checagem[playerid] == 1)
    {
        
Apagando[playerid]++;
        
Checagem[playerid]++;
        
SetTimerEx("Check"1000false"i"playerid);
        return 
1;
    }
    if(
Checagem[playerid] == 2)
    {
        
Apagando[playerid]++;
        
Checagem[playerid]++;
        
SetTimerEx("Check"1000false"i"playerid);
        return 
1;
    }
    if(
Checagem[playerid] == 3)
    {
        
Apagando[playerid]++;
        
Checagem[playerid]++;
        
SetTimerEx("Check"1000false"i"playerid);
        return 
1;
    }
    if(
Checagem[playerid] == 4)
    {
        
Apagando[playerid]++;
        
Checagem[playerid]++;
        
SetTimerEx("Check"1000false"i"playerid);
        return 
1;
    }
    if(
Checagem[playerid] == && Apagando[playerid] == 5)
    {
        
SendClientMessage(playerid, -1"Parabйns ! Vocк apagou o fogo !");
        
Checagem[playerid] = 0;
        
Apagando[playerid] = 0;
        
Servico[playerid] = 0;
        
DestroyObject(Fire);
        
--;
        return 
1;
    }
    return 
1;
}
public 
OnPlayerCommandText(playeridcmdtext[])
{
    if(
strcmp(cmdtext"/bm"true) == 0)
    {
        if(
Bombeiro[playerid] == 1) return SendClientMessage(playerid, -1"Vocк jб й bombeiro.");
        
SendClientMessage(playerid, -1"Vocк acaba de tornar-se um bombeiro");
        
Bombeiro[playerid] = 1;
        return 
1;
    }
    return 
0;
}
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 !
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 !
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 ! 
tpw shadow5 a fs q vc fez funcionou d boa aparece as mensagens q ta tendo fogo em tal lugar,aparece o checkpoint, e aparece qdo xegou e talz.. sу q o problema й q qdo vc vai apagar as vezes ele apaga e outras n :S e o fogo fika flutuando tpw no teto do local :S
e uma pregunta: qdo for apagar o fogo tem q digitar /bm tda vez? q for apagar?

olha como ta..
sу adcionei a coordenada ali onde vc falou pra aparecer os fogos e talz.. e diminui o tempo pra testar n fikar esperando 10minutos
Код:
#include <a_samp>

#define FILTERSCRIPT

#define HOLDING(%0) \
    ((newkeys & (%0)) == (%0))

#define RELEASED(%0) \
    (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))

#define MAX_FOGO 2 //TROQUE PELA QUANTIDADE DE LOCAIS QUE VOCК COLOCAR AQUI EMBAIXO \/

new Float:Fogo[MAX_FOGO][3] = {
{1945.0302,-1770.4335,13.3906}, //TROQUE PELAS COORDENADAS QUE O FOGO PODE ESTAR
{1352.3875,-1756.2349,13.5078}  //TROQUE PELAS COORDENADAS QUE O FOGO PODE ESTAR
};
new Servico[MAX_PLAYERS];
new Apagando[MAX_PLAYERS];
new Checagem[MAX_PLAYERS];
new F;
new Fire;
new Bombeiro[MAX_PLAYERS];

forward Check(playerid);
forward Fogoo();

public OnPlayerConnect(playerid)
{
    Apagando[playerid] = 0;
    Checagem[playerid] = 0;
    Servico[playerid] = 0;
    return 1;
}
public OnGameModeInit()
{
    SetTimer("Fogoo", 70000, true); // diminui o tempo pra testar pra n precisar fikar esperando 10minutos pra ir apagar o fogo
    F = 0;
    return 1;
}
public Fogoo()
{
    new fire = random(sizeof(Fogo));
    if(F == 0)
    {
        Fire = CreateObject(18691, Fogo[fire][0], Fogo[fire][1], Fogo[fire][2], 0.0, 0.0, 0.0);
        F++;
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(Bombeiro[i] == 1 && Servico[i] == 0)
            {
                new str[128];
                format(str, sizeof(str), "Hб um novo foco de incкndio ! Siga o checkpoint com um carro de bombeiros ou com um extintor agora !!", Fogo[fire][0], Fogo[fire][1], Fogo[fire][2]);
                SendClientMessage(i, -1, str);
                SetPlayerCheckpoint(i, Fogo[fire][0], Fogo[fire][1], Fogo[fire][2], 8.0);
                Servico[i] = 1;
                return 1;
            }
        }
        return 1;
    }
    return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
    if(Servico[playerid] == 1)
    {
        new extintor[2];
        GetPlayerWeaponData(playerid, 9, extintor[0], extintor[1]);
        if(GetPlayerState(playerid) == 2 && GetVehicleModel(GetPlayerVehicleID(playerid)) == 407 || extintor[0] != 42) return SendClientMessage(playerid, -1, "Vocк nгo estб em um carro de bombeiros ou nгo estб com um extintor !");
        SendClientMessage(playerid, -1, "Vocк acaba de chegar no foco de incendio ! Aponte o extintor ou o jato d'agua para o fogo por 5 segundos para apagб-lo.");
        Servico[playerid] = 2;
        return 1;
    }
    return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
    if(Servico[playerid] == 2)
    {
        SendClientMessage(playerid, -1, "Vocк saiu do foco de incendio sem apagб-lo ...");
        Servico[playerid] = 1;
        return 1;
    }
    return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(HOLDING(KEY_FIRE) && Servico[playerid] == 2)
    {
        SetTimerEx("Check", 1000, false, "i", playerid);
        Checagem[playerid] = 1;
        return 1;
    }
    if(RELEASED(KEY_FIRE) && Servico[playerid] == 2)
    {
        Checagem[playerid] = 0;
        return 1;
    }
    return 1;
}
public Check(playerid)
{
    if(Checagem[playerid] == 1)
    {
        Apagando[playerid]++;
        Checagem[playerid]++;
        SetTimerEx("Check", 1000, false, "i", playerid);
        return 1;
    }
    if(Checagem[playerid] == 2)
    {
        Apagando[playerid]++;
        Checagem[playerid]++;
        SetTimerEx("Check", 1000, false, "i", playerid);
        return 1;
    }
    if(Checagem[playerid] == 3)
    {
        Apagando[playerid]++;
        Checagem[playerid]++;
        SetTimerEx("Check", 1000, false, "i", playerid);
        return 1;
    }
    if(Checagem[playerid] == 4)
    {
        Apagando[playerid]++;
        Checagem[playerid]++;
        SetTimerEx("Check", 1000, false, "i", playerid);
        return 1;
    }
    if(Checagem[playerid] == 5 && Apagando[playerid] == 5)
    {
        SendClientMessage(playerid, -1, "Parabйns ! Vocк apagou o fogo !");
        Checagem[playerid] = 0;
        Apagando[playerid] = 0;
        Servico[playerid] = 0;
        DestroyObject(Fire);
        F --;
        return 1;
    }
    return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext, "/bm", true) == 0)
    {
        if(Bombeiro[playerid] == 1) return SendClientMessage(playerid, -1, "Vocк jб й bombeiro.");
        SendClientMessage(playerid, -1, "Vocк acaba de tornar-se um bombeiro");
        Bombeiro[playerid] = 1;
        return 1;
    }
    return 0;
}

//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 ! 
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 ! 
//FEITO POR SHADOWW5 ! FEITO POR SHADOWW5 !
Reply
#7

Nгo, nao precisa digitar /bm toda vez que for apagar o fogo.

Este comando serve somente para tornar uma jogador num bombeiro.

Quanto ao fogo eu irei testar aqui o FS e te dou uma resposta ainda hoje.
Reply
#8

oks..
tpw assim.. se puder adcionar um ngc a + й tpw... um lugar pega fogo ai aparece pros bombeiros tal lugar e tal num sei oq la ta pegando fogo va atй la apagar.. ai os bombeiros tem um certo tempo pra ir la apagar se n conseguir xegar a tempo.. aparece.. q os bombeiros n conseguiram xegar a tempo para apagar o incendio e o tal lugar foi destruido.
ai apos essa msg o local do incendio muda ^^
Reply
#9

Search vйi , tem varios !
Reply
#10

Quote:
Originally Posted by Ghost_
Посмотреть сообщение
Search vйi , tem varios !
vc por acaso leu oq eu escrevi la em cima sobre o search? ¬¬
da proxima presta atenзгo! antes de falar *****
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)