Problem al hacer que todos mueran
#1

Hise un sistema de "BOMBA NUCLEAR" pero el problema es que al detonarla solo me mata ami, quisiera saber como hacer para que todos los player de X zona donde se detono la bomba mueran?? porfavor que me explique ya que no soy muy experto en esto de pawn xd
Reply
#2

usa un bucle que verifique a todos los jugadores para comprobar que esten cerca de la bomba y si es asi los matas, para verificar que esten cerca usa IsPlayerInRangeOfPoint
Reply
#3

pawn Код:
foreach(Player, i) // for(new i=0;i<MAX_PLAYERS;i++)
{
    if (IsPlayerInRangeOfPoint(i, /*distancia*/, bombaX, bombaY, bombaZ))
    {
        SetPlayerHealth(i, 0.00);
        SetPlayerArmour(i, 0.00);
    }
}
Obviamente debes cambiar todo eso con respecto a tu cуdigo.
Reply
#4

Quote:
Originally Posted by Daniel-92
Посмотреть сообщение
usa un bucle que verifique a todos los jugadores para comprobar que esten cerca de la bomba y si es asi los matas, para verificar que esten cerca usa IsPlayerInRangeOfPoint
Pero eso identifica si el PLAYER esta cerca del punto X
Reply
#5

Quote:
Originally Posted by admantis
Посмотреть сообщение
pawn Код:
foreach(Player, i) // for(new i=0;i<MAX_PLAYERS;i++)
{
    if (IsPlayerInRangeOfPoint(i, /*distancia*/, bombaX, bombaY, bombaZ))
    {
        SetPlayerHealth(i, 0.00);
        SetPlayerArmour(i, 0.00);
    }
}
Obviamente debes cambiar todo eso con respecto a tu cуdigo.
no entendi >.<
Reply
#6

Quote:
Originally Posted by Software
Посмотреть сообщение
no entendi >.<
debes anexar el codigo que te dio adamantis a tu sistema y cambiar las coordenadas bombaX,bombaY,bombaZ y si no tienes definido el foreach usa el el for que esta como comentario
Reply
#7

Quote:
Originally Posted by Software
Посмотреть сообщение
no entendi >.<
A ver, el cуdigo que te dieron sigue la siguiente lуgica.

Primero, se explota la bomba, la bomba tiene coordenadas x,y,z.

Segundo, definнs que a todos los jugadores a una distancia d que vos definas, no sй 5 metros, 100 metros, un millуn de kilуmetros, no sй, lo que quieras, les deje la vida en 0.

Entonces, resumiendo necesitбs:

1. Recorrer todos los jugadores
2. Ver para cada uno, si estб cerca ( o sea a una distancia d ) del punto (x,y,z) que es donde estб la bomba.
3. Darles 0 de vida.
4. Listo.


Eso es justamente lo que hace el cуdigo que te dieron.
Reply
#8

Quote:
Originally Posted by o_O
Посмотреть сообщение
A ver, el cуdigo que te dieron sigue la siguiente lуgica.

Primero, se explota la bomba, la bomba tiene coordenadas x,y,z.

Segundo, definнs que a todos los jugadores a una distancia d que vos definas, no sй 5 metros, 100 metros, un millуn de kilуmetros, no sй, lo que quieras, les deje la vida en 0.

Entonces, resumiendo necesitбs:

1. Recorrer todos los jugadores
2. Ver para cada uno, si estб cerca ( o sea a una distancia d ) del punto (x,y,z) que es donde estб la bomba.
3. Darles 0 de vida.
4. Listo.


Eso es justamente lo que hace el cуdigo que te dieron.
mira lo que hice es esto:
pawn Код:
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == PickBombaNuclear)
{
GangZoneFlashForAll(Zonea51,blanco2);
        SendClientMessageToAll(blanco,"***** ЎUNA BOMBA NUCLEAR EN EL AREA51 SERA DETONADA EN 1 MINUTO! *****");
        SetPlayerCheckpoint(playerid, 214.0679,1824.1951,6.4141, 3.5);
        timer5 = SetTimer("bombanuclear",60000,false);
}
return 1;
}

forward bombanuclear(playerid);
public bombanuclear(playerid)
{
for(new i=0;i<MAX_PLAYERS;i++)
{
    if (IsPlayerInRangeOfPoint(i, 500, 214.0679,1824.1951,6.4141))
    {
        SetPlayerHealth(i, 0.00);
        SetPlayerArmour(i, 0.00);
    }
}
return 1;
}
asi deveria ser??
Reply
#9

Yo lo veo bien
Reply
#10

Quote:
Originally Posted by Software
Посмотреть сообщение
mira lo que hice es esto:
pawn Код:
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == PickBombaNuclear)
{
GangZoneFlashForAll(Zonea51,blanco2);
        SendClientMessageToAll(blanco,"***** ЎUNA BOMBA NUCLEAR EN EL AREA51 SERA DETONADA EN 1 MINUTO! *****");
        SetPlayerCheckpoint(playerid, 214.0679,1824.1951,6.4141, 3.5);
        timer5 = SetTimer("bombanuclear",60000,false);
}
return 1;
}

forward bombanuclear(playerid);
public bombanuclear(playerid)
{
for(new i=0;i<MAX_PLAYERS;i++)
{
    if (IsPlayerInRangeOfPoint(i, 500, 214.0679,1824.1951,6.4141))
    {
        SetPlayerHealth(i, 0.00);
        SetPlayerArmour(i, 0.00);
    }
}
return 1;
}
asi deveria ser??
Impecable.

Agrega tambien a tu funcion de explotar bomba:

pawn Код:
KillTimer(timer5);
Esto es para que no explote infinitamente y te ahorres un poco de recursos.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)