BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[Resuelto] Door accionable sólo desnudo.

[Resuelto] Door accionable sólo desnudo.

#1 [Resuelto] Door accionable sólo desnudo. el Jue Mayo 22, 2014 4:21 pm

Avsilon


Miembro
Buenas gente, me gustaría pedirles un action de una door, la cual al usarla, solo te deje pasar sino tienen ningun tipo de objeto encima, es decir, que clickes en la door y te salga un mensaje diciendo para pasar no debes llevar nada encima, y cuando no lleves nada encima, que te deja pasar.

Espero que puedan ayudarme.
Muchas gracias y un saludo.

#2 Re: [Resuelto] Door accionable sólo desnudo. el Jue Mayo 22, 2014 6:55 pm

Daek97


Estudiante
Hola amigo, pues vi tu post y eh creado el script que pediste solo pido +Rep

Te vas a TU OT/data/actions/scripts y creas un archivo.lua
Código:
function onUse(cid, item, fromPosition, itemEx, toPosition)
local stat = 98697 -- Storage base
local puerta_abierta = xxxx -- ItemID de la puerta abierta
local puerta_cerrada = xxxx -- ItemID de la puerta cerrada
local mensaje = "Pasale!" -- Mensaje que dirá al pasarle
local Uniqueid = 4500 -- UniqueID que le pondras a la puerta
local cancelado = "Necesitas dejar todos tus items en el depot" -- Mensaje que dir[a al tener items encima
 -- No toques nada de aquí abajo
if item.uid == Uniqueid then
if isNude(cid) and item.uid == puerta_cerrada then
     doTransformItem(item.uid, 1)
     doPlayerSendTextMessage(cid, 18, mensaje)
     doSendMagicEffect(toPosition, 34)
     addEvent(cerrarPuerta, 5000, cid)
 end
 if not isNude(cid) then
     doSendMagicEffect(toPosition, 44)
     doPlayerSendTextMessage(cid, 18, cancelado)
 end
end
 
     local function cerrarPuerta()
         doTransformItem(puerta_abierta, puerta_cerrada, 1)
     end
 end
 
function isNude(cid) -- función hecha por Strack
local nude = true
 for i=1,10 do
 if getPlayerSlotItem(cid, i).itemid ~= 0 then
 nude = false
 break
 end
 end
return nude
end

Después vas a tuot/data/actions/actions.xml lo abres y pegas los siguiente
Código:
<action uniqueid="xxxx" event="script" value="nombre de tu archivo.lua.lua"/>

Bueno espero te sirva porque no está testeado,, pero no creo que de errores (Eso si configuraste bien)



Última edición por Daek97 el Vie Mayo 23, 2014 1:30 am, editado 1 vez (Razón : corregido)

#3 Re: [Resuelto] Door accionable sólo desnudo. el Jue Mayo 22, 2014 11:07 pm

Avsilon


Miembro
Me da el siguiente error:

Código:
[23/5/2014 5:36:43] [Error - Action Interface]
[23/5/2014 5:36:43] data/actions/scripts/doors/door_items.lua:onUse
[23/5/2014 5:36:43] Description:
[23/5/2014 5:36:43] data/actions/scripts/doors/door_items.lua:10: attempt to call global 'isNude' (a nil value)
[23/5/2014 5:36:43] stack traceback:
[23/5/2014 5:36:43]    data/actions/scripts/doors/door_items.lua:10: in function <data/actions/scripts/doors/door_items.lua:1>

#4 Re: [Resuelto] Door accionable sólo desnudo. el Vie Mayo 23, 2014 1:30 am

Daek97


Estudiante
checalo

#5 Re: [Resuelto] Door accionable sólo desnudo. el Vie Mayo 23, 2014 9:48 am

Avsilon


Miembro
Asi lo puse y me da el error que te puse anteriormente:

Código:
function onUse(cid, item, frompos, item2, topos)
local stat = 98697 -- Storage base
local puerta_abierta = 1224 -- ItemID de la puerta abierta
local puerta_cerrada = 1223 -- ItemID de la puerta cerrada
local mensaje = "Pasale!" -- Mensaje que dirá al pasarle
local Uniqueid = 4500 -- UniqueID que le pondras a la puerta
local cancelado = "Necesitas dejar todos tus items en el depot" -- Mensaje que dir[a al tener items encima
 -- No toques nada de aquí abajo
if item.uid == Uniqueid then
if isNude(cid) and item.uid == puerta_cerrada then
    doTransformItem(item.uid, 1)
    doPlayerSendTextMessage(cid, 18, mensaje)
    doSendMagicEffect(toPosition, 34)
    addEvent(cerrarPuerta, 5000, cid)
 end
 if not isNude(cid) then
    doSendMagicEffect(toPosition, 44)
    doPlayerSendTextMessage(cid, 18, cancelado)
 end
end
 
    local function cerrarPuerta()
        doTransformItem(puerta_abierta, puerta_cerrada, 1)
    end
 end
 
local function isNude(cid) -- función hecha por Strack
local nude = true
 for i=1,10 do
 if getPlayerSlotItem(cid, i).itemid ~= 0 then
 nude = false
 break
 end
 end
return nude
end

#6 Re: [Resuelto] Door accionable sólo desnudo. el Vie Mayo 23, 2014 1:44 pm

Belerofonte


Administrador
alvaro007 escribió:Buenas gente, me gustaría pedirles un action de una door, la cual al usarla, solo te deje pasar sino tienen ningun tipo de objeto encima, es decir, que clickes en la door y te salga un mensaje diciendo para pasar no debes llevar nada encima, y cuando no lleves nada encima, que te deja pasar.

Espero que puedan ayudarme.
Muchas gracias y un saludo.
Servidor/Data/Actions/Actions.xml:
Código:
<action uniqueid="8764" event="script" value="NudistDoor.lua"/>
El UniqueID que le hayas puesto a esta línea del Actions.xml es el que le has de poner a la puerta con el Remeres.

Servidor/Data/Actions/Scripts/... NudistDoor.lua (o el nombre que le quieras poner al archivo.lua)
Código:
local c = {
    cerradaID = 1249, -- ItemID de la puerta cerrada.
    abiertaID = 1251, -- ItemID de la puerta abierta.
  Msg = "Para pasar no has de llevar nada encima." -- Mensaje que saldrá al llevar ítems. (Siempre "entre comillas")
          }
function isNude(cid, item) -- Función hecha por Strack.
local nude = true
    for i=1,10 do
        if getPlayerSlotItem(cid, i).itemid ~= 0 then
            nude = false
        break
        end
    end
  return nude
end
function onUse(cid, item, pos, fromPos, itemEx, toPos)
    if not isPlayer(getTopCreature(getThingPos(item.uid)).uid) then
        if isNude(cid, item) then
            doTransformItem(item.uid, item.itemid == c.cerradaID and c.abiertaID or c.cerradaID)
        else
            doPlayerSendCancel(cid, c.Msg)
        end
    end
  return true
end


Servidor/Data/Movements/Movements.xml:
Código:
<movevent type="StepIn" uniqueid="8765" event="script" value="NudistDoor.lua"/>
<movevent type="StepOut" uniqueid="8765" event="script" value="NudistDoor.lua"/>
El UniqueID que le hayas puesto a estas líneas del Movements.xml (sí, el mismo en las dos) es el que le has de poner al suelo que se haye debajo de la puerta, con el Remeres.

Servidor/Data/Movements/Scripts/... NudistDoor.lua (o el nombre que le quieras poner al archivo.lua)
Código:
local c = {
    cerradaID = 1249, -- ItemID de la puerta cerrada.
    abiertaID = 1251, -- ItemID de la puerta abierta.
  Msg = { -- Mensajes (siempre "entre comillas").
    "Por favor, tapate eso... pervertido!", -- Mensaje que saldrá si logra pasar.
    "Para pasar no has de llevar nada encima.", -- Mensaje que saldrá al llevar ítems.
 "Intentando hacer trampas, quizas?" -- Mensaje que saldrá al transpasar la puerta si sigue llevando ítems.
        }
          }
function isNude(cid, item) -- Función hecha por Strack.
local nude = true
    for i=1,10 do
        if getPlayerSlotItem(cid, i).itemid ~= 0 then
            nude = false
        break
        end
    end
  return nude
end
function onStepIn(cid, item, pos, fromPos, itemEx, toPos)
    if isPlayer(cid) and isNude(cid, item) then
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, c.Msg[1])
    else
        doPlayerSendCancel(cid, c.Msg[2])
        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
    end
end
function onStepOut(cid, item, pos, fromPos, itemEx, toPos)
    if isPlayer(cid) and not isNude(cid, item) then
        doPlayerSendCancel(cid, c.Msg[3])
        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
    end
  return doTransformItem(getTileItemById(getThingPos(item.uid), c.abiertaID).uid, c.cerradaID)
end

En ambos Scripts solamente has de editar esa parte de arriba que es la misma salvo porque faltan 2 mensajes en la de Actions, pero pones lo mismo en sus variables:
local c = {
   cerradaID = 1249, -- ItemID de la puerta cerrada.
   abiertaID = 1251, -- ItemID de la puerta abierta.
 Msg = { -- Mensajes (siempre "entre comillas").
   "Por favor, tapate eso... pervertido!", -- Mensaje que saldrá si logra pasar.
   "Para pasar no has de llevar nada encima.", -- Mensaje que saldrá al llevar ítems.
"Intentando hacer trampas, quizas?" -- Mensaje que saldrá al transpasar la puerta si sigue llevando ítems.
       }
         }

-Si el jugador acciona la puerta llevando objetos... no le deja abrirla/cerrarla.
-Si el jugador acciona la puerta estando "desnudo"... puede abrirla/cerrarla.
-Si el jugador "desnudo" entra dentro de la puerta... le sale un mensaje.
-Si el jugador con objetos encima entra dentro de la puerta, que otro jugador se haya dejado abierta... no le deja pasar.
-Si el jugador "desnudo" entra dentro de la puerta y sin moverse de allí obtiene objetos y se mueve... no le deja pasar.
-En cualquiera de los casos, si el jugador entra/sale... la puerta se cerrará tras él.

Por último, con el Remeres pónle al suelo de la puerta zona de "No Logout", porque si el jugador "desnudo" pasa dentro de la puerta sin moverse de allí, obtiene objetos y se desconecta del juego estando en esa posición... el Servidor se crashea y no supe cómo arreglarlo Okay



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

#7 Re: [Resuelto] Door accionable sólo desnudo. el Vie Mayo 23, 2014 2:15 pm

Avsilon


Miembro
Me funciono correctamente pero me gustaría que fueran doors the quest, es decir que traspasen la puerta directamente

#8 Re: [Resuelto] Door accionable sólo desnudo. el Vie Mayo 23, 2014 3:18 pm

Daek97


Estudiante
Ahorita te lo edito amigo solo espera un poco

Edito:
Solo reemplaza esto por el contenido del archivo de Belerofonte

Código:
-- Script hecho por Belerofonte
local c = {
    vertical = xxxx, --ItemID de la puerta vertical
    horizontal = xxxx, --ItemID de la puerta horizontal
  Msg = "Para pasar no has de llevar nada encima." -- Mensaje que saldrá al llevar ítems. (Siempre "entre comillas")
}
function isNude(cid, item) -- Función hecha por Strack.
local nude = true
    for i=1,10 do
        if getPlayerSlotItem(cid, i).itemid ~= 0 then
            nude = false
        break
        end
    end
  return nude
end
function onUse(cid, item, pos, fromPos, itemEx, toPos)
local direccion = getCreatureLookDirection(cid)
local Pos = getCreaturePosition(cid)
local p = {
    norte={x=Pos.x+2,y=Pos.x,z=Pos.z},este={x=Pos.x,y=Pos.x+2,z=Pos.z},
    sur ={x=Pos.x-2,y=Pos.x,z=Pos.z}, oeste ={x=Pos.x,y=Pos.x-2,z=Pos.z}}
        if isNude(cid, item) then
            if item.itemid == c.horizontal and direccion == 0 then
                doTeleportThing(cid, p.norte)
            else doPlayerSendCancel(cid, 'Necesitas estar mirando hacia la puerta')
            end
            if item.itemid == c.horizontal and direccion == 2 then
                doTeleportThing(cid, p.sur)
                else doPlayerSendCancel(cid, 'Necesitas estar mirando hacia la puerta')
            end
            if item.itemid == c.vertical and direccion == 1 then
                doTeleportThing(cid, este)
                else doPlayerSendCancel(cid, 'Necesitas estar mirando hacia la puerta')
            end
            if item.itemid == c.vertical and direccion == 3 then
                doTeleportThing(cid, oeste)
            else doPlayerSendCancel(cid, 'Necesitas estar mirando hacia la puerta')
            end
        else
            doPlayerSendCancel(cid, c.Msg)
        end
  return true
end



Última edición por Daek97 el Vie Mayo 23, 2014 5:15 pm, editado 2 veces (Razón : Agregado el script)

#9 Re: [Resuelto] Door accionable sólo desnudo. el Vie Mayo 23, 2014 3:40 pm

Avsilon


Miembro
okey gracias

#10 Re: [Resuelto] Door accionable sólo desnudo. el Vie Mayo 23, 2014 4:00 pm

Daek97


Estudiante
@Alvaro
Listo!

#11 Re: [Resuelto] Door accionable sólo desnudo. el Vie Mayo 23, 2014 4:11 pm

Avsilon


Miembro
Me dió de nuevo error:

Código:
[23/5/2014 22:40:45] [Error - Test Interface]
[23/5/2014 22:40:45] data/movements/scripts/NudistDoor.lua
[23/5/2014 22:40:45] Description:
[23/5/2014 22:40:45] (LuaInterface::luaGetCreatureLookDirection) Creature not found

[23/5/2014 22:40:45] [Error - Test Interface]
[23/5/2014 22:40:45] data/movements/scripts/NudistDoor.lua
[23/5/2014 22:40:45] Description:
[23/5/2014 22:40:45] (LuaInterface::luaGetThingPosition) Thing not found

[23/5/2014 22:40:45] [Error - Test Interface]
[23/5/2014 22:40:45] data/movements/scripts/NudistDoor.lua
[23/5/2014 22:40:45] Description:
[23/5/2014 22:40:45] data/movements/scripts/NudistDoor.lua:19: attempt to index local 'Pos' (a boolean value)
[23/5/2014 22:40:45] [Error - Event::checkScript] Cannot load script (data/movements/scripts/NudistDoor.lua)


[23/5/2014 22:40:45] [Error - Test Interface]
[23/5/2014 22:40:45] data/movements/scripts/NudistDoor.lua
[23/5/2014 22:40:45] Description:
[23/5/2014 22:40:45] (LuaInterface::luaGetCreatureLookDirection) Creature not found

[23/5/2014 22:40:45] [Error - Test Interface]
[23/5/2014 22:40:45] data/movements/scripts/NudistDoor.lua
[23/5/2014 22:40:45] Description:
[23/5/2014 22:40:45] (LuaInterface::luaGetThingPosition) Thing not found

[23/5/2014 22:40:45] [Error - Test Interface]
[23/5/2014 22:40:45] data/movements/scripts/NudistDoor.lua
[23/5/2014 22:40:45] Description:
[23/5/2014 22:40:45] data/movements/scripts/NudistDoor.lua:19: attempt to index local 'Pos' (a boolean value)
[23/5/2014 22:40:45] [Error - Event::checkScript] Cannot load script (data/movements/scripts/NudistDoor.lua)

#12 Re: [Resuelto] Door accionable sólo desnudo. el Vie Mayo 23, 2014 5:16 pm

Daek97


Estudiante
Ya lo arregle ami me funciona correctamente

#13 Re: [Resuelto] Door accionable sólo desnudo. el Vie Mayo 23, 2014 7:10 pm

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Ya lo arregle ami me funciona correctamente
Más corto
Código:
-- Script hecho por Daek97.
function isNude(cid) -- Función hecha por Strack.
local nude = true
    for i=1,10 do
        if getPlayerSlotItem(cid, i).itemid ~= 0 then
            nude = false
        break
        end
    end
  return nude
end
function onUse(cid, item, pos)
    if isNude(cid) then
        doSendDistanceShoot(getThingPos(item.uid), getThingPos(cid), CONST_ANI_EXPLOSION)
        doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
        doTeleportThing(cid, getThingPos(item.uid))
        addEvent(doMoveCreature, 50, cid, getCreatureLookDirection(cid))
    else
        doPlayerSendCancel(cid, "Para pasar no has de llevar nada encima.")
    end
  return true
end

No habrá que editar nada más que la frase.

Me tomé la libertad de añadir estas dos líneas:
Código:
doSendDistanceShoot(getThingPos(item.uid), getThingPos(cid), CONST_ANI_EXPLOSION)
doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
Para que no quede tan seca la animación por no moverse la puerta c:
[Tienes que estar registrado y conectado para ver esa imagen]
Aunque si no lo quieres simplemente bórralas.



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

#14 Re: [Resuelto] Door accionable sólo desnudo. el Sáb Mayo 24, 2014 3:35 am

Avsilon


Miembro
Eso donde lo meto tanto en movements como en actions tal cual lo pusiste?

#15 Re: [Resuelto] Door accionable sólo desnudo. el Sáb Mayo 24, 2014 4:41 am

Pablopri


Novato
Hola a todos Soy un amigo de alvaro007. Solo queria comunicaros que ha tenido un pequeño fallo que creo haber solucionado. Gracias por la ayuda ^^

#16 Re: [Resuelto] Door accionable sólo desnudo. el Sáb Mayo 24, 2014 8:37 am

Avsilon


Miembro
Todoo solucionado muchas gracias + Rep a los dos

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.

 

¿Quién está en línea?

En total hay 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 Invitado

Usuarios navegando en este foro: Ninguno

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .