[Ayuda] OnObjectMoved ...
#1

Buenas a Todos, estoy haciendo un acensor utilizando el call OnObjectMoved para chekear si el objeto fue movido y al objeto ke detecte chekeada la posicion con GetObjectPos y un if y segun la posicion le dara un time para ke se mueva otros objetos ke serian las puertas , pero no se ke pasa ke no me da la funcion del timer y no se mueven nunca los objetos de las puertas. :S

Ejemplo de como coloke:

pawn Код:
public OnObjectMoved(objectid)
{
    if(objectid == idobjeto)
    {
        new Float:x,Float:y,Float:z;
        GetObjectPos(idobjeto, x,y,z);
            if(x == -2088.70 && y == -757.83 && z == 34.84) SetTimer("AbrirPuerta1", 2000, true);
            else if(x == -2088.70 && y == -757.83 && z == 34.84) SetTimer("AbrirPuerta2", 2000, true);
            //ETC.....
    }
    return 1;
}
Si e pueden ayudar Se lo agradecede mucho .

Desde Ya muchas gracias.
Reply
#2

El callback ese es llamado cuando el objeto se detiene, segъn wiki, asн que si no se detiene exactamente en esas posiciones no se llamarб el timer.
Reply
#3

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
El callback ese es llamado cuando el objeto se detiene, segъn wiki, asн que si no se detiene exactamente en esas posiciones no se llamarб el timer.
Exacto, pero no esta haciendo eso el codigo? o no entiendo :S.
Reply
#4

Si, pero hay que ver si es exactamente esa posiciуn, o con cuantos decimales te devuelve la pos el objeto y demбs. No se realmente como funciona, hace un printf con la posiciуn del GetObjetPos y usa exactamente igual.
Reply
#5

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Si, pero hay que ver si es exactamente esa posiciуn, o con cuantos decimales te devuelve la pos el objeto y demбs. No se realmente como funciona, hace un printf con la posiciуn del GetObjetPos y usa exactamente igual.
ok, eso lo ke iba a hacer. Gracias.

PD: Buena eso del Gm de gamerol :O xDDD jaja
Reply
#6

Puedes guiarte con el FS "ls_elevator" creado por Zamaroth (viene por defecto con la carpeta del servidor).
Reply
#7

Quote:
Originally Posted by the_chaoz
Посмотреть сообщение
Puedes guiarte con el FS "ls_elevator" creado por Zamaroth (viene por defecto con la carpeta del servidor).
En ese me estoy bbasando, podeso utilizo ese call, pero n oentiendo por ke utiliza sizeof en un for y el metodo de comprobacino de la pociion , hay creo ke le resta 0.5 a la coordenada.

Me podrias explicar como hacerlo desde cero pero ocn ea formar ? Porfa :S
Reply
#8

Quote:
Originally Posted by bytytus
Посмотреть сообщение
En ese me estoy bbasando, podeso utilizo ese call, pero n oentiendo por ke utiliza sizeof en un for y el metodo de comprobacino de la pociion , hay creo ke le resta 0.5 a la coordenada.

Me podrias explicar como hacerlo desde cero pero ocn ea formar ? Porfa :S
Si te refieres a esta linea de codigo:
pawn Код:
for(new i; i < sizeof(Obj_FloorDoors); i ++)
Este for esta para comprobar todas las puertas del edificio hasta encontrar la correspondiente y mover el asensor hasta ella. Posiblemente me equivoque y no es el mejor ejemplo para guiarte ya que esta hecho de una forma algo compleja.
Reply
#9

Quote:
Originally Posted by the_chaoz
Посмотреть сообщение
Si te refieres a esta linea de codigo:
pawn Код:
for(new i; i < sizeof(Obj_FloorDoors); i ++)
Este for esta para comprobar todas las puertas del edificio hasta encontrar la correspondiente y mover el asensor hasta ella. Posiblemente me equivoque y no es el mejor ejemplo para guiarte ya que esta hecho de una forma algo compleja.
si exacto es complejo ese Fs .

Y alguna otra forma de hacerlo mas facil? o lago parecido, ya ke si le pongo un timer comun en el comando del
acensor, cuando llega el acensor al piso correspondiente con coinsiden los times y ya estan abiertas las puertas, y yo kiero ke se abran las puertas unos segundos despues ke el acensor este ne la coordenada del piso correspondiente.

Como lo podria hacer mas facil ?
Reply
#10

Podes mediante variables indicar el lugar/piso al cual el objeto (ascensor) se dirige. (Ej: 1 piso => numero 1, 2 piso => numero 2, etc.) y cuando el objeto se detiene, segun el valor de la variable activas un timer que mueva las puertas correspondientes.
Reply
#11

Quote:
Originally Posted by the_chaoz
View Post
Podes mediante variables indicar el lugar/piso al cual el objeto (ascensor) se dirige. (Ej: 1 piso => numero 1, 2 piso => numero 2, etc.) y cuando el objeto se detiene, segun el valor de la variable activas un timer que mueva las puertas correspondientes.
Lo Hice Y no funciona :S, raro.
Es como ke no funciona El Call o_O

pawn Code:
MoveObject(idobjeto, ...); Variable[1] = 0; Variable[1] = 1;
MoveObject(idobjeto, ...); Variable[1] = 0; Variable[1] = 2;

public OnObjectMoved(objectid)
{
    if(objectid == idobjeto)
    {
            if(Variable[1] == 1) SetTimer("AbrirPuerta1", 2000, true);
            else if(Variable[1] == 2) SetTimer("AbrirPuerta2", 2000, true);
    }
   return 1;
}
Reply
#12

Estas moviendo el objeto mediante MoveObject no?
Reply
#13

Quote:
Originally Posted by the_chaoz
View Post
Estas moviendo el objeto mediante MoveObject no?
Mierda, con razon no me anda nada en ese call xD, estoy utilizando MoveDynamicObject ,cierto ke es solo para MoveObject :S.

EDIT: Ya Solucione Reemplace el call por el siguiente OnDynamicObjectMoved . Gracias.
Reply
#14

No hay problema, cualquier cosa me avisas.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)