[Tutorial] їcomo mover un mapeado de posicion? By OTACON
#1

[] їcomo mover un mapeado de posicion?
By OTACON


[] Informacion:
bueno, esta vez le explicare como mover un mapeado ya hecho a una nueva posicion.
este tutoria es base del tutorial del usuario Correlli de la seccion ingles/tutoriales , que es el siguiente --> aca,
yo se los explicare con mis palabras y ejemplos.

bueno, comencemos.


[] Pasos a Seguir:

Paso 1:
para comenzar debemos tener nuestro mapeado al cual lo cambiaremos de posicion,
yo utilizare el mapeado de la 'Taberna/Bar(publicado)' ---> http://pastebin.com/gpgyD65s



Paso 2:
una vez ya teniendo el mapeado ingresaremos al map editor y mapearemos un objeto en el centro del mapeado para utilizar de base la posicion.



resultado:
pawn Код:
CreateObject(19375, 1002.45929, -1352.80933, 12.44410,   0.00000, 90.00000, 0.00000);
Paso 2:
ahora haremos lo mismo que anteriormente, pero para utilizar de base la posicion nueva donde estara el mapeado.



resultado:
pawn Код:
CreateObject(19375, 836.18658, -2091.69580, 11.85370,   0.00000, 90.00000, 0.00000);
Paso 3:

bueno ahora ya tendriamos la posicion bade vieja y nueva del mapeado.
ahora simplemente lo que debemos hacer para colocar el mapeado en la nueva posicion debemos de restar las coordenadas X Y Z del objeto base viejo y coordenadas X Y Z del objeto base nuevo y el resultado de esa resta se lo debemos de sumar a las cordenadas X Y Z de todos los objetos del mapeado.

pero para facilitar las cosas utilizaremos el code que no da el usuario Correlli.


objeto base viejo:
Код:
CreateObject(19375, 1002.45929, -1352.80933, 12.44410,   0.00000, 90.00000, 0.00000);
objeto base nuevo:
Код:
CreateObject(19375, 836.18658, -2091.69580, 11.85370,   0.00000, 90.00000, 0.00000);
Код:
#define X_OFFSET (X - X) //coordenada X del objeto base viejo y nuevo
#define Y_OFFSET (Y - Y) //coordenada Y del objeto base viejo y nuevo
#define Z_OFFSET (Z - Z) //coordenada Z del objeto base viejo y nuevo


[] codigo para mover los objetos:
pawn Код:
#include <a_samp>

#define pos_x_new  0.000
#define pos_y_new  0.000
#define pos_z_new  0.000

#define pos_x_old  0.000
#define pos_y_old  0.000
#define pos_z_old  0.000

stock CreateObjectEx(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz){
    printf("CreateObject(%i, %0.3f, %0.3f, %0.3f, %0.3f, %0.3f, %0.3f);",
        modelid, floatadd(x, floatsub(pos_x_new, pos_x_old)), floatadd(y, floatsub(pos_y_new, pos_y_old)), floatadd(z, floatsub(pos_z_new, pos_z_old)), rx, ry, rz);
    return true;
}
public OnFilterScriptInit(){
    // AQUI COLOCAS TU MAPEADO Y REEMPLAZA TODOS LOS 'CreateObject' por 'CreateObjectEx'
    return true;
}
colocamos el code en nuestro gamemode, compilamos y iniciamos el serividor por unos instantes nada mas para que cargue el mapeado y nos lo de mediante el printf del CreateObjectEx.

listo, abrimos el log y tendrimos los CreateObject con las nueva posicion del mapeado.






[] Creditos:
OTACON (traduccion)
Correlli (tutorial)
Reply
#2

De esto a la magia va solo un paso, eso si, lo de la hortografia me lo miras.
Reply
#3

Lol,Interesante,Yo no sabнa que se podrнa hacer esto
Reply
#4

pawn Код:
#include <a_samp>

#define X_OFFSET (X - X) //coordenada X del objeto base viejo y nuevo
#define Y_OFFSET (Y - Y) //coordenada Y del objeto base viejo y nuevo
#define Z_OFFSET (Z - Z) //coordenada Z del objeto base viejo y nuevo

stock CreateObjectEx(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
    CreateObject(modelid, (x + X_OFFSET), (y + Y_OFFSET), (z + Z_OFFSET), rx, ry, rz);
    return true;
}
Reply
#5

Muy buen tutorial +resp (Personal por que en el foro ya no se puede xD)

PD:No era necesaria tu foto al final de tuto xD
Reply
#6

Quote:
Originally Posted by JustBored
Посмотреть сообщение
pawn Код:
#include <a_samp>

#define X_OFFSET (X - X) //coordenada X del objeto base viejo y nuevo
#define Y_OFFSET (Y - Y) //coordenada Y del objeto base viejo y nuevo
#define Z_OFFSET (Z - Z) //coordenada Z del objeto base viejo y nuevo

stock CreateObjectEx(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
    CreateObject(modelid, (x + X_OFFSET), (y + Y_OFFSET), (z + Z_OFFSET), rx, ry, rz);
    return true;
}
esta bien, pero la cosa es que te de el codigo la con la posicion nueva, para ya guardar el mapeado con la nueva posicion, por eso el printf.

saludos.
Reply
#7

pawn Код:
#include <a_samp>

#define pos_x_new  0.000
#define pos_y_new  0.000
#define pos_z_new  0.000

#define pos_x_old  0.000
#define pos_y_old  0.000
#define pos_z_old  0.000

stock CreateObjectEx(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz){
    printf("CreateObject(%i, %0.3f, %0.3f, %0.3f, %0.3f, %0.3f, %0.3f);",
        modelid, floatadd(x, floatsub(pos_x_new, pos_x_old)), floatadd(y, floatsub(pos_y_new, pos_y_old)), floatadd(z, floatsub(pos_z_new, pos_z_old)), rx, ry, rz);
    return true;
}
public OnFilterScriptInit(){
    // AQUI COLOCAS TU MAPEADO Y REEMPLAZA TODOS LOS 'CreateObject' por 'CreateObjectEx'
    return true;
}
Reply
#8

Quote:
Originally Posted by MpK
Посмотреть сообщение
De esto a la magia va solo un paso, eso si, lo de la hortografia me lo miras.
El burro hablando de orejas.
Reply
#9

Quote:
Originally Posted by xDarkuzSx
Посмотреть сообщение
El burro hablando de orejas.
Quiero informar a todos los lectores que aquн tenemos a otro usuario mбs que "piensa" que puse hortografia mal escrito por error.
Pasen y vean antes de que Fail_Chaos borre este mensaje como ya hizo con anteriores alusiones al tema seсoras y seсores.
Reply
#10

Bueno tuto ayudara mucho
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)