duda,areas,cosas,etc...
#1

buenas a todos, queria saber como se podria hacer para crear 'pichups,labels,objetos,lo que sea' dentro de una area mdependiendo de la posicion del area'.

osea quedando como muestro en la imagen siguiente.
(recuerden, todo dependiendo de la posicion del area)



desde ya muchas gracias.
saludos.

PD: estoy medio confuso, si me pueden ayudar se los agradezco.
Reply
#2

Fнjate en el cуdigo no lo hice completamente con funciones, pero usted tiene la capacidad de hacerlo lo importante aqui es como colocar dentro del бrea dicho pickup.

pawn Код:
enum aPickEnum
{
    Float:ap_x,
    Float:ap_y,
    Float:ap_z
}
new AreaPickups[2][aPickEnum] =
{
    {161.1872,-1447.1873,36.3099},
    {161.1872,-1447.1873,36.3099}
};

//Ahora Creemos un Area

GangZoneCreate(AreaPickups[0][ap_x] - 100,AreaPickups[0][ap_y] - 100,AreaPickups[0][ap_x] + 100,AreaPickups[0][ap_x] + 100);

//Listo creamos un area ahora dentro de esa area Crearemos un pickup
CreatePickup(pickup,pickuptype,AreaPickups[0][ap_x]-50,AreaPickups[0][ap_y]+20,AreaPickups[0][ap_z],world);

//Relativamente puede que por montaсas el pickup salga flotando pero ya ese es otro asunto,  lo que quiero que te des cuenta es que siempre y cuando sumes/restes en dicha posiciуn sin pasarte de 100(la suma/resta) el pickup va a aparecer dentro del бrea.

//ya que el limite de dicha бrea es de 100 metros.
Espero que este bien mi explicaciуn aunque si no comprendes yo intentare explicarme mejor, Saludos.
Reply
#3

Con posiciones y random.
Reply
#4

podrias explicar un poco mas, gracias.
Reply
#5

revivo, alguien me ayuda? :S
Reply
#6

No entiendo, їquerйs crear algo en una posiciуn al azar dentro de un бrea?
Reply
#7

Quote:
Originally Posted by MugiwaraNoLuffy
Посмотреть сообщение
No entiendo, їquerйs crear algo en una posiciуn al azar dentro de un бrea?

exacto, pero obtener las posiciones random mediante la posicion del area.
:/
Reply
#8

La siesta fue un poco larga...

Para hacer lo que necesitas, necesitaremos, como dice Parka, un par de operaciones matemбticas bбsicas...

Imagina que tenemos una GangZone en el mapa, esta GangZone tiene de coordenadas:
  • MinX: 100.0
  • MinY: 400.0
  • MaxX: 200.0
  • MaxY: 500.0
Como hariamos para obtener las coordenadas Random X e Y? primero hagamos la X...

Primero, necesitamos saber la diferencia de posiciones, esto lo haremos restando MinX al MaxX, osea:
  • MaxX - MinX
  • 200.0 - 100.0
Esto es 100.0, entonces la diferencia es de 100.0... ahora, ya que tenemos la direrencia, como obtenemos una posiciуn random de acuerdo a las posiciones X? hacemos un random del resultado de la operaciуn anterior, y el resultado de este, se lo sumamos a MinX... de esta forma, obtendremos una posiciуn random entre MaxX y MinX.

Para la posiciуn random Y, es lo mismo.



pawn Код:
/*
    Descripciуn
        Obtener una posiciуn 2D random entre un area 2D
   
    Parбmetros
        Float:pos[2]
            array -> 0
                Variable donde se guardarб la posiciуn random X
            array -> 1
                Variable donde se guardarб la posiciуn random Y
        Float:xy[4]
            array -> 0
                MinX del area
            array -> 1
                MinY del area
            array -> 2
                MaxX del area
            array -> 3
                MaxY del area
               
    Retorno
        Siempre 1.
*/

stock randomPos2D(Float:pos[2], Float:xy[4])
{
    for(new i = 0; i < ((sizeof(xy))/(2)); i++) pos[i] = (random(floatround((Float:xy[i+2]-Float:xy[i])+Float:xy[i])));

    return 1;
}
Y una pequeсa prueba:

pawn Код:
new Float:fin[2];
randomPos2D(fin, Float:{100.0, 400.0, 200.0, 500.0});
printf("FinX: %f\nFinY: %f", fin[0], fin[1]);
Reply
#9

Me ganу de mano. Eso iba a poner.
Reply
#10

gracias, ahora leo,testeo,y aviso cualquier cosa.
saludos. .
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)