Posts: 4,930
Threads: 467
Joined: Dec 2010
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.
Posts: 1,675
Threads: 34
Joined: Feb 2010
Reputation:
0
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.
Posts: 4,930
Threads: 467
Joined: Dec 2010
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.
Posts: 1,675
Threads: 34
Joined: Feb 2010
Reputation:
0
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.
Posts: 4,930
Threads: 467
Joined: Dec 2010
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
Posts: 4,649
Threads: 64
Joined: Dec 2009
Reputation:
0
Puedes guiarte con el FS "ls_elevator" creado por Zamaroth (viene por defecto con la carpeta del servidor).
Posts: 4,930
Threads: 467
Joined: Dec 2010
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
Posts: 4,930
Threads: 467
Joined: Dec 2010
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 ?
Posts: 4,649
Threads: 64
Joined: Dec 2009
Reputation:
0
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.
Posts: 4,930
Threads: 467
Joined: Dec 2010
Quote:
Originally Posted by the_chaoz
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;
}
Posts: 4,649
Threads: 64
Joined: Dec 2009
Reputation:
0
Estas moviendo el objeto mediante MoveObject no?
Posts: 4,930
Threads: 467
Joined: Dec 2010
Quote:
Originally Posted by the_chaoz
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.
Posts: 4,649
Threads: 64
Joined: Dec 2009
Reputation:
0
No hay problema, cualquier cosa me avisas.