[Duda] їFunciуn que pase por todo el array?
#1

Buenas, tengo una duda, їcomo puedo hacer una funciуn para que recorra todo el Array que tiene a los objetos? Es decir, tengo esto:
Jugo[0] = CreateObject(etc);
jugo[1] = CreateObject(etc);
Y asн hasta el treinta y pico.
їComo puedo hacer una funciуn que pase por cada uno de los nъmeros para comprobar si el usuario se encuentra en la misma posiciуn del objeto?
Estoy pensando hacer un sistema de recolecciуn de objetos para un GM survival zombie.
Reply
#2

Con un bucle:
PHP код:
new muchos 0treintaypico 38;

while(
muchos <= treintaypico)
{
    
Jugo[muchos] = CreateObject(nose);
    
muchos++;

Reply
#3

Hice esto, pero no sй si estб bien:
PHP код:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    if(
PRESSED(KEY_CTRL_BACK))
    {
        for(new 
iJugo[i]; i++)
        {
            new 
Float:a[3];
            
GetObjectPos(ia[0], a[1], a[2]);
            if(
IsPlayerInRangeOfPoint(playerid1.0a[0], a[1], a[2]+1))
            {
                if(
IsValidObject(i))
                {
                    
DestroyObject(i);
                    
Informacion[playerid][pJugo]++;
                    
SendClientMessage(playerid, -1"Encontraste una botella de jugo.");

                    break;
                }
            }
        }
    }
    return 
1;

Reply
#4

Cuantos slot's tiene Jugo?
Reply
#5

Quote:
Originally Posted by jotajeda
Посмотреть сообщение
Cuantos slot's tiene Jugo?
Son 38 slots.
Reply
#6

PHP код:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    if(
PRESSED(KEY_CTRL_BACK))
    {
        for(new 
i38i++)
        {
            new 
Float:a[3];
            
GetObjectPos(ia[0], a[1], a[2]);
            if(
IsPlayerInRangeOfPoint(playerid1.0a[0], a[1], a[2]+1))
            {
                if(
IsValidObject(i))
                {
                    
DestroyObject(i);
                    
Informacion[playerid][pJugo]++;
                    
SendClientMessage(playerid, -1"Encontraste una botella de jugo.");
                    break;
                }
            }
        }
    }
    return 
1;

Reply
#7

Pero eso estarнa contando del 0 al 38, yo lo que quiero es que cuente del 0 al 38 asн Jugo[i]
Quiero que recorra hasta el 38 dentro de Jugo[]

EDIT:

Puedo usarlo asн verdad?
PHP код:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys

    if(
PRESSED(KEY_CTRL_BACK)) 
    { 
        for(new 
i38i++) 
        { 
            new 
Float:a[3]; 
            
GetObjectPos(ia[0], a[1], a[2]); 
            if(
IsPlayerInRangeOfPoint(playerid1.0a[0], a[1], a[2]+1)) 
            { 
                if(
IsValidObject(Jugo[i])) 
                { 
                    
DestroyObject(i); 
                    
Informacion[playerid][pJugo]++; 
                    
SendClientMessage(playerid, -1"Encontraste una botella de jugo."); 
                    break; 
                } 
            } 
        } 
    } 
    return 
1

Reply
#8

Quote:
Originally Posted by xTexTx
Посмотреть сообщение
Pero eso estarнa contando del 0 al 38, yo lo que quiero es que cuente del 0 al 38 asн Jugo[i]
Quiero que recorra hasta el 38 dentro de Jugo[]

EDIT:

Puedo usarlo asн verdad?
PHP код:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys

    if(
PRESSED(KEY_CTRL_BACK)) 
    { 
        for(new 
i38i++) 
        { 
            new 
Float:a[3]; 
            
GetObjectPos(ia[0], a[1], a[2]); 
            if(
IsPlayerInRangeOfPoint(playerid1.0a[0], a[1], a[2]+1)) 
            { 
                if(
IsValidObject(Jugo[i])) 
                { 
                    
DestroyObject(i); 
                    
Informacion[playerid][pJugo]++; 
                    
SendClientMessage(playerid, -1"Encontraste una botella de jugo."); 
                    break; 
                } 
            } 
        } 
    } 
    return 
1

PHP код:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys

    if(
PRESSED(KEY_CTRL_BACK)) 
    { 
        for(new 
isizeof(Jugo); i++) 
        { 
            new 
Float:a[3]; 
            
GetObjectPos(ia[0], a[1], a[2]); 
            if(
IsPlayerInRangeOfPoint(playerid1.0a[0], a[1], a[2]+1)) 
            { 
                if(
IsValidObject(Jugo[i])) 
                { 
                    
DestroyObject(i); 
                    
Informacion[playerid][pJugo]++; 
                    
SendClientMessage(playerid, -1"Encontraste una botella de jugo."); 
                    break; 
                } else continue;
            } 
        } 
    } 
    return 
1

Reply
#9

Suponiendo que tienes un array con la forma:

pawn Код:
enum _@jugos
{
    objetoid,
    Float:pos[3],
    bool:estado
}
new static jugos[][_@jugos] =
{
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true},
    {INVALID_OBJECT_ID,     x,      y,      z,      true}
};
Para saber si esta cerca de un objeto, haces un recorrido por las posiciones de todos los objetos...
pawn Код:
for(new i = 0; i < sizeof(jugos); i++)
{
    // Recorrido por todos los jugos disponibles

    // El jugo ya fue recogido por otra persona
    if(!jugos[i][estado]) continue;

    // Obtenemos la distancia del jugador con el objeto
    new Float:distancia = GetPlayerDistanceFromPoint(playerid, jugos[i][pos][0], jugos[i][pos][1], jugos[i][pos][2]);

    // Esta a menos de 2 puntos flotantes de distancia de un objeto de jugo
    if(distancia <= 2)
    {
        // Definimos CELDA para saber mas textualmente el ID de la celda en la variable, que corresponde con el objeto que vamos a recoger
        #define CELDA i

        // Destruimos el objeto
        DestroyObject(jugos[CELDA][objetoid]);

        // Decimos que el objeto ya no esta disponible
        jugos[CELDA][estado] = false;

        // Acciуn del jugo en el jugador
        {
            //
        }

        // Detenemos el bucle de busqueda de los objetos
        break;

        //
        #undef CELDA
    }
}
Reply
#10

Asн lo tengo.
PHP код:
    Jugo[0] = CreateObject(15432064.634033, -1910.39721612.5468750.00.00.0);
    
Jugo[1] = CreateObject(15432046.018798, -1898.47595212.5538000.00.00.0);
    
Jugo[2] = CreateObject(15432012.459960, -1949.49633712.5468750.00.00.0);
    
Jugo[3] = CreateObject(15431946.470336, -1966.75842212.5498030.00.00.0);
    
Jugo[4] = CreateObject(15431804.609375, -1982.78869612.5364120.00.00.0);
    
Jugo[5] = CreateObject(15432142.594238, -2211.10742112.5468750.00.00.0);
    
Jugo[6] = CreateObject(15432234.959960, -2170.51953112.5538330.00.00.0);
    
Jugo[7] = CreateObject(15432239.090332, -2176.16650312.5468750.00.00.0);
    
Jugo[8] = CreateObject(15432297.313476, -2234.14355412.5468750.00.00.0);
    
Jugo[9] = CreateObject(15432407.680908, -2141.60815412.5468750.00.00.0);
    
Jugo[10] = CreateObject(15432428.263671, -2080.77905212.5468750.00.00.0);
    
Jugo[11] = CreateObject(15432531.570312, -2076.43066412.5468750.00.00.0);
    
Jugo[12] = CreateObject(15432696.383056, -1663.65319811.1421020.00.00.0);
    
Jugo[13] = CreateObject(15432684.320556, -1642.44799810.4620760.00.00.0);
    
Jugo[14] = CreateObject(15432557.494140, -1594.45788517.4251630.00.00.0);
    
Jugo[15] = CreateObject(15432560.148925, -1593.60205017.5185690.00.00.0);
    
Jugo[16] = CreateObject(1543967.588623, -1413.54650812.2750550.00.00.0);
    
Jugo[17] = CreateObject(1543957.224609, -1411.68054112.3821630.00.00.0);
    
Jugo[18] = CreateObject(15431015.781555, -1369.47473112.3733940.00.00.0);
    
Jugo[19] = CreateObject(1543975.767272, -1070.59814425.8560230.00.00.0);
    
Jugo[20] = CreateObject(1543964.324829, -934.52441440.8191830.00.00.0);
    
Jugo[21] = CreateObject(1543832.935180, -948.26397749.4556770.00.00.0);
    
Jugo[22] = CreateObject(1543690.031433, -1075.18872048.4216910.00.00.0);
    
Jugo[23] = CreateObject(1543347.666992, -1196.06884775.5156250.00.00.0);
    
Jugo[24] = CreateObject(1543349.129058, -1198.05151371.2812500.00.00.0);
    
Jugo[25] = CreateObject(1543958.255187, -1807.25012213.0885850.00.00.0);
    
Jugo[26] = CreateObject(1543438.510681, -1731.7216798.4789480.00.00.0);
    
Jugo[27] = CreateObject(1543250.270797, -1768.5245363.7507990.00.00.0);
    
Jugo[28] = CreateObject(1543245.564117, -1870.7813722.3175950.00.00.0);
    
Jugo[29] = CreateObject(1543515.163452, -1332.90917915.0168410.00.00.0);
    
Jugo[30] = CreateObject(1543522.886291, -1530.95288014.0098780.00.00.0);
    
Jugo[31] = CreateObject(1543652.650634, -1653.09362713.7069540.00.00.0);
    
Jugo[32] = CreateObject(1543801.657165, -1691.41271912.5468750.00.00.0);
    
Jugo[33] = CreateObject(1543791.171752, -1662.27014112.4860410.00.00.0);
    
Jugo[34] = CreateObject(1543793.125366, -1626.44323712.3905670.00.00.0);
    
Jugo[35] = CreateObject(1543749.572692, -1558.97399913.0234370.00.00.0);
    
Jugo[36] = CreateObject(1543745.680419, -1532.79785113.3671870.00.00.0);
    
Jugo[37] = CreateObject(1543793.201049, -1511.41748012.5546870.00.00.0); 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)