Permite modificar la posición de entidades ItemObject del nivel.
También se utiliza para hacer reaparecer un objeto en caso de que este objeto haya desaparecido al haber
sido recogido por el jugador.
Sintaxis del comando:
ACCI ITEMOBJECT_POS
numero_objeto retardo_recoger recomprar x y z
numero_objeto:
Número de objeto que le has asignado a una entidad ItemObject siguiendo los pasos que
se describen en el manual.
retardo_recoger:
Establece el tiempo (en segundos) que debe transcurrir después de posicionar el objeto en el nivel (usando el comando ITEMOBJECT_POS)
para que el jugador pueda recogerlo.
En ocasiones es posible que uses el comando ITEMOBJECT_POS para ubicar objetos en la posición exacta
del jugador para que los suelte en el suelo, pero si no hay un tiempo suficiente de retardo antes de poder volverlo
a recoger, el jugador recogerá automáticamente el objeto recién soltado. Si quieres resolver ese problema usa por
ejemplo el valor 3 en este parámetro para dar tiempo suficiente al jugador para
abandonar el punto donde soltó el objeto.
Por el contrario, cuando usas el comando ITEMOBJECT_POS para ubicar objetos que suelta un Bot o simplemente
porque los haces aparecer en el nivel, lo más probable es que quieras que el jugador los pueda recoger lo más
rápido posible. En este caso usa el valor 0 para este parámetro.
recomprar:
Este parámetro sólo es aplicable si es un objeto comprable por el jugador según el parámetro 'Precio_compra' de la
entidad ItemObject del objeto.
Con valor si, el jugador deberá volver a comprar el objeto cada vez que
reaparezca en el nivel.
Con valor no, el jugador no deberá volver a comprar el objeto cada vez que
reaparezca en el nivel.
x y z:
Son las coordenadas X Y Z de la nueva posición donde queremos situar el objeto. La Y es la altura.
Deben ser coordenadas que estén dentro del nivel creado en World Editor. Desde el mismo World Editor puedes
consultar estas posiciones (en la barra inferior) moviendo el cursor por zonas del nivel.
Usa la palabra clave ORI como X, Y y Z para que el objeto se reposicione en
la posición original que tenía al dar comienzo el nivel (coordenadas del parámetro 'Origin' de su entidad 'ItemObject').
Ejemplo 1
Reposicionar la entidad ItemObject4 (objeto número 7) que es una llave que se representa
con el archivo 7_llaveroja.act, en la posición del nivel con coordenadas X:-43 Y:54 Z:412
ACCI ITEMOBJECT_POS 7 3 no -43 54 412
Ejemplo 2
Reposicionar la entidad ItemObject2 (objeto número 5) que es un tesoro que se representa
con el archivo 5_tesoro.act, en la posición del nivel con coordenadas X:310 Y:90 pero para el valor Z usar
el contenido de la variable OBJZ
ACCI ITEMOBJECT_POS 5 3 no 310 90 %OBJZ%
Ejemplo 3
Reposicionar la entidad ItemObject12 (objeto número 9) que es un anillo se representa con
el archivo 9_anillo.act, a la posición del nivel con coordenadas X:256 Z:64 pero sin modificar la
altura Y actual de esta entidad.
ACCI ITEMOBJECT_POS 9 3 no 256 NO 64
Usa NO como X, Y, o Z para no modificar los valores X, Y o Z actuales de la entidad.
Ejemplo 4
Reposicionar la entidad ItemObject8 (objeto número 14) que representa un maletín con
dinero usando el archivo 14_dinero.act, en la posición donde haya muerto el enemigo definido por la
entidad BotActorStart4. De esta forma el jugador podrá recoger el dinero que ha perdido el enemigo
al morir.
IF COND enemigodinero=0
ACCI PONE enemigodinero=1
ACCI TEXT El ladron que has matado llevaba un maletin
ACCI DAME_POSICION_BOT BotActorStart4
ACCI ITEMOBJECT_POS 14 0 no %POSICION_X_BOT% %POSICION_Y_BOT% %POSICION_Z_BOT%
ENDIF
Este bloque de comandos debes incluirlo en un fichero de comandos .INI que se procese sólo cuando muera el enemigo que te interesa. En este caso
debes introducir el nombre del fichero .INI en el parámetro CommandsFile de la entidad BotActorStart4 .
Encerramos todo el ámbito de los comandos dentro de un 'IF' condicionado por la variable enemigodinero para controlar que sólo aparezca
el dinero la primera vez que muera el enemigo.
Con el comando DAME_POSICION_BOT averiguamos la posición del enemigo muerto. Este comando asigna esa posición
en las variables del sistema POSICION_X_BOT, POSICION_Y_BOT y POSICION_Z_BOT.
Evidentemente la entidad ItemObject8 debes tenerla definida en tu nivel pero oculta al jugador, por ejemplo detrás de una pared fuera
del alcance del jugador.
Ejemplo 5
Hacer que el jugador pueda dejar en el suelo una llave de su inventario de objetos. Esta llave la habrá recogido
previamente del nivel como una entidad ItemObject16 (objeto número 4) que se
representa con el archivo 4_llaveRoja.act
En primer lugar tenemos que cambiar una de las acciones posibles de las que dispone el jugador para manipular los objetos de
su inventario. Estas son las que existen por defecto:
Vamos a cambiar la acción Poner por la acción Dejar, para que de esta forma cuando el jugador
seleccione la llave de su inventario, seleccione la acción Dejar y finalmente pulse la tecla 'Acción', la llave caiga al suelo.
Pare ello debemos añadir a nuestro nivel una entidad AccionMenu y cambiar sus parámetros como se muestra a
continuación:
El 8 es porque la acción Poner es la número 8 de la lista de acciones.
Si hacemos aparecer el inventario tendríamos que ver la acción Dejar en su sitio:
Ahora vamos a hacer que cuando el jugador use cualquiera de las ocho acciones se procese un fichero de comandos. Esto lo
podemos hacer indicándolo en el parámetro FicheroAcciones de la entidad Configuracion de nuestro nivel. Si no tienes esa entidad
en tu nivel, deberías añadirla:
En el parámetro FicheroAcciones hemos introducido el nombre del fichero de comandos que queremos procesar
cuando el jugador use su inventario seleccionando un objeto y pulsando la tecla 'Acción' sobre
alguna de las ocho acciones.
Sólo nos queda crear el fichero de comandos usar_acciones.ini, que hemos indicado en el parámetro FicheroAcciones.
Este es el contenido del fichero:
; *** Acción DEJAR ***
IF COND ACCION_SELECCIONADA=Dejar
; Dejar objeto Llave roja (objeto 4) en el suelo
IF COND OBJETO_SELECCIONADO=4
Piensa que este fichero de comandos se procesará para cualquier acción que use el jugador,ya
sea Usar, Entregar, etc... y para el caso que nos interesa sólo queremos saber si el
jugador está usando la acción Dejar, por eso hacemos la primera condición
IF COND ACCION_SELECCIONADA=Dejar
Como también nos interesa saber si ha seleccionado la llave roja de su inventario realizamos
IF COND OBJETO_SELECCIONADO=4 que es el número de objeto que habremos definido en la
entidad ItemObject16 de este objeto.
Finalmente si todo se ha cumplido procedemos a realizar dos comandos ACCI. El primero elimina el objeto 4 (la llave) del inventario del
jugador y el segundo reposiciona dicho objeto en la posición donde se encuentre en ese momento el jugador.
El jugador deberá abandonar la posición antes de tres segundos si no quiere volver a recoger la llave.
Como ves, las posibilidades de este comando son muy grandes, ya que en este caso hemos usado el evento del menú de acciones del inventario del jugador
para dejar objetos en el suelo voluntariamente, pero podrías usar otros eventos para que el jugador pierda objetos según otras
circunstancias, por ejemplo al morir o al ser atracado por algún ladrón.
Ejemplo 6
Queremos hacer exactamente lo mismo que el ejemplo anterior pero en este caso el objeto número 4
no ha sido recogido por el jugador de manera automática sino que lo ha comprado, ya que hemos usado los
parámetros 'Boton_accion' y 'Precio_compra' de su entidad ItemObject16 para tal fin.
Cuando el jugador suelte el objeto en el suelo, no queremos que el jugador deba volver a comprar el objeto
de nuevo cuando lo intente recoger.
En este caso sólo debemos añadir la siguiente línea después de la línea del comando ITEMOBJECT_POS para que
el jugador no necesite pulsar el botón 'Acción' para recoger el objeto. La línea del comando ITEMOBJECT_POS la
tenemos correcta ya que el parámetro 'recomprar' ya está con el valor 'no':
Si por el contrario queremos que el jugador tenga que volver a comprar el objeto soltado, debemos usar el valor 'si' para el
parámetro 'recomprar' del comando ITEMOBJECT_POS e indicar que el jugador necesitará usar la tecla 'Acción' para
intentar comprar el objeto:
Reposicionar el objeto número 14 en la posición original que tenía al dar comienzo el nivel, ya que nos interesa
que reaparezca pero no en la última posición donde se ubicó este objeto usando el comando ITEMOBJECT_POS en otras
coordenadas del nivel.
ACCI ITEMOBJECT_POS 14 3 no ORI ORI ORI
Funcionamiento del comando en el modo de juego online